Postfix-MySQL Alias Domain Bug

Roi Danton

Member
Hallo,

mir ist aufgefallen, dass es einen fiesen Bug bei Alias Domains in Verbindung mit Postfix-MySQL gibt.

Beispielszenario:

lokale Zieldomain, auf die der Alias geht: domain.de
Aliasdomain: aliasdomain.de

Ich richte das also im ISPConfig ein, in die mail_forwarding tabelle wird als source @aliasdomain.de und als destination @domain.de eingetragen.

Nun funktioniert dieses Setup im Grunde genommen, allerdings auch für Mailadressen, die es für die Zieldomain nicht gibt, z.B. gibtesnicht@domain.de. Kommt eine Mail an gibtesnicht@aliasdomain.de rein, so lehnt Postfix diese Mail nicht ab sondern erstellt in /var/vmail/domain.de/gibtesnicht ein Postfach und legt die Mail dort ab!

Da ich die Postfix-Config auch etwas erweitert habe dachte ich zuerst an ein Problem auf meiner Seite und bin an die deutsche Postfix Mailingliste gegangen. Dort teilte man mir dann mit, dass die Abfragen "zu einfach" wären und empfahl mir die Abfragen von Postfixadmin als Vorlage.

Dies haben wir gestern abend so umgesetzt, auch eine Abfrage, die ISPConfig3 in mysql-virtual_forwardings.cf vorgibt, musste verändert werden. Und siehe da, jetzt geht's!

Einziges kleines Problem: Schicke ich dem Mailserver lokal über die Shell eine Mail an gibtesnicht@aliasdomain.de so passiert nach wie vor das gleiche wie oben beschrieben. Da steige ich noch nicht durch.
Aber: Von extern funktioniert der Mailserver wie gewünscht, immerhin.

Ist dieses Thema schon bekannt und gefixt? Falls nicht, stelle ich gerne die Abfragen zur Verfügung. Bin ich hier mit dieser Thematik eigentlich richtig? Kann es auch in den Bugtracker posten.

Viele Grüße,
Roi
 

Roi Danton

Member
Aber die Ursache behebt dieses Problem nicht finde ich.

Die forwarding Abfrage ist laut den Postfixgöttern zu einfach, da ein @aliasdomain.de -> @domain.de wie ein Catchall betrachtet wird. Dh Postfix ist es dann nachher egal, ob es auf @domain.de das Ziel auch gibt.

Deswegen muss die Abfrage so gebaut werden, dass gecheckt wird, ob es ne Alias Domain ist. Falls ja, müssen Aliase, Forwards, Catchalls und Mailboxen geprüft werden. Gibt es keinen passenden Empfänger, wird die Mail mit Empfänger unbekannt von Postfix abgewiesen.

So wie Theorie, die wir auch so umgesetzt haben.

Was passiert denn, wenn man einen mit o.g. Patch versehenen Server mit so einer Mail füttert? Klar, die Mailbox wird nicht angelegt, aber wird die Mail auch ordnungsgemäß abgelehnt? Glaube ich irgendwie nicht.
 

Roi Danton

Member

So:

mysql-virtual-aliasdomain_catchall.cf:
user = ispconfig
password = xxx
dbname = dbispconfig
hosts = 127.0.0.1
query = SELECT mail_forwarding.destination FROM mail_forwarding,mail_forwarding as mailfwd WHERE (mailfwd.type='aliasdomain' AND mailfwd.source=CONCAT('@','%d')) AND mail_forwarding.source = mailfwd.destination

mysql-virtual_aliasdomain_forwardalias.cf:
user = ispconfig
password = xxx
dbname = dbispconfig
hosts = 127.0.0.1
query = SELECT mail_forwarding.destination FROM mail_forwarding,mail_forwarding as mailfwd WHERE (mailfwd.type='aliasdomain' AND mailfwd.source=CONCAT('@','%d')) AND mail_forwarding.source = CONCAT('%u',mailfwd.destination)
mysql-virtual_aliasdomain_mailbox.cf:
user = ispconfig
password = xxx
dbname = dbispconfig
hosts = 127.0.0.1
query = SELECT mail_user.email FROM mail_user,mail_forwarding as mailfwd WHERE (mailfwd.type='aliasdomain' AND mailfwd.source=CONCAT('@','%d')) AND mail_user.email = CONCAT('%u',mailfwd.destination)
Dann die drei Abfragen wie die anderen schon vorhandenen Abfragen zu virtual_alias_maps in der main.cf dazu.

Und in mysql-virtual_forwardings.cf noch eine Condition hinzugefügt:
user = ispconfig
password = xxx
dbname = dbispconfig
table = mail_forwarding
select_field = destination
where_field = source
additional_conditions = and type != 'aliasdomain' and active = 'y' and server_id = 1
hosts = 127.0.0.1
Gibt es eigentlich einen Grund, dass manche der MySQL-Abfragen in der main.cf mit proxy: und manche ohne geladen werden? An sich macht es doch nur Sinn, wenn man das komplett mit oder ohne verwendet.

Auf den Servern auf denen wir es getestet haben, wird sie das.

Hm... Mein Verständnis wäre da ein anderes, aber vielleicht lieg ich ja schlicht falsch und wir haben es unnötig kompliziert gemacht.
 

Roi Danton

Member
Ich hab es mal an den Post im im bugtracker drangehängt.

Alles klar, danke. :) Ist geplant, eine der beiden Lösungen oder am besten beide, schließt sich gegenseitig ja nicht aus, ins ISPConfig zu übernehmen?

Gibt es eigentlich einen Grund, dass manche der MySQL-Abfragen in der main.cf mit proxy: und manche ohne geladen werden? An sich macht es doch nur Sinn, wenn man das komplett mit oder ohne verwendet.

Das ist doch auch ein Bug bzw eine kleine Unschärfe in der Config von Postfix?
 

Till

Administrator
Ist geplant, eine der beiden Lösungen oder am besten beide, schließt sich gegenseitig ja nicht aus, ins ISPConfig zu übernehmen?

Das wird vorausichtlich in der 3.0.3.2 behoben, da die 3.0.3.1 bereits code freeze hat nächste Woche released wird.

Das ist doch auch ein Bug bzw eine kleine Unschärfe in der Config von Postfix?

Ja. An sich sollten alle über den proxy laufen.
 

Werbung

Top