Exim:如何在本地和通过 SMTP 中继传递邮件

Exim:如何在本地和通过 SMTP 中继传递邮件

我目前已将来自 Exim 的所有电子邮件转发到我们网络上的出站 STMP 服务器。以下是我的 Exim 配置中用于发送邮件的部分:

send_to_gateway: driver = manualroute transport = remote_smtp route_list = * outbound-stmp.domain.com

这对于从我们的 Web 服务器发送到外部地址的电子邮件非常有效。当 cron 作业向本地 root 帐户发送电子邮件时,它不起作用。这些本地电子邮件被发送到我们的出站服务器并被退回,因为它们无法发送到“root@localhost”之类的服务器。

是否可以通过 Exim 将发往本地帐户的电子邮件保留在本地机器上,而将非本地的电子邮件通过中继发送?

答案1

您需要为网关定义一个路由器,为本地传送定义另一个路由器,以及它们的使用条件。

因此,要本地传递发往后缀的邮件,请定义包含“localhost”的*.localhost域列表,并在第一个路由器中包含一个子句。Exim 将检查该子句以决定是否应使用路由器。local_domainsdomainsdomains

exim.conf:

...

#                    MAIN CONFIGURATION SETTINGS                     #
domainlist local_domains = @ : localhost : localhost.localdomain : mydomain.com

...

begin routers

...

send_to_gateway:
  driver = manualroute
  domains = !+local_domains
  transport = remote_smtp
  route_list = * outbound-stmp.domain.com

...

localuser:
  driver = accept
  check_local_user
  transport = local_delivery
  cannot_route_message = Unknown user

...

domains = !+local_domains条件的意思是“当域名为不是local_domains列表中。”!意思是不是,+表示取消引用以下变量/列表

相关内容