如何更改 Helo 地址?

现在我的Helo地址= localhost (helo=localhost)。将其设置为服务器的域名会更好吗?如果是的话,我该如何更改?我正在运行Ubuntu 12.04和Postfix。谢谢。
2个回答

你可以在后缀配置文件/etc/postfix/main.cf中进行更改。
helo行由smtpd_banner参数控制。它可能引用了myhostname选项。请将服务器名称放在那里,而不是localhost
myhostname = server.example.com
smtpd_banner = $myhostname

使用sudo postfix reload重新启动postfix。

@nvidot,感谢你的编辑建议。你对我的回答提出了一个重大改变。你应该将它作为一个新的回答发布。对我来说,这听起来是一个有效的替代答案,所以你应该能够得到相应的认可。 - Calimo

帖子所有者的目标是了解如何在Postfix配置中设置“Helo地址”,以及最佳设置值是什么。我假设通过“最佳”,我们应该理解为“能够使我的邮件在交付时被接受的机会最大的值”。
“helo行”由smtp_helo_name参数控制。默认情况下,它引用了myhostname参数。
smtp_helo_name = $myhostname

为了通过spf_helo测试,您需要在DNS中为地址smtp_helo_name引用的相应SPF记录。
如果您已经为您的域配置了这样的SPF记录,实现SPF helo检查的一种简单方法是使用该域作为helo名称:
smtp_helo_name = $mydomain

但最佳实践是将其设置为发出主机的完全限定域名。这需要在您的DNS中为该FQDN主机名设置SPF。 注意:以下适用于单个域,只需将所有出现的domainB替换为domainA如果domainA还服务其他域,请将它们配置为与domainB相似。
例如,假设domainB.tld的DNS包含以下内容:
                       600 IN TXT    "v=spf1 mx -all"
                           IN MX     mx.domainA.tld

domainA 托管了 domainB 的 SMTP 服务器: mx.domainA.tld
然后,domainA 的 DNS 区域必须包含一个 SPF 记录,用于主机 mx,以及相应的解析到 IP 地址的记录,例如:
mx                     600 IN TXT    "v=spf1 a -all"
mx                     600 IN A      A.B.C.D

如果myhostname引用mx.domainA.tld,你可以让smtp_helo_name保持默认值(即myhostname),或者根据需要进行配置。
然后重新加载 postfix 配置systemctl reload postfix)。

1鉴于个人经验,我最近查阅了黑名单提供商Spamhaus的声明,他们指出HELO检查最好使用FQDN。如果其他人不确定,我想留下这个信息,并且Postfix手册也有类似的说法。 - petrosmm
1感谢您提供的信息。最初我进行了这样的配置,是因为我试图实现SPF helo检查,但返回了"SPF_helo: none: local="<fqdn_hostname>: No applicable sender policy available"。将域名作为smtp_helo_name传递确实起作用,但并不令人满意,我记不清具体原因了(可能与GMAIL有关)。所以最终我回到了默认设置(即$myhostname),我意识到要通过helo检查,缺少的是fqdn_hostname的SPF记录,除了域名本身的SPF记录。 - nvidot
谢谢您的跟进。现在人们不必花费数小时来寻找这样的信息了。 - petrosmm