如何用postfix正确管理多个虚拟主机?

如何用postfix正确管理多个虚拟主机?

几天来,我一直在尝试为我们的产品正确设置 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。

相关内容