
У меня есть сервер Dovecot, который использует MariaDB для виртуальных почтовых ящиков. Сервер MariaDB находится на другой машине в той же локальной сети.
Недавно мы включили TLS на машине MariaDB.
Dovecot работает нормально, когда require_secure_transport
выключен, но не может подключиться, когда мы включаем require_secure_transport
его в файле конфигурации MariaDB.
Ошибка:
Error: mysql(xxx.xxx.xxx.xxx): Connect failed to database (db_name): Access denied for user 'db_user'@'xxx.xxx.xxx.xxx' (using password: YES)
Это похоже на ошибку аутентификации, но подключение с тем же именем пользователя и паролем работает нормально, когда require_secure_transport
, то MariaDB отклоняет подключение, потому что Dovecot не использует TLS.
Строка подключения /etc/dovecot/dovecot-sql.conf.ext
выглядит так:
connect = host=db0.mydomain.com dbname=my_db user=the_user password=secret ssl_ca=/etc/ssl/authority/authority.crt
В конфигурационном файле указано:
ssl_ca, ssl_ca_path — установите один или оба параметра для включения SSL
Могу ли я получить более подробные сведения об ошибке? Например, если это несоответствие версии TLS, можно ли это где-то показать?
Есть ли какие-то настройки в Dovecot, которые мне нужно изменить?
ОБНОВЛЕНИЕ: Добавление ssl_verify_server_cert=no
в строку подключения /etc/dovecot/dovecot-sql.conf.ext
позволяет подключению работать.
Так что, похоже, это ошибка проверки сертификата. Но без более подробного логирования я не уверен, что ему не нравится в сертификате.
Сертификат подписан CA в строке подключения. Было бы неплохо узнать, какое общее имя он проверяет, а также будет ли Dovecot использовать какие-либо значения SAN для сертификата.
решение1
Мне удалось добиться корректной работы DNS-сервера, настроив его в локальной сети с записями для имен хостов сервера imap и MariaDB, а затем настроив resolv.conf
его использование на обеих машинах.
Dovecot теперь без проблем подключается к require_secure_transport
настройкам в MariaDB и ssl_verify_server_cert=yes
настройкам в строке подключения Dovecot.
Без более подробного сообщения об ошибке для отладки я могу предположить, что реализация TLS игнорирует сопоставления в /etc/hosts
и требует использования реального DNS-сервера.