Exim4 使用远程 SMTP 向 @mydomain.com 发送邮件,尽管 mydomain.com 位于 /etc/mailname 中

Exim4 使用远程 SMTP 向 @mydomain.com 发送邮件,尽管 mydomain.com 位于 /etc/mailname 中

如标题所述。如果mydomain.com是本地域,为什么 exim 会尝试通过联系它来传递邮件,而不是仅仅将其存储在本地 mbox 中?即当我执行 时,它会通过联系 中列出的 MXecho hello | mail root发送电子邮件到。配置是默认的 Debian 稳定版。[email protected]mydomain.com

顺便说一句,这种行为正是我想要的,因为mydomain.com我使用 Google Apps,所以我希望所有邮件都发送到那里列出的 MX,但我还希望我的服务器也像它自己的名字一样运行(即,它本地发送的邮件应该来自@mydomain.com)。那么我应该以不同的方式配置 exim 吗?

答案1

Exim 并不一定假设您的系统有任何神奇之处 - 它会准确地按照您指定的路线行驶。

也就是说,默认配置文件通常会local_domains用 的值填充域列表@,这仅仅意味着“此主机的域名”。然后,稍后,路由器dnslookup可能会通过说 来专门排除本地域domains = ! +local_domains,这将阻止任何发送到 中列出的域的邮件local_domains不通过 SMTP 进行远程转发。

为了解决您的问题,我会查看两个地方。首先,尽管您可能已经/etc/mailname填充,但这并不意味着@exim 配置中的值已扩展为正确的本地域名。检查您是否列出了正确的 fqdn,/etc/hosts并且dnsdomainname(我认为在 Debian 上存在)返回了您期望的结果。

其次,我会仔细检查 exim 配置,按照顺序检查所有路由器直至传输,确保没有遗漏任何内容。

答案2

我和 OP 遇到了完全相同的问题 - 我试图弄清楚为什么 Exim 将所有本地投递(例如由 cron 生成的发往本地邮箱的消息,或“echo“test”| mail ”的输出)视为非本地的。

来自类似命令的典型日志条目:

echo "test" | mail userfoo

看起来像:

2013-03-20 12:44:02 1UIIN7-0004t9-8R <=[电子邮件保护]H = 本地主机(主机名.example.com)[127.0.0.1] P = esmtps X = TLSv1:DHE-RSA-AES256-SHA:256 S = 811 [电子邮件保护]

而它们应该看起来像:

2013-03-20 17:49:17 1UIN8X-0005iz-4Y <= [email protected] U=root P=local S=323

就我而言,问题出在我的邮件包装器配置方式上 - 在我的操作系统 FreeBSD 上 - 您在 /etc/mail/mailer.conf 中配置邮件包装器,而我忘记更改该文件中的各种“别名”以使用 Exim 而不是默认的 sendmail 二进制文件。因此,我认为在命令行上发出邮件命令意味着正在使用 sendmail 二进制文件而不是 exim,从而导致尝试通过 ESMTP 而不是本地管道传递进行传递。

将邮件包装器配置文件 /etc/mailer.conf 更改为:

sendmail        /usr/libexec/sendmail/sendmail
send-mail       /usr/libexec/sendmail/sendmail
mailq           /usr/libexec/sendmail/sendmail
newaliases      /usr/libexec/sendmail/sendmail
hoststat        /usr/libexec/sendmail/sendmail
purgestat       /usr/libexec/sendmail/sendmail

到:

sendmail          /usr/local/sbin/exim
send-mail         /usr/local/sbin/exim
mailq             /usr/local/sbin/exim -bp
newaliases        /usr/bin/true

达到了预期效果,即替换 sendmail 作为本地投递的默认邮件程序二进制文件。这确实是一个小学生的错误,我记得这是我 5-10 年前在 FreeBSD 上首次设置 Exim 时最先更改的内容之一,但从那时起就再也不需要摆弄它了!

无论如何,希望它能对某些人有所帮助,这几乎是唯一能准确解决我的问题的结果。

干杯。

参考:

使用 Exim 替换另一个 MTA

相关内容