Postfix: как ограничить исходящие сообщения (smtp), когда включен sender_dependent_default_transport_maps?

Я был бы признателен и признателен, если бы кто-нибудь мог предложить мне по следующей проблеме, с которой я работаю последние 7 дней.

Текущее состояние:

1 рабочий почтовый сервер (совместное размещение), на котором размещено 5 доменных имен (нет, мы не хостинговая компания, но это доменные имена дочерней компании), который имеет 3 IP-адреса.

  • ОС: Centos 7
  • MTA: единственный экземпляр Postfix версии 2.10. yahoo.com вежливо: hotmail.com черепаха: live.fr черепаха: orange.fr черепаха:

    То, что я успешно делал до сих пор:

    • Применял ограничение скорости с помощью transport_maps в файле main.cf
    • Переключение IP-адреса для одного предполагаемого домена для отправки с использованием другого IP-адреса (1.2. 3.4.5.22) путем включения sender_dependent_default_transport_maps в файле main.cf. Этот зонд дал положительный и ожидаемый результат: IP-адрес изменился на дополнительный IP-адрес, как и предполагалось при отправке с этим 1 доменом, а IP-адрес по умолчанию использовался, как обычно, для других доменов. У всех есть действующая проверка SPF и DKIM (проверено, отправив электронное письмо на мою бесплатную учетную запись Gmail).

    Проблемы, которые я пытаюсь решить, задав ваше предложение:

    Я не могу сделать и то, и другое на в то же время, потому что когда я использую sender_dependent_default_transport_maps вместе с transport_maps , похоже, что Postfix игнорирует transport_maps , поэтому ограничение скорости не работает.

    Мои вопросы:

    • Можно ли заставить sender_dependent_default_transport_maps работать вместе с transport_maps в main.cf?

    • Если это возможно, то как заставить его работать?

    Пожалуйста, не поймите меня неправильно, что я раньше ничего не делал и не искал. Тот факт, что я искал и пробовал то и это в сети, но до сих пор не смог заставить их работать вместе, и поэтому я ищу здесь помощи (надеюсь!).

    Большое спасибо!

    В моем main.cf в основном нет relayhost, нет relay_domains, то, что я пытаюсь спросить, находится в этой строке здесь:

    transport_maps = hash:/etc/postfix/transport
    

    и

    sender_dependent_default_transport_maps = hash:/etc/postfix/sender_dependent_transport_maps
    

    Я не могу заставить их работать вместе, но я могу заставить каждого из них работать отдельно, когда один из них комментируется. Я не знаю и не уверен, что это постфиксное поведение, потому что обычно с постфиксом все возможно :) ... всегда есть способ (я верю в postfix)

3
задан 29 October 2018 в 09:02
1 ответ

По предложению хорошего человека по имени @Ward, вот как я решил проблему, описанную выше.

Короткий ответ на мой предыдущий вопрос:

К сожалению, мы не можем ограничить исходящие сообщения (smtp) с помощью transport_maps, пока sender_dependent_default_transport_maps включена. (boooo ..., да, я знаю). Это должен быть любой из элементов, который активен, даже если вы сделали постфиксную проверку и не нашли ошибок, но так не работает.

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

.

[ОБНАРУЖИВАНИЕ 27-ой ОКТ, 2018] STILL SEAKING HELP ДЛЯ ЭТОГО ИССЛЕДОВАНИЯ, но с ПРОГРЕССОЙ ИСПОЛЬЗОВАНИЯ:

Итак, я следовал предложению @PeterZhabin установить другой постфиксный экземпляр, который я успешно установил второй постфиксный экземпляр, запущенный.

И прежде чем продолжить, я хотел бы сообщить вам, что я решил не использовать sender_dependent_default_transport_maps. Я подумал, что нет смысла снова использовать его в окружении, где запущено несколько экземпляров постфиксов, где каждый из постфиксов может иметь свой собственный main.cf и master.cf. И поэтому я отказался от опции использовать sender_default_transport_maps и использовать transport_maps для обоих экземпляров постфиксов.

