
Ich habe einen Dovecot-Server, der MariaDB für virtuelle Postfächer verwendet. Der MariaDB-Server befindet sich auf einem anderen Computer im selben LAN.
Wir haben vor Kurzem TLS auf der MariaDB-Maschine aktiviert.
Dovecot funktioniert einwandfrei, wenn require_secure_transport
es ausgeschaltet ist, kann aber keine Verbindung herstellen, wenn wir es require_secure_transport
in der MariaDB-Konfigurationsdatei einschalten.
Der Fehler ist:
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)
Dies sieht nach einem Authentifizierungsfehler aus, aber die Verbindung mit demselben Benutzer und Kennwort funktioniert einwandfrei, wenn require_secure_transport
es deaktiviert ist. Daher lehnt MariaDB die Verbindung ab, weil Dovecot TLS nicht verwendet.
Die Verbindungszeichenfolge /etc/dovecot/dovecot-sql.conf.ext
sieht folgendermaßen aus:
connect = host=db0.mydomain.com dbname=my_db user=the_user password=secret ssl_ca=/etc/ssl/authority/authority.crt
In der Konfigurationsdatei steht:
ssl_ca, ssl_ca_path - Legen Sie einen oder beide fest, um SSL zu aktivieren.
Kann ich ausführlichere Details zum Fehler erhalten? Wenn es sich beispielsweise um eine Nichtübereinstimmung der TLS-Version handelt, kann ich das irgendwo anzeigen lassen?
Gibt es eine Einstellung in Dovecot, die ich ändern muss?
UPDATE: Durch ssl_verify_server_cert=no
das Hinzufügen zur Verbindungszeichenfolge /etc/dovecot/dovecot-sql.conf.ext
kann die Verbindung hergestellt werden.
Es scheint sich also um einen Fehler bei der Zertifikatsüberprüfung zu handeln. Aber ohne ausführlichere Protokollierung bin ich mir nicht sicher, was an dem Zertifikat nicht gefällt.
Das Zertifikat wird von der Zertifizierungsstelle in der Verbindungszeichenfolge signiert. Es wäre gut zu wissen, welcher allgemeine Name überprüft wird und ob Dovecot einen der SAN-Werte für das Zertifikat verwendet.
Antwort1
Ich habe dies zum Laufen gebracht, indem ich im lokalen Netzwerk einen DNS-Server mit Datensätzen für die Hostnamen der IMAP- und MariaDB-Server eingerichtet und ihn dann resolv.conf
auf beiden Maschinen für die Verwendung eingestellt habe.
Dovecot stellt jetzt problemlos eine Verbindung mit require_secure_transport
„Set“ in MariaDB und ssl_verify_server_cert=yes
„Set“ in der Verbindungszeichenfolge von Dovecot her.
Da ich keine ausführlichere Fehlermeldung zum Debuggen habe, gehe ich davon aus, dass die TLS-Implementierung die Zuordnungen in ignoriert /etc/hosts
und die Verwendung eines tatsächlichen DNS-Servers erfordert.