Mailfilter-Dateien für zentrale Mail-Zustellung im URZ
 
Heinrich-Heine-Universität Düsseldorf Universitätsrechenzentrum

Achtung: Diese Information ist jetzt - Ende Dezember 2000 - obsolet. Seit der Umstellung der Software am 28.12.2000 werden Mailfilter-Dateien nicht mehr unterstützt. Die meist verwendeten Standardfunktionen wurden zu diesem Zeitpunkt automatisch umgesetzt in Zustellungs-Optionen der neuen Software. Als Ersatz für eine echte Mailfilter-Programmierung mit Bedingungen und Verteilung in verschiedene Schubfächer bieten wir jetzt schon und auch künftig procmail an.

Weitere Hinweise zur Umstellung finden Sie auf einer eigenen Seite.

<- Postmaster's Page
Zustellung der EMail
...individuell gesteuert

Die Zustellung einer EMail an Ihre Adresse, wenn Sie eine zentrale EMail-Kennung im Universitätsrechenzentrum der Heinrich-Heine-Universität Düsseldorf besitzen, geht normalerweise in der Weise, daß diese EMail in Ihren persönlichen Briefkasten gestellt wird, d.h. an die Ihrer Kennung gehörende Mailbox-Datei auf dem Mail-Server angehängt wird. Diese können Sie dann über das Post Office Protocol (POP) von einem PC o.ä. mit einem Mail-Programm wie Eudora oder Netscape Mail abrufen und lesen oder - wenn Sie unter Ihrer Kennung auch die Benutzungsrechte für die Sun-Rechner des URZ besitzen - mit einem Mail-Programm auf einem dieser Sun-Rechner verarbeiten (z.B. mit elm, pine oder mailtool.

Anders ist dies, wenn Sie eine sogenannte Mailfilter-Datei besitzen. Dann werden alle Details der Zustellung allein über die in dieser Datei enthaltenen Anweisungen gesteuert mit z.B. folgenden Möglichkeiten:

  • Weiterleitung der EMail zusätzlich oder ausschließlich an eine andere Adresse.
  • Zustellung in verschiedene Briefkästen (Mailbox-Dateien) abhängig z.B. vom Inhalt des Subjects (Betreff-Zeile) oder Absender.
  • "Automatischer Anrufbeantworter" für EMails z.B. während einer längeren Abwesenheit.
  • Vernichten ohne zu Lesen von EMails, die anhand von Subject oder Absender als "nicht gewünscht" herausgefiltert wurden.
Der folgende Text zeigt die Voraussetzung für die Einrichtung einer solchen Mailfilter-Datei und die Details, wie Sie eine solche Datei für verschiedene Zwecke erstellen können. Wenn Sie von diesem Instrument zur selbst gesteuerten Zustellung Ihrer EMail Gebrauch machen möchten, bedenken Sie bitte folgendes:
Die Einrichtung einer solchen Datei ist nicht trivial - eher eine kleine Programmieraufgabe - und Fehler in dieser Datei können dazu führen, daß Sie garkeine Post mehr bekommen oder auch z.B. erwartete Mail vernichtet wird.
Voraussetzung für die Einrichtung einer Mailfilter-Datei
Vom Zustellprogramm des Mail-Servers wird die Mailfilter-Datei unter dem Namen .mailfilter im Home-Verzeichnis zu der jeweiligen Benutzerkennung gesucht. Seit 6.3.1998 besitzen alle Mail-Kennungen ein eigenes Home-Verzeichnis. Wenn Sie auch die Berechtigung für die Sun-Rechner des URZ besitzen, ist dies das gleiche Verzeichnis, daß Sie auch beim Login unter der Sun-Kennung in der Unix-Shell vorfinden.

In jedem Fall können Sie eine passende Mailfilter-Datei kreieren oder bearbeiten (bzw. wieder entfernen), wenn Sie sich z.B. mit Telnet auf dem Mail-Server mail.rz.uni-duesseldorf.de (= sirene.rz.uni-duesseldorf.de) einloggen, und zwar über den Menüpunkt 5.

Inhalt der Datei .mailfilter
Der Inhalt der .mailfilter-Datei sind Anweisungen in einer eigenen kleinen Skriptsprache, die vom Zustellprogramm zum Zeitpunkt der Zustellung unter Ihrer Berechtigung interpretiert und ausgeführt werden. Die Skriptsprache erinnert von der Syntax an die Programmiersprache C; Anweisungen werden immer mit Semikolon ; abgeschlossen, Blöcke in geschweiften Klammern { } eingeschlossen. Kommentare sehen allerdings aus wie in der Shell: Zeilen, die mit dem Nummernzeichen # beginnen.
Zustellung in eine Mailbox-Datei
unixfile
file
unixfile "$(mailbox)"; 
Zustellung in die Standard-Mailbox-Datei, deren Name von der System-Verwaltung voreingestellt ist. Achtung: auf dem Mail-Server heißt sie intern anders als auf dem Sunserver1; nur diese Art der Dateiangabe stellt sicher, daß die Mail auch über den POP-Server gelesen werden kann.
unixfile ".mail";
Zustellung in eine Datei .mail im Home-Verzeichnis im traditionellen Sendmail-Format.
file ".mail";
Zustellung in eine Datei .mail im Home-Verzeichnis im MMDF-Format: Die Mails werden durch Zeilen mit vier Control-A-Zeichen getrennt, nicht mit Zeilen, die mit dem Wort From und einem Leerzeichen beginnen. Achtung: Alle Mailprogramme auf der Sun sind so übersetzt, daß sie das "Unix"-Format erwarten und nicht dieses MMDF-Format.
file "/dev/null";
Zustellung in den Reißwolf; diese Methode ist zwar außerordentlich effizient, sollte aber nur unter vorher genau getesteten Bedingungen vorgenommen werden.
"Pipen" der Mail durch ein Kommado
pipe
ignore pipe
[ignore] pipe "command ...";
Das angegebene Kommando wird ausgeführt und erhält die EMail (Header und Body) als Standardeingabe. Ein vorangestelltes ignore bedeutet, daß ein Fehler bei der Ausführung des Kommandos ignoriert, die EMail trotzdem als zugestellt betrachtet wird. Ansonsten wird ein Exit-Status des Kommandos zwischen 1 und 127 als temporärer Fehler betrachtet - die Zustellung wird mehrfach erneut versucht - und einer ab 128 als permanenter Fehler - die Mail wird als unzustellbar an den Absender zurückgeschickt.
Bei uns werden die Mailfilter-Dateien im restricted mode ausgeführt, d.h. es sind nur Kommandos aus einem festen Verzeichnis auf dem Server zugelassen, die ohne Pfad direkt mit ihrem Namen aufgerufen werden können. Diese Kommandos werden unten besprochen. Hier ein Beispiel:

unixfile "$(mailbox)";
pipe "resend -t x@y.z"; 
Mail wird zusätzlich zur Standardzustellung an anderen Empfänger mit Resent-To-Header geschickt.
Bedingte Anweisungen
if ...
else
if ( $(from) == /laute-liste/ ) unixfile "Mail/laute-liste";
else {
	unixfile "$(mailbox)";
}
Alles mit Absenderadressen (im From:), die den String laute-liste enthalten, wird in einen speziellen Folder gesteckt (höchste Effizienz: "/dev/null"), alles andere in die Standard-Mail-Spool-Datei.
Auf ähnliche Weise können andere Header-Felder wie Subject oder Sender getestet werden. Innerhalb der Schrägstriche steht allgemein ein regulärer Ausdruck. Vor Ausführung des Vergleichs wird der Inhalt der Variablen auf der linken Seite des Vergleichsoperators in Kleinschreibung umgesetzt; verwenden Sie deshalb in dem Vergleichsausdruck rechts keine Groß-, sondern nur die entsprechenden Kleinbuchstaben.

Als Vergleichsoperatoren gibt es == (gleich) und != (ungleich); mehrere Vergleiche können mittels der logischen Operatoren && (und) und || (oder) verknüpft werden.

Außer dem Test auf den Inhalt bestimmter Header-Felder kann im if die System-Variable delivered abgefragt werden, ggf. mit vorangestelltem Verneinungsoperator !:

unixfile "Mail/inbox";
# Wenn das nicht klappt - z.B. Quota ueberschritten
if (! delivered) unixfile "$(mailbox)";
Kommandos in der Mailfilter-Datei
resend -t to-address [-c cc-address] ...
Man-Page Leitet die Mail an die angegebenen Empfänger weiter. Adressen hinter einem Schalter -t werden in einen Resend-To:-Header gepackt, solche hinter einem Schalter -c in einen Resend-cc:-Header.

rcvtrip options ...
Man-Page Der automatische Anrufbeantworter für EMail. Schickt eine Antwort an den Absender der Nachricht normalerweise nur dann, wenn Ihre Adresse explizit in einem To:- oder cc:-Adressfeld auftaucht (dadurch wird verhindert, daß solch automatisch erzeugte Antworten über Listen verteilt werden). Außerdem führt das Programm - in der Datei triplog in Ihrem Home-Verzeichnis - Buch über die Adressen, an die Antworten ergangen sind, um zu vermeiden, daß ein und die/derselbe mehrmals kurz hintereinander die gleiche Mail bekommt.

rcvstore +folder
Man-Page Zustellung der Mail unmittelbar in einen nmh-Folder, z.B. Inbox. Benutzen Sie rcvstore in der Mailfilter-Datei nur, wenn Sie Ihre Mail auf der Sun mit dem nmh-Mail-System lesen, i.d.R. als Ersatz für eine unixfile-/file-Anweisung im Mailfilter. Dann können Sie sich den inc-Aufruf (incorporate new mail) sparen, denn dessen Funktion, die Mail aus der normalen Unix-Mailbox-Datei zu lesen und die Mails als einzelne Dateien z.B. in das Verzeichnis des Inbox-Folders zu legen, hat rcvstore bereits erledigt.

Bearbeiten der Mailfilter-Datei
Wenn Sie sich über Telnet auf dem Mail-Server selbst (Hostname mail.rz.uni-duesseldorf.de) einloggen und bereits eine Mailfilter-Datei besitzen, finden Sie zwei neue Menuepunkte zum Editieren (5) bzw. Checken (5c) Ihrer Mailfilter-Datei. Wenn Sie noch keine Mailfilter-Datei eingerichtet haben, hat der Menuepunkt 5 die Bedeutung, die Datei neu anzulegen; es wird die entsprechende Daie .mailfilter mit einem Standardinhalt erzeugt und zum Editieren angeboten.

Zum Editieren wird der Editor pico aufgerufen. Dieser ist einfach und selbst erklärend: Die über Kontrolltasten-Kombinationen abrufbaren Editorkommandos werden am unteren Bildschirmrand in einer Statuszeile angezeigt. Wird das Editorfenster nicht komplett mit dieser Statuszeile dargestellt, so liegt dies vermutlich daran, daß der Terminaltyp oder die Terminalgröße vom Telnet-Programm nicht richtig bekannt gemacht wurde. In diesem Fall hilft nur, den Editor durch Eingabe von Control+x sofort zu verlassen. (Speziell bei dem eingebauten Telnet-Programm von Windows 95 würde ich eine Funktionsfähigkeit nicht garantieren.)

Zum Checken der installierten Mailfilter-Datei wird eine Absenderadresse (From:) und ein Inhalt für Subject: abgefragt und das Checkprogramm ckmf mit einer Dummy-Mail mit solchen Header-Zeilen als Eingabe aufgerufen. Als Ergebnis bekommen Sie entweder Syntax-Fehler angezeigt - schon um solche etwaigen Fehler auszuschalten, sollten Sie von dieser Check-Funktion nach jeder Änderung der Mailfilter-Datei Gebrauch machen - oder die Zustellungsaktionen für eine Mail mit diesem From und Subject aufgelistet. Es wird nichts wirklich zugestellt, sondern nur angegeben, was gemacht würde.

Wenn Sie die Mailfilter-Datei auf einem PC erstellen und mit FTP auf den (Sun-, nicht Mail-)Server bringen, so wählen Sie bitte unbedingt den Text-Übertragungsmodus. Die Carriage Return-Zeichen in PC-Textdateien werden vom Mailfilter-Parser als Schmutz betrachtet, und bei Fehlern in der Mailfilter-Datei entfällt die Zustellung!


Bernd Cappel, zuletzt geändert am 04.05.2001, 15:37 Uhr