禁用本地递送 sendmail

禁用本地递送 sendmail

我正在尝试禁用 sendmail 服务器 (CentOs 8) 上的本地邮件传递。我读过很多关于此的帖子 (例如:在 Sendmail 中禁用本地传送) 但似乎没有一个答案能起作用。

我基本上有一个标准的 sendmail 安装,并使用 Google Apps 来处理此域的邮件。发送邮件工作正常,但是当向本地域发送邮件时,邮件未发送。sendmail 日志记录将始终显示以下错误:

May 15 11:21:03 example sendmail[8443]: 04F9L3Ru008443: 04F9L3Rv008443: return to sender: User unknown
May 15 11:21:03 example sendmail[8443]: 04F9L3Rv008443: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32691, relay=aspmx.l.google.com. [74.125.143.27], dsn=5.1.1, stat=User unknown

任何其他邮件均能顺利投递。运行时:

echo '$={w}' | /usr/sbin/sendmail -bt

我尝试发送到的域名列在这里,因此被视为本地域名。

我尝试添加:

define(`MAIL_HUB', `example.com.') dnl
define(`LOCAL_RELAY', `example.com.') dnl

在 sendmail.mc 文件中,重新编译并重新启动服务,但这不起作用。我总是收到上述错误。

我还尝试了其他各种方法,例如:

  • 在 /etc/hosts 中添加服务器主机名/ip(其他主题中提到)
  • 不探测本地接口(define(confDONT_PROBE_INTERFACES', True'))
  • 注释掉本地主机名(/etc/mail)中的域名

DNS 和其他设置似乎是正确的。使用 DIG 时,我获得了正确的 MX 记录。此外,查看日志(见上文)时,它连接到 Google MX 记录。

我确信我遗漏了一些东西但却无法弄清楚。

更新:问题是服务器的主机名与发送域相同。但我不知道如何在不重命名服务器主机名的情况下解决这个问题。

谢谢你的时间!

答案1

我确实找到了解决这个问题的方法。不确定这是否是最好的解决方案,但它确实有效。

将以下内容添加到 sendmail.mc 文件:

LOCAL_CONFIG
Kbestmx bestmx -T.TMP

LOCAL_RULE_0
R $* < @ example.com. > $*            $#esmtp $@ [$(bestmx example.com. $)] $: $1 < @ vrijevakantiehuizen.nl. > $2

请注意,复制粘贴可能不起作用。最后一行 $* 和 $#esmtp 之间的空格是 2 个制表符(没有空格)。

现在 sendmail 会将 example.com 的邮件发送到它能找到的最佳 MX 记录,而不是将该域视为本地域。

不要忘记重新编译文件(命令:/etc/mail/make)并重新启动 sendmail。此后我的问题就解决了。

相关内容