Да, установка прошла успешно, надеюсь, еще несколько глюков... глюки были из-за того, что я тоже использую Amavisd, так что мне все еще нужны советы от вас, ребята, как это сделать.

Спасибо, что продолжаете читать это и помогаете мне, я бы хотел, чтобы вы знали, что я действительно ценю это.

Итак, давайте продолжим процесс...

MULTIPLE INSTANCE OF POSTFIX

Ниже приведены конфигурации, которые я изменил только для этой темы:

Вот мой main.cf в /etc/postfix/main.cf (1-й постфиксный экземпляр):

inet_interfaces = 1.2.3.4.5.11
myhostname = mail.thecompany.com
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-second

А вот мой main.cf в /etc/postfix second/main. cf (2-й постфиксный экземпляр):

inet_interfaces = localhost, 1.2.3.4.5.22
myhostname = mail2.thecompany.com
syslog_name = postfix-second
#master_service_disable = inet
#authorized_submit_users =
multi_instance_group = postfix
multi_instance_name = postfix-second
multi_instance_enable = yes
smtp_bind_address = 1.2.3.4.5.22

И в /etc/postfix second/master.cf:

Изменили строку так, чтобы она не конфликтовала с 1-м постфиксным экземпляром прямо в строке, где:

127.0.0.1:10025 inet n - - - - smtpd

in

1. 2.3.4.5.22:10025 inet n - - - - - smtpd

так что теперь весь этот раздел в /etc/postfix second/master.cf выглядит следующим образом:

#127.0.0.1:10025 inet n - - - - smtpd
1.2.3.4.5.22:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8,1.2.3.4.5.22
        -o strict_rfc821_envelopes=yes
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

Затем я добавил свой второй IP в /etc/amavisd/amavisd. conf, так что я не получу ошибку Blocked-MTA:

@inet_acl = qw( 127.0.0.1 [::1] 1.2.3.4.5.22);

UPDATING DNS AND CREATED A REVERSE DNS MATCHING THE mail2.thecompany.com

Далее я перезапустил Amavisd и Postfix, перешел в свою панель DNS и создал новую запись A Record на DNScompany.com:

mail2.thecompany.com A 1.2.3.4.5.22

Затем я создал Reverse DNS для сопоставления IP-адреса с адресом mail2.thecompany.com.

ДОБАВИТЬ НОВУЮ MX-запись на DOMAIN5.COM, КАК ВКЛЮЧЕН

Затем перейдите на панель DNS DOMAIN5.COM и добавьте еще одну MX-запись:

MX      10       mail.thecompany.com   
MX      15       mail2.thecompany.com

После разрешения DNS я проверил ее, запустив Postfix, и никаких ошибок в почтовом блоге не обнаружено.

Затем в моем почтовом клиенте (Thunderbird) я настроил почту busythomas@domain5.com, используя настройки SMTP и IMAP:

IMAP

host: mail2.thecompany.com
username: busythomas@domain5.com
pass: mypass

SMTP

host: mail2.thecompany.com
username: busythomas@domain5.com
pass: mypass

Наконец, я отправил тестовое письмо в свой аккаунт gmail и увидел в журнале, что оно пришло из postfix second/smtp, затем я подумал, что все в порядке, пока не понял, что пришли следующие строки, где говорится, что оно было отправлено из postfix/smtp в gmail :(. ..Зайдя в gmail, я увидел заголовок письма и заметил, что письмо было отправлено с использованием IP по умолчанию, которым является 1.2.3.4.5.11, а не 1.2.3.4.5.22.

О, хорошей новостью является то, что остальные 4 домена, для которых они были установлены на mail.thecompany.com, так как IMAP и SMTP Настройки работают нормально, все письма приходят и уходят :).

