Ошибка с SSL-сертификатом для Dovecot и подключения imap

Вопрос или проблема

Я только что настроил сервер dovecot и postfix, и все прошло хорошо, за исключением того, что у меня постоянно возникают 2 ошибки.
Первая ошибка заключается в том, что Dovecot не распознает мой SSL-сертификат, хотя я проверял его несколько раз, и он был выдан правильно. У меня также есть проблема с opendKim, потому что postfix не может его найти, хотя я указал правильный smtpd milter.
Вот конфигурационные файлы и ошибки:

Jan 20 22:58:30 dovecot: imap-login: Disconnected: Connection closed: SSL_accept() failed: error:0A000416:SSL routines::sslv3 alert certificate unknown: SSL alert number 46 (no auth attempts in 0 secs): user=<>, rip=217.85.23.44, lip=---.--.---.---, TLS handshaking: SSL_accept() failed: error:0A000416:SSL routines::sslv3 alert certificate unknown: SSL alert number 46, session=<ED9gXCosvc/ZVRcs>
Jan 20 22:59:31 postfix/smtpd[2822263]: warning: connect to Milter service local:/run/opendkim/opendkim.sock: No such file or directory

main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no

readme_directory = no
compatibility_level = 3.6

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.com
mydomain = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:/run/opendkim/opendkim.sock
non_smtpd_milters = local:/run/opendkim/opendkim.sock

virtual_mail_domains = example.com
virtual_mail_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

opendkim.conf:


# Это базовая конфигурация для подписи и проверки. Ее можно легко
# адаптировать для простой установки. См. opendkim.conf(5) и
# /usr/share/doc/opendkim/examples/opendkim.conf.sample для получения
# полного описания доступных параметров конфигурации.

Syslog                  yes
SyslogSuccess           yes
#LogWhy                 no

# Общие параметры подписи и проверки. В Debian заголовок "From"
# переподписывается, потому что он часто является ключом идентификации,
# используемым системами репутации, и поэтому несколько чувствителен
# к безопасности.
Canonicalization        relaxed/simple
#Mode                   sv
#SubDomains             no
OversignHeaders         From

# Домены, селекторы и ключи для подписи (обязательно). Например,
# выполнить подпись для домена "example.com" с селектором "2020"
# (2020._domainkey.example.com), используя закрытый ключ, хранящийся
# в /etc/dkimkeys/example.private. Более детальные опции
# настройки можно найти в /usr/share/doc/opendkim/README.opendkim.
Domain                  mail.example.com
Selector                default
KeyFile                 /etc/opendkim/keys/mail.example.com/default.private

# В Debian opendkim работает от имени пользователя "opendkim".
# Необходимо установить umask 007, если используется локальный сокет
# с MTA, который обращается к сокету как непривилегированный пользователь
# (например, Postfix). В этом случае, возможно, потребуется добавить
# пользователя "postfix" в группу "opendkim".
UserID                  opendkim
UMask                   007

# Сокет для подключения к MTA (обязательно). Если MTA находится внутри
# chroot-jail, необходимо убедиться, что сокет доступен. В Debian
# Postfix работает в chroot в /var/spool/postfix, поэтому Unix-сокет
# должен быть настроен, как показано в последней строке ниже.
Socket                  local:/run/opendkim/opendkim.sock
#Socket                 inet:8891@localhost
#Socket                 inet:8891
#Socket                 local:/var/spool/postfix/opendkim/opendkim.sock

PidFile                 /run/opendkim/opendkim.pid

# Хосты, для которых нужно подписывать, а не проверять, по умолчанию
# 127.0.0.1. Подробнее см. раздел OPERATION в opendkim(8).
#InternalHosts          192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12

# Доверенная опора позволяет включить DNSSEC. В Debian файл доверенной
# опоры предоставляется пакетом dns-root-data.
TrustAnchorFile         /usr/share/dns/root.key
#Nameservers            127.0.0.1

10-ssl.conf

