Я унаследовал постфиксный сервер, работающий на RedHat. Это недокументированная сборка, но критическая для бизнес-операций (Разве мы все не любим их?)
У него возникли проблемы с задержкой и задержкой доставки почты. Впервые о проблемах было сообщено несколько недель назад, но они могут возникать неопределенно долгое время.
Мой опыт работы с *nix устарел, но я смог достаточно покопаться в системе, чтобы определить, что, когда сервер испытывает отставание, он сообщает о тайм-аутах подключения к вышестоящим SMTP-ретрансляторам в моей организации.
Пример ошибки:
*3D27412A016
4187
Вт апр 19 17:04:26
[email protected]
(доставка временно приостановлена: подключитесь к UpstreamRelayA4.doi.net[10.xx.xx.206]:25: время ожидания подключения истекло)
Пользователь@OutsideWebsite.com*
Однако владельцы восходящего ретранслятора сообщают, что в их журналах с этого SMTP-сервера нет соответствующих ошибок. Для моей организации есть одна запись MX с включенными 4 серверами ретрансляции. Все 4 могут быть доступны с моего SMTP-сервера через telnet на порту 25, однако 3 из 4 истекли по тайм-ауту в журналах постфикса.
Любые советы о том, как отследить, почему postfix считает, что истекло время ожидания?
Добавлено 20.04.22 - вывод postconf -n
[USERNAME@mailer ~]$ postconf -n
alias_database = хэш:/и т.д./псевдонимы
alias_maps = хеш:/и т.д./псевдонимы
сломанный_sasl_auth_clients = да
каталог_команд = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb
$daemon_directory/$process_name $process_id и сон 5
disable_vrfy_command = да
html_directory = нет
inet_interfaces = все
inet_protocols = ipv4
local_recipient_maps =
mail_owner = постфикс
mail_spool_directory = /var/mail
почтовый ящик_размер_лимит = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
maximal_queue_lifetime = 1д
message_size_limit = 30720000
мой пункт назначения = $имя_хоста, локальный_хост.$мой_домен,_локальный_хост
myhostname = mailer.domain.org.com
мои сети =
127.0.0.0/8,165.83.0.0/16,10.0.0.0/8,64.241.25.0/24,172.16.0.0/12
мое происхождение = $ мой домен
newaliases_path = /usr/bin/newaliases.postfix
каталог_очередей = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relayhost = relayLOCATION.parentorg.com
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = постдроп
smtp_tls_note_starttls_offer = да
smtp_use_tls = да
smtpd_delay_reject = да
smtpd_helo_required = да
smtpd_helo_restrictions =
allow_mynetworks,reject_non_fqdn_helo_hostname,reject_invalid_helo_hostname,разрешить
smtpd_policy_service_max_idle = 5 с
smtpd_recipient_restrictions = allow_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = да
smtpd_sasl_authenticated_header = да
smtpd_sasl_local_domain =
smtpd_sasl_security_options = неанонимный
smtpd_sender_restrictions = allow_mynetworks,reject_non_fqdn_sender,разрешить
smtpd_tls_CAfile = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.pem
smtpd_tls_auth_only = нет
smtpd_tls_cert_file = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.crt
smtpd_tls_key_file = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = может
smtpd_use_tls = да
tls_random_source = dev:/dev/urandom
transport_maps = хеш:/etc/postfix/транспорт
[ИМЯ ПОЛЬЗОВАТЕЛЯ@почтовая программа ~]$
Добавлено 20.04.22 - вывод postconf -M
[USERNAME@mailer ~]$ postconf -M
smtp инет n - n - - smtpd
пикап fifo n - n 60 1 пикап
очистка unix n - n - 0 очистка
qmgr fifo n - n 300 1 qmgr
tlsmgr unix --n 1000? 1 тлсмгр
переписать unix--n--тривиально-переписать
отказ unix - - n - 0 отказ
отложить unix - - n - 0 отказов
трассировка unix - - n - 0 отказов
проверить unix - - n - 1 проверить
прошить unix n - n 1000? 0 флеш
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
реле unix - - n - - smtp -o fallback_relay=
showq unix n - n - - showq
ошибка unix - - n - - ошибка
отбросить unix - - n - - отбросить
локальный unix - n n - - локальный
виртуальный unix - n n - - виртуальный
lmtp unix - - n - - lmtp
наковальня unix - - n - 1 наковальня
архив unix - - n - 1 архив
maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
cyrus unix - n n - - pipe user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${отправитель} -m ${расширение} ${пользователь}
uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - флаги каналов=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
повторите попытку unix - - n - - ошибка
proxywrite unix - - n - 1 proxymap
[ИМЯ ПОЛЬЗОВАТЕЛЯ@почтовая программа ~]$
Добавлено 20.04.22 - Устройства между почтовыми ретрансляторами
У нас нет видимости сети или устройств безопасности между ретрансляторами. Traceroute указывает только 3 прыжка, все из которых, скорее всего, являются стандартными маршрутизаторами на основе их IP-адресов в нашей сетевой схеме.
Добавлено 20.04.22 - Постфиксная версия
Postfix, по-видимому, имеет версию 2.10.1, что означает установку примерно в 2013 году. на странице выпусков Postfix
Добавлено 22.04.22 - Тест соединения openssl
[USERNAME@mailer ~]$ openssl s_client -connect UPSTREAM_RELAY.ORG.net:25 -starttls smtp -crlf
ПОДКЛЮЧЕН(00000003)
depth=1 DC = сеть, DC = ORG, CN = CA_Server
ошибка проверки: число = 20: невозможно получить сертификат локального эмитента
---
Цепочка сертификатов
0 s:/C=US/ST=STATE/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
i:/DC=net/DC=ORG/CN=CA_Server
1 с:/DC=net/DC=ORG/CN=CA_Server
i:/CN=ORGRootCA2
---
Сертификат сервера
-----НАЧАТЬ СЕРТИФИКАТ-----
[Содержимое сертификата удалено]
-----КОНЕЦ СЕРТИФИКАТА-----
subject=/C=US/ST=STATEA/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
эмитент=/DC=net/DC=ORG/CN=CA_Server
---
Имена ЦС сертификата клиента не отправлены
Дайджест одноранговой подписи: SHA1
Временный ключ сервера: ECDH, P-384, 384 бита
---
SSL-рукопожатие прочитало 5841 байт и записало 538 байт.
---
Новый, TLSv1/SSLv3, шифр ECDHE-RSA-AES256-SHA384.
Открытый ключ сервера 2048 бит.
Поддерживается безопасное повторное согласование IS
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол: TLSv1.2
Шифр: ECDHE-RSA-AES256-SHA384
Идентификатор сеанса: [УДАЛЕН]
Идентификатор сеанса-ctx:
Мастер-ключ: [УДАЛЕНО]
Key-Arg : Нет
Krb5 Принципал: Нет
Идентификация PSK: нет
Подсказка идентификации PSK: нет
Время начала: 1650649689
Время ожидания: 300 (сек)
Код возврата проверки: 20 (не удалось получить сертификат локального эмитента)
---
250 XSHADOWREQUEST
(Функциональная консоль после этого)
Добавлено 22.04.22 - Maillog grep для нерабочего сервера
[USERNAME@mailer ~]$ sudo mailq | grep UPSTREAM_RELAY_103.ORG.net
(доставка временно приостановлена: время ожидания разговора с UPSTREAM_RELAY_103.ORG.net[10.x.x.125] истекло при отправке конца данных -- сообщение может быть отправлено более одного раза)
(тайм-аут диалога с UPSTREAM_RELAY_103.ORG.net[10.x.x.125] при отправке конца данных -- сообщение может быть отправлено более одного раза)
[Удалены дубликаты, все записи для этого сервера - это два одинаковых сообщения]
Окончательная редакция 27.04.2022
При устранении неполадок на прошлой неделе мы обнаружили, что в файле /etc/resolv.conf был сервер имен, которого больше не существует. После удаления этого и перезапуска постфикса мы больше не получаем тайм-ауты в журналах, и почта проходит быстро.
Как упоминал @anx в комментариях, это не имеет большого смысла в отношении тайм-аутов соединения, но как только это было исправлено и постфикс был перезапущен, наши исходящие отправки резко увеличились в скорости, и у нас не было никаких проблемы с задержкой с тех пор, несмотря на добавление более 20 000 дополнительных исходящих тестовых писем в день (примерно на 30% больше, чем объем обычной почты).