我在 Ubuntu Server 12.04 上,我成功安装并配置了 Exim4,如下所示本指南。
我将主机名设置为“multiformeingegno.com”,并且我的 /etc/hosts 如下所示:
127.0.0.1 localhost
127.0.1.1 multiformeingegno
IPv4 ADDRESS multiformeingegno.com multiformeingegno
IPv6 ADDRESS multiformeingegno.com multiformeingegno
我可以通过 PHP 顺利发送邮件。我有两个问题。
我在 VPS 上,我的主机是 xxxxx.server.topcloud.it,我想在发送的邮件中隐藏这个地址!我可以从标签中查看它:已接收:来自 multiformeingegno.com (xxxxxx.server.topcloud.it。[IPv4 地址]) 有没有办法只将“multiformeingegno.com”显示为“来自”?
在我的 VPS 上,我托管了多个网站。如何根据“正在使用”的域更改我的主机名/fqdn(如果我使用的术语不正确,请纠正我)?例如,我的网站 multiformeingegno.com 中有一个联系表单,另一个网站 example.com 中有一个联系表单。如何根据实际发送邮件的网站更改“返回路径”、“接收自”等?这可能吗?
答案1
- 该标头由接收来自您服务器的消息的 MTA 添加。它通过对您用于连接的 IP 地址进行反向查找来获取 topcloud.it 主机名。更改此主机名的唯一方法是让您的托管服务提供商更改您的 IP 地址的 PTR 记录。
- 我对 Exim 并不是特别了解,但邮件服务器根据发送的消息更改其声明的主机名的情况并不常见,所以我怀疑您是否可以做到这一点。
- 返回路径由发件人地址决定,因此这应该自动发生。
答案2
我有一个在 Ubuntu 14.04 上托管多个域的 VPS,并且想确保发送的电子邮件头仅包含虚拟主机的 IP 或 FQDN。
我首先从这个开始指导在 Linode 上。之后我执行了以下步骤:
创建一个文件 - /etc/exim4/mailhelo 并使用 domain.com:helodomain.com 的语法生成类似以下内容:
domain1.com: domain1.com
domain2.com: domain2.com
*: defaultdomain.com
创建一个文件 - /etc/exim4/conf.d/01_custom_transport 并添加以下内容:
REMOTE_SMTP_HELO_DATA = ${lookup{$sender_address_domain}lsearch{/etc/exim4/mailhelo}{$value}{$primary_hostname}}
编辑文件 - /etc/exim4/conf.d/30_exim4-config_remote_smtp 并将以下内容添加到文件末尾:
headers_remove = "received"
执行
update-exim4.conf
service exim4 restart
查看 Web 表单电子邮件的标题,没有我的 VPS 主机名的证据。不要忘记使用您的 DNS 提供商为虚拟主机创建 SPF 记录。
答案3
- 您无法隐藏已发送电子邮件的地址,原因如 mgorven 所述:它是由接收电子邮件的邮件服务器添加的,而不是由您的邮件服务器添加的。
- 您可以配置 exim 来更改其出站名称(即 EHLO/HELO 中使用的名称),如果您有多个外部 IP 地址,则可以配置 exim 来更改其在传输中使用的出站 IP 地址。
样品运输:
remote_smtp_forwarder:
debug_print = "Transport: remote_smtp_forwarder for $local_part@$domain"
driver = smtp
max_rcpt = 10
hosts_max_try = 2
interface = 10.1.2.141
helo_data = "out.forwarder.iv.ivenue.com"
在此示例中,10.1.2.141 经过出站 NAT,将从 out.forwarder.iv.ivenue.com (208.89.136.23) 连接到您的邮件服务器,并且它将发出“EHLO out.forwarder.iv.ivenue.com“到您的邮件服务器。我已将其硬编码到特定 IP 地址,但您也可以使用查找来确定接口和 helo_data(如果您愿意)。这取决于您需要多少复杂性。