Hallo Andreas, hallo Martin, hallo Leute,
Am Mittwoch, 8. Dezember 2010 schrieb lst_hoe02@kwsoft.de:
Zitat von Christian Boltz postfix-users@cboltz.de:
Aliase im Stil von @domain1 -> @domain2, die so in der Alias-Datenbank stehen, gelten als Catchall und nehmen daher Mails and alles @domain1 an. Ob die Mail dann hinterher an eine existierende Mailadresse @domain2 weitergeleitet werden kann, ist natürlich die Frage (und wird ggf. mit einem Bounce beantwortet).
Stimmt so nicht 100%. Bei virtual aliases ist die Abfrage "recursive" d.h. das Ergebnis wird erneut durch die virtual Alias Prüfung gejagt falls es im Bereich virtual alias domains liegt. D.h. eine Umschreibung mit
@domain1 @domain2
führt dazu das jeder user@domain1 nach user@domain2 umgeschrieben wird und falls domain2 ebenfalls eine virtual alias domain ist wird user@domain2 geprüft.
Die Umschreibung ist rekursiv, ja.
Allerdings akzeptiert Postfix die Mailadresse als gültig, sobald es @domain1 in der Datenbank gefunden hat - unabhängig davon, wo der Alias hinzeigt und wie oft er noch umgeschrieben wird. Das Ergebnis ist, dass die Mail angenommen wird und dann Backscatter produziert.
Ich habe das gerade nochmal getestet (postfix 2.7.1 auf openSUSE 11.3), dieses Verhalten hat sich nicht geändert. (Naja, mein Test mit telnet auf Port 25 hat beim Greylisting aufgehört - aber grundsätzlich wäre die Mail angenommen worden und hätte dann keine andere Wahl als bouncen gehabt.)
Falls natürlich Domain2 eine Remote-Domain ist oder keine Benutzerliste prüft gibt es Backscatter. Siehe dazu "man 5 virtual".
Nicht nur dann, siehe oben.
Du musst die Queries so bauen, dass die Adressen direkt im SQL auf domain2 umgeschrieben werden.
Es gibt meistens zwei Möglichkeiten: 1.) In der Anwendungslogik --> Postfix
Wäre wohl einen Feature Request wert, damit Alias-Domains auch mit anderen Map-Typen (hash, pcre, ldap, ...) funktionieren.
2.) In der Datenbank --> kompliziertes SQL
Kompliziert ist relativ - man braucht eben mehrere Queries hintereinander, siehe http://postfixadmin.svn.sourceforge.net/viewvc/postfixadmin/trunk/DOCUMENTS/...
(@Martin: Du musst vermutlich beim CONCAT jeweils den '@'-Teil rausnehmen und ein "AND type = 'aliasdomain'" ergänzen. Das Ganze unter der Annahme, dass der Typ in der Spalte "type" steht und ich Deine Mail richtig verstanden habe.)
eventuell mit Stored Procedures
Da diese Queries nur von Postfix gebraucht werden, machen stored procedures nur begrenzt Sinn - es sei denn, Du kennst einen Weg, die Abfragen in der richtigen Reihenfolge mit "first match wins" auszuführen. Wenn also die virtual_alias_maps.cf einen Treffer ergibt, darf virtual_alias_domain_maps*.cf nicht mehr ausgeführt werden - OR und UNION scheiden also aus... [1]
Das würde theoretisch die Abfrage beschleunigen, weil Postfix nicht bis zu 3x bei der Datenbank nachfragen muss. Ob man den Unterschied in der Praxis merkt, ist natürlich eine andere Frage ;-)
Gruß
Christian Boltz
[1] alles, was ich dazu bisher an SQL ausprobiert habe, war wahlweise kaputt (falsches Ergebnis) oder extrem kompliziert