我正在尝试禁用 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。此后我的问题就解决了。