У нас есть работающий сервер postfix с несколькими экземплярами multi instance на Ubuntu 20.04 LTS, задача — настроить SMTP аутентификацию для каждого инстанса.
Ссылки
Postfix с SMTP аутентификацией Cyrus
Аутентификация
Настроим пользователей для аутентификации. Для администрирования пользователей базы sasldb понадобится пакет sasl2-bin.
Ещё нужны модули libsasl2-2 и libsasl2-modules, но они уже есть:
dpkg -l | grep sasl
Установим sasl2-bin:
apt-get install sasl2-bin
Редактируем файл /etc/default/saslauthd.
Включаем saslauthd:
START=yes
Механизм аутентификации sasldb:
MECHANISMS="sasldb"
ВАЖНО: указываем опцию:
OPTIONS="-c -m /var/run/saslauthd"
Перезагружаем saslauthd:
service saslauthd restart
Вместе с пакетом sasl2-bin устанавливаются утилиты для работы с пользователями sasldb: saslpasswd2, sasldblistusers2, testsaslauthd.
Создаём пользователя info@testsender.internet-lab.ru с паролем 888776:
saslpasswd2 -c -u testsender.internet-lab.ru info
Посмотреть список пользователей в базе:
sasldblistusers2
Видим что в базе один пользователь info@testsender.internet-lab.ru, пароль не отображается.
Утилита testsaslauthd позволяет проверить аутентификацию:
testsaslauthd -u info -r testsender.internet-lab.ru -p 888776
Результат:
0: OK "Success."
fstab
Postfix не имеет доступ к /var/run/saslauthd, Исправим проблему, добавляем в /etc/fstab:
/var/run/saslauthd /var/spool/postfix/var/run/saslauthd none rw,bind 0 0
/var/run/saslauthd /var/spool/postfix-2/var/run/saslauthd none rw,bind 0 0
/var/run/saslauthd /var/spool/postfix-3/var/run/saslauthd none rw,bind 0 0
/var/run/saslauthd /var/spool/postfix-4/var/run/saslauthd none rw,bind 0 0
/var/run/saslauthd /var/spool/postfix-5/var/run/saslauthd none rw,bind 0 0
Где мы монтируем /var/run/saslauthd в директорию queue_directory каждого экземпляра postfix. Если директорий вида /var/spool/postfix-3/var/run/saslauthd нет, то создайте их.
Перезагружаем сервер:
reboot
Аутентификация в Postfix
Сама база пользователей sasldb находится в /etc/sasldb2.
cd /etc
ll | grep sasl
Для того, чтобы Postfix мог читать из базы, пользователю postfix нужно дать права на файл sasldb2. Файл sasldb2 принадлежит группе sasl. Добавим пользователя postfix в группу sasl:
usermod -a -G sasl postfix
Находим директорию /etc/postfax/sasl:
Создаём в директории /etc/postfax/sasl файл smtpd.conf:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
Копируем папку /etc/postfax/sasl в директорию каждого экземпляра postfix:
- /etc/postfax-2/sasl
- /etc/postfax-3/sasl
- /etc/postfax-4/sasl
- /etc/postfax-5/sasl
Ставим пакет cyrus-common:
apt-get install cyrus-common
Спрашивают про какие-то буферы. Говорю Yes.
Настраиваем аутентификацию в Postfix. Модифицируем файл настроек /etc/postfix/main.c. Добавляем:
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_relay_restrictions = permit_sasl_authenticated reject_unauth_destination
smtp_tls_security_level = may
Такие же настройки делаем в main.cf для каждого дополнительного экземпляра postfix.
Перезагружаем сервисы:
service postfix restart
service saslauthd restart