Перейти к основному содержанию

Postfix — Multi Instance

Mail

Настроим несколько экземпляров postfix на одном сервере. Настраивать будем на Ubuntu 20.04 LTS.

Postfix в режиме Multi Instance имеет один основной экземпляр и один или более дополнительных экземпляров со своими файлами конфигурации. У меня будет всего два экземпляра postfix для отправки сообщений. Основной будет работать на порту TCP 26, дополнительный на TCP 27. IP у обоих один и тот же.

Установка основного экземпляра postfix

Сначала установим postfix в минимальной конфигурации. Я не буду здесь рассматривать SMTP аутентификацию и DKIM, чтобы сосредоточиться только на Multi Instance.

Установка Postfix на Ubuntu 20.04 LTS в минимальной конфигурации

Файл конфигурации /etc/postfix/main.cf:

myorigin = postfix.testsender.internet-lab.ru
myhostname = postfix.testsender.internet-lab.ru
mydomain = testsender.internet-lab.ru

smtpd_banner = postfix.testsender.internet-lab.ru
biff = no

mydestination =
alias_database =
local_recipient_maps =

mynetworks = 127.0.0.0/8 192.168.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128
message_size_limit = 35840000
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

masquerade_classes = envelope_sender, header_sender

relay_domains = testsender.internet-lab.ru

maximal_queue_lifetime = 5d

compatibility_level = 2

Поскольку postfix будет только отправлять письма, то в конфигурационной файле присутствуют строки:

mydestination =
alias_database =
local_recipient_maps =

Основной экземпляр postfix должен работать на порту TCP 26. Правим файл /etc/postfix/master.cf:

#smtp      inet  n       -       y       -       -       smtpd
26      inet  n       -       y       -       -       smtpd

Строку "smtp inet ..." комментируем и вставляем такую же, только вместо smtp пишем нужный порт. Перезагрузим postfix.

service postfix restart

Теперь мы готовы к настройке дополнительного экземпляра postfix.

Установка дополнительного экземпляра postfix

Создаём дополнительный экземпляр postfix, название должно начинаться с "postfix-". У меня будет "postfix-2". Можно будет потом создать "postfix-3" и так далее.

postmulti -e init
postmulti -I postfix-2 -G out-only -e create

У основного экземпляра postfix в конфигурационном файле /etc/postfix/main.cf появляются настройки:

multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-2

Для второго экземпляра postfix появляется директория /etc/postfix-2.

postfix

Внутри файлы main.cf и master.cf:

postfix

Внутри файла /etc/postfix-2/main.cf много ненужного, удаляем всё, кроме настроек Multy Instance, копируем туда основные настройки от основного экземпляра postfix. Получилось:

myorigin = postfix.testsender.internet-lab.ru
myhostname = postfix.testsender.internet-lab.ru
mydomain = testsender.internet-lab.ru

smtpd_banner = postfix.testsender.internet-lab.ru
biff = no

mydestination =
alias_database =
local_recipient_maps =

mynetworks = 127.0.0.0/8 192.168.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128
message_size_limit = 35840000
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

masquerade_classes = envelope_sender, header_sender

relay_domains = testsender.internet-lab.ru

maximal_queue_lifetime = 5d

compatibility_level = 2

data_directory = /var/lib/postfix-2
#master_service_disable = inet
queue_directory = /var/spool/postfix-2
multi_instance_group = out-only
multi_instance_name = postfix-2
multi_instance_enable = yes

Комментирую настройку "master_service_disable = inet", она мне не понадобится.

Теперь нужно, чтобы второй экземпляр postfix работал на порту TCP 27. Правим файл /etc/postfix-2/master.cf:

#smtp      inet  n       -       y       -       -       smtpd
27      inet  n       -       y       -       -       smtpd

Строку "smtp inet ..." комментируем и вставляем такую же, только вместо smtp пишем нужный порт.

Активируем второй экземпляр postfix-2:

postmulti -i postfix-2 -e enable

Перезапускаем postfix:

service postfix restart

Смотрим статусы экземпляров:

postfix status

postfix

postfix-2/postfix-script: the Postfix mail system is not running

Для запуска второго экземпляра выполним:

postmulti -i postfix-2 -p start

postfix

Оба экземпляра запущены. Причем дополнительный экземпляр теперь будет запускаться и останавливаться вместе с основным. Например, service postfix restart перезапустит все экземпляры postfix.

Для остановки экземпляра вам может в будущем понадобится команда:

postmulti -i postfix-2 -p stop

Проверим, что оба экземпляра работают:

netstat -tap

postfix

Порты TCP 26 и TCP 27 прослушиваются. На этом задача по развёртыванию нескольких экземпляров postfix завершена.

Теги

 

Похожие материалы

Postfix — ограничить поток исходящих писем

Почтовый сервер postfix ориентирован на максимальную производительность. Если у него есть письмо, то он постарается его как можно быстрее отправить. Но иногда требуется ограничить поток исходящих писем. При этом желательно, чтобы postfix продолжал принимать письма без ограничений, но отправлял их постепенно. Бывает, что провайдер ограничивает ваш сервер и разрешает отправлять, например, не более 300 писем в минуту. 

Теги