bert schulze bs@bescit.de (So 14 Feb 2021 09:12:18 CET):
Hallo Heiko,
Heiko Schlittermann (Sat, Feb 13, 2021 at 12:32:14PM +0100):
Hallo Bert, noch ein paar weitere unsortierte Gedanken:
- Vewenden die MySQL/MariaDB Libraries nicht auch Konfigurationsfiles (mehr oder weniger implizit), in denen man dann solche Dinge erledigen könnte?
Die Konfigurationsfiles stecken in den mariadb-server und mariadb-client Paketen, exim4-daemon-heavy hat nur ein Depends: libmariadb3.
Na, aber es wäre ja trotzdem denkbar, dass diese Libraries auch die Configfiles lesen, wenn sie vorhanden sind. Noch weiss ich nicht, ob ich das eher gut oder schlecht finden sollte.
Bei LDAP, wo die Client-Libraries, die der Exim verwendet, dann _anscheinend_ auch gerne mal in der `ldap.conf` nachsehen (ohne das das im Exim explizit erwähnt würde), hat es mich schon geärgert, dass so magische-hinter-dem-Rücken-Abhängigkeiten da sind. Anderseits ist es aber auch cool, systemweit festlegen zu können, wie sich die diversen Clients an diversen Stellen verhalten.
Gut, aber das ist jetzt nicht der Diskussionspunkt.
- Möchte MariaDB nicht API-kompatibel zu MySQL sein? Exim behandelt aktuell beide Libraries gleich (bis auf etwas Magie zum ermitteln der aktuellen Version, da gab es wohl unterschiedliche Defines in den beiden Libs)
Anscheinend nicht ;) Die nutzen auch eine mysql_optionsv() Methode anstelle der mysql_options(). Und ja das Versionsschema ist schräg.
Dann lege ich mal vor (siehe Patch im Anhang).
Der patched mit etwas Fuzz und läßt sich mit den letzten Committs des Master-Branches sogar problemlos übersetzen. Danke.
Folgende Umstände sind derzeit zu beachten:
Connection String wird von links nach rechts geparsed und es werden 4 Argumente erwartet: Host Datenbank Username Passwort.
Das Passwort mag auch Slashes enthalten, es wird einfach der Rest des Strings nach dem 3. Slash verwendet
Doppelpunkte! Kann man nicht verwenden, der String aus der Konfiguration in "mysql_servers" ist komplett, als "server" in perform_mysql_search() kommt dann nur ein Substring bis zum ersten ":" an. (habe nicht in lf_sqlperform() geschaut, aber vermute das dort ein bisschen zuviel santized wird).
Ja, weil das diese Option als Liste von Servern geparsed wird, wo der Doppelpunkt per Default (aber änderbar) als Trenner verwendet wird.
Ich gehe davon aus, dass ein Passwort mit ":" nicht funktioniert:)
Also tls:// ist eine schlechte Idee. Habe jetzt die Syntax auf tls@host definiert (finde ich lesbar: verbinde mit host via tls.)
Ich gucke mir mal an, wie das jetzt funktioniert. Danke schon mal.