exim4 转发器无法路由外部邮件,但可以路由内部邮件

exim4 转发器无法路由外部邮件,但可以路由内部邮件

我已将 exim4 配置为转发特定地址的电子邮件。

这些地址位于服务器作为主 MX 的虚拟域上。

这些域上的其他地址会被传送到本地邮箱,但配置为转发的地址会转到服务器不是 MX 的外部域,并且邮件不应传送到本地邮箱。

例如,如果该服务器是的主要MX example.com,它应该在本地提供邮件,[email protected][email protected]应该转发给[email protected]

所有虚拟域和地址的数据都存储在 MySQL 中。

服务器操作系统是 Debian。

转发路由器的配置/etc/exim4/conf.d/router/400_exim4-config_mysql_forward如下:

mysql_forward:
  debug_print = "R: forwarder(mysql) for $local_part@$domain"
  driver = redirect
  no_verify
  no_expn
  check_ancestor
  forbid_smtp_code = true
  skip_syntax_errors
  domains = +local_domains
  data = ${lookup mysql{SELECT forward_to FROM mail_forwarders WHERE domain='${quote_mysql:$domain}' AND localpart='${quote_mysql:$local_part}' AND active=1} {${sg{$value}{\\n}{, }}}}

exim -bt [email protected]输出类似以下内容:

R: forwarder(mysql) for [email protected]
R: dnslookup for [email protected]
[email protected]
    <-- [email protected]
  router = dnslookup, transport = remote_smtp
  host gmail-smtp-in.l.google.com      [74.125.133.27]  MX=5
  host alt1.gmail-smtp-in.l.google.com [173.194.222.27] MX=10
  host alt2.gmail-smtp-in.l.google.com [74.125.200.27]  MX=20
  host alt3.gmail-smtp-in.l.google.com [74.125.23.27]   MX=30
  host alt4.gmail-smtp-in.l.google.com [173.194.72.27]  MX=40

我可以使用本地命令发送邮件,并且转发成功。

但是,当从外部来源发送邮件时,邮件会被拒绝550 Unrouteable address,例如:

telnet mailserver.example.com 25
Connected to mailserver.example.com.
Escape character is '^]'.
220 mailserver.example.com ESMTP
EHLO office.mylocaldomain.com
250-mailserver.example.com Hello office.mylocaldomain.com [21.22.23.24]
250-SIZE 52428800
250-PIPELINING
250 HELP
MAIL FROM: <[email protected]>
250 OK
RCPT TO: <[email protected]>
550 Unrouteable address
QUIT

我确信需要更多配置才能完全诊断此问题。请询问,我会提供。

答案1

事实证明这是路由器配置的错误no_verify。文档建议转发器使用此设置,但也许这只适用于本地转发。

相关内容