我在阻止使用特定“发件人”地址发送的电子邮件时遇到了一些问题。电子邮件标题如下所示:
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
但是从该地址发送的电子邮件并未被拒绝。它正在交付中。我在这里做错了吗?
我有
作为我的限制的一部分。
在我的
sender
文件中,我有诸如这将导致 554 错误(包括消息)出现在 SMTP 层。
构建此文件后,您需要构建哈希文件:
你应该最终得到
sender.db
,这就是使用的文件。check_sender_access
规则应用于SMTP信封FROM
地址(即从MAIL FROM:
SMTP 协议协商阶段),而不是消息本身的From:
标头。这让很多不熟悉电子邮件和 SMTP 工作原理的人感到困惑,但重要的是要意识到信封
FROM
地址与邮件标头完全不同且无关From:
(原因与写在现实世界中的地址几乎相同)信的信封与信封内实际信件中的任何称呼或问候完全无关)。它们是两个完全独立且不相关的事物。顺便说一句,信封 FROM 地址通常称为全大写 FROM 或 FROM_(FROM 后跟下划线),而标头 From: 地址通常称为混合大小写的“From:”(包括:
) - 这有助于区分它们。一个非常简化的STMP 会话摘要始于发送方机器连接到接收方机器(通常在端口 25 或 465 或 587 上)并使用
EHLO
或HELO
命令打开协商(以识别自己)。如果这被接受,那么它会发送一个MAIL FROM:
命令。这是信封发件人(或FROM
)地址。如果接受,它会发送一个或多个RCPT TO:
声明,列出消息的收件人。如果收件人机器接受一个或多个收件人作为有效的目标地址,则发件人随后发送一个DATA
命令,后跟消息本身(通常是一个消息头块,如 From:、Date:、Subject: 等,后跟一个空行,然后是消息的实际正文。DATA
块由 a.
本身终止),并且 SMTP 会话由该QUIT
命令终止。请注意,标头 From: address 可能与信封 FROM 地址相同,也可能非常相似(例如,信封地址带有其他信息,例如人的实际姓名),也可能完全不同(例如信封 FROM 地址可能是邮件列表的地址,而标头 From: 包含原始发件人的地址)。
有关这两件事之间差异的更多信息,有合理的解释信封 FROM 和标头 From: at Legitimate reason SMTP “MAIL FROM:” will not match “From:” Header in DATA
无论如何,在所有这些背景信息之后,如果您想将反垃圾邮件规则应用于Postfix 之类的邮件标头,您需要使用header_checks
From:
规则和/或配置 Postfix 以使用外部Milter(“邮件过滤器”)程序。Subject: