Рейтинг:1

Postfix - Устранение неполадок тайм-аутов подключения для всех серверов, кроме одного

флаг lr
Cos

Я унаследовал постфиксный сервер, работающий на 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% больше, чем объем обычной почты).

Cos avatar
флаг lr
Cos
@анкс Информация добавлена ​​в пост. Насколько мы можем судить, разрешение имен в порядке. В последнее время не было никаких задокументированных изменений, и мы можем без проблем подключиться ко всем 4 исходящим ретрансляторам через telnet на порту 25 с помощью имени хоста и IP. У нас есть запись подсчета исходящей почты. Нет недавних изменений громкости. У нас в среднем 50 000 – 70 000 исходящих сообщений в день, и мы все еще остаемся в этом диапазоне, если вы откажетесь от моих массовых рассылок, предназначенных для намеренного создания отставания для устранения неполадок. Перезапуск постфикса не дает видимых ошибок, но если есть журнал\подробный список для проверки, я с удовольствием попробую.
anx avatar
флаг fr
anx
(примечание: проверка вывода `mailq` не эквивалентна поиску в логах: mailq перечисляет причину *последней попытки* для каждого файла очереди, но не обязательно содержит дополнительные подсказки, которые могли быть записаны в логах для *более ранних* попыток доставки такое же сообщение)
Cos avatar
флаг lr
Cos
@анкс Возможно, мы это поняли. В /etc/resolv.conf у нас был сервер имен, которого больше не существует. После удаления этого мы больше не получаем тайм-ауты в журналах. Я проверю на следующей неделе, чтобы убедиться, что проблема полностью решена. Ваше руководство по проверке старых журналов было подсказкой, в которой мы нуждались. Я вернулся и проверил исторические архивы почтовых журналов. Они указали, что проблема началась много лет назад, но, по-видимому, никто не следил за сервером достаточно, чтобы заметить. Потенциально это может привести к отключению старого DNS-сервера, но никто не помнит об этом достаточно долго.
anx avatar
флаг fr
anx
Спасибо за обновления.Даже если это решит вашу насущную проблему (пожалуйста, укажите подробности в ответе!), здесь все еще чего-то не хватает: как может проблема с DNS, приводящая к ошибке после отказа через несколько * секунд *, привести к сервер не отвечает (по крайней мере, с «повторите попытку позже») в течение нескольких *минут*?
Cos avatar
флаг lr
Cos
@anx Окончательное обновление добавлено в сообщение. Мы до сих пор не можем понять, почему это не удалось, но мы можем немедленно воспроизвести проблему, добавив любой недопустимый IP-адрес сервера имен в /etc/resolv.conf . Если бы это была современная сборка, я бы, вероятно, попытался сообщить об этом как об ошибке и посмотреть, сможет ли кто-нибудь, знающий ситуацию с разработчиком, отследить ее, но, учитывая возраст установленной версии и сборки ОС, мы собираемся создать замена с нуля на свежую версию postfix. Спасибо за всю твою помощь.
Рейтинг:1
флаг lr
Cos

Насколько нам удалось выяснить, эта проблема была вызвана наличием недопустимой записи DNS в /etc/resolv.conf. Как только плохая запись была удалена, у нас прекратились проблемы в журналах, и почта вернулась к правильному потоку с минимальной задержкой исходящего трафика.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.