sendmail 仅中继发往特定域的邮件

sendmail 仅中继发往特定域的邮件

我想知道您是否可以帮助我解决一个可能很简单的问题但我似乎无法弄清楚。

我们有几个运行 sendmail 的 centos 服务器(本地局域网上的所有内部服务器)- 除了将所有内容中继到我们的 exchange 服务器选项(即 DSourexchangeserver)之外,sendmail 配置非常简单(全部默认)。现在我想要做的是让这些 centos 服务器 sendmail 配置只中继发往我们公司域的电子邮件,即[电子邮件保护] 我不想将邮件转发到其他任何地方。有没有办法让 sendmail 检查发送给它的邮件,并只将符合发往我们公司域要求的邮件转发到我们的 Exchange 服务器,并停止其他所有操作?

答案1

看: http://www.sendmail.org/tips/relaying

最简单的方法是将您愿意中继的域列在文件 /etc/mail/relay-domains 中。此文件中列出的任何内容都将被接受进行中继。注意:修改此文件后必须重新启动 Sendmail。

本页和其他提示应该可以帮助您入门。否则,如果您需要控制谁可以转发电子邮件,您可能需要检查 SMTP AUTH。

答案2

问题在于relay-domains,如果发送系统位于该域中,它就允许中继。

使用 Access 数据库可能是解决方案。在其中输入:

至:mycompaniesdomain.com 中继

确保关闭所有其他中继选项。Sendmail 非常复杂,最好发布您的 mc 文件。

答案3

您不需要使用邮件过滤器。您可以通过 sendmail.mc 完成此操作。在您的 sendmail.mc 中添加以下几行:

#Define the smart host
define(`SMART_HOST', `exchange server here')dnl

#Define a class of domains we want to relay to the smart host
C{Exchange} example.com example.org

#Decide whether to delete outgoing email or not
LOCAL_RULE_0
#test the behavior of your system to see if you need the following line
R$* < @ $=w . > $*              $#OK
R$* < @ $={Exchange} . > $*     $#OK
R$*                             $#local $: bit-bucket

bit-bucket 应该在 /etc/mail/aliases 中别名为 /dev/null:

bit-bucket: /dev/null

请记住,之后从 sendmail.mv 文件重建 sendmail.cf 并重新启动 sendmail。我不知道在 CentOS 中如何做到这一点。Debiansendmailconfg让我有点懒惰。还要记住,sendmail 规则是用制表符而不是空格来划分的,所以不要复制粘贴。手动输入,并用制表符分隔 LOCAL_RULE_0 后的“左”和“右”部分。

答案4

我的设置方法如下:

1 个 sendmail 服务器,所有来自 nix 机器的电子邮件都会发送到该服务器,并根据电子邮件的目的地转发到 Exchange 服务器。

所有客户端 sendmail 配置都有一个针对上述服务器的 DS 选项。

在 1 个 sendmail 服务器(所有 sendmail 配置都将指向作为过滤器的 DS 选项)上执行以下操作:

  1. 确保sendmail.mc其中/etc/mail有:Feature('mailertable', 'hash -o /etc/mailertable.db' dnl行。

  2. 注释掉以下行DAEMON_OPTIONS(``Port=smtp,Addr=127.0.0.1, Name=MTA')dnl(以便它可以为所有机器进行中继 - 显然这对于​​具有公共 IP 的机器来说不是一个好主意 - 但这不是我在这里所做的)

  3. vi mailertable并输入以下行:yourdomain.com ESMTP:[yourexchangeserverip]

  4. /etc/mail在called下创建一个文件relay-domains并输入以下行:yourdomain.com

  5. 跑步m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

  6. 跑步makemap hash /etc/mail/mailertabledb < /etc/mail/mailertable

  7. 启动或重新启动 sendmail 守护进程,/etc/init.d/sendmail restart

然后,在您想要设置电子邮件过滤器的所有机器上,只需进入 sendmail.cf 并将 DS 选项设置为上述服务器的 ip 或主机名。然后重新启动 sendmail。

相关内容