Озаботился на днях установки почтового сервера с поддержкой протокола TLS (Transport Layer Security) и SMTP-аутентификации. Ставил на CentOS 5. Итак, начал естественно с
yum install postfix
service saslauthd start
service saslauthd start
Теперь пойдем по шагам:
- Генерим сертификаты для TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
#вводим пароль для нашего файла-ключа smtpd.key
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
#снова вводим пароль от smtpd.key, а затем требуемую информацию
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
#снова пароль от smtpd.key
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
#и снова пароль от smtpd.key
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
#угадайте что? да, пароль от smtpd.key, и снова доп. информацию
- Конфигурируем Postfix. Для того, чтобы подключить SMTP-AUTH и TLS пропишите следующие строки в конфиг /etc/postfix/main.cf:
mynetworks = 127.0.0.0/8
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
alias_maps = hash:/etc/aliases
smtpd_tls_auth_only = yes
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
- Завершение конфигурации и проверка.
mv -f /etc/pam.d/smtp.postfix /etc/pam.d/smtp
/etc/init.d/postfix restartПроверьте, что postfix стартанул без ошибок и попробуйте telnet localhost 25. Чтобы убедиться в работоспособности SMTP-AUTH и TLS выполните:
telnet localhost 25
#после установки соединения...
ehlo localhostЕсли postfix выдаст строки 250-STARTTLS и 250-AUTH - вы успешно все настроили.

Автор не понял что он делает, а просто бездумно скатал откуда-то команды. Во всем что касается генерации сертификатов - точно. Вышло все через зад.
Сгенерировал запароленный клиентский ключ.
Сгенерировал на основе него клиентский сертификат и подписал его _собой_.
Снял пароль с ключа (А нахрен ты его изначально шифровал тогда ?).
Сгенерировал корневой сертификат, подписал его собой и ключ от него опять зачем-то зашифровал, причем тем-же паролем, что только что убрал с клиентского ключа.
А теперь как правильно :
Генерируем корневой сертификат, подписанный собой.
openssl req -new -newkey rsa:2048 -x509 -nodes -keyout cakey.pem -out cacert.pem -days 3650
Сертификат сроком на 10 лет. Опция -nodes означает не шифровать ключ. Если вы параноик, можете убрать.
Далее генерируем запрос на подпись клиентского сертификата
openssl req -new -newkey rsa:1024 -nodes -keyout smtpd.key -out smtpd.csr
Подписываем его корневым сертификатом
openssl x509 -req -CA cacert.pem -CAkey cakey.pem -days 730 -in smtpd.csr -out smtpd.crt -CAcreateserial
В результате имеем:
Корневой сертификат cacert.pem
Ключ корневого сертификата cakey.pem
Клиентский сертификат smtpd.crt
Ключ клиентского сертификата smtpd.key
Ключи должны быть доступны только администратору, особенно корневой. Им же нужно подписывать дополнительные сертификаты для клиентов.
Спасибо тебе умный человек! Наверное, когда вы настраивали TLS, все команды сами сочиняли, прочитав перед этим толстенную книгу ну и ман в придачу. Да, так и надо делать конечно, но не всегда есть время, и иногда проще погуглить. Cтатью поправлю.
Да незачто вообщем, сам сидел разбирался и наткнулся на эту запись. Я понимаю, что это просто памятка, самому себе в первую очередь, но если не разобраться в вопросе у меня как-то зудит в тыльной части :)
Сделал всё, как написано. 250-STARTTLS выдаётся, а 250-AUTH нет.
Оно и неудивительно, нужно ведь настроить еще dovecot-sasl либо cyrus-sasl, про которые автор скромно умолчал :)
ну, человек, сделай доброе дело. опиши процесс до конца.
Отправить комментарий