View previous topic :: View next topic |
Author |
Message |
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Fri Mar 15, 2013 6:05 pm Post subject: Konzeptionsproblem bei Mailing-Liste |
|
|
Hallo :-)
Ich habe folgendes Problem: ich habe eine kleine Mailingliste programmiert (Mailman & Co. sind absoluter Overkill für das, wofür ich es brauche). Funktioniert so weit problemlos, und zwar folgendermaßen:
Auf meinem Postfix-Mailserver habe ich pro Mailingliste einen virtuellen Transport eingerichtet. Jede Mail, die an eine Mailingliste adressiert ist, wird also einfach an mein Programm gepiped.
Und jetzt zum Problem: wenn nicht nur eine, sondern mehrere Mailinglisten im To- oder Cc-Header stehen, dann arbeitet mein Programm alle ab. Der Mailserver liefert natürlich die E-Mail nicht nur ein Mal aus, sondern pro Empfänger ein Mal. Somit verteilt mein Programm eine E-Mail an Mailinmglisten zwei Mal, an drei drei Mal, etc., weil die E-Mails ja auch so oft an das Programm gepiped werden.
Die Frage ist jetzt: wie gehe ich an das Problem ran?
Kann ich Postfix sagen, dass eine E-Mail, die mehrere Adressen aus einem definierten Adresspool enthält nur ein Mal ausgeliefert werden sollen?
Alternativ könnt man ja die Message-ID jeder verarbeiteten E-Mail ein paar Minuten lang speichern und dann einfach die Verarbeitung der jeweiligen E-Mail abbrechen, wenn sie bereits verarbeitet wurde. Das wäre aber schon einiger Aufwand, zumal das Script einfach nur per Aufruf prozedural durchläuft, und ich somit z. B. eine Datei in /var/tmp/ anlegen müsste oder sowas, damit die Daten zwischen den Aufrufen erhalten bleiben.
Was meint ihr? |
|
Back to top |
|
|
cryptosteve Veteran
Joined: 04 Jan 2004 Posts: 1169 Location: GER
|
Posted: Fri Mar 15, 2013 6:29 pm Post subject: Re: Konzeptionsproblem bei Mailing-Liste |
|
|
l3u wrote: | Und jetzt zum Problem: wenn nicht nur eine, sondern mehrere Mailinglisten im To- oder Cc-Header stehen, dann arbeitet mein Programm alle ab. Der Mailserver liefert natürlich die E-Mail nicht nur ein Mal aus, sondern pro Empfänger ein Mal. Somit verteilt mein Programm eine E-Mail an Mailinmglisten zwei Mal, an drei drei Mal, etc., weil die E-Mails ja auch so oft an das Programm gepiped werden |
Ich glaube, ich verstehe das Problem noch nicht ganz. Wenn zwei Mailinglisten im TO-Header stehen, dann gehört die Mail doch auch in beide Listen?! Was für ein Verhalten erwartest Du sonst? _________________ - born to create drama -
gpg: 0x9B6C7E15
CS Virtual Travel Bug: VF6G5D |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Fri Mar 15, 2013 6:36 pm Post subject: |
|
|
Also angenommen, To ist "liste1@server, liste2@server". Dann schickt Postfix diese E-Mail zwei Mal an mein Mailinglistenprogramm, da sowohl für "liste1@server" als auch für "liste2@server" je ein Transport zu dem Programm eingerichtet ist.
Das Programm bekommt jetzt die E-Mail. Es sieht, dass sie sowohl an "liste1@server", als auch an "liste2@server" gehen soll und verteilt die E-Mail an beide Listen.
Das war jetzt die erste Mail, also dir, die Postfix an "liste1@server" ausgeliefert hat. Tja, und dann kommt eben noch die Zweite, die an "liste2@server" geht – und natürlich auch bei meinem Programm landet. Und die wird wiederum genauso verteilt – also wird die E-Mail jeweils doppelt an jede Liste verteilt. |
|
Back to top |
|
|
cryptosteve Veteran
Joined: 04 Jan 2004 Posts: 1169 Location: GER
|
Posted: Fri Mar 15, 2013 7:01 pm Post subject: |
|
|
Ah, ja, verstehe.
Hmm .. nach meinem Verständnis kommst Du nicht drum herum, entweder irgendwie zu speichern, welche Mails kürzlich schon beackert worden sind. Ob das dann unterm Strich einfacher ist, als einen Mailman aufzusetzen, oder die Mailingliste via procmail zu realisieren, weiss ich nicht. _________________ - born to create drama -
gpg: 0x9B6C7E15
CS Virtual Travel Bug: VF6G5D |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2610 Location: Konradsreuth (Germany)
|
Posted: Fri Mar 15, 2013 7:19 pm Post subject: |
|
|
Naja, es reicht ja, die Message-ID rauszuziehen, und eine leere Datei mit dem Namen in /var/tmp/... anzulegen. Und wenn's eine solche Datei schon gibt, dann bricht das Programm einfach ab. Die paar Zeilen Code mehr … ;-) |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|