我有一台主机,我们将其称为 foo.com,我在 Debian 上运行 Postfix。Postfix 当前配置为执行以下操作:
- 所有以 @foo.com 为收件人的邮件均由该 Postfix 服务器处理。它将所有此类邮件转发到我的 Gmail 帐户。因此防火墙允许端口 25。
- 所有以其他域作为收件人的邮件都会被拒绝。
- 已为 foo.com 域名设置了 SPF 记录,说明 foo.com 是来自 @foo.com 的所有邮件的唯一来源。
- 在 foo.com 上运行的应用程序可以连接到 localhost:25 来传递邮件,[电子邮件保护]作为发件人。
然而,我最近注意到,一些垃圾邮件发送者能够在通过 SPF 检查的情况下向我发送垃圾邮件。经过进一步检查,他们似乎连接到我的 Postfix 服务器,然后说
HELO bar.com
MAIL FROM:<[email protected]> <---- this!
RCPT TO:<[email protected]>
DATA
From: "Buy Viagra" <[email protected]> <--- and this!
...
我该如何防止这种情况发生?我只希望在本地主机上运行的应用程序能够说。这是我当前的配置(main.cf):MAIL FROM:<[email protected]>
https://gist.github.com/1283647
答案1
您需要 smtpd_sender_restrictions 为:
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/postfix/notfromme
然后/etc/postfix/notfromme
你放进去
foo.com REJECT
然后postmap /etc/postfix/notfromme
重新加载 postfix。
完毕。
答案2
以下是我的看法:
SPFv1 保护的是信封发件人地址 (Return-Path),而不是报头发件人地址 (From)。在大多数情况下(至少我见过),报头发件人地址 (From) 是伪造的(如 foo.com),但这不是 SPFv1 检查的内容,因此它通过了。
答案3
如果你保留smtpd_delay_reject参数设置为默认值“是的”,则大多数限制均可归入收件人限制中。
smtpd_helo_required = yes
smtpd_recipient_restrictions =
your_permits (mynetworks, sasl, etc)
check_helo_access hash:/etc/postfix/helo_checks
helo_checks 文件:
# HELO'ing as being in our own domain(s)?
grokshop.tv REJECT You are not in grokshop.tv
brackin.net REJECT You are not in brackin.net
# HELO'ing with our IP address?
198.58.109.26 REJECT You are not 198.58.109.26
# HELO'ing as "localhost?"
localhost REJECT You are not me
注意:在我的 postfix 上,smtp_delay_reject 设置为“no”,并且它对我来说有效。
参考链接:https://grokshop.tv/stop-spam-with-postfix-email-server/
答案4
我认为如果你添加:
smtpd_helo_required = 是 smtpd_helo_restrictions = permit_mynetworks check_helo_access 哈希:/etc/postfix/helo_access,
到你的 main.cf,然后:
foo.com 拒绝
到 /etc/postfix/helo_access,然后是“postmap helo_access”并重新启动 postfix,这意味着任何将自己标识为“@foo.com”的人都会被直接拒绝,除非连接来自本地主机,在这种情况下它将被允许(由于 permit_mynetworks 排名高于 check_helo_access)。
编辑 - 实际上,如果有人将自己标识为“HELO randomhost.net”,然后从 @foo.com 发送邮件,那么这可能无济于事。您需要实现的可能是 header_checks:
http://www.postfix.org/header_checks.5.html http://www.postfix.org/BUILTIN_FILTER_README.html#remote_only
配置 header_checks 以识别 @foo.com 邮件后,您应该能够配置 master.cf,以便本地主机的任何邮件都跳过这些检查,并且只检查来自其他系统的传入邮件。然后,当您从另一个 Internet 系统收到来自 @foo.com 的电子邮件时,应该会丢弃该邮件。