来自 linux 的外发邮件未送达

Jas*_*son 4 email php sendmail lamp

我似乎无法通过我的 php 脚本或 Centos 5.5 LAMP 服务器上的 linux 控制台发送邮件,当电子邮件被发送到我的盒子托管的域时。

我认为这与内部的电子邮件路由有关,或者与盒子使用的 DNS 服务器没有报告正确的 MX 记录有关。

基本上我的盒子不托管任何邮件,它都托管在谷歌应用程序上。我的名称服务器由第 3 方提供商托管,我使用的是 webmin。Webmin 无法识别第 3 方提供商的设置。

我不确定如何解决这个问题。以前,当我在 cpanel 服务器上遇到这个问题时,我会编辑remotedomainslocaldomains文件,将域从一个文件移动到另一个文件,它会解决问题。

我需要为任何人提供哪些信息才能确定问题所在?

谢谢

ada*_*amo 5

如果您运行sendmail -bt(sendmail 的测试模式)然后键入,$=w您将看到列出了您遇到问题的域。这是因为 sendmail 认为发送到所述域的邮件必须在本地发送到邮箱中,而不是发送到 Google。所以你要做的就是在两个地方修改你的sendmail.mc(或者如果它们不存在就添加它们)。

首先在 LOCAL_CONFIG 部分添加一个映射来查找域的最佳 MX:

LOCAL_CONFIG
Kbestmx bestmx -T.TMP
Run Code Online (Sandbox Code Playgroud)

接下来,在 LOCAL_RULE_0 部分,sendmail 选择递送代理,使用上面的地图将邮件路由到 Google:

LOCAL_RULE_0
R $* < @ example.com. > $*           $#esmtp $@ [$(bestmx example.com. $)] $: $1 < @ example.com. > $2
Run Code Online (Sandbox Code Playgroud)
  • 注 1:将 example.com 替换为相关域

  • 注意 2:不要在 sendmail.mc 中复制粘贴规则。键入它们的左侧和右侧规则不是用空格分隔而是用制表符分隔。

  • 注3:sendmail.mc 编辑完成后,必须建立sendmail.cf,然后重新启动sendmail。我不知道这是如何在 CentOS 中完成的。我运行 Debian 并执行sendmailconfig

您可以在我的博客文章中阅读有关该问题的更详细说明。