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

我有一个服务器与主机名和DNS example.com 。 我也有一个谷歌应用程序帐户[email protected] 。 我的MXlogging设置正确,我可以用我的个人电子邮件发送和接收来自[email protected]电子邮件。

在服务器example.com ,我有一些代码使用sendmail将电子邮件发送到[email protected] 。 我没有任何使用sendmailconfiguration的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]的电子邮件,并且“ah-ha! 我是 example.com!我只需要将它发送给此服务器上的用户”。 而不是看MXlogging,看到它需要将它们转发到Gmail服务器。

如何告诉sendmail将所有消息转发到gmail服务器而不考虑域名?

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

问题是 – 正如你推断的那样 – 你的服务器的主机名是example.com使得该服务器上的MTA认为任何到@example.com的电子邮件都应该在本地交付。

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

或者,您可以使用sendmail的MAIL_HUBfunction将本地邮件redirect到另一台服务器:在sendmail.mcmacros文件集中:

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

将该服务器名称replace为主MXlogging的主机名。 这将redirect从您的服务器发送到<username>@<hostname>[email protected]到服务器名称的[email protected]

问题的实际答案是: “我怎样才能告诉sendmail将所有消息转发到gmail服务器,而不考虑域名? 是:
你不要那个。 Gmail不是一个开放的中继,并会拒绝任何不在本地处理的内容。

该function确实存在,在sendmail术语中称为SMART_HOST。 这需要一个外出的SMTP服务器专门configuration为您的IP地址(范围),如您的ISP的传出SMTP服务器中继。

 define(`SMART_HOST', `smtp.your.provider')dnl 
  1. 将主机命名为hostname.example.com (由hostname --fqdn报告)。
    该过程是操作系统/分布相关的。

  2. 如果example.com保持在本地电子邮件域列表中,则closures本地电子邮件域列表的自动configuration。

检查本地电子邮件域名列表:
作为根执行

 echo $=w | sendmail -bt 

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

 define(`confDONT_PROBE_INTERFACES',`True') 

本地电子邮件域可以在/etc/mail/local-host-names明确列出。