Данная статья идет как дополнение к предыдущим статьям посвященным настройке SMTP: вот и вот. В данном случае я опишу как сделать наше соединение защищенным на транспортном уровне — то есть все данные между клиентом и сервером будут передаваться зашифрованными,что исключает их перехват.А точнее сводит на нет смысл такого действия.Внутри же соединения клиент передает серверу пароль в открытом виде.Но мы то не боимся показать пароль серверу?Главное что его по дороге не перехватят.Настройка довольно проста.
1)В любой удобной папке сгенерируем сертификат.Пусть будет /etc/postfix/ssl/. Переходим(или создаем и переходим) в эту папку и выполняем:
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Сертификат создаётся на год, о чём говорит цифра 365.
На экран будет выведен диалог ввода информации о ключе:
Country Name (2 letter code) [US]: UA
State or Province Name (full name) [Some-State]: Your state
Locality Name (eg, city) []: Your city name
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany, LLC
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: myserver.com
Email Address []: [email protected]
Готово.Теперь ограничим чтение сертификатов левыми лицами(читать сможет только владелец — root):
chmod 600 *
2)Добавляем в конфиг Postfix /etc/postfix/main.cf такие строчки:
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.cert
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
и так же находим(если нет,то добавляем строчку) что б было вот так:
smtp_use_tls = yes
smtpd_use_tls = yes
Сохраняем и перезапускаем Postfix.
3)Настраиваем почтовый клиент:
Порт SMTP: 25
Защита соединения: STARTTLS
Метод аутентификации: обычный пароль
Пробуем что то отправить.Первый раз должно появиться окно с вопросом о принятии сертификата.Надо его принять и попробовать отправить заново.Теперь должно отправляться без ошибок.