根据 Discourse 的官方推荐,我们使用的是 MailGun 的服务。
在大部分情况下都没有问题,但是在一些特定的邮件地址,例如 iCloud,我们在发送激活邮件的时候有提示为:
"message": "5.5.1 Error: need MAIL command - MAIL FROM error: 450 4.1.8 <bounce+6712f2.21c8873-lucas.hu=@mail.visafn.com>: Sender address rejected: Domain not found",
下面的图片显示了邮件服务提供商提供的错误日志信息:
问题和解决
上面问题的主要原因是一些特定的邮件服务商有垃圾邮件校验策略。
尤其是 iCloud,在 iCloud 中对发送电子邮件的域名地址会进行校验。
因为我们的服务使用了子域名的发送,我们发送的域名地址实际为:mail.visafn.com 而不是传统的 visafn.com
因此,iCloud 没有办法校验上面的地址,而认为系统发送的邮件为垃圾邮件而拒收了。
解决办法
解决的办法也非常简单,需要确定 mail.visafn.com 我们发送邮件使用的这个二级域名的 MX 记录在 DNS 上要存在。
如上图标记的内容。
二级域名的 MX 记录需要添加到你的 DNS 上,并且上面的记录要显示为被校验。
当然更新 DNS 不会马上生效,你如果继续往 iCloud 中发送的话,可能还是会出现间歇性错误。
等待几个小时后再进行测试,通常能够解决发送邮件被标记为垃圾邮件的问题。
通常 Discourse 发送电子邮件的问题,多半是电子邮件服务器配置和 DNS,MX 记录的问题。