PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix: ALLE Mails auf einen bestimmten Empfänger umschreiben



michael.sprick
28.02.08, 13:23
Hallo zusammen,

wir haben vor, für unsere Entwickler eine Umgebung auf Basis einer VMWare zur Verfügung zu stellen. Diese VMWare ist ein Abbild eines Livesystems.

Manche Entwickler müssen auch testen, ob bspw. Emails korrekt versandt werden. Hierzu soll es in jeder VMWare genau einen IMAP Account geben, in dem alle Mails landen, die aus der VMWare verschickt werden.
Mails werden also nicht an ihren wirklichen Empfänger zugestellt, sondern lediglich an den Testaccount.

So hat jeder Entwickler immer im Überblick, was wohin gemailt wird.

Beispiel:

Eine Webanwendung will eine Mail an "account@domain.com" senden.
Der lokal installierte Postfix nimmt die Mail an, schreibt den Empfänger um in "testuser@localhost", stellt sie lokal zu und sie wird ins Postfach einsortiert.

Hat jemand eine Idee, wie man dieses bedingungslose Umschreiben des Empfängers realisieren kann?

Vielen Dank für eure Tips,

Michael :)

MiGo
28.02.08, 21:37
Hat jemand eine Idee, wie man dieses bedingungslose Umschreiben des Empfängers realisieren kann?
Der passende Scuhbegriff heisst "catch-all" - bei Postfix lässt sich das afaik über Virtual Aliases machen (http://www.postfix.org/VIRTUAL_README.html)

michael.sprick
28.02.08, 22:18
Hi Migo,

danke für Deine Antwort. Über die virtual_alias_maps hatte ich es bereits probiert, hatte aber das Problem, dass die Regeln nicht für externe/unbekannte Domains funktionierten, sondern immer nur für mydomains.

Ich habe es nun erstmal so gemacht, dass ich



always_bcc = testuser@testserver.tld


gesetzt habe. Damit ist zunächst sichergestellt, dass JEDE Mail als Kopie an den Testuser geschickt wird.

Damit nun nicht versucht wird, die Mail trotzdem noch direkt an externe Server (z.B. web.de) zu senden, habe ich den smtp-transport so geändert, dass er einfach alles nach dev/null schiebt.

Wenn etwas mehr Zeit ist, werde ich nach einer eleganteren Regel suchen.
Bestimmt kann ich in den virtual_alias_maps auch einen Regexp unterbringen, der die Aufgabe übernimmt.

Vielleicht so in der Art:


!/^testuser@testserver\.tld$/ testuser@testserver.tld



Schönen Abend,

michael

MiGo
28.02.08, 22:51
hatte aber das Problem, dass die Regeln nicht für externe/unbekannte Domains funktionierten, sondern immer nur für mydomains.
Naja, annehmen muss der Mailserver sie ja schon - und das tut er halt nur für mydomains.
Du willst also mehr so einen "catch-really-really-all" :)


Bestimmt kann ich in den virtual_alias_maps auch einen Regexp unterbringen, der die Aufgabe übernimmt.
Da mich das Problem interessiert, habe ich mal gegoogelt; Regexp in der virtual_alias_maps gehen wohl - allerdings werden nur die Usernamen ausgewertet, für Domains scheint das nicht zu gehen (http://archives.neohapsis.com/archives/postfix/2007-10/1006.html)



Allerdings kannst du wohl bei den virtual-Abfragen die Query beeinflussen (http://www.postfix.org/mysql_table.5.html):
Was wohl passiert, wenn man der WHERE-Clause ein "1" oder ein "LIKE %" mitgibt?
Das könnte klappen (ich versuch's jetzt mal nicht, mein Postfix ist grad wieder heile :))

michael.sprick
29.02.08, 08:48
Hi MiGo,


Du willst also mehr so einen "catch-really-really-all"
:D Genau sowas brauche ich.

Die Sache mit der Lookup Query ist eine sehr gute Idee. Zwar nutzt der Mailserver in der beschrieben vmware keine Datenbank, sondern die hash_maps, aber das lässt sich ja schnell ändern.

Man könnte zunächst erzwingen, den Empfänger der Mail als lokalen Benutzer zu erkennen und anschließend einen statischen String im Alias-Lookup selektieren, an den die Mail dann gesendet wird.

Ich werde das später mal probieren und dann das Ergebnis hier posten.

Danke Dir!

Michael

MiGo
01.03.08, 11:12
Alternativ:
Lass postfix auf einem anderen Port lauschen und bastel' dir ein Programm, das auf Port 25 lauscht und alles doof an den Postfix-Port weiterleitet.

Wenn das klappt, kannst du alles, was eine Email-Adresse ist auf eine lokale Adresse umschreiben.