SMTP-почта перестала работать 10 дней назад (curl работает; на сервере нет SMTPS)

Всем привет,

мой сайт уже несколько лет работает без сбоев. Внезапно SMTP перестал работать. (Я не вносил никаких изменений в конфигурацию ни на хосте, ни в контейнере).

Я использую SMTP (не SMTPS). Зашел в контейнер Discourse и проверил, что отправлять письма через curl можно:

curl smtp://mail.example.com --mail-from myself@example.com --mail-rcpt receiver@example.com --upload-file email.txt

Однако Discourse не отправляет никакие письма, а в логах просто указано:

Net::ReadTimeout with #<Socket:(closed)>

В логах Postfix на хосте написано:

connect from unknown[172.17.0.5]
lost connection after CONNECT from unknown[172.17.0.5]
disconnect from unknown[172.17.0.5] commands=0/0

Не у кого есть идея, что могло измениться?

Заранее спасибо.

GI

PS: Извините, первая версия этого поста была случайно обрезана, и опубликовалась только половина сообщения. Я только что отредактировал его.

Всем привет,

Я разобрался с проблемой. Оказалось, что хост теперь накладывает задержку в 7 секунд на всю входящую почту (даже из контейнеров). Discourse по умолчанию истекает тайм-аут через 5 секунд.

Я увеличил его до 10 секунд в containers/app.yml:

DISCOURSE_SMTP_OPEN_TIMEOUT: 10
DISCOURSE_SMTP_READ_TIMEOUT: 10

Теперь всё работает… но знает ли кто-нибудь, как убрать задержку postfix на хосте? Я уже перерыл конфигурационные файлы, но ничего не нашёл…

GI

Если вы используете postscreen, обратитесь к параметрам postscreen_greet_wait и postscreen_greet_action.

Если нет, это может быть связано с тайм-аутом DNS при обратном поиске подключенного IP-адреса.

Ха! Большое спасибо! Это была именно та проблема.

Я просто добавил статические IP-адреса (с вымышленными именами хостов) для всех IP-адресов, которые обычно назначает Docker (от 172.17.0.2 до 10). Так что, если мой контейнер запустится с другим IP-адресом, надеюсь, он не зависнет на nslookup.

Интересно, есть ли способ для Docker разрешать IP-адреса всех контейнеров…

Ещё раз спасибо.