[postfix-users] Alias Domains Problem

Christian Boltz postfix-users at cboltz.de
Mi Dez 8 21:57:45 CET 2010


Hallo Andreas, hallo Martin, hallo Leute,

Am Mittwoch, 8. Dezember 2010 schrieb lst_hoe02 at kwsoft.de:
> Zitat von Christian Boltz <postfix-users at 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 at domain1 nach user at domain2 umgeschrieben
> wird und falls domain2 ebenfalls eine virtual alias domain ist wird
> user at 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/POSTFIX_CONF.txt

(@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
-- 
Gegenfrage: Wozu braucht man überhaupt einen Computer, wenn man nicht 
vim benutzt?
Antwort: Man installiert emacs und freut sich am regen Verkehr in swap.
[Jan Trippler in suse-linux]


Mehr Informationen über die Mailingliste postfix-users