我之前配置过几次邮件服务器,我相信当时我认为答案是“是”。
但我即将配置另一个,看来我错了。假设顶级域(example.com
)和(唯一)MX 记录指向同一台服务器(mail.example.com
)。然后我可以:
example.com
指向服务器 IP (aa.aaa.aa.aaa
) 并将其指回 (PTR)example.com
- 邮件服务器(
postfix
,exim
, ...)响应example.com
(HELO
,MAILFROM
)
然后 SPF、DKIM 和 DMARC 记录名称为:@
,mail._domainkey
(如果选择器是mail
)和_dmarc
。或者简而言之:
@ A aa.aaa.aa.aaa
@ MX 10 mail
mail A aa.aaa.aa.aaa
aa.aaa.aa.aaa PTR @
@ TXT (SPF)
mail._domainkey TXT (DKIM)
_dmarc TXT (DMARC)
但是,如果我有 2 个 MX 记录(mail1
和mail2
)怎么办?那么,我不能example.com
指向 2 个不同的 IP,然后将它们重新指向example.com
,对吗?但即使我可以,我也可以看到 Gmail 不使用gmail.com
, HELO
。MAILFROM
而且,让每台服务器都用自己的名称进行响应似乎更合理,不是吗?但是,那又怎么样,我应该有 2 个 SPF 记录吗?毕竟:
SPF 的当前版本(称为 SPFv1 或 SPF Classic)保护信封发件人地址
http://www.open-spf.org/Introduction/
@ A (whatever)
@ MX 10 mail1
mail1 A aa.aaa.aa.aaa
aa.aaa.aa.aaa PTR mail1
@ MX 20 mail2
mail2 A bb.bbb.bb.bbb
bb.bbb.bb.bbb PTR mail2
mail1 TXT (SPF)
mail2 TXT (SPF)
mail._domainkey TXT (DKIM)
_dmarc TXT (DMARC)
说实话,在阅读了有关配置邮件服务器的不同文章和答案后,我感到很困惑。正确的或更好的设置是什么?
答案1
HELO 主机名可以与发送者不同
主机HELO
名应该有一个匹配的A
& PTR
,但它们不必与使用的域匹配RFC 5321 MAIL FROM
也不RFC 5322 发起者字段 From
标题 – 甚至不共享组织域。
例如,mail1.example.com
&mail2.example.com
可以为example.com
、example.net
&发送邮件example.org
。否则,每个域都需要一个具有匹配PTR
记录的自己的 IP 地址。想想大型电子邮件服务提供商正在处理的域名数量,他们肯定为所有域名使用通用基础设施。
MX 记录用于接收邮件
这些MX
记录与发送邮件无关,而是与接收邮件有关。就您的问题而言,它们之间没有任何关系。入站邮件可能由完全不同的一组服务器处理。例如,来自某个域的新闻稿可以使用 SendGrid 或 MailChimp 发送,而传入邮件则由 M365 或 Gmail 处理。
HELO/DNS 不匹配的原因
使用HELO
//A
不PTR
匹配作为垃圾邮件的指示很常见,例如 MXToolBox 所描述的:
-
一些接收邮件服务器可能会使用不匹配或被屏蔽的横幅作为评分系统中可能的垃圾邮件来源的指示,但大多数不会仅基于此而拒绝收到的邮件。
-
一些接收邮件服务器可能会将此作为评分系统中可能的垃圾邮件来源的指示。大多数不会仅以此为由拒绝收到的邮件。我们建议您联系您的 ISP,并要求他们设置与您的邮件服务器主机名匹配的反向记录 (PTR)。
这种做法可能来自于RFC 5321, 2.3.5:
命令中给出的域名
EHLO
必须是主主机名(解析为地址 RR 的域名),或者,如果主机没有名称,则为地址文字,如中所述 第 4.1.3 节EHLO
并在讨论 中进一步讨论第 4.1.4 节。
然而,这并不是一个硬性要求,因为4.1.4进一步定义:
如果可能,SMTP 客户端必须确保
EHLO
命令的域参数是主主机名,如第 2.3.5 节如果这不可能(例如,当客户端的地址是动态分配的并且客户端没有明显的名称时),则应该用地址文字代替域名。SMTP 服务器可以验证命令中的域名参数是否
EHLO
确实与客户端的 IP 地址相对应。但是,如果验证失败,服务器不得以此为由拒绝接受消息。
这里,SMTP 协议似乎遵循稳健性原则即“做事要保守,接受别人的事情要宽容”。
防晒指数
必须发件人策略框架(SPF)实施以保护MAIL FROM
身份(RFC 7208, 2.4)并且可以选择保护HELO
身份(RFC 7208, 2.3), 也:
建议 SPF 验证者不仅检查
MAIL FROM
身份,还HELO
通过应用check_host()
函数单独检查身份(第 4 部分)HELO
的身份<sender>
。检查HELO
可以提高结果的一致性,并可以减少 DNS 资源的使用。如果可以根据对 的检查对消息做出结论性判断,则可以避免HELO
使用 DNS 资源来处理通常更复杂的内容。MAIL FROM
由于这是独立完成的,因此 SPF 也不要求它们匹配。
SPF 可防止主机名被用作信封发件人未经许可,子域也不会继承该记录。因此,您应该A
使用相应的 SPF 记录保护您拥有的每条记录TXT
- 而不仅仅是您用于发送电子邮件的记录。
DMARC
这基于域的消息认证、报告和一致性(DMARC 要求匹配RFC5322.来自以及标识符对齐方式,定义在RFC 7439, 3.1。这些标识符可以是 DKIM 认证的(3.1.1)或 SPF 认证(3.1.2),并且根据模式的不同,可能需要精确匹配或共享组织域(3.2)。与 SPF 不同,DMARC 是继承的;域顶点的 DMARC 策略From
还可以保护所有子域不被用在标头中。
SPF 对齐需要匹配MAIL FROM
,但 DKIM 对齐不需要;只需具有匹配的有效且授权的 DKIM 签名即可签名域标识符(SDID)(d=
字段)。总之,这两者都不需要匹配HELO
/EHLO
主机名。