如何防止远程主机使用欺骗性的发件人标头向 Postfix 发送邮件?

如何防止远程主机使用欺骗性的发件人标头向 Postfix 发送邮件?

我有一台主机,我们将其称为 foo.com,我在 Debian 上运行 Postfix。Postfix 当前配置为执行以下操作:

  1. 所有以 @foo.com 为收件人的邮件均由该 Postfix 服务器处理。它将所有此类邮件转发到我的 Gmail 帐户。因此防火墙允许端口 25。
  2. 所有以其他域作为收件人的邮件都会被拒绝。
  3. 已为 foo.com 域名设置了 SPF 记录,说明 foo.com 是来自 @foo.com 的所有邮件的唯一来源。
  4. 在 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 的电子邮件时,应该会丢弃该邮件。

相关内容