我最近configuration了我自己的邮件服务器(基于Linux的postfix + dovecotscheme)。 这只是个人使用 – 我没有大容量邮件出去,没有自动生成的邮件从主机出站,没有这样的。 我已经经历了麻烦来configuration所有额外的有趣的debugging电子邮件DNSlogging:
@ IN TXT v=spf1 +mx -all _domainkey IN TXT o=-; r=dkim@example.com mail._domainkey IN TXT v=DKIM1; h=sha256; k=rsa; s=email; p=deadbeef _adsp._domainkey IN TXT dkim=all _dmarc IN TXT adkim=s; aspf=s; fo=1; p=none; pct=100; rf=afrf; ri=86400; rua=mailto:[email protected]; ruf=mailto:[email protected]; sp=none; v=DMARC1;
我有一个不在任何黑名单上的IP,一个正确configuration的PTR,DKIM签名validation完美,我认为所有的设置都是正确的。
但现在我无法参与邮件列表。 当我发送到列表地址时,有时邮件会进入黑洞,有时我会收到一封电子邮件给我的authfail@地址,而在其他情况下,我发现我发送给aggrep@报告中有相关的条目。
我的理论是SPF政策太严格了。 邮递员(或其他)列表服务器充当我的邮件的SMTP中继,对吧? 所以我改变了
@ IN TXT v=spf1 +mx -all
至
@ IN TXT v=spf1 +mx ~all
使默认行为成为软失败而不是硬性失败。 问题是,我不想绕过垃圾邮件名单没有很好的理由来testing这个变化。 有没有其他人以前在这里,可以validation/反驳我的理论?
编辑1:
回想起来,感谢@亚历山大让我直截了当,实际上我没有提供足够的数据来做出准确的评估。 以下是我尝试发送到邮件列表时在authfail@地址收到的通知的示例:
This is a spf/dkim authentication-failure report for an email message received from IP 66.211.214.132 on Thu, 10 Jul 2014 20:58:52 +0800. Below is some detail information about this message: 1. SPF-authenticated Identifiers: archlinux.org; 2. DKIM-authenticated Identifiers: none; 3. DMARC Mechanism Check Result: Identifier non-aligned, DMARC mechanism check failures; For more information please check Aggregate Reports or mail to [email protected]. Feedback-Type: auth-failure User-Agent: NtesDmarcReporter/1.0 Version: 1 Original-Mail-From: <[email protected]> Arrival-Date: Thu, 10 Jul 2014 20:58:52 +0800 Source-IP: 66.211.214.132 Reported-Domain: example.com Original-Envelope-Id: w8mowEA5UUwMjr5TlWQfBA--.250S2 Authentication-Results: 126.com; dkim=fail (signature error: RSA verify failed) header.d=example.com; spf=pass smtp[email protected] DKIM-Domain: example.com Delivery-Result: delivered
在我看来,这是一个DKIM签名失败,但我不知道为什么。 接收服务器是否试图根据邮件列表服务器的密钥validation我的 DKIM签名,反之亦然? 出于某种原因,我不希望发生这种情况 – 我记得在某些地方阅读,像这样的继电器,有时候会删除/ munge这样的标题,以确保这些types的故障不会发生?
编辑2:
感谢@Christopher Karel在dmarcian.com上引用DMARC报告parsing工具。 狮子份额的条目被列为转发(这是有道理的)。 有一个服务器(* .mailhop.org)列为“保存DKIM” – 我已经成功地通过一个已经工作的Ruby语言论坛发送邮件,我从我的研究中知道他们使用的是mailhop.org。
在“破坏DKIM签名的服务器(或创build欺骗签名)”类别下列出*.archlinux.org , *.google.com , *.mailhop.org (不知道为什么会出现在这里,可能是我正在使用的另一个列表他们以及不同的configuration)以及其他我最活跃的列表是Arch和由Google Groups托pipe的一些列表,所以这是有道理的。 总共有大约400条消息 – 我还没有发送过这么多的消息,所以我猜可能是重新计数。
我感到沮丧 – 目前看来我的select是:
电子邮件安全性很糟糕。 所以最终,你可能会面临一个决定,你所有的select都很糟糕,并且由于不同的原因而分解不同的东西。
至于SPF,如果邮件列表转发一条消息,邮件列表将会导致失败, 而不会重写头文件 。 列表可以configuration自己的工作,但它喜欢,所以没有一个好的一般的答案。 但是,如果来自列表的消息看起来来自列表本身,那么它正在重写标题。 如果它似乎来自发件人,可能不是。 一般来说,邮件列表应该和SPF一起工作。 一般邮件转发,另一方面,不会。
说到DKIM,对消息的任何修改都会导致失败。 这几乎总是发生在邮件列表中。 所以DKIM通常会用邮件列表炸弹。 但是邮件转发应该是可以的。
最重要的是,你已经实现了DMARC 。 这本质上是DKIM和SPF的报告基础设施。 如果您同时实施两种身份validation措施,则效果最佳,但只有一种身份validation措施也能正常工作。 您可以configurationDMARC为您的消息传递放置请求,但更重要的是,您可以指定地址以接收成功/失败报告。 大多数主要的电子邮件接收器都支持这些function。 (GMail,Hotmail,Yahoo)这可以让你了解什么消息是SPF检查失败,以及为什么。 用这个来通知你~all决定。
不幸的是,DMARC规范要求在发件人域和被检查的SPFlogging之间进行alignment。 在你的情况下,邮件列表的SPF正在被检查,并通过,但不符合你的域名。 所以DMARC炸弹。 这里有一个邮件列表pipe理员的参考 。
结论与我的开头语句一样:电子邮件安全性吮吸。 而你所有的select也吸引。 恕我直言,邮件列表吸吮,如果我们取代他们的生活会更好。 😉
我没有看过DKIM部分。
关于SPFlogging,我看到大多数例子中使用了以下内容:
v = spf1 mx -all
这是在这里logging: http : //www.openspf.org/SPF_Record_Syntax
但是根据RFC 7208,“+ mx”也应该是正确的(感谢Chris指出了这一点)。 也许这是值得一试的…
我真的不知道该怎么build议,否则…请仔细检查您的DNSlogging(A / PTR / MX)。 你可能已经这样做了。 知道真正的域名可能会帮助人们排除故障 – 至less如果DNS相关。
事实certificate,我的configuration似乎没有任何问题。 发生什么事情是我的邮件正在被邮递员正确处理,并被转发到列表中。 然而有几个接收者(无论什么原因是他们唯一的)拒绝这个信息。 因为我实际上正确地configuration了SPF,所以我看到来自这些目标SMTP服务器的拒绝消息,而不是来自邮件列表中继本身。
Arch社区的一些非常棒的人帮助我追赶这个,因为他们可以访问ML服务器。