对于 OpenSMTPd,我想根据服务器的域名阻止该服务器向我发送邮件。它在各地拥有大量 IP 地址,阻止每个 IP 地址的工作量太大,尤其是它发送的垃圾邮件数量巨大。我想直接阻止该服务器,有没有办法默默拒绝来自“example.com”邮件服务器的所有邮件(“已接收”包含此邮件)?
谢谢你!
答案1
Received
不应使用标头来确定电子邮件的来源,因为它们很容易被欺骗。相反,您应该只信任您的邮件服务器可以自行获取的信息,例如源地址、主机HELO
名和MAIL FROM
(针对发件人域的 SPF 记录进行测试)。最后一个即最上面的Received:
标头由您的服务器添加,此信息来自HELO
SMTP 命令(结合 IP 地址和反向PTR
)。
可以使用 Postfix 等工具检查标头内容header_checks
(操作REJECT
),但 OpenSMTPd 似乎没有实现任何类似的东西。此外,OpenSMTPd 只能将邮件转发到外部过滤器,这使得连接阶段拒绝对于失败的 SFP 或基于 DNS 的阻止列表(DNSBL)不可能。
OpenSMTPd 可以做什么来提供帮助smtpd.conf(5)
,match
选项 reject
:
你说有一个到处都有大量 IP 地址,但它们实际上可能都在同一个网络块中。使用 eg
whois IP.ADD.RE.SS
确定子网为 CIDR 表示法,因为 OpenSMTPd 能够读取以 CIDR 表示法表示的子网,例如以下块192.0.2.0/24
:match from src 192.0.2.0/24 reject
如果你想拒绝所有来自以下邮件服务器的邮件
example.com
并且该域名确实用于HELO
主机名,则可以使用该信息进行拒绝。同样,match
有一个选项,您可以使用列表table(5)
文件:match helo <rejectHeloDomains> reject table rejectHeloDomains file:/etc/mail/rejectHeloDomains
包含允许的域、通配符的列表文件:
example.com *.example.com
不要默默地丢弃绝对是垃圾邮件,但使用连接阶段拒绝,正如这些例子一样。