Назад | Перейти на главную страницу

Настройка исходящей почты на порт 587 в Ubuntu / Postfix

Я настраиваю резервный сервер в локальной сети с кабельным подключением. Кабельный интернет-провайдер фильтрует весь трафик порта 25 (smtp).

uname -a

Linux myhost 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

В результате у моих исходящих почтовых транзакций истекает время ожидания, потому что (я подозреваю) в конфигурации Postfix по умолчанию используется порт 25. (в основном я использую команду sendmail из оболочки для отправки отчетов о состоянии с этого сервера)

Я подтвердил, что могу подключиться по telnet к порту 587 на моем целевом сервере:

# telnet myserver.net 587

Trying x.x.x.x...
Connected to myserver.net.
Escape character is '^]'.
EHLO 220 myserver.net ESMTP Sendmail 8.14.7/8.14.7; Mon, 7 May 2018 18:16:08 
-0500 (CDT)
myhost.net
250-myserver.net Hello hostname [x.x.x.x], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP

Как я могу обновить мою установку Postfix, чтобы она использовала порт 587 И была совместима с протоколами указанного выше сервера? (шифрование не требуется / не требуется, если оно еще не поддерживается - не верьте, что TLS включен)

Я пробовал отредактировать /etc/postfix/master.cf и раскомментировать эту строку:

smtpd     pass  -       -       y       -       -       smtpd

Но я все еще получаю ошибки тайм-аута, указывающие, что он не использует 587. У меня сейчас не включен ufw, так что это, вероятно, не проблема.

Я предполагаю, что мне нужно добавить дополнительные параметры конфигурации?

Я думаю, вы пытаетесь ретранслировать всю исходящую почту через внешний почтовый сервер, используя подчинение (порт 587). Все остальное не имеет смысла, потому что подчинение предназначен для предоставления аутентифицированного SMTP клиентам, в то время как обычная связь между MTA осуществляется через порт SMTP 25.

Конфигурация представления в /etc/postfix/master.cf предназначен для предоставления smtpd для ваших клиентов и не меняет поведение Postfix при отправке исходящей почты.

Вместо этого вам нужно будет настроить место назначения следующего перехода нелокальной почты т.е. relayhost в main.cf и аутентификация для этого соединения, например

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:USERNAME:PASSWORD
smtp_sasl_security_options = noanonymous 
smtp_tls_security_level = encrypt

relayhost = [198.51.100.10]:587

Хотя примеры стандартной конфигурации Postfix для локальная сеть содержит эту информацию, может быть трудно интерпретировать. К счастью, есть много подробных руководств для этого конкретного предполагаемого использования, в том числе:

Вот как я понял, как это сделать. Существует множество страниц, предлагающих отредактировать /etc/postfix/master.cf, но это не решает проблему перенаправления трафика smtp через нефильтрованный порт для интернет-провайдеров, выполняющих фильтрацию.

Итак, чтобы настроить postfix для этого, вам нужно добавить в свой /etc/postfix/main.cf

relayhost = [yourserver.com]:587

Затем настройте другой сервер за пределами DMZ порта 25 для пересылки почты за пределы хоста. (если необходимо)

Я столкнулся с той же проблемой и исправил ее, выполнив следующие действия. этот

Примечание: попробуйте другой ответ выше, прежде чем пробовать этот. Это решение может сломать вашу систему, я использовал его только в демонстрационных целях.

Шаги:

  1. vim / etc / services
  2. Измените эту строку здесь:

smtp 25 / tcp почта

  1. Чтобы

smtp 587 / tcp почта

  1. Перезагрузите постфикс (в моем случае я использую докер, поэтому вместо этого перезапускаю весь контейнер докера)

Примечание: я наткнулся на статью в Интернете, в которой говорится, что модифицировать /etc/services файлы, поскольку предполагается, что он предварительно назначен для Linux.