我有一个Sendmail作为我的MTA的Ubuntunetworking服务器
目前,当我通过电子邮件在我的networking服务器的域名(例如example.com)之外发送邮件到gmail或者example.com域以外的任何其他电子邮件时,它完美地工作。 我不希望我的sendmail守护进程将example.com识别为我希望它发送到example.com的本地地址,就像发送其他电子邮件的方式一样。
我永远不会有这样的情况,我将使用Web服务器上的本地用户来收集example.com的这些电子邮件。
那么如何禁用本地交付?
您可以通过从/ etc / hosts文件中删除您的域名来完成此操作。 您需要configurationsenmail以在发送电子邮件时使用您的域名(example.com)而不是本地主机。
编辑/etc/mail/sendmail.mc添加如下内容:
MASQUERADE_AS(example.com)dnl FEATURE(masquerade_envelope)dnl FEATURE(masquerade_entire_domain)dnl MASQUERADE_DOMAIN(example.com)dnl
之前:
MAILER(smtp)dnl MAILER(procmail)dnl dnl MAILER(cyrusv2)dnl
键入m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf然后运行/sbin/service sendmail restart
备份您在编辑之前所做的任何修改!
这个解决scheme对我来说工作得很好!
Sendmail将“w”类视为将尝试本地交付的域。 默认的CentOSconfiguration包括这些行,例如:
Cwlocalhost # file containing names of hosts for which we receive email Fw/etc/mail/local-host-names
这指定“w”包含名称“localhost”和文件“/ etc / mail / local-host-names”的内容。 我怀疑你在“/ etc / mail / local-host-names”中有“example.com”,可能是在系统安装过程中设置的。
你会想要仔细检查一下,因为我没有一个sendmailtesting系统来validation这个,所以我不能在这里validation。 此外,它可能会有所不同,具体取决于您确切的sendmail安装,这可能会因分发或操作系统而有所不同。
您可以通过向规则集2添加规则来实现。在sendmail.mc文件中添加以下内容:
LOCAL_RULE_2 R$* < $=w . > $* $#esmtp $@[MX server for example.com] $: $1 < @ $2 > $3
请记住,规则的左侧和右侧是通过制表符分隔的,因此不要复制粘贴。 然后从你的sendmail.mcbuild立你的sendmail.cf,重新启动sendmail并testing。
如果您不想在括号内硬编码MX服务器名称,则可以使用bestmx映射。