我有几个不同的服务器,它们内部运行不同的操作系统,每个服务器处理特定域的电子邮件。由于我只有一个面向公众的 IP,所以我想配置我的基于 CentOS 的服务器,使其只接受来自外部世界的特定域的传入消息,然后根据收件人域将这些消息转发到适当的内部服务器。
我不想破解 DNS 来实现这一点。我知道我可以在 CentOS 服务器上简单地创建区域,其中 MX 条目指向正确的内部地址,但这有点不切实际。我需要该机器继续使用每个域区域的公开版本,所以这不是一个选择。顺便说一句,所有正确的 MX 条目都已指向我的面向公众的 IP 地址。
我读了一些关于智能表的文章,似乎只检查发件人的域。我可能错了,所以没有排除这种可能性。
Sendmail 能解决这个问题吗?如果能,我可以使用哪些配置选项和功能来实现?如果能提供示例,我将不胜感激。
答案1
我们正是这么做的。
您需要在两个配置文件中进行输入。
首先,在 中输入您要中继的域/etc/mail/relay-domains
,每行一个。包括所有变体。
其次,在 中/etc/mail/mailertable
,您必须告诉 sendmail 如何处理发往该域的邮件。
例子:
/etc/mail/relay-domains
:
exampledomain.com
otherdomain.com
/etc/mail/mailertable
:
exampledomain.com relay:mailboxes.exampledomain.com
记得运行 make/etc/mail
以使更改mailertable
生效。
请注意,如果您没有为域名输入条目mailertable
,它将查阅 DNS 并尝试发送到“更好”的 MX;如果 DNS 没有任何用处,它将尝试在本地传递邮件(并会失败,除非您已篡改/etc/mail/local-host-names
)。