通过 SPF 验证电子邮件
Posted
技术标签:
【中文标题】通过 SPF 验证电子邮件【英文标题】:Authenticate Email VIA SPF 【发布时间】:2018-08-15 13:01:23 【问题描述】:好吧,我想不通。我正在使用 phpMailer 从我的域(example.com)向我自己发送一封电子邮件。我正在向自己发送电子邮件。(测试 google 架构标记),但电子邮件未经过身份验证。 这是我用来向自己发送电子邮件的代码。
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'tls://smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = 'myemail@gmail.com';
$mail->Password = '';
$mail->setFrom('myemail@gmail.com');
$mail->addAddress('myemail@gmail.com');
$mail->Subject = 'Microdata Test';
$html = '
<html>
<head>
<script type="application/ld+json">
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "Check this out",
"potentialAction":
"@type": "ViewAction",
"target": "https://www.youtube.com/watch?v=eH8KwfdkSqU"
</script>
</head>
<body>
<p>
This a test for a Go-To action in Gmail.
</p>
</body>
</html>
';
$mail->msgHTML($html);
$mail->send();
这是我的 spf 记录:
v=spf1 a mx include:mailgun.org include:mydomain.com ~all
【问题讨论】:
SPF 只是域反欺骗机制。您是否尝试将 DKIM 记录添加到您的 DNS 中? 我的目标是只使用 SPF。我的理解是足够了。 您无法停止仅使用 SPF 进行欺骗。使用 spf 中的 hardfail,您最多可以将其发送到垃圾邮件。如果您想阻止它发送垃圾邮件,那么唯一的方法是使用所有 SPF、DKIM 和特别是 DMARC,策略为reject
。
【参考方案1】:
由于您使用 Google 的 smtp 发送电子邮件,因此您必须将其包含在您的 SPF 中:
include:_spf.google.com
【讨论】:
这就是我的 SPF 记录现在的样子: v=spf1 a mx include:mailgun.org include:mydomain.com include:_spf.google.com ~all 刚刚尝试发送另一封电子邮件,然后结果是一样的。【参考方案2】:您正在通过 SMTP 从您的主机发送到 google。这意味着 Google 会查看您的主机是否在您的 SPF 记录中并采取相应措施
因此,您必须在 SPF 记录中包含您的公共 ip 并祈祷这样就足够了。
另外,您的用户名是 myemail
而不是 myemail@gmail.com
。当然,密码应该是真正的密码。
如果不起作用,请查阅 PHPMailer 日志,应该有更多提示。
【讨论】:
我添加了域公共地址,现在我的记录看起来像 v=spf1 a mx include:xx.xx.xx.xx include:mailgun.org include:domain.com include:_spf.google。 com~所有。我尝试发送另一封电子邮件,但仍未通过身份验证。 要引用 IP 地址,请将 include:xx.xx.xx.xx 替换为 ip4:xx.xx.xx.xx以上是关于通过 SPF 验证电子邮件的主要内容,如果未能解决你的问题,请参考以下文章