Постфикс: SMTP, используйте порт 587, а не 465

3984
Wairowe

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

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

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

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

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

mail.log

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]* 

Мой master.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 на моем сервере, тогда я смогу завершить успешный вход в систему AUTH.

Вот разница в ответе 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

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

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

4
Этот вид вопроса получит лучшее представление о ServerVault. Но пока мы работаем над этим, я думаю, что AUTH будет доступен после установления TLS. Возможно, вы хотите Google, как работает STARTTLS .. Arya S. 10 лет назад 0

1 ответ на вопрос

1
Claudio

Я также следовал руководству Флурди и столкнулся с аналогичной проблемой: я мог отправлять почту только через порт 25 (smtpd), но не через 587 (отправка). Я обнаружил, что проблема именно в том, что, согласно его инструкциям, порт 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.

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

Похожие вопросы