如何使我的 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。