![如何用postfix正确管理多个虚拟主机?](https://linux22.com/image/607580/%E5%A6%82%E4%BD%95%E7%94%A8postfix%E6%AD%A3%E7%A1%AE%E7%AE%A1%E7%90%86%E5%A4%9A%E4%B8%AA%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%EF%BC%9F.png)
几天来,我一直在尝试为我们的产品正确设置 Postfix 服务器。该服务器运行正常,但发送到 Gmail 的一些电子邮件被发送到垃圾邮件箱。服务器配置如下:
/etc/postfix/main.cf
mydomain = example.com
myhostname = example.com
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, example.com, example.org, example.net
virtual_alias_domains = example.org, example.net
virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/master.cf
587 inet n - n - - smtpd -v
smtp inet n - n - - smtpd -v
/etc/postfix/虚拟
[email protected] user1
[email protected] user2
[email protected] user3
[email protected] user1
[email protected] user2
[email protected] user3
[email protected] user4
[email protected] user2
我的工作 SPF 规则是 10.0.0.1 是 example.com 的虚假 IP,它适用于 example.com、example.net 和 example.org:v=spf1 mx ip4:10.0.0.1 ~all
我已经配置了 MX DNS、rDNS、SPF,一切正常且运行正常。只有经过身份验证的用户才能通过此服务器发送电子邮件。
所以,问题是,如果从[电子邮件保护](与 mydomain 和 myhostname 相同)电子邮件将发送到收件箱。如果我从[电子邮件保护]该电子邮件被送至垃圾邮件箱。
查看电子邮件的标题,区别在于:
到达垃圾邮件箱的邮件
Received: from example.com (mail.example.com. [10.0.0.1])
by mx.google.com with ESMTP id e69si1483476yhm.50.2013.03.07.06.42.23;
Thu, 07 Mar 2013 06:42:23 -0800 (PST)
Received-SPF: pass (google.com: domain of [email protected] designates 10.0.0.1 as permitted sender) client-ip=10.0.0.1;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of [email protected] designates 10.0.0.1 as permitted sender) [email protected]
Received: from new-host-5.home (177.205.99.64.dynamic.adsl.gvt.net.br [177.205.99.64])
by example.com (Postfix) with ESMTP id 7EAB2D186F
for <[email protected]>; Thu, 7 Mar 2013 09:42:22 -0500 (EST)
From: User3 <[email protected]>
到达盒子里的
Received: from example.com (mail.example.com. [10.0.0.1])
by mx.google.com with ESMTP id a30si1434990yhm.294.2013.03.07.06.45.39;
Thu, 07 Mar 2013 06:45:39 -0800 (PST)
Received-SPF: pass (google.com: domain of [email protected] designates 10.0.0.1 as permitted sender) client-ip=10.0.0.1;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of [email protected] designates 10.0.0.1 as permitted sender) [email protected]
Received: from new-host-5.home (177.205.99.64.dynamic.adsl.gvt.net.br [177.205.99.64])
by example.com (Postfix) with ESMTP id A55BCD186F
for <[email protected]>; Thu, 7 Mar 2013 09:45:38 -0500 (EST)
From: User3 <[email protected]>
我尝试使用传输来更改出站电子邮件,以便通过其 IP 发送每封电子邮件,但没有成功。这是我的传输设置(也尝试了名称和 IP):
example.com smtp:10.0.0.1:25
example.net smtp:10.0.0.2:25
example.org smtp:10.0.0.3:25
有人知道如何解决这个问题吗?我认为如果我可以设置出站[电子邮件保护]通过 mail.example.net 而不是 mail.example.com 这个问题将得到解决。谢谢。
这 3 个 IP 的 DNS 配置非常相似,如下所示:
example.com A 10.0.0.2
example.com MX 10 mail.example.com
example.com TXT v=spf1 mx ip4:10.0.0.1 ~all
mail.example.com A 10.0.0.1
mail.example.com MX 1 mail.example.com
mail.example.com TXT v=spf1 mx ip4:10.0.0.1 ~all
example.net A 10.0.0.1
example.net MX 10 mail.example.net
example.net TXT v=spf1 mx ip4:10.0.0.1 ~all
mail.example.net A 10.0.0.2
mail.example.net MX 1 mail.example.net
mail.example.net TXT v=spf1 mx ip4:10.0.0.1 ~all
example.org A 10.0.0.3
example.org MX 10 mail.example.org
example.org TXT v=spf1 mx ip4:10.0.0.1 ~all
mail.example.org A 10.0.0.3
mail.example.org MX 1 mail.example.org
mail.example.org TXT v=spf1 mx ip4:10.0.0.1 ~all
另外,我有这些接口
10.0.0.1: eth0
10.0.0.2: eth0.1
10.0.0.3: eth0.2
这是我的 ISP 创建的 rDNS 设置:
10.0.0.1 - example.com
10.0.0.2 - example.net
10.0.0.3 - example.org
我要求的是:
10.0.0.1 - example.com, example.net, example.org
但他说这可能会导致无法识别我的电子邮件服务器。它就像负载平衡一样,每次发送不同的邮件。
我已更新我的 /etc/postfix/master.cf 如下:
example.com:smtp inet n - n - - smtpd -o myhostname=example.com
example.com:587 inet n - n - - smtpd -o myhostname=example.com
example.net:smtp inet n - n - - smtpd -o myhostname=example.net -o smtp_bind_address=10.0.0.2
example.net:587 inet n - n - - smtpd -o myhostname=example.net -o smtp_bind_address=10.0.0.2
example.org:smtp inet n - n - - smtpd -o myhostname=example.org -o smtp_bind_address=10.0.0.3
example.org:587 inet n - n - - smtpd -o myhostname=example.org -o smtp_bind_address=10.0.0.3
Postfix 似乎忽略了 -o smtp_bind_address=10.0.0.2,因为它继续通过 10.0.0.1 传递邮件。
答案1
问题是 postfix 使用 10.0.0.1 来发送所有邮件。这本身不是问题,因为您可以轻松添加指向同一 IP 的多个虚拟域。
基本上,我会以这种方式更改 example.org 等的记录。
example.org A 10.0.0.3
example.org MX 10 mail.example.org
mail.example.org CNAME mail.example.com
这样,您的 SPF 记录将有效,并且 MX 记录、邮件服务器的 A 记录等将对应于正确的 IP。
也就是说,除非您有其他理由需要使用多个 IP。