要让 DMARC 检查 SPF 通过并在使用 sendmail 时对齐,请确保您设置了信封发件人地址(-f 或 -r参数)到与From: 标头地址中的域匹配的内容。
使用 PHP:
使用 PHP 的内置 mail() 函数而不设置第 5 个参数将导致如果未正确执行 DMARC SPF 检查未对齐。默认情况下,sendmail 将使用网络服务器的用户作为RFC5321.MailFrom / Return Path 标头发送电子邮件。
例如,假设您在 host.com 网络服务器上托管您的网站 domain.com。如果不设置附加参数参数:
mail($to,$subject,$message,$headers); // Wrong way
电子邮件收件人将收到一封带有以下邮件标题的电子邮件:
Return-Path: <your-website-user@server.host.com>
From: <your-website-user@domain.com>
即使这通过了 SPF 检查,它也会未对齐(因为 domain.com 和 host.com 不匹配),这意味着 DMARC SPF 检查将因未对齐而失败。
相反,您必须通过在 PHP mail() 函数中包含第 5 个参数将信封发件人地址传递给 sendmail,例如:
mail($to,$subject,$message,$headers, '-r bounce_email@domain.com'); // Right way
在这种情况下,电子邮件收件人将收到一封带有以下邮件标题的电子邮件:
Return-Path: <bounce_email@domain.com>
From: <your-website-user@domain.com>
由于这两个标头都包含来自domain.com 的地址,因此 SPF 将通过并对齐,这意味着 DMARC 也将通过 SPF 检查。