[Postfixbuch-users] [OT?] Mailman: Support fuer XVERP

Stefan Förster cite at incertum.net
So Mai 11 14:27:58 CEST 2008


* Ralf Hildebrandt <Ralf.Hildebrandt at charite.de> wrote:
> * Stefan Förster <cite at incertum.net>:
>> (Die 99 ist geraten. Mailman sammelt die zwar schon per-destination,
>> der genaue Wert ist hier aber unerheblich.)
> 
> OK; kann ein echter Vorteil sein. Sollte ich mal austesten...

Na ja, kommt drauf an wieviel Traffic man hat. Mein Testsetup mit zwei
virtuellen Maschinen:

--------------------             ------------------
|   ___________    |  (E)SMTP    |  ____________  |
|   | MailGen |    |-----------> |  | Postfix  |  |
|   -----------    |             |  ------------  |
|                  |             |   |        ^   |
|   ___________    |             |  _v________|_  |
|   | MsgSink |    |<----------- |  | Mailman  |  |
|   -----------    |  (E)SMTP    |  ------------  |
--------------------             ------------------
       VM 1                             VM 2

"MailGen" kriegt eine vorbereitete Liste von Nachrichten (aus dem
.mbox-Dateien der Listenarchive generiert), baut einen Cache im RAM
auf und liefert alle 1000ms genau zwei Nachrichten via SMTP bei
"Postfix" ein. "Postfix" jagt die ankommenden Nachrichten einmal durch
den content_filter und liefert sie dann via transport_maps direkt an
"Mailman" (postfix-to-mailman.py). "Mailman" hat die originalen
Empfänger-Listen (allerdings keine Bounce-Informationen) und ist so
eingestellt, daß es für jede Nachricht VERP machen soll. Es liefert
die Nachrichten via ESMTP zurück an "Postfix", dabei wird der
content_filer nicht durchlaufen. Dieses wiederum macht ganz normale
DNS-Lookups, aber beim Rückweg von der VM 2 in die VM 1 wird die
TCP-Verbindung gekapert und direkt in "MsgSink" geworfen, welches
nichts weiter tut, als das "MAIL FROM" zu loggen und Nachrichten zu
verwerfen.

Zur Testvorbereitung: "MailGen" und "MsgSink" erzeugen keine meßbare
Last, wenn man sie direkt aneinander koppelt. Der Mailspool auf
"Postfix" ist mit "noatime" gemountet, das darunter liegende
ext3-Filesystem verwendet btree-Indizes. Koppelt man "MailGen" mit
"Postfix" und von da ohne Mailman nach "MsgSink", so erzeugt man
ebenfalls keine meßbare Last. Dieses Setup habe ich vor den Tests
einmal laufen lassen, um den DNS-Cache des Testnetzes zu befüllen.

Insgesamt hat "MsgSink" exakt 140009 Nachrichten bei jedem
Testdurchlauf geschluckt. Es gab keine Abweichungen bei den erzeugten
"MAIL FROM"-Parametern, egal, ob Mailman oder Postfix das VERP gemacht
hat.

Ich habe je drei Testläufe mit und ohne VERP-Patch für Mailman
durchgeführt. Die Zeitmessung begann mit dem Aufbau der ersten
TCP-Verbidnung durch "MailGen" und endete mit dem letzten Verwerfen
einer Nachricht duch "MsgSink". Die Strategie, mit der Mailman die
Mails in Buckets aufteilt, habe ich dabei nicht verändert.

Mittelwert ohne XVERP-Patch: 01:59:01 = 7141s, 19.60 Nachrichten/Sekunde
Mittelwert mit  XVERP-Patch: 01:11:44 = 4304s, 32.52 Nachrichten/Sekunde

Kann jemand, der mehr Erfahrung als ich hat, mir sagen, ob ich mit den
Tests irgendetwas anderes festgestellt habe als daß meine virtuellen
Maschinen I/O-bound sind? Ich war schon in der Uni immer eine Niete,
wenn es um Statistik und Hypothesen-Tests ging... :-(


Ciao
Stefan
-- 
Stefan Förster     http://www.incertum.net/     Public Key: 0xBBE2A9E9
FdI #29: ... bei der Gestaltung unseres Angebotes selbstverständlich die -
bestehenden nationalen Bestimmungen und Besonderheiten berücksichtigen.  ...
von einem ausländischen Server aus anbieten. (nach Peter Berlich)



Mehr Informationen über die Mailingliste Postfixbuch-users