我正在使用这段代码/etc/postfix/master.cf
来强制人们安全地“提交”通过使用 SMTPS 协议的端口发送电子邮件465
。SMTPS 支持强制 TLS,我使用它来要求客户端首先“加密”使用强制 TLS 和第二层连接“认证”使用SASL机制。
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
#
-o smtpd_use_tls=yes
-o smtpd_tls_wrappermode=yes
-o smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
-o smtpd_tls_cert_file=/etc/ssl/certs/server-rsa.cert
-o smtpd_tls_key_file=/etc/ssl/private/server-rsa.key
-o smtpd_tls_eccert_file=/etc/ssl/certs/server-ecdsa.cert
-o smtpd_tls_eckey_file=/etc/ssl/private/server-ecdsa.key
#
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=smtpd
-o smtpd_sasl_security_options=noanonymous
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
#
这正如预期的那样。它实际上运行得很好!
我想用同样的方式保护端口25
,但看起来这是不可能的,因为这个端口有两个入站功能即“提交”和“中继接收” (延长这个端口的寿命是愚蠢的,我们应该尽快摆脱它)。
端口上25
只有 SMTP 协议,不支持强制 TLS!因此入站电子邮件,即“提交”和“中继接收”,所有可以启用的是机会性 TLS(可能被黑客入侵)所以我所能做的就是坏事“加密”稍后可以使用 DANE 进行增强(不容易被黑客入侵)。
因此,25
我对我的港口抱有希望“加密”在某些时候就足够了,但我不明白如何设置 SASL“验证”!
我尝试使用这段代码,/etc/postfix/master.cf
其中第一部分代码设置机会性 TLS,第二部分代码应该设置 SASL“验证”。
smtp inet n - y - - smtpd
-o syslog_name=postfix/smtp
#
-o smtpd_use_tls=yes
-o smtpd_tls_security_level=may
-o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
-o smtpd_tls_cert_file=/etc/ssl/certs/server-rsa.cert
-o smtpd_tls_key_file=/etc/ssl/private/server-rsa.key
-o smtpd_tls_eccert_file=/etc/ssl/certs/server-ecdsa.cert
-o smtpd_tls_eckey_file=/etc/ssl/private/server-ecdsa.key
#
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=smtpd
-o smtpd_sasl_security_options=noanonymous
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
#
不幸的是,我发现了这一行:
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
一方面迫使客户“提交”通过端口发送电子邮件25
至"authenticate"
和另一方面拒绝所有来自其他 MTA 的“中继接收”电子邮件!
那么我怎样才能实现这两个目标:
- 阻止任何人通过互联网“提交”
25
使用我的服务器上的端口发送电子邮件。 - “中继接收”从其他 MTA 发往我的端口的所有电子邮件
25
。