SpamAssassin 的 SPF 问题

SpamAssassin 的 SPF 问题

我有一款用于小公司的内部管理应用程序,用 Python 编写,运行在 Linode VPS 上,用户可以使用该应用程序偶尔向客户发送电子邮件。电子邮件非常简单:文本部分(即非 HTML)带有 PDF 发票附件,使用emailstdlib 模块创建并通过外部 SMTP 服务器(不在 VPS 上托管)发送。

一段时间以来,一切都运行得相当顺利,但最近我收到投诉,称电子邮件经常被接收邮件服务器归类为垃圾邮件。我发送了一封测试电子邮件给http://www.mail-tester.com我发现添加一些缺失的标头(Date特别Message-ID是)有助于降低邮件的“垃圾邮件”级别。但是,有一个与 SPF 相关的 SpamAssassin 问题仍然困扰着我:

SPF_HELO_SOFTFAIL   SPF: HELO does not match SPF record (softfail)

我尝试将测试电子邮件发送到我的 Gmail 帐户,以下是我执行“显示原始内容”时可以找到的相关标题:

Received-SPF: pass (google.com: domain of <sender_address> designates <ip_smtp_server> as permitted sender) client-ip=<ip_smtp_server>;
Received: from [<ip_linode_vps>] (helo=<domain_name_linode_vps>)

从这个以及我到处收集的一些额外信息,我很确定这个问题可以通过以某种方式修改 SMTP 服务器域的 SPF 记录(它已经存在,作为带有"v=spf1 a mx... ~all"包含ip4对 的引用的字符串的 TXT 记录<ip_smtp_server>)来解决,但我目前的理解还不足以做到这一点,所以我很感激任何帮助。

更新:

<ip_linode_vps> = 69.164.216.89
<domain_name_linode_vps> = li131-89.members.linode.com
<ip_smtp_server> = 192.99.17.51
<domain_name_smtp_server> = mail.roucet.com
<already_existing_spf_record> = "v=spf1 a mx ip4:192.99.17.51 ip4:158.85.89.116 ip4:158.85.77.121 ~all"

答案1

所有授权邮件服务器都应列在 SPF 记录中。由于您现在有了新的授权邮件服务器,因此应将其添加。一些垃圾邮件检查会区分列出的(A、MX)和允许的(~all),并且不会将未列出的地址视为通行证。这会惩罚不通过批准的服务器发送邮件的发件人(通常是垃圾邮件机器人)。与可能导致电子邮件被阻止或隔离的策略 ~all相比,该策略表明用户并不真正关心谁使用他们的域。-all

另一种方法是配置新服务器以使用现有服务器中继消息。应用程序通常允许配置电子邮件中继服务器。在 Python 中,您将配置 VPS 服务器名称而不是 localhost。

无论哪个服务器发送电子邮件,它都应该在从应用程序接收消息时添加所需的标头。或者,您可以在应用程序中添加标头。日期标头中的日期有定义的格式。消息 ID 标头有定义的格式,但不那么严格。消息 ID 类似于电子邮件地址,但左侧应该是唯一的 ID。

相关内容