我运行一个虚拟邮件服务器,将发往我域名的电子邮件转发到 Gmail 地址,并使用 PostSRSd 重写地址。例如,如果有人向 发送电子邮件[email protected]
,我的邮件服务器将重写地址(类似于[email protected]
)并将其转发到我的 邮箱[email protected]
。
这种重写是必不可少的,因为否则转发的电子邮件将无法通过 SPF 检查。我不确定如果不重写地址,DKIM 是否会失败,但我认为会的。
PostSRSd 在大多数情况下对我们都很有效。发送到我们虚拟域的电子邮件通过了 SPF、DKIM 和 DMARC,这使得传递率极高。以下是检查的典型邮件标头:
Authentication-Results: mx.google.com;
dkim=pass [email protected] header.s=hs1 header.b=fFjMRTbn;
dkim=pass [email protected] header.s=hs2-8105018 header.b=AHU209VN;
spf=pass (google.com: domain of srs0=8nnb=bp=bf08x.hubspotemail.net=1axb6baq5yhbqc79kzmzee6yv7e5d09kmo07f2-john=mydomain.com@mydomain.com designates 123.234.123.124 as permitted sender) smtp.mailfrom="SRS0=8nNb=BP=bf08x.hubspotemail.net=1axb6baq5yhbqc79kzmzee6yv7e5d09kmo07f2-john=imago-images.de@mydomain.com";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=imago-images.de
但是,如果来自特定域ichat.sp.edu.sg
(这是实际域)的电子邮件尝试向我的域发送电子邮件,则永远不会送达,因为转发过程导致其无法通过 Gmail 的 DMARC 检查。以下是一封此类邮件的邮件标头:
Authentication-Results: mx.google.com;
dkim=pass [email protected] header.s=selector2-ichatspedu-onmicrosoft-com header.b="LeXRlSh/";
arc=pass (i=1 spf=pass spfdomain=ichat.sp.edu.sg dkim=pass dkdomain=ichat.sp.edu.sg dmarc=pass fromdomain=ichat.sp.edu.sg);
spf=pass (google.com: domain of [email protected] designates 123.234.123.124 as permitted sender) smtp.mailfrom="[email protected]";
dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=sp.edu.sg
我不确定是什么原因导致 DMARC 在这种特殊情况下失败。ChatGPT(以及 Postfix)表示它与 的 DMARC 记录有关,但我不太确定是什么。有人可以帮忙吗?如果没有采取任何措施,sp.edu.sg
我可以做些什么来缓解这种情况吗?sp.edu.sg
作为参考,以下是TXT
的记录_dmarc.sp.edu.sg
:
v=DMARC1; p=reject; rua=mailto:[email protected], mailto:[email protected]; ruf=mailto:[email protected]; fo=1
答案1
DMARC 不仅要求 SPF 或 DKIM 通过,还要求这两种协议之一使用的域与“发件人”地址中的域一致。只有这样,DMARC 才能通过。
DKIM:ichatspedu.onmicrosoft.com
SPF:ichat.sp.edu.sg
标题来自=sp.edu.sg
所以这行不通。我猜想在有效的邮件中,你在 SPF 中删去了 imago-images.de 电子邮件地址([电子邮件保护])?
尝试为 ichat.sp.edu.sg 添加子域 TXT DMARC,而不是依赖父域上的默认(空)sp 标签。
答案2
DMARC 为何失败
在失败的标头中,SPF 和 DKIM 域均未与 对齐ichat.sp.edu.sg
,这导致 DMARC 失败。
似乎他们没有使用自己的域名签署 DKIM,而是依靠 SPF 域名传递 DMARC 对齐,而这些对齐已被您的转发器重写。(或者他们的邮件服务器可能根本没有正确配置,无论有没有您的转发器,DMARC 都会失败。)
DMARC 对齐的解释可以参见维基百科。基本上,它规定邮件发件人标头中的域必须与 SPF 或 DKIM 中的某个域匹配。
此外,任何依赖 SPF 域而不是 DKIM 域来传递 DMARC 的邮件在转发器之后都不会通过 DMARC。
我认为,如果您不是来自,您就什么也做不了ichat.sp.edu.sg
。
更好的方法
...要实现你想要做的事情是:
要将您的服务器指定为Gmail 入站邮件网关,这需要 Google Workspace 订阅。Google 不会为此测试 DMARC。
或者您可以尝试使用以下方式以编程方式插入转发的邮件Gmail API。您将不会使用 SMTP,并且不需要通过任何测试。