我有一个安装了 postfix 的 serverbeach 服务器。
主机名类似于 p3204059.pubip.serverbeach.com
服务器本身的 FQDN 被指定为 NONE。
我点击了更改 ptr 记录,输入了我的 ip 并将 FQDN 设置为:mysubdomain.mydomain.com 它可能尚未完成传播。IP 主机名是否与 FQDN 相同,是否与反向 DNS 相同?
我从 php 发送了一封电子邮件,它说它工作正常,但我没有收到电子邮件。我是否应该将机器上的主机名更改为 mysubdomain.mydomain.com?我还需要对 DNS 进行哪些操作才能防止我的电子邮件进入垃圾邮件文件夹?
答案1
首先是要点:
- 阅读相关的 RFC,例如RFC 5321,并确保您的邮件符合该要求,不要遗漏任何标题,例如
Date:
Subject:
或From:
,并仔细阅读该字段的格式详细信息From:
。仅有电子邮件地址已不再有效。 - 仔细检查所
From:
使用的地址是否是可以接收邮件的有效地址。 - 让 PHP 通过您本地的 postfix 安装发送邮件,而不是直接通过互联网或通过网络托管主机发送邮件。
- 保持 DNS 条目对于正向和向后查找相同(
mysubdomain.mydomain.com.
应解析为具有指向的 PTR 记录的 IP 地址mysubdomain.mydomain.com.
)。 - 让邮件服务器使用其正确的 FQDN (
mysubdomain.mydomain.com.
) 发送其 HELO (EHLO)。 - 实施 DKIM 签名发送的电子邮件
- 避免与经常遭受黑客攻击的系统共享主机。
- 将您的服务器添加到DNSWL.ORG
- 发布SPF 记录表明您的服务器是该域的合法发件人主机
- 避免“垃圾”内容:-)
- 注意 8 位字符。它们需要在标题中进行适当的编码。
设置完成后,如果邮件仍然无法发送,您就可以进行故障排除了:
检查 Postfix 邮件队列(
mailq
)和日志,例如/var/log/mail*log
(文件名可能因发行版不同而不同)如果邮件没有离开服务器,postfix 通常会告诉您原因。
如果邮件确实离开了服务器,则问题出在收件人端。检查邮件日志以查找收件人的 MX 状态消息。它应该如下所示:
2013-11-26T11:04:23.435295+01:00 jamie postfix/smtp[28919]: 415E65E3976: to=<[email protected]>, relay=hoover.blaha.se[123.45.67.89]:25, delay=0.24, delays=0.2/0.02/0/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 661D12C0CD)
请注意“ status=sent
”、 “ ”(250
和“ queued as 661D12C0CD
”。
250
是接收 MTA 的状态代码,表示成功,现在投递是他们的责任。如果状态代码以 开头4
(如450
),则出现临时错误,邮件应保留在您的队列中(以 可见mailq
)。如果状态代码以 开头5
(如550
),则出现永久性故障,使用同一收件人地址重试毫无意义。然后邮件将从您的队列中删除,不会投递,并且可能会向发件人发送退回邮件。这就是您需要有效地址的原因之一From:
。
本例中的数字661D12C0CD
是远程系统的队列 ID。在接收方查看日志(或与邮件管理员交谈)时使用该数字。
答案2
我是否应该将机器上的主机名更改为 mysubdomain.mydomain.com?
通常情况下,SPAM 过滤器会拆开域名、垃圾邮件来源 IP(在某些情况下甚至是整个 IP 块或完整的 ASN,检查保护和Whatsmyip.com黑名单检查)
我还需要对 DNS 执行哪些操作才能防止我的电子邮件进入垃圾邮件文件夹?
我已经说过好几次了,但是,不要发送垃圾邮件,这应该是第一种方法。之后,对来自/到服务器的所有连接使用 SSL/TLS。暂停使用您的服务器发送垃圾邮件的帐户。不要将您的服务器配置为开放中继。加强您的服务器以防黑客。等等。等等。您可以使用太多的工具和方法来做到这一点,它不会结束。
我刚刚将 PTR 更新为主域名。如何诊断我的服务器邮件未到达目的地的原因?
您确定您的 ISP 允许您发送电子邮件吗?您是否正确配置了服务器端口?服务器是否能够自行发送邮件?很难诊断,因为从本地到中间再到端点,有太多事情可能出错,如果没有日志、ping、测试和更多测试,就不可能知道。如果您愿意,可以检查http://whatismyipaddress.com/blacklist-check并输入您的服务器 IP。如果列出,则很可能这就是您无法从服务器收到电子邮件的原因,如果没有列出,则必须提供更多信息并进行测试。
资源:
答案3
MX 工具箱是您的朋友。执行mx:mysubdomain.mydomain.com
、blacklist:mysubdomain.mydomain.com
并ptr:mysubdomain.mydomain.com
使用其超级工具进行搜索以诊断邮件问题。
AOL、JUNO 和 YAHOO(可能还有更多,但肯定是这些)需要来自发送电子邮件服务器的有效 PTR 记录,以便将邮件发送给其用户。我注意到 GMAIL 不需要 PTR 记录,但它会查找主机的 MX 记录。
答案4
对我来说,这两点足以通过雅虎和谷歌的垃圾邮件过滤器:
- 确保发送电子邮件的计算机具有反向 PTR 记录
- 在 DNS 和代码中配置 DomainKeys Identified Mail
您可以在 Jeff Atwood 撰写的这篇精彩文章中阅读相关内容 https://blog.codinghorror.com/so-youd-like-to-send-some-email-through-code/