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

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 с SMTP аутентификацией Cyrus

Понадобилось сделать Postfix с SMTP аутентификацией. Раньше не настраивал, перерыл кучу статей. Очень сумбурно всё изложено, поэтому пришлось написать свой вариант. Если кто-то знает хорошую инструкцию по данному вопросу без лишней воды — пишите в комментариях.

Теги