禁用端口 25 上的 SMTP AUTH

禁用端口 25 上的 SMTP AUTH

根据 PCI-DSS,我们必须禁用纯文本身份验证。我们通过在端口 465 上使用 TLS 封装邮件服务器和客户端之间的通信来实现此目的。

问题在于,端口 25 必须保持开放且未加密,我们才能从互联网接收电子邮件,但不应允许身份验证。

我尝试禁用 AUTH 命令,但这也会破坏端口 465 上的身份验证。

是否有邮件服务器或代理允许对端口 25 和 465 进行单独配置,以便只能通过安全通道进行身份验证?

还值得注意的是:我们在 FIPS 模式下使用带有 stunnel 的 MailEnable。

更新:

MailEnable 提供了一个修补的 SMTP 可执行文件,允许我通过 Windows 注册表配置是否在每个监听端口上提供授权。这解决了我的问题 — 希望他们会将补丁作为修补程序发布。

答案1

是的,postfix 完全可以做到这一点。

查看 Postfix HOWTO:

http://postfix.state-of-mind.de/patrick.koetter/smtpauth/

尤其是:

http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailclients.html

(这两个页面链接自相当全面的 Postfix 官方文档页面http://www.postfix.org/docs.html

对于我的服务器,配置master.cf如下:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

main.cf 中有一行如下:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

在这种情况下,仅对提交(587)和 SMTPS(465)端口启用身份验证。

答案2

看来 Postfix 的选项 smtpd_tls_auth_only = yes 正是您要找的。它允许仅在激活 TLS 时使用 SMTP AUTH,这仅适用于您配置的端口 25。

http://www.postfix.org/SASL_README.html#id396969
http://www.postfix.org/postconf.5.html#smtpd_tls_auth_only

答案3

您还可以执行以下操作,仅使用 exim4 在某些端口上宣传 tls。

tls_advertise_hosts = 192.168.40.5:${if eq {$interface_port}{587} {*}{}}

因此,只有从 192.168.40.5 连接的客户端和通过端口 587 连接的客户端才会获得 tls。只要您的身份验证设置为在通告之前需要 tls,那么只有使用端口 587 和 TLS 的客户端才能使用身份验证。

答案4

Exim 允许您设置:

server_advertise_condition = ${if def:tls_cipher}

在身份验证驱动程序上,因此它仅在 TLS 中宣传/可用。

Exim 经常用作 MS 邮件服务器和开放互联网之间的前端网关;LDAP 集成让您可以查询 AD 以进行地址验证、身份验证等;可以很好地集成到各种恶意软件检测器中,等等。

相关内容