Назад | Перейти на главную страницу

Как правильно управлять несколькими виртуальными хостами с постфиксом?

Я пытаюсь за пару дней правильно настроить постфиксный сервер для наших продуктов. Сервер работает правильно, но некоторые электронные письма, отправленные в 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

/ и т.д. / постфикс / виртуальный

user1@example.com  user1
user2@example.com  user2
user3@example.com  user3

user1@example.net  user1
user2@example.net  user2
user3@example.net  user3
user4@example.net  user4

user2@example.org  user2

Мое рабочее правило SPF: 10.0.0.1 - это поддельный IP-адрес для example.com, и оно применяется к example.com, example.net и example.org: v = spf1 mx ip4: 10.0.0.1 ~ all


Я настроил MX DNS, rDNS, SPF, и все было нормально и работало. И только аутентифицированные пользователи могут отправлять электронную почту через этот сервер.

Итак, вот в чем проблема: если письмо отправлено с адреса user1@example.com (то же самое, что и mydomain и myhostname), оно доставляется в почтовый ящик. Если я отправлю письмо с адреса user1@example.net, оно будет доставлено в ящик для спама.

Если посмотреть на заголовки электронного письма, разница в следующем:

тот, который приходит в ящик для спама

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 user3@example.net 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 user3@example.net designates 10.0.0.1 as permitted sender) smtp.mail=user3@example.net
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 <maykelsb@gmail.com>; Thu,  7 Mar 2013 09:42:22 -0500 (EST)
From: User3 <user3@example.net>

тот, который приходит в коробке

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 user3@example.com 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 user3@example.com designates 10.0.0.1 as permitted sender) smtp.mail=user3@example.com
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 <maykelsb@gmail.com>; Thu,  7 Mar 2013 09:45:38 -0500 (EST)
From: User3 <user3@example.com>

Я попытался использовать транспорт, чтобы изменить исходящую электронную почту для отправки каждому через свой 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

У кого-то есть идеи, как это решить? Я думаю, что если бы я мог установить исходящий трафик для user3@example.net через mail.example.net, а не mail.example.com, эта проблема была бы решена. Спасибо.


Конфигурация DNS трех IP-адресов очень похожа друг на друга, как вы можете видеть ниже:

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

Это настройки 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.

Проблема в том, что 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-адресов.