exim4和不同的HELO VPS上的所有域

假设我在同一个VPS上有domain.com,domain2.com,domain3.com,并且他们都发送邮件,但是来自所有域的所有邮件的Helo是localhost,被某些邮件提供者拒绝。 如何使exim4从发送邮件的地方设置域名。 就像我从domain.com发送邮件helo应该是domain.com。 其他问题,这是正确的事情吗?

UPD我改变了主意。 我只是想将它设置为框的FQDN。

smtp传输有一个helo_data设置。 默认情况下,它被设置为$ primary_hostname,这就是为什么如果你想将primary_hostname设置configuration为一个有效的主机名,那么第一个人的build议就可以正常工作。 因为你似乎想用一个dynamic的主机名来使它成为HELO,所以你必须添加一些逻辑来确定它应该使用哪个名字。

在你的DATA ACL的某个地方,你可以检测这些特定的域并设置一个variables。 这是一个非常简单的例子(你可以通过使用文件或数据库查找来增强):

warn domains = domain1.com : domain2.com : domain3.com set acl_m_special_dom = mail.$domain 

查看您的日志,以确定哪些smtp传输正在用于发送此电子邮件。 编辑该传输并添加一个helo_data行来检查acl消息variables,并调整exim将用于HELO / EHLO的主机名:

 helo_data = ${if eq{$acl_m_special_dom}{} \ {$primary_hostname} \ {$acl_m_special_dom} } 

testing检查variables是否为空。 如果它是空的,它将使用$ primary_hostname。 但是,如果它不是空的,那么它必须在上面的ACL条件中设置,以便它在EHLO中使用该主机名。 这个variables是每个消息variables,所以它在每个消息之间被清除(如果多个消息在一个连接中下来)。

您必须确保您在此处使用的任何主机名可在公有DNS(使用Google的DNS进行testing)中parsing,并且parsing的IP也具有反向DNS。 rDNS不需要与您使用的主机名相匹配,但需要解决某些问题 。 如果它反向parsing为看起来像cablemodem或dsl线路那样dynamic的东西,它可能仍然会被大多数主要邮件提供商阻止或推迟。

回到你的描述,这听起来像你正在使用Debian拆分configuration系统。 他们有一个macros,将根据连接到您的exim服务器的发件人IP地址来改变HELO主机名。 如果您的电子邮件源自一台普通的服务器,这意味着您需要根据发件人域名更改此HELO主机名,如上所示。

这样做的“正确”方法是将Exim的“主要主机名”设置为主机的全限定名称。 很less有远程邮件服务器甚至会开始关心邮件From:标题中的域名部分,而且大多数邮件服务器的域部分也不会给予第二眼看,如果它通过了诸如SPFvalidation之类的事情。

这样做的确切步骤将取决于您的安装,但它看起来像简单地将Exim的primary_hostnameconfigurationvariables设置为FQDN,parsing回您的主机的公共IP地址将很好。

您可能会发现http://www.exim.org/exim-html-current/doc/html/spec_html/ch07.html是有帮助的。

这默认为uname提供的服务器主机名,可以通过CLI使用“hostname”命令进行更改。 BSD系统使用主机文件来存储系统主机名。

如果您希望服务器主机名与helo名称标识不同(例如我喜欢使用专用的第二个IP地址以及其他一些configuration),则可以在eximconfiguration中设置$ primary_hostname。 由于$ helo_data默认为$ primary_hostname,因此如果$ helo_data保留为默认值,则这将涵盖发送和接收configuration。

知道这个variables,可能有办法做一个查找表来实现你的每个域的设置改变使用这个设置。 我已经看到了这样的configuration中的东西:

$ {if exists {/ etc / userdomains} {lsearch; / etc / userdomains}失败}