一家安全公司一直在测试我的邮件服务器,并声称我的 Postfix 守护进程是开放中继。证据如下(出于安全考虑,mail.mydomain.com 的有效公网 IP 已更改为 10.1.1.1):
Relay User: postmaster Relay Domain: 10.1.1.1
Transaction Log: EHLO elk_scan_137 250-mail.mydomain.com 250-PIPELINING
250-SIZE 20480000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME
250 DSN
MAIL FROM: postmaster@[10.1.1.1]
250 2.1.0 Ok
RCPT TO: postmaster@[10.1.1.1]
250 2.1.5 Ok
我已经阻止了发往 root 的邮件,但显然我不应该阻止 postmaster。我觉得从服务器向自身发送邮件的能力并不构成开放中继。但我怎样才能安全地阻止欺骗[电子邮件保护]發件人?
[注意:我已经使用 mxtoolbox.com 扫描过自己,他们说它是安全的,而且不是开放中继]
答案1
某人可以将邮件发送到您自己的邮件服务器的 IP 地址,这一事实与邮件服务器是否为开放中继毫无关系。
开放中继接受其管理域之外的任何和所有系统的邮件并将其转发。这显然不是这里所展示的。
要求保安公司分享他们曾经吸食过的东西,因为显然这确实是好东西。
答案2
由于还没有其他人提到这一点,所以这是 SPF 旨在解决的问题之一。如果您在 DNS 中发布正确的 SPF 记录并让您的服务器检查 SPF 记录,它就会知道外部服务器不允许发送带有“发件人:*@yourdomain.com”的电子邮件。作为额外奖励,这不仅可以解决您当前的问题,还可以阻止垃圾邮件,并帮助我们其他人阻止垃圾邮件!
有关 SPF 和修复电子邮件/垃圾邮件问题的更多信息,请阅读:
打击垃圾邮件 - 作为电子邮件管理员、域名所有者或用户,我能做什么?
正如 Michael 指出的那样,这不是一个“开放中继”问题。如果你的审计人员认为这是事实,你应该认真考虑解雇他们。这事并不难,他们对术语和问题的严重性完全错误
答案3
我认为您需要使用 smtpd 限制。
我的配置片段:
smtpd_helo_restrictions =
permit_mynetworks,
reject_unauth_pipelining,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_hostname,
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_pipelining,
reject_non_fqdn_recipient,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service inet:[127.0.0.1]:2501,
permit
smtpd_sender_restrictions =
permit_mynetworks,
reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit_sasl_authenticated,
permit_tls_clientcerts,
check_sender_access regexp:$config_directory/tag_as_foreign.re,
permit
smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit
根据您的配置,您可以进行多种检查。SMTP 工作流的每个阶段都有限制。查看更多信息http://www.postfix.org/postconf.5.html。
您应该为所有阶段定义限制,即smtpd_helo_restrictions
、smtpd_data_restrictions
、smtpd_sender_restrictions
和。在 Postfix 2.10+ 中smtpd_recipient_restrictions
,smtpd_client_restrictions
有一个新的smtpd_relay_restrictions
选项可能非常适合您。
请注意,如果您希望自己的邮件通过 SMTP 服务器中继,则需要以某种方式进行身份识别 - 例如,在 中$mynetworks
,您可以使用身份验证。
我的配置也使用黑主机列表、灰名单和身份验证。
基本上,您的 SMTP 限制应该允许:
- 您的网络(本地主机、内部网等;请参阅
permit_mynetworks
), - 经过身份验证的用户(使用 SMTP 登录的用户,您可以将他们的邮件转发到外部服务器;请参阅
permit_sasl_authenticated
), - 发送给您的电子邮件(=您是这些邮件的“最终目的地”;请参阅
reject_unauth_destination
)。 - (可选)您要为其中继电子邮件的所有其他电子邮件域;例如,当您的服务器不是某些域的最终目的地而是前端代理时,您应该根据白名单检查收件人并将其传输到下一跳目的地。
未经授权的用户从任何地方发送到外部服务器的所有其他电子邮件都意味着开放中继。
答案4
禁用 VRFY 和 EXPN,因为这些参数可能被垃圾邮件发送者利用http://cr.yp.to/smtp/vrfy.html