Настройка SMTP-авторизации в Postfix

Данная настройка позволит запрашивать логин с паролем при отправке сообщений. В данном примере аутентификация реализована при помощи dovecot.

Без шифрования

Устанавливаем dovecot.

а) если используем CentOS/Red Hat:

yum install dovecot

б) если используем Ubuntu/Debian:

apt-get install dovecot-imapd dovecot-pop3d

Открываем конфигурационный файл Postfix /etc/postfix/main.cf

И добавляем:

smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

где smtpd_sasl_path — путь до плагина аутентификации по механизму SASL; smtpd_sasl_auth_enable — разрешает или запрещает аутентификацию по механизму SASL; smtpd_sasl_type — тип плагина, который используется для SASL-аутентификации; smtpd_relay_restrictions* — правила разрешения и запрета использования MTA при пересылке.

Открываем настройки аутентификации в dovecot /etc/dovecot/conf.d/10-master.conf

и приводим опцию service auth к следующему виду:

service auth {
 ...
 unix_listener /var/spool/postfix/private/auth {
  mode = 0660
  user = postfix
  group = postfix
 }
 ...
}

если соответствующей секции unix_listener нет, то ее нужно создать.

Отключаем требование ssl для аутентификации /etc/dovecot/conf.d/10-ssl.conf

ssl = no

Настройки аутентификации /etc/dovecot/conf.d/10-auth.conf приводим к следующему виду

auth_mechanisms = plain login

В этом же файле проверяем, что снят комментарий со следующей строки:

!include auth-system.conf.ext

Перезапускаем сервис Postfix и запускаем Dovecot:

systemctl restart postfix
systemctl enable dovecot
systemctl start dovecot

Готово. В качестве логина и пароля необходимо использовать системную учетную запись.

Аутентификация с помощью виртуальных пользователей

Теперь настроим проверку подлинности не с помощью системных учетных записей, а с помощью виртуальных. В данном примере это будут виртуальные пользователи только для аутентификации при отправке почты.

Открываем конфигурационный файл dovecot /etc/dovecot/conf.d/auth-system.conf.ext

Находим секцию passdb и приводим ее к виду:

passdb {
\#  driver = pam
 driver = passwd-file
 args = scheme=SHA1 /etc/dovecot/passwd
 ...
}

в моем случае было закомментировано использование pam драйвера и добавлены опции driver и args. В данном примере они указывают на использование в качестве базы логинов и паролей — файл /etc/dovecot/passwd*.

Создаем хэш для пароля первого пользователя:

doveadm pw -s sha1 | cut -d '}' -f2

система запросит пароль — вводим его дважды.

Полученный хэш имеет, примерно, такой вид:

tMoWsjKKoenYg7+SLRB8GXZQY38=

Копируем его и создаем файл /etc/dovecot/passwd

user@test.ru:tMoWsjKKoenYg7+SLRB8GXZQY38=

в данном примере user@test.ru — имя виртуального пользователя; tMoWsjKKoenYg7+SLRB8GXZQY38= — хэш нашего пароля.*

Задаем права на файл с базой логинов и паролей и перезапускаем Dovecot:

chown dovecot: /etc/dovecot/passwd
chmod 600 /etc/dovecot/passwd
systemctl restart dovecot

Настройка SSL-шифрования

В конфигурационный файл postfix /etc/postfix/main.cf добавляем:

smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes

Добавляем в /etc/postfix/master.cf

smtps   inet n    -    n    -    -    smtpd
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Настраиваем требование сертификата в /etc/dovecot/conf.d/10-ssl.conf

ssl = required

Генерируем сертификат:

mkdir -p /etc/ssl/{certs,private}
cd /usr/share/doc/dovecot-*
vi mkcert.sh
SSLDIR=${SSLDIR-/etc/ssl}
sh mkcert.sh

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

systemctl restart postfix
systemctl restart dovecot

Готово. Аутентификация будет требовать шифрованного подключения по порту 25 (STARTTLS) или 465 (SSL/TLS).

dmosk.ru