好的...我在 Media Temple 有一个托管帐户,最近遇到了邮件服务器将我发送的电子邮件标记为垃圾邮件的问题。我研究了这个问题,发现实施 SPF 是个好主意,我就是这么做的,但问题是:我的 DNS 中的 MX 记录 (mail.mydomain.com) 设置为指向 IP 地址 - 假设为 10.0.0.1 - 但在调查我被 ISP 列入黑名单的原因时,我发现我发送的电子邮件是从不同的 IP 发送的 - 假设为 10.0.0.2 - 与我的 DNS MX 条目中列出的 IP 不同。据我所知,这就是我的邮件被标记的原因:原始 IP 不属于任何地方的 DNS 记录。
因此 - 我进入了之前只有 a:mydomain.com 条目的 SPF 记录,并添加了列出外发邮件服务器 IP 的 ip4 条目(例如 ip4:10.0.0.2)。据我所知,这告诉接收邮件服务器,来自我的域的电子邮件被授权通过该 IP 发出。太好了...没有再遇到任何硬故障...我通过了在域上运行的所有 SPF 测试...一切似乎都正常。
但是,出于好奇,我问 Media Temple 支持人员,该外发邮件服务器 IP 是否会改变……他们回答说,是的,它偶尔会改变。显然,当这种情况发生时,我的 SPF 记录将不再起作用。所以我的问题是,我如何降低这种风险,即让他们更改我的外发服务器 IP,然后我发送的邮件无法通过 SPF 检查?我是不是被坑了,或者我可以用 SPF 记录或其他 DNS 条目做些什么来防止这种情况发生?
以下是我目前的 SPF 情况:
v=spf1 ip4:10.0.0.2 a:mydomain.com/20 -all
答案1
最好的选择是使用 (mt) Media Temple KnowledgeBase 上提供的信息来创建 SPF 记录。这将确保无论将来邮件 IP 发生什么情况,您的 SPF 都能为您提供保障。以下是该文章:
https://kb.mediatemple.net/questions/658
我还想让您知道,假设您使用的是 (gs) Grid-Service,那么邮件 IP 与 Web IP 是不同的。这是因为邮件托管在不同的物理服务器上。因此,如果您的网站上有发送邮件的脚本,请确保也将 *.gridserver.com 添加到 SPF。
现在我要全面披露:我在(mt)Media Temple 工作。
答案2
通常,我会告诉人们不要从他们的网站主机发送电子邮件,原因如下:
- 发件人信誉与你的 IP 相关联,该 IP 通常由很多人共享,信誉不佳的发件人可能会给你带来糟糕的信誉
- 你不知道你的电子邮件是否真的已经发送,或者是否已经送达,或者除此之外的其他任何事情
但就你的情况而言,你需要寻找的是发送电子邮件的 IP 地址的某种别名。使用邮资应用,我们告诉我们的客户在他们的 SPF 记录中使用 mailer.postageapp.com,因为我们的 IP 可能会偶尔发生变化,所以我们使用主机名来确保他们永远不必处理您遇到的问题。
也许您可以考虑获取一个具有设定 IP 或可用主机名的专用 SMTP 服务器来缓解此问题,或者您可以获取一些第三方电子邮件服务,这样您就不必考虑它了。
(全面披露:我是 PostageApp 的产品经理,但我熟悉您的问题。如果您有任何其他问题,请告诉我!)
答案3
使用文章中的设置:https://kb.mediatemple.net/questions/658我们会看到一个“include:”函数。我使用 MT grid,使用提供的 txt 记录“v=spf1 include:spf.mail01.mtsvc.net -all”不起作用。我注意到,在按照设置电子邮件客户端的说明操作时,列出的服务器是“accessdomain.com”,所以我想我也应该添加它。根据文章,如果我想添加另一个域,新的 txt 记录应该是这样的:“v=spf1 include:spf.mail01.mtsvc.net include:accessdomain.com -all”,这不仅没有帮助电子邮件通过垃圾邮件过滤器,而且在使用 G Suite Check MX 工具时会产生错误https://toolbox.googleapps.com/apps/checkmx/(是的,我使用 grid 来托管电子邮件,而不是 G Suite,但我发送邮件以检查邮件是否被发送到垃圾邮件的测试地址是 Gmail 地址)。最后,当我发送一封测试邮件时,我意外地将 gmail.com 写成了 gnail.com,结果收到了退回邮件,因为邮件无法投递。该邮件包含有关原始服务器的信息,如下所示:“http://p3plmtsmtp01.prod.phx3.secureserver.net/“我猜是因为 MT 被 GoDaddy 收购了,而 GoDaddy 使用的就是这些服务器。因此,我再次尝试,这次使用“a:”而不是“include:”,因为此线程的 OP 使用了该函数。为了覆盖所有基础,我的最终文本记录如下所示:“v=spf1 a:spf.mail01.mtsvc.net a:accessdomain.com a:secureserver.net a:p3plmtsmtp01.prod.phx3.secureserver.net -all”,这对我有用。注意:我还没有尝试从此文本记录中删除单个域以查看哪些是最低要求。我只知道它有效,所以我保持原样