##
## Настройки SSL
##

# Поддержка SSL/TLS: yes, no, required. <doc/wiki/SSL.txt>
ssl = required

# Кодированный PEM X.509 SSL/TLS сертификат и закрытый ключ. Они открываются
# до сброса привилегий root, поэтому держите файл ключа недоступным для
# чтения для кого-либо, кроме root. Прилагаемый doc/mkcert.sh может быть
# использован для легкого создания самоподписанного сертификата, просто
# убедитесь, что обновили домены в dovecot-openssl.cnf
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem

# Если файл ключа защищен паролем, укажите пароль здесь. В качестве
# альтернативы вы можете указать его при запуске dovecot с параметром -p.
# Поскольку этот файл часто доступен для чтения для мира, вы можете
# разместить эту настройку в другом файле, имеющем права root 0600,
# используя ssl_key_password = <path.
#ssl_key_password =

# Доверенный сертификатный орган, закодированный в PEM. Устанавливайте
# это только в том случае, если вы собираетесь использовать
# ssl_verify_client_cert=yes. Файл должен содержать сертификат(ы) CA
# с последующими подходящими CRL(и). (например, ssl_ca = </etc/ssl/certs/ca.pem)
ssl_ca = </etc/letsencrypt/live/mail.example.com/chain.pem

# Требовать успешного прохождения проверки CRL для клиентских
# сертификатов.
#ssl_require_crl = yes

# Директория и/или файл для доверенных сертификатов SSL CA. Они
# используются только в случае, если Dovecot необходимо действовать
# как SSL-клиент (например, IMAP-сервер или служба отправки). Директория
# обычно находится в /etc/ssl/certs на системах, основанных на Debian,
# и файл в /etc/pki/tls/cert.pem на системах, основанных на RedHat.
# Обратите внимание, что использование ssl_client_ca_file с большими
# пакетами CA не рекомендуется, поскольку это приводит к
# чрезмерному использованию памяти.
#ssl_client_ca_dir =
ssl_client_ca_dir = /etc/ssl/certs
#ssl_client_ca_file =

# Требовать действительный сертификат при подключении к удаленному серверу
#ssl_client_require_valid_cert = yes

# Запрашивать от клиента отправку сертификата. Если вы также хотите
# требовать его, установите auth_ssl_require_client_cert=yes в секции
# аутентификации.
#ssl_verify_client_cert = no

# Поле из сертификата, которое будет использоваться для имени пользователя.
# usually_commonName и x500UniqueIdentifier - это обычные выборы. Также
# необходимо установить auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName

# Параметры DH для SSL
# Создайте новые параметры с `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Или перейдите с файла ssl-parameters.dat на новый с помощью команды,
# которую предоставляет dovecot при старте, когда ssl_dh не установлен.
ssl_dh = </usr/share/dovecot/dh.pem

# Минимальная версия протокола SSL для использования. Потенциально
# распознаваемые значения: SSLv3, TLSv1, TLSv1.1, TLSv1.2 и TLSv1.3, в
# зависимости от используемой версии OpenSSL. Dovecot также распознает
# значения ANY и LATEST. ANY соответствует любой версии протокола, и
# LATEST соответствует наиболее последней версии, поддерживаемой библиотекой.
ssl_min_protocol = TLSv1.2

# SSL шифры, которые следует использовать, по умолчанию:
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
# Чтобы отключить non-EC DH, используйте:
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH

# Список эллиптических кривых, разделенных двоеточием, для использования.
# Пустое значение (по умолчанию) означает использование значений
# по умолчанию из библиотеки SSL. Примером допустимого значения будет
# P-521:P-384:P-256.
#ssl_curve_list =

# Предпочитать порядок шифров сервера над клиентскими.
#ssl_prefer_server_ciphers = no

# SSL криптоустройство для использования, для получения действительных значений
# запустите "openssl engine".
#ssl_crypto_device =

