20.9. Настройка smtp-auth для аутентификации пользователей

Проблема
Вы хотите организовать аутентификацию пользователей (особенно удаленных) на
сервере Postfix, чтобы сервер не использовался для несанкционированных пересылок.
Решение
Потребуются следующие компоненты:
О Cyrus-SASL2;
О OpenSSL;
О программа Postfix, откомпилированная с поддержкой Cyrus-SASL;
О ключи и сертификат сервера.
Если поддержка Cyrus-SASL не установлена, обратитесь к разделу 20.7. Когда
поддержка SASL будет установлена и успешно заработает, переходите к созда нию сертификата сервера SSL. Найдите каталог/ssl/misc и войдите в него:
# cd /usr/lib/ssl/misc
# Is
CA.pl c i n f o c_name derchop CA.sh c_hash c_issuer demoCA
Ключи генерируются сценарием CA.pl (возможно, в каталоге также будет при сутствовать сценарий CA.sh — «обертка» для CA.pL, немного расширяющая его функ циональность). Выберите один из сценариев и создайте его резервную копию:
# ср CA.sh CA.sh-old
Отредактируйте сценарий и вставьте ключ -nodes всюду, где имеется строка $REQ:
-newcert)
# Создание сертификата
$REQ -new -nodes -x509 -keyout newreq.pem -out newreq.pem $DAYS
-newreq)
# Создание запроса сертификата
$REQ -new -nodes -keyout newreq.pern -out newreq.pern SDAYS
RET=$?
else
echo "Making CA certificate..."
$REQ -new -nodes -x509 -keyout ${CATOP}/private/$CAKEY \
-out ${CATOP}/$CACERT $DAYS
Мы отказываемся от создания пароля, чтобы его не приходилось вводить при
каждом перезапуске сервера, и автоматическая перезагрузка не прервалась бы
из-за ожидания ввода пароля. Вы можете пропустить этот этап и использовать
пароль; естественно, применение пароля повышает безопасность.
Сгенерируйте новый сертификат:
# ./CA.sh -newca
# ./CA.sh -newreq
# ./CA.sh -sign
В результате будут сгенерированы файлы newreq.pem, newcert.pem и demoCA/
cacert.pem. Скопируйте их в каталог/etc/postfix:
# ср newcert.pem /etc/postfix/
# ср newreq.pem /etc/postfix/
# ср demoCA/cacert.pern /etc/postfix/
Включите следующий фрагмент в /etc/postfix/main.cf:
smtpd_use_t1s = yes
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/newreq.pem
smtpdtlscertfile = /etc/postfix/newcert.pem
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tlsjoglevel = 3
smtpdtlsreceivedheader - yes
smtpdtlssessioncachetimeout = 3600s
tls random source - dev:/dev/urandom
Активируйте изменения:
postfix reload
и протестируйте сервер:
$ telnet local host 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is ' * ] ' .
220 windbag.test.net ESMTP Postfix (Libranet/GNU)
EHLO windbag.test.net
250-windbag.test.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-XVERP
250-8BITMIME
о t AK I ! l_o
S: 220 Ready to start TLS
Остается лишь настроить почтовых клиентов пользователей. Многие почто вые клиенты позволяют сохранить имя и пароль, поэтому пользователям остает ся лишь щелкнуть на кнопке отправки почты.
Комментарий
Установки Postfix почти не зависят от формата пакетов и дистрибутивов Linux,
и все же полезно лишний раз проверить все пути в файле /etc/postfix/main.cf.
См. также
Описание параметров main.cf в/usr/share/doc/postfix/examples/; описание парамет ров аутентификации в /use/share/doc/postfix/examples/sample-auth.cf.gz.