我正在尝试设置 sendmail 将所有电子邮件转发到 **@ **.crm.mycompany.com[电子邮件保护]。不幸的是,我的 sendmail-fu 不够好,我在 Google 上找不到任何有用的东西。
我的计划是使用现有的内部 Linux 服务器 (CentOS 5),将 SMTP 流量从我们的一个备用外部 IP 端口转发到该服务器,并设置通配符 MX 记录以指向该外部 IP。但是我还没有设法让 sendmail 与此配合使用。
我已设法使非通配符情况正常工作,例如通过将 test.crm.mycompany.com 添加到 /etc/mail/local-host-names 并将“@test.crm.mycompany.com”行添加到 virtusertable。但是我不明白如何处理通配符情况。这些文件似乎不接受域名中的通配符,据我所知,唯一可以管理通配符 DNS 的配置是relay_entire_domain。但是,如果我将测试域配置为中继,那么它会忽略 virtusertable 和 procmail,并尝试继续中继电子邮件 - 因此,除非我可以触发其中任何一个来中继电子邮件,否则我认为我无法管理它。最后一个问题是我似乎无法将 $=m 设置为 mycompany.com - 它始终是我们的内部域名(主机名是 server.internal.lan 且 $=m 是 internal.lan)并且 sendmail.mc 中的 DOMAIN(mycompany.com)dnl 尝试包含来自 /usr/share 的文件(?)。
我想要做的事情可行吗?我希望为此重用内部服务器 - 我是否需要将服务器放在防火墙外面或 DMZ 中?使用 postfix 或其他东西会更容易吗?
谢谢您的任何建议!
鲁珀特。
答案1
正如您提到的,您需要一个 DNS 通配符。
当来自通配符地址的邮件进入时,sendmail 不知道如何处理它。您可以通过添加 sendmail 重写规则将通配符子域部分重写为主域部分来解决此问题。
在你的 sendmail.mc 中:
LOCAL_NET_CONFIG
R $+ < @ $+ .example.com. > $* $: $1 < @ example.com > $3 dnl
请注意,您需要一个制表符来分隔左侧规则和右侧替换。($*
结束左侧;$:
开始右侧。)请注意,左侧的尾随点可能是或不是必需的。还请注意,您需要在右侧和注释之后(和之间$3
)dnl
使用第二个制表符。
您需要确保 example.com 在您的relay-domains
文件中。
一旦域被重写规则折叠,您就可以使用以下条目将该域的所有邮件路由到单个用户virtusertable
:
@example.com luser
这样就差不多了。