如何在 Postfix 上启用带有安全身份验证的端口 587 的 TLS?

如何在 Postfix 上启用带有安全身份验证的端口 587 的 TLS?

如何使我的 Postfix 服务器仅在端口 587 上发送邮件,并使用安全身份验证(使用系统 Linux 用户)在端口 587 上启用 TLS?

首先,这个问题可能看起来太广泛了,但我在网上找不到一个解决方案。许多文章确实给出了解决方案,但它们跳过了一些部分。

我想强制身份验证并强制 TLS 连接。

如果有人问我,我可以发布配置。

提前谢谢。我是 Postfix 新手。另外,我可以看看http://www.postfix.org/documentation.html,但在你告诉我之前,我无法正确理解它,因此,我确信我会搞乱配置,并使我的服务器无法使用。此外,这里的 postfix 是使用 apt 包管理器安装的。但我确信这与 ubuntu 没有特别的关系。在使用 postfix 之前,我使用的是 Exim4,但对 Exim 的支持很少,因为人们大多在 cPanel 中使用它,所以我没有获得 vanilla Exim 支持。

这需要紧急帮助,因为我们的服务器的安全处于危险之中。

答案1

要启用端口 587,请编辑文件/etc/postfix/master.cf

vi /etc/postfix/master.cf

并删除该行前面的 #(取消注释该行):

#submission inet n - n - - smtpd

使其看起来像这样:

submission inet n - n - - smtpd

您可能希望取消注释此行之后启用 SASL 身份验证的其他行。每个新行都应以空格开头!

 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject

所有其他设置均需在/etc/postfix/main.cf根据您的环境。

此外,您可能需要配置 TLS 设置:

# TLS parameters
# you need to specify a real certificate location
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert.key
smtpd_use_tls=yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_sasl_tls_security_options=noanonymous
smtpd_tls_auth_only=yes

根据您是否使用 dovecot 接收电子邮件,您可能需要添加:

smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
broken_sasl_auth_clients=yes

额外的安全限制:

smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_helo_hostname,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_non_fqdn_recipient,reject_unknown_recipient_domain

检查并重新启动 postfix:

postfix check
systemctl restart postfix

您可以确保 postfix 现在正在监听端口 25 和 587:

netstat -na | grep LISTEN | grep 25
netstat -na | grep LISTEN | grep 587

不要忘记在防火墙中允许端口 587。

创建 postfix 用户是另一回事。正如评论中提到的,您应该使用 SQL 来存储邮箱(邮件用户)。如果您不想这样做,您可以使用 Linux 用户,详细描述如下这里

PS 我认为在这里提供完整的配置是不可行的,因为它总是非常依赖于具体的情况要求和您的环境。

答案2

这将仅允许安全连接:

smtpd_tls_auth_only = yes

然后您还有其他需要的选项:

smtpd_tls_security_level = may

smtp_sasl_auth_enable = yes

smtp_use_tls = yes

要使用 587,请编辑 master.cf 并取消注释该行:

submission inet n - n - - smtpd

重新启动 postfix。

相关内容