Postfix: Speicher sparen bei großen Lookup-Tabellen
Die meisten Lookup-Tabellen, die man so per Hand erstellt und dann in Postfix
einbindet, die werden nicht sonderlich groß - ein paar hundert Zeilen, 200kByte,
das ist alles nicht so tragisch. Tragisch wird es immer dann, wenn
Lookup-Tabellen automatisch generiert werden und dann mehrere MBytes groß sind.
Bei indizierten Tabellen kann man sich ein bißchen behelfen, indem man statt
btree/hash/dbm auf das cdb-Format wechselt, welches einen deutlich kleineren
Memory-Footprint hat - bei cidr-Tabellen gibt es keine solche Alternative, wer
also z.B. die DNSWL-Whitelisten eingebunden,
der muß sich was anderes einfallen lassen. Die Lösung besteht darin,
den proxymap
-Service zu nutzen, den Postfix von Haus aus mitbringt.
Die Konfiguration ist leider nicht ganz trivial - zunächst einmal muß man die
großen Lookup-Tabellen identifizieren. Nehmen wir im folgenden an, der Schuldige
wäre die folgende Zeile in den smtpd_recipient_restrictions
:
|
|
Ersetzt man nun diese Zeile einfach durch
|
|
dann wird das nicht funktionieren, denn der proxymap
-Dämon weigert sich,
einfach so Dateien zu öffnen - dafür gibt es den Parameter proxy_read_maps
.
Wer sich diesen mit postconf -d proxy_read_maps
mal ansieht wird bemerken, daß
da schon einiges drinsteht - und wenn man den Wert in der main.cf überschreibt,
dann sollte man sichergehen, daß man keine Map vergisst. Welche Maps noch alles
den proxymap
-Service benutzen findet man beherzt via postconf | grep proxy:
; heraus. Angenommen, man hätte sonst nur noch in den
virtual_mailbox_maps
und virtual_mailbox_domains
einen Verweis auf proxymap
gefunden, dann würde man vor der obigen Änderung an den
smtpd_recipient_restrictions
also die folgende Zeile in die Konfiguration
aufnehmen:
|
|
Nach einem Neustart (und den üblichen Sicherheitsmaßnahmen wie soft_bounce
) kann
man das Log dann ja noch kurze Zeit beobachten, ob auch alles weiterhin so
funktioniert wie gewünscht.
Beethoven, Pathetique.