WordPress邮件问题

在将网站从Godaddy搬移到FastComet后,这一周来yellowko都有在慢慢对网站进行调整。在这个过程中发现站点有人评论或登陆之类的变化时WordPress给管理员发的邮件和以前有一些不同,yellowko所用的接收邮箱是Gmail,在检查邮件时发现邮件发送者的头像是一个问号,而在站点迁移前是不会这样的。原因是这些邮件的SPF被标记为了’neutral’,而原来的邮件都是’pass’,因此认为问题可能出在域名的SPF设置上,这里就需要介绍一下这个东西了。

SPF全名Sender Policy Framework,是一个用于邮件防伪和反垃圾邮件的电子邮件认证机制。大致过程就是收件服务器接收到邮件后查找发件人域名的DNS的SPF记录,通过SPF记录中所允许的ip列表与发件服务器ip对照来确定发件服务器ip是否被允许,然后对邮件做对应的接收或拦截操作。邮件系统原理如下图:

单向发送的邮件系统

由于yellowko使用的是虚拟主机托管网站,邮件服务是托管商提供的,所以邮件并没有直接从yellowko的主机上直接发送到收件人域名MX记录指定的收件服务器上,而是将邮件发往了另一个域名,从域名的名称来看yellowko猜测这是一个用于提供过滤和屏蔽垃圾邮件服务的服务器群,由他们处理之后再对邮件做相应操作。最终接收方看到的发件人IP会是他们的IP,所以在yellowko.com的SPF记录要包含他们的IP这样才能使邮件通过验证,关于SPF记录的写法网上有很多教程,这里就不作赘述。有些使用vps建站的小伙伴可能就没有这个过程,而是直接从本地服务器直接发往收件人指定服务器上了。这可能也是主机提供商为了减少垃圾邮件的传播所做的一些策略,另一个方面也能隐藏主机IP,而延时也是出在了这个服务器将邮件发送到Gmail服务器的过程。

为此yellowko做了一个对照,利用Cpanel的的邮件功能直接发送了一些测试邮件,虽然有一定延时,但不至于像WordPress发的延迟那么不稳定,其中不乏有出自同样IP的邮件,但Cpanel发的SPF全部通过,而WordPress发的全被标记为’nuetral’。对比了他们的原始邮件,除了Cpanel发的带了DKIM外还有一个非常大的不同是WordPress使用的是php的mail()函数发送的邮件,这一点甚至被Gmail标记了出来。按理来说SPF足以判断邮件是否伪造,但同样的发件人域名,同样的发件IP,出现了不同的结果,只能猜测是发送方式不同导致的,但我原来在Godaddy上使用的是同样的方法,却没有问题。

WordPress通过PHP的mail()函数发送的自动邮件
使用Cpanel邮件功能发送的邮件

在网上查找了一些相关资料后,发现大家都在提在WordPress上安装SMTP插件来代替php的mail()函数,但他们大多数都是由于mail()函数被禁用了才选择这种方法,少数几个是mail()函数未被禁用但是发出去的邮件都被标记为垃圾邮件然后被退回,没有找到和本站类似情况的。但是一些文章中其中提到了php的mail()函数其实是一个非常危险的函数,这引起了yellowko的注意,或许就是这个原因导致了邮件不被认可,但yellowko又不是太想在WordPress上多添加一个插件,所以最后我选择了向FastComet的客服询问。

令yellowko没想到的是,FastComet的客服响应非常迅速,9分钟回复再过9分钟解决,短短十几分钟就说明了问题并给出了解决方案,不得不给点个赞。客服一针见血地指出WordPress默认PHPMail函数发的邮件是未经验证的邮件,所以才会出现这种情况,解决方案就是装SMTP插件

Ticket内容增加SMTP插件后发送的邮件

不得不吐槽一下自己的嘤语水平,yellowko打了一大堆客服两句话就给描述完了(尬笑)。

 


知识共享许可协议
本作品由yellowko采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据