将邮件从域路由到外部提供商

将邮件从域路由到外部提供商

我有一台主机名和 DNS 为 的服务器example.com。我还有一个 的 Google 应用帐户。我的 MX 记录设置正确,我可以使用我的个人电子邮件[email protected]发送和接收电子邮件。[email protected]

在服务器 上example.com,我有一些代码使用 sendmail 向 发送电子邮件[email protected]。我没有使用 sendmail 配置任何 smtp。我可以从服务器example.com向发送邮件[email protected],但是当我尝试从服务器向 发送电子邮件时example.com[email protected]我在 中收到以下错误/var/log/maillog

... while talking to [127.0.0.1]:
>>> DATA
<<< 550 5.1.1 <[email protected]>... User unknown
550 5.1.1 <[email protected]>... User unknown
<<< 503 5.0.0 Need RCPT (recipient)

我想象这是因为 sendmail 正在接收电子邮件[email protected],然后“啊哈!我是example.com!我只需要将其发送给此服务器上的用户。”而不是查看 MX 记录并看到它需要将其转发到 gmail 服务器。

我如何告诉 sendmail 将所有消息转发到 Gmail 服务器而不管域名是什么?

注意:域名已更改为example.com保护无辜者。

答案1

问题是 - 正如您所推断的 - 您的服务器的主机名使得example.com该服务器上的 MTA 认为任何电子邮件都应@example.com在本地传递。

快速解决方案是简单地更改主机名,例如调用您的服务器www.example.com

或者,您可以使用 sendmail 的 MAIL_HUB 功能将本地邮件重定向到另一台服务器:在 sendmail.mc 宏文件中设置:

define(`MAIL_HUB', `mailer:servername')

将该服务器名称替换为您的主 MX 记录的主机名。这会将从您的服务器发送到<username>@<hostname>ie的消息重定向[email protected]到服务器名称。

该问题的实际答案:“我怎样才能告诉 sendmail 将所有消息转发到 Gmail 服务器而不管域名是什么?”是:
您不希望这样。Gmail 不是开放中继,会拒绝任何未在本地处理的内容。

该功能确实存在,在 sendmail 术语中称为 SMART_HOST。这需要专门配置为中继您的 ip 地址(范围)的传出 smtp 服务器,例如您的 ISP 的传出 SMTP 服务器。

define(`SMART_HOST', `smtp.your.provider')dnl

答案2

  1. 命名主机hostname.example.com(如 所报告hostname --fqdn)。
    此过程取决于操作系统/发行版。

  2. 如果example.com仍然在本地电子邮件域列表中,则关闭本地电子邮件域列表的自动配置。

检查本地电子邮件域列表:
以 root 身份执行

echo $=w | sendmail -bt

删除本地电子邮件域列表的自动配置:
在 sendmail.mc 中添加以下行,重新编译 sendmail.cf 并重新启动/重新加载 sendmail 守护程序

define(`confDONT_PROBE_INTERFACES',`True')   

本地电子邮件域名可能会在 中明确列出/etc/mail/local-host-names

相关内容