DBMail over PostgreSQL + Postfix + SASL on Debian. Part 3. Postfix.


Part 1. Введение.
Part 2. DBMail.
Part 3. Postfix.
Part 4. SASL.
Part 5. SPF. DKIM. DMARC. Очистка заголовков. DNS PTR.

Установите postfix выбрав опцию No configuration.

apt install postfix

Отредактируйте конфиг /etc/postfix/main.cf.

mydomain = somewhere-in-the.space
myhostname = mail.somewhere-in-the.space
#disable /etc/aliases files lookup, all users are stored inside DB
alias_maps =
alias_database =
mydestination = $mydomain, localhost, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_banner = $myhostname ESMTP
biff = no
compatibility_level = 2
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.somewhere-in-the.space/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.somewhere-in-the.space/privkey.pem
smtp_use_tls=yes
smtp_tls_security_level=may
smtpd_use_tls=yes
smtpd_tls_security_level=encrypt
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Отредактируйте файл /etc/postfix/master.cf и добавьте следующую строку в конец. Это включит использование TLS на порте 587.

submission inet n       -       y       -       -       smtpd

Отредактируйте файл /etc/letsencrypt/cli.ini, чтобы postfix перезапускался после каждого обновления сертификатов.

post-hook = /bin/chmod -R 640 /etc/letsencrypt/archive/ > /dev/null 2>&1 && /bin/systemctl restart dbmail && /bin/systemctl restart postfix

Postfix может быть сконфигурирован на использование SMTP или LMTP протоколов. Оффициальные мануалы DBMail перестали быть актуальными, поэтому воспользуйтесь моими. Выберите один из вариантов и продолжите.

Вариант 1. SMTP.

Простейший вариант. Postfix’у не нужно подключение к БД для проверки пользователей, но процесс dbmail-deliver (ранее dbmail-smtp), в отличие от LMTP, будет создавать подключение к БД для каждого входящего письма — это уменьшает производительность сервера по сравнению с LMTP.

Добавьте следующие строки в файл /etc/postfix/master.cf.

dbmail-smtp    unix  -       n       n       -       -       pipe
         flags=  user=dbmail:dbmail
         argv=/usr/sbin/dbmail-deliver -f /etc/dbmail/dbmail.conf -d ${recipient} -r ${sender}

Добавьте следующие строки в файл /etc/postfix/main.cf.

mailbox_transport = dbmail-smtp:
local_recipient_maps =

Вариант 2. LMTP.

Включите демон DBMail LMTP в файле /etc/default/dbmail.

START_LMTPD=true

Добавьте следующие строки в файл /etc/dbmail/dbmail.conf.

[LMTP]
port  = 24

Перезапустите DBMail чтобы демон LMTP стартанул.

systemctl restart dbmail

Установите расширение postfix для подключения к PostgreSQL.

apt install postfix-pgsql

Добавьте следующую строку в файл /etc/postfix/master.cf.

dbmail-lmtp     unix    -       -       n       -       -       lmtp

Создайте файл /etc/postfix/recipient_map.cf.

user = dbmail
password = db_user_password
hosts = 127.0.0.1:5432
dbname = dbmail
query = SELECT DISTINCT 1 FROM dbmail_aliases WHERE alias='%s';

Добавьте следующие строки в файл /etc/postfix/main.cf.

mailbox_transport = dbmail-lmtp:127.0.0.1:24
local_recipient_maps = pgsql:/etc/postfix/recipient_map.cf

И в конце.

Перезапустите postfix.

systemctl restart postfix

Проверьте что порты открыты.

netstat -atun | grep "25\|587"
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp6       0      0 :::587                  :::*                    LISTEN
tcp6       0      0 :::25                   :::*                    LISTEN

Попробуйте отправить тестовое письмо куда-нибудь наружу.

apt-get install mailutils
echo "test" | mail -aFrom:admin@somewhere-in-the.space your@mail.com

ОК, теперь вы можете отправлять письма прямо с сервера, но давайте настроим SASL, чтобы иметь возможность безопасно отправлять почту отовсюду.

1 комментарий к “DBMail over PostgreSQL + Postfix + SASL on Debian. Part 3. Postfix.”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *