使用 Postfix smtpd_sender_restrictions 拒绝电子邮件

使用 Postfix smtpd_sender_restrictions 拒绝电子邮件

我在阻止使用特定“发件人”地址发送的电子邮件时遇到一些问题。电子邮件标头如下所示:

From: "Levi Spammer" <[email protected]>

我的后缀配置如下所示:

smtpd_sender_restrictions =
        permit_mynetworks,
        check_sender_access hash:/etc/postfix/access_hash,
        check_sender_access pcre:/etc/postfix/access.pcre,
        permit

我在 access_hash 文件中有此条目:

iamspammer.com     REJECT

这在 access.pcre 中:

/iamspammer.com/   REJECT

但从该地址发送的电子邮件并未被拒绝。正在交付中。我在这里做错了什么吗?

答案1

check_sender_access规则适用于邮件传输协议信封FROM地址(即从MAIL FROM:SMTP协议协商阶段开始),不至于From:标头在消息本身中。

这让很多不熟悉电子邮件和 SMTP 工作原理的人感到困惑,但重要的是要认识到信封FROM地址与邮件标头完全不同且无关From:(原因与现实世界发布的地址上写的地址几乎相同)信件的信封与信封内实际信件中的任何称呼或问候完全无关)。它们是两个完全独立且不相关的事物。顺便说一句,信封 FROM 地址通常称为全大写 FROM 或 FROM_(FROM 后跟下划线),而标头 From: 地址通常称为大小写混合的“From:”(包括:) - 这有助于区分它们。

一个非常简单的总结STMP会话首先发送方计算机连接到接收方计算机(通常在端口 25 或 465 或 587 上)并使用EHLOorHELO命令打开协商(以识别自身)。如果接受,则会发送MAIL FROM:命令。这是信封发件人(或FROM)地址。如果接受,它将发送一个或多个RCPT TO:列出消息收件人的语句。如果收件人计算机接受一个或多个收件人作为有效的目标地址,则发件人会发送一条DATA命令,后跟消息本身(通常是一组消息头,如 From:、Date:、Subject: 等,后跟空行,然后消息的实际正文DATA由单独的一行终止.),并且使用该命令终止 SMTP 会话QUIT

请注意,标头 From: 地址可能与信封 FROM 地址相同,也可能非常相似(例如带有个人真实姓名等附加信息的信封地址),也可能完全不同(例如信封 FROM 地址)可能是邮件列表的地址,而标题 From: 包含原始发件人的地址)。

有关这两者之间差异的更多信息,请参阅信封 FROM 和标头 From 之间的差异的合理解释:合法原因 SMTP“MAIL FROM:”与 DATA 中的“From:”标头不匹配


无论如何,在了解了所有背景信息之后,如果您想将反垃圾邮件规则应用于邮件标头(例如PostfixFrom:Subject:Postfix 中的邮件标头),则需要使用标头检查规则和/或配置 Postfix 使用外部米尔特(“邮件过滤器”)程序。

答案2

我有

check_sender_access hash:/etc/postfix/sender,

作为我的限制的一部分。

在我的sender文件中,我有诸如

iamspammer.com  554 Spam not welcome here
[email protected] 554 Spam not welcome here

这将导致 554 错误(包括消息)出现在 SMTP 层。

构建此文件后,您需要构建哈希文件:

postmap sender

您最终应该得到sender.db这就是所使用的文件。

相关内容