RSPAMD 3.5.2
使用多地图模块我通过黑名单拒绝某些电子邮件地址:
多重映射配置文件
blacklisted_addresses {
description = "Blacklisted addresses";
type = "from";
prefilter = true;
filter = "email";
map = "/${LOCAL_CONFDIR}/local.d/blocked_addresses.map";
action = "reject";
symbol = "BLACKLISTED_ADDRESS";
regexp = "false";
}
我blocked_addresses.map
有一个电子邮件地址列表,每行一个。
我把自己的电子邮件地址放进去测试,一切正常。我可以看到黑名单正在运行,并且我收到了来自邮件服务器的拒绝邮件:
错误:
554 5.7.1 Matched map: BLACKLISTED_ADDRESS
但是其他电子邮件地址却可以通行。下面是一个例子,我试图拒绝来自亚马逊的营销电子邮件。
有人能解释一下这种行为吗?我该如何进一步调试?
答案1
这from
地图类型匹配信封来自而不是From:
消息头(当两者都存在时)。
相当典型的是,邮件列表消息使用唯一生成的 SMTP 信封地址来有效处理退回和传递错误。
然后“信封来自” 可能看起来像而不是在邮件头中找到的地址。from=<[email protected]>
[email protected]
就像蜗牛邮件信件,SMTP电子邮件有两组不同的地址信息:
信封标题(如信封外面印刷的地址,邮局会读取并使用它们将邮件投递到您的邮箱),SMTP 服务器会使用这些标题来路由和投递电子邮件。这些标题与 SMTP事务中使用的命令字
RCPT TO:
相对应。MAIL FROM:
“普通”报头,是邮件消息的一部分,只能由用户在其邮件客户端/网络邮件中读取和解释。这些报头类似于信封内实体信件开头的称呼所附的地址,同样对正确传递邮件没有任何作用。
这些报头是 SMTP 事务中数据的一部分。这两个不同标头中的地址可能不同。
从历史上看,MTA 如何存储邮件中的信封数据并没有统一的标准,甚至根本没有。因此邮件客户端只会显示正常的邮件头。
通常您需要查看“所有标题”、“原始消息”、“消息源/属性”或类似内容,以查看 MTA 是否以某种方式记录了 MAIL FROM: 和 RCPT TO:。
您可能会看到Return-Path: <sender-address>
Received: ... for <rcpt-address>
或 X-Original-To: <rcpt-address>
或其他完全不同的东西。或者,MTA 通常会存储传递日志文件中使用的信封头。
您可能需要进行测试,但“标题”映射和From:
标题上的过滤可能更适合您:
blacklisted_addresses {
description = "Blacklisted addresses";
type = "header";
header = "From";
filter = "email";
...