可以将 exim 配置为向外部发送所有电子邮件吗?

可以将 exim 配置为向外部发送所有电子邮件吗?

当发件人的域、收件人的域和服务器主机名全部匹配时,如何配置 exim4 以通过第三方 SMTP 服务器路由所有电子邮件?

我跟着这个很好的答案并且已经exim4测试过从 Ubuntu 服务器向其他域的地址发送电子邮件,并且一切正常。我唯一的问题是,如果发件人和收件人共享与服务器主机名相同的域,则电子邮件永远不会离开服务器(这是预期的行为)。

例如,从发送[电子邮件保护]-->[电子邮件保护]工作正常,但发送自[电子邮件保护]-->[电子邮件保护]仅将邮件本地路由到/var/mail/account2,而无需经过第三方 SMTP 服务器。

我在自己的域中使用 Google Apps,并希望从[电子邮件保护][电子邮件保护]来自主机名为 example.com 的机器。

我想通过 Google 的 SMTP 服务器路由它们,这样我就可以在其他电子邮件客户端中看到它们。这可以吗?

非常相似的问题(但对于postfix这里这里

答案1

如果你遵循我的问题中链接的指南你有大约十几个不同的“路由器”(简单的文本文件)/etc/exim4/conf.d/router/。要编辑的是 200_exim4-配置-主,像这样:

sudo nano /etc/exim4/conf.d/router/200_exim4-config_primary

底部有一个“smarthost:”部分,如下所示:

smarthost:
  debug_print = "R: smarthost for $local_part@$domain"
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp_smarthost
  route_list = * DCsmarthost byname
  host_find_failed = defer
  same_domain_copy_routing = yes
  no_more

从“域”行中删除感叹号和空格,使其看起来像这样:

  domains = +local_domains

只需编辑这两个字符,一切就都正常工作了。在 Ubuntu Server 12.04 + Exim 上,在我的域中测试并使用 Google Apps,并感谢 Stefan 提供的线索!

答案2

看看设置和使用

domainlist local_domains

在事情变得有趣之前,你应该在访问列表中找到一些用途路由器部分。我家里的盒子里有这个第一的路由器:

    send_to_gateway:
      driver = manualroute
      domains = ! +local_domains
      transport = remote_smtp_smarthost
      route_list = * SMARTHOST

澄清:以下路由器将适用于发送到 ˋlocal_domainsˋ 内容的所有电子邮件

    send_to_gateway:
      driver = manualroute
      domains = +local_domains
      transport = remote_smtp_smarthost
      route_list = * SMARTHOST

使用的传输在 exim 配置的传输部分中定义,您应该已经有一个(可能使用不同的名称),它将您的邮件推送到其他地方。route_list 变量告诉 exim 将此路由器的所有邮件推送到服务器 SMARTHOST。

你应该花点时间阅读一下详细的 exim 手册。它将帮助你完成超出 ubuntu 简化配置能力范围的非标准设置。

答案3

将您的主机添加到dc_relay_domains配置参数中,例如:

dc_relay_domains='example.com'

并删除!之前的符号+local_domains,或者如果你不使用拆分配置( )dnslookup_relay_to_domains则看起来像:router/200_exim4-config_primaryexim4.conf.templatedc_use_split_config='false'

dnslookup_relay_to_domains:
  debug_print = "R: dnslookup_relay_to_domains for $local_part@$domain"
  driver = dnslookup
  domains = +local_domains : +relay_to_domains
  transport = remote_smtp
  same_domain_copy_routing = yes
  no_more

或者简单地!dnslookup部分中删除以将所有内容发送到外面:

dnslookup:
  debug_print = "R: dnslookup for $local_part@$domain"
  driver = dnslookup
  domains = +local_domains
  transport = remote_smtp
  same_domain_copy_routing = yes

相关内容