sasl в Postfix

[~]
Настройка поддержки SASL в Postfix

SASL обеспечивает возможность отправки сообщений пользователям не из mynetworks. При этом пользователь должен аутенифицироваться при соединении с сервером. Т.к. имя пользователя/пароль передавать открытым текстом не следует, то предварительно должно быть установлено защищённое соединение через TLS.

Требуется postfix с поддержкой SSL (с релиза 2.2 должна быть штатно в основной ветви). Устанавливается cyrus-sasl2.

При использовании базы данных пользователей в файле настройка и запуск демона saslauthd не требуется.
База пользователей должна быть в chroot-окружении Postfix (/var/spool/postfix/etc/sasl2/sasldb2).

Создаём каталог и файл:

# mkdir /var/spool/postfix/etc/sasl2/
# touch /var/spool/postfix/etc/sasl2/sasldb2
# chmod 640 /var/spool/postfix/etc/sasl2/sasldb2
# chown root:postfix /var/spool/postfix/etc/sasl2/sasldb2

Добавляются новые пользователи:

# saslpasswd2 -f /var/spool/postfix/etc/sasl2/sasldb2 -c user@domain

Проверяем наличие пользователя:

# sasldblistusers2 /var/spool/postfix/etc/sasl2/sasldb2

Указываем метод проверки паролей для Postfix:

# echo «pwcheck_method: sasldb» > /etc/sasl2/smtpd.conf

Создаём сертификаты postfix.pem; postfix-dsa.pem; cacert.pem, без DH. См. Создание сертификатов OpenSSL.

Создаём ключи DH:

# openssl gendh -out /etc/postfix/dh_1024.pem -2 -rand /var/run/egd-pool 1024
# openssl gendh -out /etc/postfix/dh_512.pem -2 -rand /var/run/egd-pool 512
# chmod 400 /etc/postfix/dh_1024.pem /etc/postfix/dh_512.pem
# chown root:root /etc/postfix/dh_1024.pem /etc/postfix/dh_512.pem

Создаём файлы для кеширования соединений:

# touch /etc/postfix/smtpd_scache.dir
# touch /etc/postfix/smtpd_scache.pag
# chown root:postfix /etc/postfix/smtpd_scache.*
# chmod 660 /etc/postfix/smtpd_scache.*

Добавляем в main.cf:

# SASL support
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = domain.ru
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_tls_auth_only=yes

# TLS support
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_enforce_tls = yes
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 360s
# tls_random_source = dev:/dev/urandom
# tls_daemon_random_source = dev:/dev/urandom

# Sertificates
smtpd_tls_cert_file = /etc/postfix/postfix.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_dcert_file = /etc/postfix/postfix-dsa.pem
smtpd_tls_dkey_file = $smtpd_tls_dcert_file
smtpd_tls_CAfile = /etc/postfix/cacert.pem

smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem

И всё. Без TLS оно работает в обычном режиме, без авторизации.
При подключении с использованием TLS — разрешает авторизацию.

Для получения сертификатов сервера и проверки работы SSL к серверу можно подключиться через

openssl s_client -connect <server>:<port> -showcerts -starttls smtp

Запись опубликована в рубрике mail, Postfix. Добавьте в закладки постоянную ссылку.

Добавить комментарий