Mail Delivery "Loadbalancing"

Michael Grundmann m.grundmann at wittich-foehren.de
Di Dez 8 18:52:46 CET 2015


Hallo Beat,

a) die perl-Zeile war falsch, habe ich (Danke @Winfried) neu gepostet.
b) genau aus diesem Grund habe ich das auch gebraucht. Die
dahinterliegenden Prozesse müssen mit dem Mailaufkommen klar kommen...

Ich weiss nicht was genau Ihr dort anstellt, aber bei uns werden die
eMails von einem Programm abgerufen und weiterverarbeitet. Damit wir vom
Mailaufkommen nicht überrannt werden, haben wir das eben so gelöst, dass
wir zufällig in die Ordner verschieben. Die jeweiligen
Weiterverarbeitungsinstanzen greifen definiert auf einen der Ordner zu.
Passt das nicht mehr, erhöhen wir num.txt, erstellen eine neue Instanz
und diese greift den neuen Ordner ab. Fertig ist das LB

Am 08.12.15 um 16:52 schrieb Beat Jucker:
> Hallo Michael
> 
> Besten Dank für deine Lösung - ist sicher ein guter und funktionierender
> Lösungsansatz. Das Fragezeichen, das ich dazu setze ist die Performance
> bei hohem Mailaufkommen: zusätzlich Procmail mit einem Shell- und einem
> Perl-Interpreter wobei sich dieser Lösungsansatz sicher auch als kleines
> C-Programm implementieren lässt. Es spricht auch nichts dagegen, Shell
> durch Perl zu ersetzen (ein Interpreter weniger). Vielleicht mache ich
> mir betreffend Performance aber auch zuviele Gedanken.
> 
> Ich selber habe an ein einfaches Script gedacht, das die Emails im
> User-Mailfolder auf mehrere User-N Mailfoders verteilt. Eventuell gibt
> es aber auch einen Postfix internen Kniff?
> 
> Der Grund für die Loadbalancing Idee war ein Massentest, den wir
> durchführten: über eine längere Zeit 400 S/Mime Emails pro Minute mit
> Spitzenwert 700 S/Mime Emails/Min). Für den Mailserver kein Problem,
> aber für den dahinter liegenden Verarbeitungsprozess.
> 
> Gruss
> -- Beat
> 
> Am 08.12.2015 um 16:23 schrieb Michael Grundmann:
>> Hallo Beat,
>>
>> procmail und modulo ist dein Freund.
>>
>> Hier ein Script:
>>
>> #!/bin/bash
>> tmpfile=/etc/num.txt
>> num=$(cat $tmpfile)
>> max=$(perl - "print in(rand()*$num)")
>>
>>
>> Die .procmailrc :
>>
>> MAILDIR=$HOME/Maildir/
>>
>> FOLDER=`/das/script/oben.sh`
>> :0
>> .$FOLDER/
>>
>>
>> In die num.txt trägst du die Anzahl der Ordner ein, die du haben
>> möchtest (modulo fängt bei 0 an).
>>
>>
>>
>> Am 08.12.15 um 16:11 schrieb Beat Jucker:
>>> Gibt es eine einfache Methode, wie Emails an eine Zieladresse nach dem
>>> RoundRobin Prinzip in verschiedene Mailfolders verteilt werden können?
>>>
>>> Beispiel: alle Mails an user at x.y adressiert, wobei Auslieferung
>>>
>>>      1. Mail -->user_1,
>>>      2. Mail -->user_2,
>>>      3. Mail -->user_1,
>>>      4. Mail -->user_2,
>>>      ... usw ...
>>>
>>> Hintergrund:
>>>
>>> Ein Prozess verarbeitet eingehende Emails. Dieser Prozess holt die
>>> Emails mit POP ab und werden einzeln verarbeitet. Die Verarbeitung
>>> dauert aber länger als erwartet und als Folge kann es einen grossen
>>> Backlog geben. Zur Optimierung will man nun mehrere Prozesse parallel
>>> die Emails abarbeiten lassen ... daher ist die Idee aufgekommen, die
>>> eingehenden Emails in verschiedene Mailfolders zu verteilen.
>>>
>>> Eine Lösung könnte sein, dass losgelöst von Postfix dieses
>>> "Loadbalancing" implementiert wird. Gibt es aber eventuell auch
>>> innerhalb Postfix eine Möglichkeit?
>>>
>>> Besten Dank für Ideen
>>> -- Beat
> 

-- 
Mit freundlichen Grüßen

*Verlag + Druck LINUS WITTICH KG*

i. A. Michael Grundmann

54343 Föhren
Europaallee 2
E-Mail: m.grundmann at wittich-foehren.de
<mailto:m.grundmann at wittich-foehren.de>
Internet: http://www.wittich.de
Tel.: +49 6502/9147210
Fax: +49 6502/9147332

Sitz der Gesellschaft: Föhren
Geschäftsführer: Dietmar Kaupp
Amtsgericht: Wittlich HR 4199
USt ID gemäß §27 a UStG DE 149324406

*Kennen Sie schon localbook? Nein? Hier >>> <http://www.localbook.de> *




Mehr Informationen über die Mailingliste Postfixbuch-users