Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:maildrop

Mail sortieren mit Maildrop (≤ 2008)

Bei alten IMAP-Servern unter Dovecot (getestet hier mit Dovecot 1.0.beta3, ca 2006) wurde beim Sieve-Plugin dazu geraten, den ganzen Dovecot selber zu bauen → Nachteil: Aufwendig, und Auto-Updates usw. funktionieren auch nicht mehr.

Gesucht war also eine Alternative … hier ein sehr einfaches Beispiel für Maildrop.

Installation

Maildrop ist eine Komponente des Courier-Mailservers, lässt sich aber auch ohne Courier installieren und verwenden.

Unschön: es gibt bei Suse (10.1) kein unabhängiges RPM für Maildrop.

Sehr schön: das herunterladbare Original-TAR-Archiv 1) ist kein RPM, lässt sich aber direkt in ein solches umbauen:
rpmbuild -ta maildrop-2.0.3.tar.bz2 2)

Im üblichen RPM-Fertigbau-Verzeichnis 3) findet sich bei Erfolg eine neue RPM-Datei, bei mir hiess maildrop-2.0.3-1.x86_64.rpm -
die per rpm -ihv / pfad/pfad/mairldrop-*.rpm installieren.

Nachtrag 2008-02-26: RPM-Paketbau funktioniert mit Suse 10.3 und maildrop-2.0.4-1 genauso

Konfiguration

Es gibt diverse Möglichkeiten, ich wollte die ganze local delivery bei den bisherigen Mechanismen (LMTP) lassen.

Hier meine Low-Tech Nix-Änder-Variante: (nur mein Benutzer ist betroffen)

.forward

Mit .forward kann man E-Mails an andere Adressen oder auch an lokale Befehle weiterleiten (wenn der Admin das erlaubt).

$HOME/.forward:

"|/usr/bin/maildrop -A 'X-maildrop: sorted'"

Ankommende Mail wird an das Programm maildrop weitergeleitet. Dabei wird die Headerzeile "X-maildrop: sorted" oben in die Mail eingefügt (das ist hier nicht nötig, ausser um den Spieltrieb zu befriedigen ;-)).

.mailfilter

Was soll jetzt Maildrop mit der Mail tun? Das steht in der Datei $HOME/.mailfilter:

# normale inbox:
MD="/home/username/Maildir"

# Mail an meine alte Maildomain (nahezu nur spam)
mdOLDdomain="$MD/.INBOX.OLDdomain"
if ( /^To:.*old.org/ )
     {
        to $mdOLDdomain
     }

# Mail aus der Arbeit
mdWork="$MD/.INBOX.work"
if ( /^From:.*firma.de/ )
{
        to $mdWork
}

# andere Mail in die normale INBOX
to $MD

Ich verwende Maildir als Speichermethode für Mails, Maildrop kann aber auch MBOX.

Mail an alle Adressen, die mit "old.org" enden, sollen in den Maildir-Ordner /home/username/Maildir/.INBOX.OLDdomain verschoben werden (das ist in der INBOX der Unterordner OLDdomain, wenn man mit IMAP zugreift - zumindest in meiner Dovecot-Installation).

Mail an alle Adressen, die mit "*firma.de" enden, bitte in den Maildir-Ordner /home/username/Maildir/.INBOX.work ablegen (IMAP: INBOX/work).

Alle anderen Mails sollen ganz normal in der INBOX gespeichert werden (Maildir-Ordner /home/username/Maildir)

Anmerkungen

Der Weg über .forward ist kein Muß: Wenn es auf Performance ankäme, oder Mails für alle Benutzer sortiert werden sollten, liesse sich Maildrop auch ohne Umweg über Postfix integrieren … Ich wollte aber für meine private Mailsortiererei nicht den LMTP (Postfix Mailausliefer-Mechanismus für lokale Mails) ersetzen (oder im Zweifelsfall ein Bein stellen).

Vergleich zu Sieve

Vorteile:

  • Maildrop sieht vielseitiger aus als Sieve
  • Die Syntax von Maildrop kommt mir wesentlich weniger fehleranfällig vor als sieve.

Nachteile:

  • bei Sieve muss sich der Benutzer nicht einloggen sondern kann die Sortierbefehle normalerweise von einem anderen Rechner per Sieve-Protokoll hochladen (IIRC habe ich dies teilweise auch schon in guten Mailprogrammen gesehen.)
  • wird mit virtuellen Benutzern schwieriger

2)
als Compile-Voraussetzung wurden bei mir verlangt: fam fam-devel gdbm gdbm-devel
3)
default irgendwo unter /usr/src/packages/RPMS/, nur als root schreibbar, besser eigene RPM-Bauumgebung basteln, siehe selflinux zur rpmbuild-Umgebung
de/sysadmin/tools/maildrop.txt · Zuletzt geändert: 2019-09-28 09:59 von hella

Seiten-Werkzeuge

Mastodon Twitter