AlecWhite
2010-09-22, 01:47:48
Mal eine kleine Frage für Linux Experten:
Kurze Umgebungsbeschreibung:
Linux Server (Debian) + PostFix + mySQL + php5 + apache (alles per apt-get installiert)
In Rahmen eines Plugins für ein Webservice ist es erforderlich, dass bestimmte Daten per Mail angefragt und empfangen werden müssen. Diese Daten unterscheiden sich je nach Kunden (und nach Installation). Es existieren viele unterschiedliche Installationen, welches jeweils logisch voneinander getrennt sind (und auch bleiben sollen :D)
Bislang habe ich das so gemacht, dass für jede Installation jeweils eine virtuelle Mailbox angelegt worden ist. Ein Skript versendet nun nach Anfrage durch den Kunden eine Mail zum Service, der nach ca. 1-2min auch die Daten per Mail zurücksendet (ja, ich weiß das ist antik - lässt sich aber nicht ändern).
Ein anders Skript liest in regelmäßigen Abständen das jeweilige Postfach für den Kunden aus und speichert dann die Daten. Das funktioniert soweit - erstaunlich zuverlässig.
Jetzt habe ich es mir jedoch zur Aufgabe gemacht, dass ganze ein wenig zu verbessern, da ich doch sehr unzufrieden mit dieser Vorgehensweise bin. Zum einen will ich die ganzen (unnötigen) virtuellen Mailboxen loswerden und dass die Postfächer ständig geprüft werden müssen, nervt mich irgendwie auch.
Daher war meine Idee, dass eingehende E-Mails direkt an ein Skript weiterzuleiten. Das kann ich in der virtual_users_map wunderbar eintragen und klappt auch. Damit wäre der zweite Punkt bereits abgehakt. Der erste jedoch bleibt offen: Ich will keine hunderte von Mailboxen auf dem Server haben, die quasi nie genutzt werden!
Also habe ich mich mal schlau gemacht und gesehen, dass Postfix auch reguläre Ausdrücke in einer RegExp-Map erlaubt. Mit einen entsprechenden Pattern konnte ich nun jeweils unterschiedliche Empfänger an eine einzige Mailbox zustellen (merkwürdigerweise nicht an ein Skript). Für diese Mailbox habe ich per procmail eine Umleitung an das verarbeitende Skript gebastelt.
Auf den Testrechner läuft das alles. Ich frage mich aber, ob das wirklich der beste Weg ist oder was sich an meiner Lösung als Nachteil herausstellen könnte.
Für Anregungen wäre ich dankbar.
Kurze Umgebungsbeschreibung:
Linux Server (Debian) + PostFix + mySQL + php5 + apache (alles per apt-get installiert)
In Rahmen eines Plugins für ein Webservice ist es erforderlich, dass bestimmte Daten per Mail angefragt und empfangen werden müssen. Diese Daten unterscheiden sich je nach Kunden (und nach Installation). Es existieren viele unterschiedliche Installationen, welches jeweils logisch voneinander getrennt sind (und auch bleiben sollen :D)
Bislang habe ich das so gemacht, dass für jede Installation jeweils eine virtuelle Mailbox angelegt worden ist. Ein Skript versendet nun nach Anfrage durch den Kunden eine Mail zum Service, der nach ca. 1-2min auch die Daten per Mail zurücksendet (ja, ich weiß das ist antik - lässt sich aber nicht ändern).
Ein anders Skript liest in regelmäßigen Abständen das jeweilige Postfach für den Kunden aus und speichert dann die Daten. Das funktioniert soweit - erstaunlich zuverlässig.
Jetzt habe ich es mir jedoch zur Aufgabe gemacht, dass ganze ein wenig zu verbessern, da ich doch sehr unzufrieden mit dieser Vorgehensweise bin. Zum einen will ich die ganzen (unnötigen) virtuellen Mailboxen loswerden und dass die Postfächer ständig geprüft werden müssen, nervt mich irgendwie auch.
Daher war meine Idee, dass eingehende E-Mails direkt an ein Skript weiterzuleiten. Das kann ich in der virtual_users_map wunderbar eintragen und klappt auch. Damit wäre der zweite Punkt bereits abgehakt. Der erste jedoch bleibt offen: Ich will keine hunderte von Mailboxen auf dem Server haben, die quasi nie genutzt werden!
Also habe ich mich mal schlau gemacht und gesehen, dass Postfix auch reguläre Ausdrücke in einer RegExp-Map erlaubt. Mit einen entsprechenden Pattern konnte ich nun jeweils unterschiedliche Empfänger an eine einzige Mailbox zustellen (merkwürdigerweise nicht an ein Skript). Für diese Mailbox habe ich per procmail eine Umleitung an das verarbeitende Skript gebastelt.
Auf den Testrechner läuft das alles. Ich frage mich aber, ob das wirklich der beste Weg ist oder was sich an meiner Lösung als Nachteil herausstellen könnte.
Für Anregungen wäre ich dankbar.