Postfix:SMTP,使用端口 587,而不是 465

Postfix:SMTP,使用端口 587,而不是 465

我已经按照 Flurdy 的说明在 AWS EC2 上设置了一个邮件服务器:http://flurdy.com/docs/postfix/一切进展顺利。

我的问题是,我更愿意使用带有 TLS 的 SMTP 端口 587,而不是带有 SSL 的 465。我相信这是一个相关的要求,因为端口 465 被认为不是面向未来的。

Flurdy 网站上的说明旨在允许两者,但我无法让 587 工作!带有 SSL 的 465 工作得很好。

我还应该提到,此版本在 MySQL 中使用了 sasl,我想这就是为什么我在 Google 上搜索错误时没有找到太多帮助的原因。我相信错误存在于 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]*

我的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 LOGIN。

这是 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

我也关注了Flurdy 的教程并遇到了类似的问题:我只能通过端口 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 发送电子邮件。

希望它也能帮到你!我也花了不少时间才看到这个……

相关内容