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

Указание экземпляра Postfix для отправки исходящей электронной почты

У меня есть сервер CentOS 6.5 с Postfix 2.6x (дистрибутив по умолчанию) с пятью общедоступными IPv4 IP-адресами, привязанными к нему. Для каждого IP-адреса отдельно задаются DNS и rDNS. Каждый из них использует разные имена хостов в разных доменах. У меня есть пять экземпляров Postfix, по одному на каждый IP-адрес, как в этом примере:

Я проверил каждый IP-адрес, подключившись к порту 25. Postfix правильно отвечает и показывает правильное имя хоста. Электронная почта во всех этих случаях поступает без проблем и направляется в нужное место. Эта установка, за исключением последнего экземпляра, существует уже пару лет и работает.

Однако я никогда не утруждал себя настройкой исходящей электронной почты для прохождения каких-либо инстанций, кроме основного; не было необходимости. Теперь мне нужно отправить электронное письмо с blue.example.us, которое фактически отправляется с этого интерфейса и IP, так что в заголовках Received отображается blue.example.us как отправляющий почтовый хост, чтобы SPF и DKIM проверяли и т. Д.

Электронное письмо, которое будет отправлено с blue.example.com, представляет собой цикл обратной связи, отправляемый одной учетной записью оболочки на сервере (account5), учетной записью, предназначенной для отправки этого электронного письма. Учетная запись получает электронные письма с обратной связью с серверов в других сетях, сохраняет тела этих писем, а затем генерирует новый заголовок исходящей электронной почты, добавляет сохраненное тело и отправляет электронное письмо. Он отправляет каждое электронное письмо по конвейеру sendmail -oi -t. Мы делаем это таким образом, чтобы замаскировать идентификаторы начальных серверов. Скрипт procmail, обрабатывающий эти электронные письма, работает правильно.

Тем не менее, я не может настройте эту учетную запись для отправки электронной почты через соответствующий экземпляр / IP / интерфейс Postfix. Точно такая же учетная запись и сценарий отправляет электронную почту через основной экземпляр Postfix / etc / postfix без каких-либо проблем. Когда я изменяю MAIL_CONFIG на / etc / postfix-blue либо в .bash_profile, либо в скрипте Procmail, который обрабатывает это электронное письмо, я получаю эту ошибку:

sendmail: fatal: User account5(###) is not allowed to submit mail

Я читал руководства на Postfix.org, искал в Google и пробовал предложения из трех предыдущих ответов здесь, на ServerFault.com:

Postfix - укажите интерфейс для доставки исходящей почты на

Пользователю Postfix не разрешено отправлять почту

Postfix отклоняет почту на php

Я старался останавливать и перезапускать Postfix после каждого изменения конфигурации и тестировал результаты. Ничего не получилось. Основной экземпляр постфикса с радостью принимает исходящую почту от account5. Экземпляр postfix-blue продолжает отклонять электронную почту от account5 с ошибкой sendmail выше.

Как бы ни было заманчиво обвинять враждебность к машинам, я знаю, что я, должно быть, что-то упускаю или делаю что-то не так. Есть ли у кого-нибудь предложения относительно того, что это может быть? Пожалуйста, не стесняйтесь спрашивать дополнительную информацию о моей настройке, если она вам нужна.

= - = - = - = - = - = - = - = - = - =

По запросу респондента здесь находятся main.cf и master.cf для а) основного экземпляра постфикса ("red.example.com") и б) экземпляра FBL ("blue.example.us")

[ПРИМЕЧАНИЕ: все параметры, не указанные ниже, были оставлены с настройками Postfix 2.6 по умолчанию]

ОСНОВНОЙ:

master.cf

smtp      inet  n       -       n       -       -       smtpd

main.cf

myhostname = red.example.com
mydomain = example.com
inet_interfaces = $myhostname, localhost
inet_protocols = all
lmtp_host_lookup = native
smtp_host_lookup = native
ignore_mx_lookup_error = yes
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps =
mynetworks = 192.168.34.104/32
relay_domains = example.com,
            example.info,
            example.net,
            example.org,
            example.us
relayhost = [192.168.34.102] # Separate physical server, main mailserver.
relay_recipient_maps = hash:/etc/postfix/relay_recipients
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-green /etc/postfix-pink /etc/postfix-orange /etc/postfix-blue

FBL:

master.cf

184.173.119.103:25      inet  n       -       n       -       -       smtpd

main.cf

