Postfix SMTP SSL/TSL

В заголовке Received отправленного письма видим сообщение (No client certificate requested). Что бы это сообщение было видно нужно установить параметр smtpd_tls_received_header = yes

Received: from [192.168.1.15] (69-98-95-178.pool.ukrtel.net [178.95.98.69])	
(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))	(No client certificate requested)...

Ошибка (No client certificate requested) говорит о том, что получатель письма не может удостовериться, что это письмо отправили именно мы. Получатель видит, что используется TSL - но он не уверен кто конкретно выслал письмо.

Устраним ошибку. Добавим строки в main.cf

# требовать сертификаты от клиентов
smtpd_tls_ask_ccert = yes
#relay_clientcerts файл с отпечатками пользовательских сертификатов
relay_clientcerts = hash:/etc/postfix/relay_clientcerts

Cнимем отпечаток с пользовательского сертификата

# openssl x509 -fingerprint -in smtpd.pem
SHA1 Fingerprint=9C:89:3B:3B:B7:5C:58:4B:44:AD:5E:E6:89:31:CA:0D:97:9A:62:91
-----BEGIN CERTIFICATE-----
MIIDrjCCAxegAwIBAgIJAO9A22Y67OL8MA0GCSqGSIb3DQEBBQUAMIGXMQswCQYD

Нам нужны цифры, разграниченные двоеточиями. Их просто записываем в файл /etc/postfix/relay_clientcerts. После отпечатка можете написать что угодно - это только для вашей информации. Теперь создадим таблицу хэшей отпечатков и перезапустим postfix.

# nano relay_clientcerts
9C:89:3B:3B:B7:5C:58:4B:44:AD:5E:E6:89:31:CA:0D:97:9A:62:91 OK
# postmap hash:/etc/postfix/relay_clientcerts
# /etc/init.d/postfix restart

Шлем тестовое письмо и видим что в место (No client certificate requested) появилась запись (Client did not present a certificate)

Received: from [192.168.1.15] (69-98-95-178.pool.ukrtel.net [178.95.98.69])
(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))	(Client did not present a certificate)

И что теперь делать?!!!!! - На этом этапе мы имеем безопасное (шифрованное) TLS - соединение, но Аутентификация не проходит - так как клиент не отдает нашему серверу клиентский серификат. Подробнее читаем здесь.

Как временная мера отключил smtpd_tls_received_header = no - теперь читатель письма не видит заголовка с ошибкой. Для решения пробелмы в целом копать нужно в строну распространения центра сертификации на локальные компы.

Получатель письма теперь уверен, что в связке отправитель-сервер не было никого лишнего и письмо никем не было прочитано.

  • smtpd_tls_ask_ccert - устраняет ошибку No client certificate requested (То есть получатель письма не сможет удостовериться, что это письмо

отправили именно мы. То, что с использованием TLS - да. Но вот что конкретно мы - нет.)

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!