Sendmail:忽略本地传送

Sendmail:忽略本地传送

我有一个 Ubuntu 网络服务器,使用 Sendmail 作为我的 MTA

目前,当我将电子邮件发送到我的网络服务器域之外的地址(例如 example.com)时,例如 gmail 或 example.com 域之外的任何其他电子邮件,它都能正常工作。我不希望我的 sendmail 守护程序将 example.com 识别为本地地址,我希望它以与发送任何其他电子邮件相同的方式发送到 example.com。

我绝不会出现使用网络服务器上的本地用户来收集 example.com 的这些电子邮件的情况。

那么我该如何禁用本地传送?

答案1

您可以通过从 /etc/hosts 文件中删除您的域名来实现这一点。您需要配置 senmail 以在发送电子邮件时使用您的域名 (example.com) 而不是 localhost。

编辑/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

在任何更改之前备份您编辑的所有内容!

这个解决方案对我来说很有效!

答案2

Sendmail 将“w”类视为它将尝试本地投递的域。默认的 CentOS 配置包括以下几行,例如:

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”,可能是在系统安装期间设置的。

您需要仔细检查这一点,因为我没有 sendmail 测试系统来验证这一点,所以我无法在这里验证这一点。此外,它可能会因您的确切 sendmail 安装而有所不同,这可能会因发行版或操作系统的不同而有所不同。

答案3

您可以通过向规则集 2 添加规则来实现这一点。在 sendmail.mc 文件中添加以下内容:

LOCAL_RULE_2
R$* < $=w . > $*          $#esmtp $@[MX server for example.com] $: $1 < @ $2 > $3

请记住,规则的左侧和右侧通过制表符分隔,因此不要复制粘贴。然后从 sendmail.mc 构建 sendmail.cf,重新启动 sendmail 并测试。

如果您不想在括号之间硬编码 MX 服务器名称,则可以使用 bestmx 映射。

相关内容