# Postfix-MySQL Alias Domain Bug



## Roi Danton (9. Dez. 2010)

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


----------



## Till (9. Dez. 2010)

Ist bekannt und steht inkl. Lösung im Bugtracker:

http://bugtracker.ispconfig.org/index.php?do=details&task_id=1393


----------



## Roi Danton (9. Dez. 2010)

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.


----------



## Till (9. Dez. 2010)

Und wie habt Ihr das umgesetzt?



> Klar, die Mailbox wird nicht angelegt, aber wird die Mail auch ordnungsgemäß abgelehnt?


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


----------



## Roi Danton (9. Dez. 2010)

Zitat von Till:


> Und wie habt Ihr das umgesetzt?


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
> ...


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.



Zitat von Till:


> 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.


----------



## Till (9. Dez. 2010)

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


----------



## Roi Danton (9. Dez. 2010)

Zitat von Till:


> 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?



Zitat von Roi Danton:


> 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 (9. Dez. 2010)

> 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.


----------