myhostname = blue.example.us
mydomain = blue.example.us <= Deliberately set to subdomain only.
myorigin = $mydomain
inet_interfaces = $myhostname
lmtp_host_lookup = native
smtp_host_lookup = native
ignore_mx_lookup_error = yes
mydestination = $myhostname
local_recipient_maps  = unix:passwd.byname $alias_maps $virtual_alias_maps
mynetworks = 192.168.36.51/32, 192.168.35.20/31 <= Second IP is backup MX servers
relay_domains = $mydestination
recipient_canonical_maps = hash:/etc/postfix-blue/canonical
virtual_alias_maps = hash:/etc/postfix-fbl/virtual
alias_maps = hash:/etc/aliases, hash:/etc/postfix-blue/canonical
alias_maps = hash:/etc/aliases, hash:/etc/postfix-blue/canonical
mailbox_command = /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Mail/ MAILDIR=$HOME/Mail
smtpd_banner = $myhostname ESMTP $mail_name
authorized_submit_users = 
multi_instance_name = postfix-blue
multi_instance_enable = yes

** Дополнительная информация после тестирования последнего предложения Масегалоэ **

Я только что попытался добавить «account5» в ​​authorized_submit_users и установить MAIL_CONFIG в .bash_profile для учетной записи оболочки «account5» с также установленным «export MAIL_CONFIG». Procmail больше не жалуется; он думает, что правильно генерирует и отправляет FBL. Однако maillog сообщает следующее:

May 29 14:47:42 newton postfix-blue/qmgr[3522]: 5BC773E612F: from=<fbl@blue.example.us>, size=1106, nrcpt=1 (queue active)
May 29 14:47:42 newton postfix-blue/qmgr[3522]: warning: connect to transport private/smtp: Connection refused
May 29 14:47:42 newton postfix-blue/error[3766]: 5BC773E612F: to=<fbl-test@example.com>, relay=none, delay=0.01, delays=0/0/0/0, dsn=4.3.0, status=deferred (mail transport unavailable)

Возможно, мне нужно что-то добавить в файл конфигурации транспорта?

Когда вы отправляете электронное письмо через местную отправку a.k.a sendmail он будет использовать экземпляр по умолчанию, например. red.example.com. Это поведение было объяснено в официальная документация postfix.

Один экземпляр Postfix особенный: это экземпляр, каталог конфигурации которого является каталогом по умолчанию, скомпилированным в утилиты Postfix. Расположение каталога конфигурации по умолчанию обычно / etc / postfix, и его можно запросить с помощью команды "postconf -d config_directory". Мы называем экземпляр с этим каталогом конфигурации «экземпляром по умолчанию».

Экземпляр по умолчанию отвечает за отправку локальной почты. Утилита setgid postdrop (1) используется программой локальной отправки sendmail (1) для буферизации сообщений в подкаталог maildrop каталога очереди экземпляра по умолчанию.

Даже в редком случае, когда «sendmail -C» используется для отправки локальной почты в экземпляр Postfix, отличный от стандартного, по соображениям безопасности postdrop (1) будет обращаться к файлу main.cf по умолчанию, чтобы проверить правильность запрошенного не- каталог конфигурации по умолчанию.

Таким образом, в то время как в остальном все экземпляры равны, экземпляр по умолчанию «более равный, чем другие». Вы можете создать дополнительные экземпляры, но у вас должен быть хотя бы экземпляр по умолчанию с его каталогом конфигурации в месте для компиляции по умолчанию.

Некоторые предложения:

  1. Основываясь на приведенном выше фрагменте, вы можете попробовать использовать sendmail -C чтобы указать экземпляр для отправки электронной почты. Или
  2. Другой обходной путь - заменить экземпляр, например red.example.com становиться blue.example.us и наоборот.

Редактировать на основе комментариев ниже

sendmail: fatal: User account5(###) is not allowed to submit mail

Вышеупомянутая ошибка вызвана authorized_submit_users параметр не заполнен (экземпляр синего постфикса). Эффект - никто не мог выполнить sendmail через экземпляр postfix-blue. Добавление account5 к этому параметру должна решить проблему.

Еще одна ошибка

warning: connect to transport private/smtp: Connection refused

было вызвано отсутствием smtp транспорт в master.cf. Убедитесь, что эта строка присутствует в master.cf

smtp      unix  -       -       n       -       -       smtp

и добавить -o smtp_bind_address = 192.168.36.51 в конце строки, поэтому электронное письмо будет отправлено на адрес 192.168.36.51.