“发件人:”电子邮件头欺骗--如何验证此类邮件?

“发件人:”电子邮件头欺骗--如何验证此类邮件?

就电子邮件欺骗而言,我面临着验证电子邮件中“发件人:”消息字段的问题。我目前正在使用 SPF 和 DKIM 来验证消息的来源和完整性,但据我所知,SPF 仅验证“Return-Path”标头,该标头不会以任何方式(通过 roundcube 或 thunderbird)显示给最终用户,而 DKIM 仅允许对消息进行数字签名并确保发件人确实是他声称的那个人。我也尝试深入研究 DMARC,但这个似乎只允许强制将来自我们域的未签名邮件视为垃圾邮件(这很好),但目前只有大型邮件提供商(Gmail、Yahoo)使用

当有人(例如一些免费共享主机的所有者)决定运行这个简单的 PHP 脚本时,这些都无法保护你

<?php
$headers = "From: [email protected]".PHP_EOL."Reply-To:  [email protected]".PHP_EOL."Content-type: 
text/plain; charset=iso-8859-2";

if(mail('[email protected]', 'Hello', 'Test spam function', $headers))
{
   echo 'Message sent';
}

在 Gmail 中你至少会看到标题(不是警告)写着“[电子邮件保护]通过“,但如果你使用 Thunderbird 通过 IMAP/POP3 连接,你看不到任何这样的事情 - 检测诈骗的唯一方法是直接查看原始邮件头。这意味着没有针对这种简单欺骗的保护,即使在 Gmail 中也是如此

在我看来,如果 SFP 除了验证“返回路径”之外,还验证“发件人:”字段,就可以轻松避免这种情况。

因此,我想知道 Postfix/Amavisd 是否有插件可以实现这种欺骗过滤?或者我可能误解了其中一些技术(SPF/DKIM/DMARC),其中一种技术可以防止此类欺骗?

答案1

From: 标头与 Return-Path: 标头不匹配的原因可能非常合理。邮件列表就是一个例子 - 返回路径应该是列表服务器(它将管理退回,甚至可能从列表中删除坏地址),而 From: 标头应该来自实际发送邮件的人。因此,您可能不想丢弃两个标头不一致的所有邮件。

在回答你关于插件的问题时,我推荐 SpamAssassin,它可以与 Postfix/Amavisd 结合使用。它将执行多次测试并将测试分数加在一起来确定电子邮件是否是垃圾邮件。

相关内容