现在我正在使用 php mail() 函数发送电子邮件。我将标From:
头设置为与发送电子邮件的服务器的主机名和反向 DNS 相对应的地址,如下所示:
$header = 'From: Foo <[email protected]>' . "\r\n" .
'Reply-To: [email protected]' ;
$x = mail($to,$subject,$body,$header);
这工作正常,所以 var,每封电子邮件都会通过我测试的所有提供商。
主机名只是来自提供根服务器的 ISP 的长而通用的名。
我知道如果我更改主机名(系统或 sendmail 中的主机名)并相应地设置反向 DNS,我就可以获得与我的域相对应的 From: -header。
但是,将主机名设置为与网站运行所在的域相同的域可能会导致 apache 出现问题(例如提供默认的 vhost 而不是特定于域的)。
我知道这一切都可以处理,但是我不想管理邮件服务器等,并且考虑使用 Amazon Simple Email Service
我已完成所有设置,但电子邮件仍然被 Gmail 标记为垃圾邮件。
我很惊讶,因为反向 DNS 和 spf 策略与信封地址相对应。然而,gmail 在评估 From: 标头时似乎特别严格。
因此,我在 DNS 中添加了 SPF 和 SenderID 记录
(我阅读了相关内容并使用向导工具添加了它们,据我了解它们应该是正确的。也许我在这里有错误?)
这是输出dig -t txt mydomain.com
;; ANSWER SECTION:
mydomain.com. 1800 IN TXT "spf2.0/pra include:amazonses.com include:_spf.google.com ip4:1.2.3.4 ?all"
mydomain.com. 1800 IN TXT "v=spf1 include:amazonses.com include:_spf.google.com ip4:1.2.3.4 ?all"
我已经允许多个拨号来传播更改,但 Gmail 仍然将我的电子邮件标记为垃圾邮件。
让我们总结一下:
From: -header tld 与信封域不对应,但信封域与发送服务器的反向 DNS 和主机名对应(这都是亚马逊)。
已设置与 From: 标头相对应的 SPF 和 SenderId 记录。
Gmail 一直将邮件标记为垃圾邮件。
有人能给我指出正确的方向吗?
答案1
嗯,我不知道其他人怎么样,但亚马逊的 SES 是我的垃圾邮件过滤器是垃圾邮件的持续和顽固来源,并且该服务无法帮助我识别哪些用户是合法的,哪些不是。并不是说这就是 gmail 直言不讳的原因,但它可能没有帮助。
答案2
SPF 记录并不是确定邮件是否为垃圾邮件的唯一因素。例如,Gmail 会查看 DomainKeys/DKIM。请参阅http://mailchimp.com/about/authentication/了解有关不同电子邮件服务及其使用的不同身份验证技术的更多信息。
查看您电子邮件的标题,SPF 顺利通过。
因此,您可能需要考虑为您的电子邮件实施 DomainKeys/DKIM。在 Gmail 中,这将在标题的详细信息中显示“签名者”行。
此外,电子邮件的内容也会有影响。无论 Gmail 是否认为该电子邮件是真实的,它仍可能会根据用户反馈、内容和其他因素将您的电子邮件标记为垃圾邮件。
答案3
我发现,即使启用了反向 DNS 和其他反垃圾邮件设置,大多数收件人也会将来自 Amazon EC2 IP 范围的所有电子邮件视为垃圾邮件。因此,我通过外部服务器转发任何重要邮件。这是 AWS 的一个主要缺点。