Мой вопрос сейчас: Как установить domain5.com для отправки почты, используя IP 1.2.3.4.5.22, а не IP 1.2.3.4.5.11?

.

[UPDATE OCT 28th, 2018] ФИНАЛЬНО, РАБОТАЕТ!

Хочу подтвердить, что конфигурация, описанная выше 27 октября 2018 года, работала после того, как я отключил функцию content_filtering во 2-м экземпляре постфикса, например:

в /etc/postfix second/main. cf Я прокомментировал строку:

#content_filter = smtp-amavis[1.2.3.4.5. 22]:10024

а также прокомментировал content_filter в /etc/postfix second/master.cf

smtp      inet  n       -       n       -       -       smtpd
#       -o content_filter=smtp-amavis:1.2.3.4.5.22:10024

Для того, чтобы действительно проверить, работает второй экземпляр или нет, я остановил все постфиксные экземпляры, а затем запустил только второй постфиксный экземпляр, используя следующую команду:

postmulti -i postfix-second -p start

И да, письмо было отправлено и также могло быть получено :).

Теперь, чтобы ответить на мой собственный вопрос: Как установить **домен5.com для отправки по IP 1.2.3.4.5.22, а не с IP 1.2.3.4.5.11?**

Я просто настраиваю SMTP / OUTGOING SERVER в почтовом клиенте(Thunderbird) на mail2.thecompany.com. Вот и все, и начинается отправка с предполагаемого IP, а когда я хочу вернуться назад, я устанавливаю SMTP сервер на Thunderbird на mail.thecompany.com, и все равно могу отправлять почту.

А преимущество такого подхода в том, что когда с mail2.thecompany.com что-то происходит (например, попадает в черный список), то даже сам пользователь может изменить SMTP настройки, чтобы вернуться на mail.thecompany.com, и почта снова заработает.

Для тех, кто почувствовал, что этого достаточно, можно остановиться на этом.

Но для себя я все равно хотел бы знать, как я могу заставить второй экземпляр постфикса работать вместе с включенной функцией content_filter. Но это будет еще один вопрос.

Пожелайте удачи.

[ОБНАРУЖИВАНИЕ 29 ОКТЯБРЯ 2018 ГОДА] ЗАКЛЮЧЕНИЕ И ОКОНЧАТЕЛЬНАЯ ОБНАРУЖИВАНИЕ:

На этом я завершаю данную задачу. Все требования от руководства выполнены, следовательно, это сделано. Теперь, когда домен domain5.com может быть отправлен с другого IP на том же сервере, когда фильтр содержимого Amavis является BYPASS-ed для INTERNAL сетей.

Однако я не согласен с таким подходом, потому что Amavis необходимо делать то, что он должен делать, чтобы защитить оба экземпляра Postfix, запущенных на одной машине.

Если бы контент-фильтр для Amavis был включен, то после сканирования Amavis пересылал бы smtp в первый экземпляр постфикса.

Хотя amavisd может быть настроен на прослушивание нескольких TCP портов, к сожалению, он поддерживает только один $notify_method и $forward_method, которые фактически пересылают все письма, отправленные из 2-го экземпляра постфикса обратно в 1-й экземпляр постфикса. И, следовательно, IP-адрес изменился обратно на 1.2.3.4.11 (первый IP-адрес), когда почта была отправлена из второй инстанции.

Единственный способ сохранить Postfix 1 отправку с IP-адреса 1, Postfix 2 отправку с IP-адреса 2, - это BYPASS Amavis для контент_фильтрации в INTERNAL-сетях. Однако, это также означает, что когда вредоносные программы внедряют наш сервер, у нас нет безопасности, по крайней мере, чтобы удержать их от отправки писем другим серверам, и это маловероятно (по крайней мере, для меня).

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

Надеюсь, это поможет кому-нибудь, у кого есть та же проблема, что и у меня.

Спасибо!

.
1
ответ дан 3 December 2019 в 07:21

Теги

Похожие вопросы