Postfix: SMTP, использовать порт 587 вместо 465

Postfix: SMTP, использовать порт 587 вместо 465

Я настроил почтовый сервер на AWS EC2, следуя инструкциям Flurdy:http://flurdy.com/docs/postfix/в основном все прошло хорошо.

Моя проблема в том, что я бы предпочел использовать порт SMTP 587 с TLS, а не 465 с SSL. Я считаю, что это важное требование, поскольку порт 465 не считается перспективным в будущем.

Инструкции на сайте Flurdy рассчитаны на оба варианта, однако я не могу заставить работать 587! 465 с SSL работает просто великолепно.

Я также должен упомянуть, что эта сборка использует sasl с MySQL, и я думаю, что именно поэтому я не нашел особой помощи, когда я гуглил ошибки. Я думаю, что ошибка кроется где-то в области SASL / PAM, но мне не повезло.

Вот некоторые из результатов журнала:

ПОЧТА.ЖУРНАЛ

postfix/smtpd[11328]: connect from MY.ISP.PROVIDER[MY.IP.0.0]
postfix/smtpd[11328]: Anonymous TLS connection established from MY.ISP.PROVIDER[MY.IP.0.0]: TLSv1.2 with cipher AES128-SHA256 (128/128 bits)
postfix/smtpd[11328]: warning: SASL authentication failure: client response doesn't match what we generated (tried bogus)
postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL DIGEST-MD5 authentication failed: authentication failure
postfix/smtpd[11328]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL LOGIN authentication failed: generic failure
postfix/smtpd[11328]: lost connection after AUTH from MY.ISP.PROVIDER[MY.IP.0.0]
postfix/smtpd[11328]: disconnect from MY.ISP.PROVIDER[MY.IP.0.0]*

Мой мастер.cf

submission inet n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
  -o smtpd_sasl_security_options=noanonymous,noplaintext
  -o smtpd_sasl_tls_security_options=noanonymous

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sasl_security_options=noanonymous,noplaintext
  -o smtpd_sasl_tls_security_options=noanonymous

Есть еще и другие конфы, например AMAVIS, но я подозреваю, что с этим все в порядке.

Журнал SQL показывает, что все соединения и запросы работают правильно.

Я использовал TELNET для тестирования, и он просто закрывает соединение, когда я пытаюсь выполнить аутентификацию через порт 587. Если я открою порт 25 на своем сервере, то я смогу выполнить успешный ВХОД В АВТОРИЗАЦИЮ.

Вот разница в ответе EHLO с 25 (при открытии) и 587. Я заметил, что 587 не включает AUTH. В этом проблема??

$ telnet my.mailserver.com 587
Trying MY.IP.0.0...
Connected to my.mailserver.com.
Escape character is '^]'.
220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix
EHLO my.mailserver.com
250-MY-EC2-SERVER-NAME.localdomain
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

$ telnet my.mailserver.com 25
Trying MY.IP.0.0...
Connected to my.mailserver.com.
Escape character is '^]'.
220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix
EHLO my.mailserver.com
250-MY-EC2-SERVER-NAME.localdomain
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Я перезапускал службы postfix и saslauthd несколько раз. Я также дважды проверил пароли и имена пользователей в БД. Я просмотрел инструкции и проверил на наличие ошибок в конфигурации и орфографических ошибок, хотя, скорее всего, так оно и будет в итоге :-)

Сервер — UBUNTU 13.10

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию для помощи в отладке.

Приветствуются все мысли!

решение1

Я также следовалУчебник Флардии у меня была похожая проблема: я мог отправлять почту только через порт 25 (smtpd), но не через 587 (submission). Я обнаружил, что проблема была именно в том, что, согласно его инструкциям, порт 25 был настроен на работу в chroot, а 587 — нет — похоже, это ошибка в руководстве. Посмотрите эту часть инструкций flurdy:

По умолчанию включена только обычная служба smtp, что нормально. Но я предпочитаю включить отправку (порт 587), чтобы клиенты могли ее использовать, и я могу ограничить их только TLS. Также включена служба smtps (порт 465) для некоторой совместимости с некоторыми старыми клиентами (Outlook Express и т. д.).

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

submission inet n - n - - smtpd

Я знаю это, потому что в моем оригинальном /etc/postfix/master.cfфайле были комментарии, показывающие эту легенду:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================

Сразу под списком параметров для порта отправки находится следующая строка, которая настраивает smtps (порт 465):

smtps inet n - - - - smtpd

Из этого видно, что он использует настройки по умолчанию (я полагаю, этот -знак означает, что он будет использовать настройки по умолчанию, то есть chroot).

Хорошо, тогда посмотрите на раздел аутентификации SASL, где говорится:

Измените способ запуска SASLAUTHD:

вы можете видеть, что OPTIONSпеременная содержит следующий путь:

# Switch this to be under postfix's spool
# And add -r so that the realm(domain) is part of the username
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"

Опять же, с помощью моего изначально прокомментированного /etc/default/saslauthdфайла, я заметил следующее четкое объяснение:

# Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# WARNING: DO NOT SPECIFY THE -d OPTION.
# The -d option will cause saslauthd to run in the foreground instead of as
# a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish
# to run saslauthd in debug mode, please run it by hand to be safe.
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Example for non-chroot Postfix users: "-c -m /var/run/saslauthd"
#
# To know if your Postfix is running chroot, check /etc/postfix/master.cf.
# If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd"
# then your Postfix is running in a chroot.
# If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT
# running in a chroot.
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"

Поскольку моя OPTIONSпеременная явно указывала на случай chroot, я просто изменил конфигурацию отправки на /etc/postfix/master.cfтакже использование chroot. После перезапуска сервера — просто чтобы убедиться, что все службы были правильно перезапущены — все заработало как по маслу, теперь я могу отправлять почту либо через порт 25, либо через 587.

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

Связанный контент