Frage Postfix-Setup mit Dovecot, MySQL-Fehler beim Mailversand


Also folgendes Problem. Ich versuche, einen Mailserver nach folgendem Tutorial zu installieren: https://workaround.org/ispmail/wheezy/

Das Problem beginnt, wenn ich versuche, meine erste Testmail (innerhalb des Systems) zu senden, bekomme ich folgendes:

postfix/pickup[15883]: F34B965841CF: uid=1000 from=<webmaster>
postfix/cleanup[15907]: F34B965841CF: message-id=20160519164815.F34B965841CF@mysite.com>
postfix/qmgr[15884]: F34B965841CF: from=<webmaster@mysite.com>, size=398, nrcpt=1 (queue active)
dovecot: auth-worker(15911): Warning: mysql: Query failed, retrying: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@example.org.' at line 1
dovecot: auth-worker(15911): Error: sql(john@example.org): Password query failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@example.org.' at line 1
dovecot: lda: Error: user john@example.org: Auth USER lookup failed
dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.
postfix/pipe[15909]: F34B965841CF: to=<john@example.org>, relay=dovecot, delay=0.02, delays=0.01/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure)

Die Sache ist, früher im Tutorial, sollten Sie manuell versuchen, wenn Ihre SQL-Abfragen mit arbeiten

postmap -q example.org mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

und so weiter. Und für mich funktioniert es. Überhaupt kein Problem.

Meine Dateien sehen ziemlich genau wie im Tutorial aus

mysql-virtual-mailbox-domains.cf

user = mailuser
password = <pw>
hosts = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

mysql-virtual-alias-maps.cf

user = mailuser
password = <pw>
hosts = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

und so weiter. Jemandem jemals zuvor begegnet? Irgendwelche Lösungen oder Ideen?


0
2018-05-19 17:16


Ursprung




Antworten:


Was nach dem Protokoll versagt, ist der password_query ausgestellt von dovecot.

Aus dem Tutorial unter https://workaround.org/ispmail/wheezy/setting-up-dovecot
Die Abfrage wurde wörtlich eingefügt:

password_query = SELECT email as user, password FROM virtual_users WHERE email=’%u’;

Die Zitate herum %u sind Unicode-Anführungszeichen im Gegensatz zu normalen ASCII-Anführungszeichen. Das ist falsch und es erklärt, warum die Abfrage fehlschlägt, wenn Sie diese Abfrage kopieren, wie ich es oben getan habe. Sie müssen durch normale einfache Anführungszeichen wie folgt ersetzt werden:

password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

In der Regel liegt die Fehlerursache bei der Veröffentlichungsplattform, die das Lernprogramm verwendet, darin, dass Filter automatisch normale Anführungszeichen durch ansprechende Anführungszeichen ersetzen. Das ist völlig falsch beim Veröffentlichen von Code. https://en.wikipedia.org/wiki/Quotation_mark hat einen Absatz zu dieser Praxis.


0
2018-05-19 22:30