限制端口 25 仅用于本地传输

限制端口 25 仅用于本地传输

我已经配置了我的 postfix,以便我的服务器下的用户将通过端口 587 发送邮件,而端口 25 将仅用于接收来自邮件服务器的邮件。

我成功了,因为连接到端口 25 时,邮件不被允许发送到邮件服务器之外,并且被拒绝为中继访问。而在端口 587 上,客户端能够将邮件发送到外部邮件服务器。

为了实现这一点,我在 main.cf 中进行了设置

smtpd_recipient_restriction=permit_mynetworks, reject_unauth_destination

也就是说我删除了 permit_sasl_authenticated。

如果我添加这个条件,则允许邮件发送到网络外部,如果我删除这个条件,任何人都可以连接到端口 25,并且由于没有身份验证,可以向本地收件人发送任意数量的邮件。

我可以在端口 25 上使用 sasl 身份验证,但又阻止它在我的网络之外中继邮件。

在main.cf中设置:

smtpd_recipient_restrictions=
    reject_unauth_pipelining,permit_mynetworks,reject_unauth_destination,
    reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_recipient_domain,
    reject_non_fqdn_recipient,reject_unauth_destination,check_sender_access mysql:/etc
    /postfix/mysql-virtual_sender.cf,reject_non_fqdn_sender,
    reject_unknown_sender_domain,reject_unknown_recipient_domain,reject_rbl_client 
    cbl.abuseat.org,reject_rbl_client dul.dnsbl.sorbs.net,reject_rbl_client
    ix.dnsbl.manitu.net,check_recipient_access mysql:/etc/postfix/mysql-
    virtual_recipient.cf,permit

master.cf 中的设置

submission inet  n       -       -       -       -       smtpd
   -o syslog_name=postfix/submission
   -o smtpd_tls_security_level=encrypt
   -o smtpd_sasl_auth_enable=yes
   -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

答案1

在 master.cf 中,您可以为每个端口添加限制。查看 master.cf 文件的底部,您将看到类似以下内容:

#submission inet n – n – – smtpd
或者
#587 inet n - n - - smtpd

您需要取消注释它,然后添加(类似这样的内容,阅读每个值的作用)

提交 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 表示覆盖 main.cf 中针对该端口找到的内容。因此,您可以设置 main.cf 以在端口 25 上以您想要的方式接受邮件,然后设置端口 587(提交)以仅允许 sasl 身份验证或其他任何方式。

您想允许任何人(在合理范围内)通过端口 25 向您发送邮件,但不允许通过该端口进行中继。这就是reject_unauth_destination……

相关内容