# Дополнительные опции SSL. В настоящее время поддерживаемые опции:
# compression - Включить сжатие.
# no_ticket - Отключить SSL сессии.
#ssl_options =

.

Ответ или решение

Проблемы, связанные с SSL сертификатом для Dovecot и IMAP подключением, а также с функцией opendkim, достаточно распространены и могут быть вызваны различными факторами. Рассмотрим теоретические аспекты этих проблем, примеры из реальной жизни и возможные пути их решения.

Теория

SSL (Secure Sockets Layer) и его преемник TLS (Transport Layer Security) обеспечивают безопасность передачи данных через сети, используя шифрование. Сертификаты SSL используются для аутентификации сервера, подтверждая его подлинность для клиента. Ошибки, связанные с отказом в аутентификации сертификата, часто возникают из-за ошибок в конфигурации, проблем с самим сертификатом или несовместимости TLS версий.

С другой стороны, OpenDKIM — это система, которая используется для цифровой подписи и проверки электронной почты, подтверждая подлинность отправителей и предотвращая подмену имён. Ошибки в конфигурации Postfix для работы с milter могут привести к тому, что OpenDKIM не будет правильно взаимодействовать с системой.

Примеры

  1. Ошибка SSL_accept в Dovecot: Обычно подобные ошибки могут происходить из-за неправильной конфигурации сертификатов. В данном случае, ошибка "sslv3 alert certificate unknown" может указывать на то, что сертификат либо некорректен, либо не распознается клиентом.

  2. Ошибка OpenDKIM в Postfix: Сообщение "No such file or directory" может быть связано с несуществующими или недоступными для чтения сокетами, неправильно настроенными путями в конфигурации, или с проблемами с правами доступа.

Применение

Решение проблемы с SSL сертификатом в Dovecot

  1. Проверка сертификатов:

    • Убедитесь, что файлы сертификата и закрытого ключа находятся в правильных местах и имеют соответствующие права доступа, чтобы Dovecot мог их читать (должны быть доступны только для чтения пользователю root).
    • Проверьте, что доменное имя на сертификате совпадает с доменным именем вашего сервера.
  2. Конфигурация Dovecot:

    • Убедитесь, что пути к файлам сертификатов в файле 10-ssl.conf указаны правильно:
      ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
      ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
      ssl_ca = </etc/letsencrypt/live/mail.example.com/chain.pem
    • Проверьте, что настройка ssl_min_protocol установлена на значение, поддерживаемое как сервером, так и клиентом. Например, используйте ssl_min_protocol = TLSv1.2.

Решение проблемы OpenDKIM в Postfix

  1. Убедитесь в наличии сокета OpenDKIM:

    • Проверьте, что OpenDKIM действительно создает сокет в указанной директории /run/opendkim/opendkim.sock.
    • Убедитесь, что служба OpenDKIM запущена и активно работает. Для этого используйте команды проверки состояния сервиса, например, systemctl status opendkim.
  2. Правильная конфигурация сокета:

    • Если Postfix запускается в chroot окружении, нужно убедиться, что сокет доступен для него. Это можно сделать, изменив путь к сокету в конфигурациях обоих сервисов, чтобы они совпадали.
    • Обратите внимание на строку Socket в файле opendkim.conf и настройте её, если необходимо, например, на использование inet-сокета:
      Socket inet:8891@localhost
    • Убедитесь, что пользователь postfix добавлен в группу opendkim, чтобы иметь доступ к сокету.
  3. Правильные пути и права доступа:

    • Проверьте, что все файлы и директории имеют нужные права доступа, особенно те, что связаны с созданием сокета.

Заключение

Поддержание корректной работы почтового сервера с использованием Dovecot, Postfix и OpenDKIM требует внимания к деталям в конфигурациях и учёте всех возможных зависимостей между системами. Регулярное обновление сертификатов и обеспечение правильных прав доступа к конфигурационным файлам также играет важную роль в избегании подобных ошибок.

Оцените материал
Добавить комментарий

Капча загружается...