现在的情况:
我们有一个 VPS,用于托管网站 example.org。Exim 配置为智能主机。通过 exim 发送的所有电子邮件都成功转发到另一台邮件服务器(在 example.com 上运行)。
目标:
将发送至 *@example.org 的邮件转发至 *@example.com,即将收件人的地址从 *@example.org 更改为 *@example.com。
问题:
如果我发送电子邮件到地址 *@example.org,则 exim 似乎不会更改地址,它仍将邮件转发到另一个邮件服务器,但收件人仍是 *@example.org。也许由于某种原因未应用重定向。
配置和日志:
/etc/exim4/update-exim4.conf.conf:
dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces=''
dc_readhost='example.org'
dc_relay_domains='example.org'
dc_minimaldns='false'
dc_relay_nets='0.0.0.0/32'
dc_smarthost='example.com::26'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
/etc/exim4/conf.d/router/999_exim4-config_redirect (由我创建):
domain_redirect:
debug_print = "R: forward for $local_part@$domain"
driver = redirect
domains = example.org
data = [email protected]
(目前,为了简单起见和测试,数据被设置为特定地址)
发送电子邮件至时的 exim 日志[电子邮件保护](应重定向至[电子邮件保护]):
2012-03-20 19:40:07 1SA4ud-0005Dw-7k <= [email protected] U=www-data P=local S=657
2012-03-20 19:40:08 1SA4ud-0005Dw-7k => [email protected] R=smarthost T=remote_smtp_smarthost H=domain2.com [184.172.146.66] X=TLS1.0:RSA_AES_256_CBC_SHA1:32 DN="C=US,2.5.4.17=#13053737303932,ST=TX,L=Houston,STREET=Suite 400,STREET=11251 Northwest Freeway,O=HostGator.com,OU=HostGator.com,OU=Comodo PremiumSSL Wildcard,CN=*.hostgator.com"
2012-03-20 19:40:08 1SA4ud-0005Dw-7k Completed
因此,地址没有改变:(
请帮忙!我已经花了半天时间才让它工作 :(
解决方案:
所以,顺序表帮助我解决了这个问题。虽然这个解决方案对我来说有点奇怪。当我尝试设置 dc_use_split_config='true' 时,它没有帮助,看起来我的重定向文件没有被使用。此外,当我尝试将这些重定向行添加到 /etc/exim4/exim4.conf.template 的末尾时,它也没有帮助。但是当我尝试将这些行粘贴到“begin routers”行之后时,它终于起作用了!
答案1
请使用 example.com 而不是 domain2.com,example.com(和 .org .net)是专门为示例和文档创建的。
在您的 /etc/exim4/update-exim4.conf.conf 中您已配置:
dc_use_split_config='false'
但是,您正在 /etc/exim4/conf.d/router/999_exim4-config_redirect 中更改某些内容,由于您没有使用拆分配置,因此这些更改将被忽略。
可以这样做:
dc_use_split_config='true'
然后重新加载 exim4,您可能更喜欢使用以下命令进行更改:
dpkg-reconfigure exim4-config
或者编辑 /etc/exim4/exim4.conf.template 来添加您的定制,并在完成后重新加载 exim4。
Debian exim4 有一个名为 hubbed_hosts 的功能,它可以方便地完成您想要的操作,而无需添加您自己的路由器等。
因此,如果您希望您的服务器将发往域 example.org 的电子邮件发送到域 example.com(该域的 MTA 监听 IP 192.0.2.1 和 192.0.2.10),请执行以下操作:
创建 /etc/exim4/hubbed_hosts 并添加:
example.org:192.0.2.1:192.0.2.10
重新加载 exim4
请注意,IP 地址之间没有空格,并且以冒号“:”分隔
这样做的目的是将发往 example.org 的电子邮件转发到 IP 192.0.2.1、192.0.2.10(在我的示例中为 example.com 的 IP)。因此,它将忽略该域的 MX 记录。IP 地址可以是任何地址,只要配置为接收这些电子邮件即可。
最后还有地址重写,见:http://www.exim.org/exim-html-current/doc/html/spec_html/ch31.html 也许它有一些东西可以满足您的要求。除了 hubbed_hosts 之外,您还可以使用它。