当电子邮件被发送到由我的机器托管的域时,我似乎无法通过我的 php 脚本或通过我的 Centos 5.5 LAMP 服务器上的 linux 控制台发送邮件。
我认为这与内部的电子邮件路由有关,或者与盒子使用的 DNS 服务器未报告正确的 MX 记录有关。
基本上我的邮箱不托管任何邮件,所有邮件都托管在 Google 应用上。我的名称服务器由第三方提供商托管,我正在使用 webmin。Webmin 无法识别第三方提供商的设置。
我不确定如何修复这个问题。以前,当我在 cpanel 服务器上遇到这个问题时,我会编辑remotedomains
和localdomains
文件,将域名从一个文件移动到另一个文件,这样就可以解决问题。
我需要提供哪些信息来帮助人们查明问题所在?
谢谢
答案1
如果您运行sendmail -bt
(sendmail 的测试模式)然后输入,$=w
您将看到列出您有问题的域。这是因为 sendmail 认为发送到所述域的邮件必须在本地投递,而不是发送到 Google。因此,您需要做的是在两个地方修改您的 sendmail.mc(如果不存在,则添加它们)。
首先在 LOCAL_CONFIG 部分添加一个查找域的最佳 MX 的地图:
LOCAL_CONFIG
Kbestmx bestmx -T.TMP
接下来,在 sendmail 选择传送代理的 LOCAL_RULE_0 部分中,使用上面的地图将邮件路由到 Google:
LOCAL_RULE_0
R $* < @ example.com. > $* $#esmtp $@ [$(bestmx example.com. $)] $: $1 < @ example.com. > $2
注 1:将 example.com 替换为相关域名
注意 2:不要复制粘贴 sendmail.mc 中的规则。输入规则时,规则左侧和右侧不要用空格分隔,而是用制表符分隔。
注意 3:编辑完 sendmail.mc 后,必须构建 sendmail.cf,然后重新启动 sendmail。我不知道在 CentOS 中如何完成此操作。我运行 Debian 并执行
sendmailconfig
您可以在以下位置阅读有关问题的更详细解释我的博客文章在这里。