Vorweg: Die folgende Darstellung zu den Mailfiltern in Hamster ist keine reine Übersetzung. Die Darstellung der Filtersyntax im Teil "Übersicht über die Befehlssprache" wurde von mir ausführlich kommentiert. Zusätze von mir, die über die reine Hilfedatei hinausgehen, sind mit *** gekennzeichnet.
Anmerkungen, Verbesserungsvorschläge oder Kritik per e-mail sind daher willkommen.
Zweck:
Die in der Datei "MailFilt.hst" definierten Regeln bestimmen, welche Mails von POP3-Servern (1.) geladen werden und wie sie danach weiter behandelt werden (2.).
1.) Laden oder nicht laden ...
Falls die Filterdatei "ignore"- oder "kill"-Regeln enthält, versucht Hamster zuerst die Kopfzeilen der vorhandenen Mails zu laden, und nur wenn die Regeln es letztlich zulassen, werden die Mails vollständig geladen und an das jeweilige Mailkonto weitergeleitet.
Grundsätzlich werden die Befehle "ignore" und "del" im Hintergrund angewendet, so daß nur Hamster bekannt ist, falls und welche Nachrichten tatsächlich ignoriert oder gelöscht wurden. Um Benachrichtigungen für eine ignorierte oder gelöschte Mail zu erstellen, wird zusätzlich eine "notify"-Regel ("Benachrichtigungs"-Regel) benötigt.
Anmerkung: Die Einstellung "[X] Belasse Mails auf dem Server (d.h., lösche sie nicht)" hat Priorität vor den Regeln der Mailfilter-Datei; selbst wenn eine Regel das Löschen einer Mail zur Folge hätte, wird sie nicht ausgeführt, falls diese Einstellung aktiviert ist.
2.) Wir brauchen einen Empfänger, egal wie...
Nach dem Laden einer Mail soll sie an das vorgesehene Mailkonto weitergeleitet werden. Die zweite Gruppe von Regeln bestimmt, in welchem Postkorb der lokalen Mailkonten oder lokalen Newsgruppen sie abgelegt wird.
*** (Zu Einzelheiten siehe unten - Übersicht über die Befehlssprache)
Die Regel "addaccounts" ("Mailkonten hinzufügen") überprüft die einzelnen Kopfzeilen der e-mail(s) darauf, ob sie in Hamster angelegte Mailadressen enthalten. Wird eine lokale Mailadresse erkannt (insbes. einer der in "Local accounts" definierten "lokalen Mailkonten") wird das zugehörende Konto der Empfängerliste hinzugefügt.
Sind sowohl die Empfänger- als auch die Newsgroup-Liste nach Abarbeitung aller Regeln leer,
ist die Mail nicht verloren, sondern wird dem "Standardkonto" zugefügt.
Dieses ist immer das "Admin"-Konto, es sei denn, ein weiterer Standardbenutzer ist vorhanden. Dieser wird über die letzte Variable der Skriptbefehle "fetchmail" (Hamsterskript *.hsc) bzw. "ControlRunFetchMail" (Visual Basic-Skript *.vbs) oder über eine "Default"-Zeile (Standardzeile) der Datei MailFilt.hst festgelegt.
Übersicht über die Befehlssprache:
*** Die Datei MailFilt.hst besteht aus einem Absatz oder mehreren Absätzen:
*** Am Zeilenende kann mit "#" ein Kommentar eingefügt werden, danach erfolgt jedes Mal ein Zeilenumbruch:
*** Ein Mailfilter-Absatz besteht aus mindestens einer Definition der Reichweite ("Scope") eines Filters und der dabei anzuwendenden Regel.
*** Bei mehreren Filtern steht jeder in einer eigenen Zeile (Zeilenumbruch):
*** Die Filterreichweite ("Scope") setzt sich aus einem, ggf. zwei Mustern innerhalb von "[ ]" Klammern zusammen.
*** Beide Muster werden von einem Leerzeichen getrennt. Nach zwei Mustern erfolgt ein Zeilenumbruch:
*** "ScopePattern" definiert den Geltungsbereich. Mit "+" bzw. ohne Vorzeichen, also einemn positiven Wert - ist er allgemeingültig.
*** Mit "-" kann er aber eingeschränkt werden. Der dafür erforderliche "Identifier" wird - s.o. - per Variable im Skriptbefehl
*** "fetchmail" (*.hsc) bzw. "ControlRunFetchMail" (*.vbs) oder eine "Default"-Zeile (Standardzeile) der Datei MailFilt.hst festgelegt.
*** Die Mailfilterregel besteht aus Anweisungen zum Laden und zur Auslieferung. Nach einer Regel erfolgt ggf. ein Kommentar
*** mit "#" und danach ein Zeilenumbruch.
*** Die Vorgaben bei "MRuleLoad" regeln die Behandlung beim Abruf der Mail vom Mailserver.
*** Regeln zum Mailabruf (alternativ anzuwenden)
| MRuleLoad | = "load" | [ "(" ")" ] | 1*Leerzeichen MSelection |
| MRuleLoad | =/ "load" | [ "(" ")" ] | 1*Leerzeichen MSelection |
| MRuleLoad | =/ "kill" | [ "(" ")" ] | 1*Leerzeichen MSelection |
| MRuleLoad | =/ "notify" | [ "(" AccountList ")" ] | 1*Leerzeichen MSelection |
*** Im einzelnen bedeuten:
*** Nach einer dieser Regeln folgen ohne Zwischenraum "(" ")" Klammern.
*** Die Mailabruf-Regeln können "unbedingt" oder "bedingt" sein.
*** Geht einer Anweisung zum Mailabruf ein "=" voraus, so wird sie immer und unwiderruflich ausgeführt.
*** Die zweite Gruppe arbeitet mit Bedingungen. Wird die Bedingung erfüllt, so ist dennoch ein Nachladen, z.B. bei "kill" oder "ignore", möglich.
*** Achtung: Steht eine Regel mit "=" in der ersten Zeile eines Gültigkeitsbereichs (Filterreichweite), dann werden die nachfolgenden Regeln nicht mehr beachtet!
*** Für beide Arten kann mit dem Befehl "notify" eine Nachricht über das Ergebnis einer ausgeführten Mailabruf-Regel erzeugt werden.
*** Es gelten die gleichen Definitionen wie bei den nun folgenden Regeln "MRuleDeliver".
*** Die Angaben bei "MRuleDeliver" legen fest, wer die gemäß der Mailabrufregeln geladenen Mails erhält.
*** Regeln zur Mailauslieferung (alternativ anzuwenden)
| MRuleDeliver | = "default" | "(" AccountList ")" | 1*Leerzeichen MDefaultField |
| MRuleDeliver | =/ "addaccounts" | [ "(" ")" ] | 1*Leerzeichen MSelection |
| MRuleDeliver | =/ "add" | "(" AccountList ")" | 1*Leerzeichen MSelection |
| MRuleDeliver | =/ "set" | "(" AccountList ")" | 1*Leerzeichen MSelection |
| MRuleDeliver | =/ "del" | "(" AccountList ")" | 1*Leerzeichen MSelection |
| MRuleDeliver | =/ "postto" | "(" NewsgroupList ")" | 1*Leerzeichen MSelection |
| default | Hier geht die Mail bzw. die Benachrichtigung an das "Default"-Konto |
| Ein Empfänger und die Mail stehen fest. Die Regeln bei "MDefaultMail" werden verwendet, falls weitere Empfänger hinzukommen | |
| addaccounts | Mail / Benachrichtigung an alle lokalen Mailaccounts. Eine "Accountlist" gibt es deshalb nicht |
| add | Ein lokaler Empfänger (oder mehrere) wird (werden) zur Empfängerliste hinzugefügt |
| del | Ein lokaler Empfänger (oder mehrere) wird (werden) aus der Empfängerliste gelöscht |
| set | Ein lokaler Empfänger (oder mehrere) ersetzt (ersetzen) die Empfängerliste |
| postto | Die Mail / Benachrichtigung wird in eine vorhandene (lokale) Newsgroup (oder mehrere) gepostet |
*** Die "AccountList" ist die Liste der Mailempfänger. Sie besteht aus einem oder mehreren Kontonamen, jeweils durch Kommata getrennt:
*** Mit "MSelection" (MailAuswahl) wird eine Mail bestimmt, auf die dann die o.g. Abruf- und Auslieferungsregeln angewendet werden.
*** Im einzelnen erfolgt das über die Festlegung der zu untersuchenden Headerzeile(n) im MDefaultField (MailStandardFeld) und die Definition
*** des anzuwendenden Filtermusters (" MSelectPattern"). Beide Teile werden durch ein einzelnes Leerzeichen (1*Whsp - Whitespace) getrennt.
*** In einer Zeile kann immer nur eine Kombination aus relevanter Headerzeile und des dafür gültigen Auswahlmusters stehen:
*** Das "MDefaultField" (MailStandardFeld) legt fest, welches Kodierungsformat gilt, wie oft getestet wird und welche Headerzeilen
*** untersucht werden.
*** Mit "~" wird die zu untersuchende Headerzeile MIME-dekodiert.
*** Mit "*" werden alle Headerzeilen untersucht, auf die das Muster paßt - nicht nur die erste.
*** MSingleField (MailEinzelFeld) und MGroupedField (MailGruppiertesFeld) unterscheiden sich in der Anzahl der angesprochenen
*** Headerzeilen.
*** Bei MSingleField erlaubt "any header field" die Untersuchung jedes Headerfelds, z.B. "Subject" (Betreff). Alternativ kann die Mailgröße
*** als Selektionskriterium gewählt werden.
*** MGroupedField bezieht nur bestimmte Headerbereiche der Mail ein:
*** Mit "AnySender" werden Angaben zum Absender berücksichtigt: "From:",
"Apparently-From:", "Sender:", "Reply-To:", "X-Sender:",
*** "Envelope-From:" und "X-Envelope-From:".
*** "AnyRecipient" beinhaltet nur Headerangaben,die für den Empfang relevant sind: "To:", "Apparently-To:", "CC:", "BCC:",
*** "Envelope-To:" und "X-Envelope-To:".
*** Schließlich setzt sich der Ausdruck für "MSelectPattern" (MailAuswahlMuster) zusammen aus:
*** Das Filtermuster kann ein Regulärer Ausdruck (PatRegExp) oder ein Einfaches Muster sein:
*** Ein Regulärer Ausdruck wird PCRE-konform formuliert:
*** Ein Einfaches Muster kann durch Platzhalter ("Alles"), durch Text oder eine Zahl ausgedrückt werden:
*** Der Platzhalter wird so ausgedrückt:
*** Musterausdrücke mit Text sehen so aus:
*** Schließlich werden Ausdrücke mit Zahlen durch eine einen Vergleichsmaßstab und eine Bezugsgröße definiert:
*** Zu beachten ist noch, daß der Filterausdruck mit einem Doppelpunkt ":" abgeschlossen wird.
Filter-Reichweite:
Jeder Absatz beginnt mit einer "[...]"-Kopfzeile, die festlegt, für welche(n) "Identifier" ("Benutzer") die anschließend folgenden Filterregeln angewendet werden sollen.
Ein solcher kann nur über den letzten Parameter eines "fetchmail"- oder "ControlRunFetchMail"-Skriptbefehls (Hamster-Skriptsprache *.hsc bzw. VBS-Skripte *.vbs) definiert werden, z.B.:
fetchmail "pop3.serv.er" "pop3" "$7" "" "admin,identifier"
Filter-Regeln:
Anmerkung: Die nachfolgende Beschreibung dient nur der Unterscheidung zwischen Mail- und News- Filtern. Einzelheiten der Auswahl und zu der Mustergestaltung werden analog der Vorgaben der Datei Scores.hst festgelegt.
Anders als bei News-Filtern, beginnt jede Regel mit einem besonderen Schlüsselwort, gefolgt von seinen Parametern in Klammern:
Der besondere Feldname "Bytes" ermöglicht die Prüfung der Größe einer Mail:
Der besondere Feldname "Any-Sender" (Irgendein-Absender) prüft diese Headerzeilen (Kopfzeilen): "From:", "Apparently-From:", "Sender:", "Reply-To:", "X-Sender:", "Envelope-From:" and "X-Envelope-From:":
Der besondere Feldname "Any-Recipient" (Irgendein-Empfänger) überprüft diese Headerzeilen (Kopfzeilen): "To:", "Apparently-To:", "CC:", "BCC:", "Envelope-To:" und "X-Envelope-To:".
Geht einem Feldnamen ein ""~"" voraus, wird der Wert des vorhandenen Feldes auf MIME-Decodierung vor dem Test untersucht:
Grundsätzlich wird nur die erste Kopfzeile mit dem vorhandenen Namen überprüft. Steht vor einem Feldnamen ein "*", werden alle Kopfzeilen mit diesem Namen untersucht:
Beispiele:
Liefere Mails für bekannte lokale Mailkonten aus:
Sende Mails aus Hamster-Mailinglisten an lokale Newsgroups - und eine Kopie von jeder an "admin", bis Du überzeugt bist, daß alles läuft...:
An dieser Stelle:
Ein herzliches Danke dafür, daß ich zeitweise Michael Geberts Anleitung und Jürgen Denzlers Anleitung zur Nutzung der Mailfilter nutzen durfte. Sie sind für ein grundlegendes Verständnis der Filtersyntax auch weiterhin zu empfehlen.
Joern Weber und Michael Gebert danke ich für die Bereitschaft, die 1. Fassung dieser Übersetzung Korrektur zu lesen.