Postfix-Versand in lokales Postfach umleiten
Suse 10.1 im lokalen Netzwerk. Fetchmail holt die Mails ab, Postfix wird ausschließlich für die eingehende Mail benutzt, die Mail dreht eine Runde durch Postfix/Amavis/Spamassassin, wird dann im einzigen existierenden lokalen Postfach abgelegt und von dort mit einer Windowskiste abgeholt. Ausgehende Mail wird von der Windowskiste direkt über den Provider verschickt, die bekommt Postfix gar nicht erst zu sehen. Gleichzeitig dient der lokale Server zum Entwickeln von Webseiten. In Webformularen werden mit dem PHP-Befehl "mail()" manchmal eine ganze Reihe Test-Mails verschickt, und die landen dann zum Versand bei Postfix. Diese Test-Mails sollen aber nicht verschickt, sondern einfach nur in das lokale Postfach geschoben werden, wo ich sie dann gleich wieder abholen und kontrollieren kann. Wie sage ich wem Bescheid, dass das auf diese Weise passieren soll? Ist so eine Konstruktion überhaupt möglich, ohne den normalen Empfang der Mail wie oben beschrieben zu stören? Danke! Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Juergen Langowski wrote:
Suse 10.1 im lokalen Netzwerk.
Fetchmail holt die Mails ab, Postfix wird ausschließlich für die eingehende Mail benutzt, die Mail dreht eine Runde durch Postfix/Amavis/Spamassassin, wird dann im einzigen existierenden lokalen Postfach abgelegt und von dort mit einer Windowskiste abgeholt. Ausgehende Mail wird von der Windowskiste direkt über den Provider verschickt, die bekommt Postfix gar nicht erst zu sehen.
Gleichzeitig dient der lokale Server zum Entwickeln von Webseiten. In Webformularen werden mit dem PHP-Befehl "mail()" manchmal eine ganze Reihe Test-Mails verschickt, und die landen dann zum Versand bei Postfix.
Diese Test-Mails sollen aber nicht verschickt, sondern einfach nur in das lokale Postfach geschoben werden, wo ich sie dann gleich wieder abholen und kontrollieren kann.
Wie sage ich wem Bescheid, dass das auf diese Weise passieren soll? Ist so eine Konstruktion überhaupt möglich, ohne den normalen Empfang der Mail wie oben beschrieben zu stören?
Möglich ist das, aber man muss vorsichtig sein, da mit Wildcards gearbeitet wird in so einem Fall. Eine andere Möglichkeit ist luser_relay. Dies weist Postfix an, alle unbekannten Empfänger in der Domain an diese Adresse umzuleiten. Oder soll das für jede Domain gelten, nicht nur für die eigenen Domains? -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, 24 Apr 2007 13:01:04 +0200, you wrote:
Juergen Langowski wrote:
Suse 10.1 im lokalen Netzwerk.
Fetchmail holt die Mails ab, Postfix wird ausschließlich für die eingehende Mail benutzt, die Mail dreht eine Runde durch Postfix/Amavis/Spamassassin, wird dann im einzigen existierenden lokalen Postfach abgelegt und von dort mit einer Windowskiste abgeholt. Ausgehende Mail wird von der Windowskiste direkt über den Provider verschickt, die bekommt Postfix gar nicht erst zu sehen.
Gleichzeitig dient der lokale Server zum Entwickeln von Webseiten. In Webformularen werden mit dem PHP-Befehl "mail()" manchmal eine ganze Reihe Test-Mails verschickt, und die landen dann zum Versand bei Postfix.
Diese Test-Mails sollen aber nicht verschickt, sondern einfach nur in das lokale Postfach geschoben werden, wo ich sie dann gleich wieder abholen und kontrollieren kann.
Wie sage ich wem Bescheid, dass das auf diese Weise passieren soll? Ist so eine Konstruktion überhaupt möglich, ohne den normalen Empfang der Mail wie oben beschrieben zu stören?
Möglich ist das, aber man muss vorsichtig sein, da mit Wildcards gearbeitet wird in so einem Fall. Eine andere Möglichkeit ist luser_relay. Dies weist Postfix an, alle unbekannten Empfänger in der Domain an diese Adresse umzuleiten.
Oder soll das für jede Domain gelten, nicht nur für die eigenen Domains?
Ich will erreichen, dass aus der Sicht der PHP-Formulare ein völlig normaler Versand mit beliebigen Adressen stattfindet (Beispiel: Kunde bestellt etwas, eine Mail geht an die Firma, zweite Mail mit Auftragsbestätigung an den Kunden). Der Versand an alle diese Adressen soll aber nicht von Postfix ausgeführt, sondern zur Kontrolle gleich wieder in das einzige lokale Postfach umgelenkt werden. Da Postfix auf dem Entwicklungsserver nicht für den normalen Mailversand benutzt wird, entstehen daraus für mich auch keine Probleme. Bis jetzt werden solche Testmails mit Fehlermeldungen quittiert - Postfix darf ja gar nicht nach draußen senden, und ich kann hinterher mit postsuper -d ALL deferred oder so das Zeugs wieder löschen. Ich hätte die Mails zur Kontrolle lieber gleich wieder im Eingang. Zur Erklärung vielleicht noch: Es geht mir dabei oft weniger um die technische Seite des Versandes, sondern vielmehr um Dinge wie die Formatierung der Auftragsbestätigung für die Kunden bekommen und um das Aussehen der Mails, wenn sie (Windows-)Mailclient wieder ankommen (make it pretty). Dazu sind oft Dutzende von Tests nötig, und ich will das nicht jedesmal mit realen Adressen durchs Netz jagen. Ich könnte jetzt natürlich im PHP-Skript ein paar lokale Adressen fest verdrahten, aber jede Wette, dass ich mal wieder vergesse, diese Adressen vor dem Hochladen zu ändern, und dann macht der Produktivserver große Augen, wenn er etwas wie "kundenkonto@oskar.local" sieht. Von den Kunden mal ganz zu schweigen. Also lieber anders herum: Ich lasse auf dem Testserver alle nur denkbaren Mail-Adressen zu und biege mir alles auf mein Postfach um, möglichst sogar mit voll erhaltenen Headern, statt es auszuliefern. Geht das irgendwie? Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Juergen Langowski wrote:
Diese Test-Mails sollen aber nicht verschickt, sondern einfach nur in das lokale Postfach geschoben werden, wo ich sie dann gleich wieder abholen und kontrollieren kann.
Wie sage ich wem Bescheid, dass das auf diese Weise passieren soll? Ist so eine Konstruktion überhaupt möglich, ohne den normalen Empfang der Mail wie oben beschrieben zu stören? Möglich ist das, aber man muss vorsichtig sein, da mit Wildcards gearbeitet wird in so einem Fall. Eine andere Möglichkeit ist luser_relay. Dies weist Postfix an, alle unbekannten Empfänger in der Domain an diese Adresse umzuleiten.
Oder soll das für jede Domain gelten, nicht nur für die eigenen Domains?
Ich will erreichen, dass aus der Sicht der PHP-Formulare ein völlig normaler Versand mit beliebigen Adressen stattfindet (Beispiel: Kunde bestellt etwas, eine Mail geht an die Firma, zweite Mail mit Auftragsbestätigung an den Kunden).
Wenn du sicherstellen kannst, dass alle mit PHP geschickten Mails auf dieses Postfach umgelenkt werden sollen, dann kannst du eine REDIREKT-Aktion verwenden mit check_sender_access auf dieser Absenderadresse. Der Absender kann in der php.ini für den Aufruf von /usr/sbin/sendmail festgelegt werden. Ansonsten wird es schwierig.
Der Versand an alle diese Adressen soll aber nicht von Postfix ausgeführt, sondern zur Kontrolle gleich wieder in das einzige lokale Postfach umgelenkt werden. Da Postfix auf dem Entwicklungsserver nicht für den normalen Mailversand benutzt wird, entstehen daraus für mich auch keine Probleme.
Wenn der lokale Postfix auf diesem Server NUR für den Versand von PHP-Mails verwendet werden soll (auch cron Mails landen dann dort!), dann kannst du brutal einfach alle Adressen umschreiben: /etc/postfix/main.cf: virtual_alias_maps = pcre:/etc/postfix/virtual.pcre /etc/postfix/virtual.pcre: /(.+)@(.+)/ user+$1_$2@example.com Dabei ist user@example.com deine Sammeladresse. Dies verwendet die Plus-Adressierung, welche bei der Default-Installation von Postfix IMHO aktiv ist. Damit kannst du dann sogar sehen, an wen die Mail eigentlich gerichtet war. Der Parameter, der das Trennzeichen zwischen Usernamen und Erweiterung festlegt heisst: recipient_delimiter = + Wenn es Probleme gibt, dann lasse das "+$1_$2" oben einfach weg. Dann musst du den ursprünglichen Empfänger aus den Header-Zeilen der Mail fischen. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, 24 Apr 2007 19:31:26 +0200, you wrote:
Juergen Langowski wrote:
(...)
Wenn der lokale Postfix auf diesem Server NUR für den Versand von PHP-Mails verwendet werden soll (auch cron Mails landen dann dort!), dann kannst du brutal einfach alle Adressen umschreiben:
Ja, das passt schon. Es gibt da nur eine einzige lokale Adresse, die alles sammelt.
/etc/postfix/main.cf: virtual_alias_maps = pcre:/etc/postfix/virtual.pcre
/etc/postfix/virtual.pcre: /(.+)@(.+)/ user+$1_$2@example.com
Dabei ist user@example.com deine Sammeladresse.
Dies verwendet die Plus-Adressierung, welche bei der Default-Installation von Postfix IMHO aktiv ist. Damit kannst du dann sogar sehen, an wen die Mail eigentlich gerichtet war.
Der Parameter, der das Trennzeichen zwischen Usernamen und Erweiterung festlegt heisst:
recipient_delimiter = +
Wenn es Probleme gibt, dann lasse das "+$1_$2" oben einfach weg. Dann musst du den ursprünglichen Empfänger aus den Header-Zeilen der Mail fischen.
Das sieht gut aus, ich werde das morgen gleich mal probieren. Danke! Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (2)
-
Juergen Langowski
-
Sandy Drobic