Weiter Zurück Inhalt

4. Fortgeschrittene Anwendung

4.1 Reguläre Ausdrücke

Alle Such-Muster in Mutt, auch komplexere Muster, müssen als reguläre Ausrücke (regexp) in der ``erweiterten POSIX''-Syntax (was mehr oder weniger die von egrep und GNU awk verwendete Syntax ist) angegeben werden. Eine kurze Beschreibung dieser Syntax folgt weiter unten.

Die Suche unterscheidet nur dann zwischen Groß- und Kleinschreibung, wenn der zu suchende Ausdruck mindestens einen Großbuchstaben enthält. Sonst findet keine Unterscheidung statt. Beachte, dass ``\'' in regulären Ausdrücken maskiert werden muss, wenn es in einem Konfigurations-Kommando verwendet wird: ``\\''.

Ein regulärer Ausdruck ist ein Muster, das eine Anzahl von Zeichenketten beschreibt. Reguläre Ausdrücke werden - analog zu arithmetischen Ausdrücken - durch die Verwendung von verschiedenen Operatoren aufgebaut, die kleinere Ausdrücke verbinden.

Beachte, dass ein regulärer Ausdruck entweder von " oder ' umgeben / begrenzt werden kann, was nützlich ist, falls der Ausdruck Leerzeichen enthält. Der Abschnitt Syntax der Konfigurationsdateien enthält mehr Information zum Verständnis der Begrenzer " und '. Um ein wörtliches " oder ' einzufügen, musst du es mit einem \ (Backslash) maskieren.

Die kleinstmöglichen Einheiten sind reguläre Ausdrücke, die nur ein einzelnes Zeichen beschreiben. Die meisten Zeichen - alle Buchstaben und Ziffern eingeschlossen - sind reguläre Ausdrücke, die sich selbst beschreiben. Jedes Metazeichen (Zeichen mit einer besonderen Bedeutung) kann maskiert werden, indem man ihm einen Backslash voranstellt.

Der Punkt ``.'' passt auf jedes beliebige einzelne Zeichen. ``^'' und das Dollarzeichen ``$'' sind Metazeichen, die die leere Zeichenkette am Anfang bzw. Ende einer Zeile beschreiben.

Eine Liste von Zeichen, die zwischen ``['' und ``]'' steht, ist eine Beschreibung für ein einzelnes (beliebiges) Zeichen in der Liste. Wenn das erste Zeichen dieser Liste ``^'' ist, dann beschreibt die Liste genau die Zeichen, die nicht in der Liste vorkommen. Beispielsweise steht der reguläre Ausdruck [0123456789] für eine beliebige Ziffer. Ein Bereich von ASCII-Zeichen kann durch Angabe des ersten und letzten Zeichens, getrennt durch einen Bindestrich (``‐'') beschrieben werden. Die meisten Metazeichen verlieren ihre spezielle Bedeutung, wenn sie innerhalb von Listen angewandt werden. Um das Zeichen ``]'' verwenden zu können, muss es jedoch als erstes in der Liste stehen. Mit dem ``^'' verhält es sich ähnlich, nur dass es überall außer an erster Stelle stehen darf. Schließlich kann auch der Bindestrich ohne seine spezielle Bedeutung verwendet werden. Dazu muss er als letztes Zeichen in der Liste stehen.

Bestimmte Zeichenklassen sind vordefiniert. Zeichenklassen bestehen aus ``[:'', einem Schlüsselwort (dem Namen der Klasse) und ``:]''. Folgende Klassen sind im POSIX-Standard definiert:

[:alnum:]

Alphanumerische Zeichen.

[:alpha:]

Zeichen des Alphabets.

[:blank:]

Leerzeichen oder Tabulatoren.

[:cntrl:]

Steuerzeichen.

[:digit:]

Numerische Zeichen.

[:graph:]

Zeichen, die sowohl druck- als auch sichtbar sind. (Ein Leerzeichen ist druckbar, aber nicht sichtbar, während ein ``a'' sowohl druck- als auch sichtbar ist.)

[:lower:]

Kleinbuchstaben.

[:print:]

Druckbare Zeichen. (Zeichen, die keine Steuerzeichen sind.)

[:punct:]

Satzzeichen (Zeichen, die weder Buchstaben, Ziffern, Steuerzeichen noch Leerzeichen sind.)

[:space:]

Zwischenraum (z. B. Leerzeichen, Tabulator, Wagenrücklauf)

[:upper:]

Großbuchstaben.

[:xdigit:]

Hexadezimale Ziffern

Eine Zeichenklasse ist in einem regulären Ausdruck nur innerhalb der eckigen Klammern (``['', ``]'') einer Zeichenliste gültig. Beachte, dass die Klammern in den Klassennamen Teil des symbolischen Namens sind und zusätzlich zu den Klammern der Zeichenliste gesetzt werden müssen. [[:digit:]] ist beispielsweise äquivalent zu [0-9].

In diesen Zeichenlisten können überdies zwei besondere Zeichenfolgen erscheinen. Diese finden in Nicht-ASCII-Zeichensätzen Anwendung, die einzelne Symbole besitzen, die durch mehrere Zeichen repräsentiert werden (``collating elements'', Gruppierungselemente), sowie für Zeichen, die von Such- und Sortiermethoden als gleich behandelt werden sollen:

Gruppierungssymbole - ``Collating Symbols''

Ein Gruppierungssymbol (``collating symbol'') besteht aus einem Gruppierungselement (``collating element''), das von ``[.'' und ``.]'' umschlossen wird. Wenn beispielsweise ``ch'' ein Gruppierungselement ist, dann ist [[.ch.]] ein regulärer Ausdruck, der dieses Element beschreibt, während der reguläre Ausdruck [ch] ``c'' oder ``h'' beschreibt.

Äquivalenz-Klassen

Eine Äquivalenz-Klasse ist ein von der Einstellung der locale-Variablen abhängiger Name, der für eine Reihe von Zeichen steht, die als gleich behandelt werden sollen. Der Name wird in ``[='' und ``=]'' eingeschlossen. Beispielsweise könnte der Name ``e'' für ``è'' ``é'' und ``e'' stehen. In diesem Fall ist [[=e=]] ein regulärer Ausdruck, der ``è'', ``é'' und ``e'' beschreibt.

Einem regulären Ausdruck, der ein einzelnes Zeichen beschreibt, können folgende Wiederholungs-Operatoren folgen:

?

Das vorangehende Element ist optional und darf höchstens einmal auftreten.

*

Das vorangehende Element kommt kein- oder mehrmals vor.

+

Das vorangehende Element tritt ein- oder mehrmals auf.

{n}

Das vorangehende Element kommt genau n mal vor.

{n,}

Das vorangehende Element kommt n mal oder öfter vor.

{,m}

Das vorangehende Element kommt höchstens m mal vor.

{n,m}

Das vorangehende Element kommt mindestens n mal, aber nicht öfter als m mal vor.

Zwei reguläre Ausdrücke können verknüpft werden. Der reguläre Ausdruck, der sich daraus ergibt, passt auf jeden String, der durch die Verknüpfung zweier Substrings entsteht, auf die die ursprünglichen regulären Ausdrücke passen.

Zwei reguläre Ausdrücke können durch ``|'' kombiniert werden. Der daraus entstandene Ausdruck beschreibt eine Zeichenkette, in der entweder der eine oder der andere Ausdruck auftritt.

Wiederholungsoperatoren haben Vorrang vor einfacher Aneinanderreihung, die wiederum Vorrang vor der Auswahl hat. Ein Teil-Ausdruck darf durch runde Klammern (``('', ``)'') umschlossen werden, um diese Regeln aufzuheben.

Hinweis: Wenn Mutt mit dem GNU rx-Paket kompiliert wurde, können auch die folgenden Operatoren in regulären Ausdrücken verwendet werden.

\\y

Beschreibt den leeren String am Anfang oder Ende eines Wortes.

\\B

Beschreibt den leeren String innerhalb eines Wortes.

\\<

Beschreibt den leeren String am Anfang eines Wortes.

\\>

Beschreibt den leeren String am Ende eines Wortes.

\\w

Steht für jedes Zeichen, das in einem Wort vorkommen kann (Buchstaben, Ziffern oder Unterstrich ``_'').

\\W

Steht für jedes Zeichen, das nicht in einem Wort vorkommen kann.

\\`

Beschreibt den leeren String am Anfang eines Puffers (String).

\\'

Beschreibt den leeren String am Ende eines Puffers.

Beachte, dass diese Operatoren nicht von POSIX definiert und deshalb möglicherweise nicht in den Bibliotheken aller Systeme enthalten sind.

4.2 Suchmuster

Viele von Mutts Kommandos ermöglichen die Angabe eines Suchmusters (limit, tag-pattern, delete-pattern, etc.). Es gibt verschiedene Kriterien für die Auswahl von Nachrichten:

 ~A              Alle Nachrichten
 ~b AUSDRUCK     Nachrichten, in deren Body AUSDRUCK vorkommt
 ~B AUSDRUCK     Nachrichten, in deren Body oder Header AUSDRUCK vorkommt
 ~c NAME         Nachrichten die als Kopie (Cc) an NAME gehen
 ~C AUSDRUCK     Nachricht mit AUSDRUCK in To: oder Cc:
 ~D              gelöschte Nachrichten
 ~d [MIN]-[MAX]  Nachrichten mit ``date-sent'' in einem bestimmten Zeitraum
 ~E              veraltete Nachrichten (expire)
 ~e AUSDRUCK     Nachrichten mit AUSDRUCK im ``Sender''-Feld
 ~F              als wichtig markierte Nachrichten
 ~f NAME         Nachrichten von NAME
 ~g              mit PGP signierte Nachrichten
 ~G              mit PGP verschlüsselte Nachrichten
 ~h AUSDRUCK     Nachrichten mit AUSDRUCK im Header
 ~k              Nachricht enthält einen PGP-Schlüssel
 ~i ID           Nachricht mit ID im ``Message-ID''-Feld
 ~L AUSDRUCK     Nachricht ist von AUSDRUCK oder wurde von AUSDRUCK empfangen
 ~l              Nachricht ist an eine bekannte Mailingliste adressiert
 ~m [MIN]-[MAX]  Nachrichten von MIN bis MAX *)
 ~n [MIN]-[MAX]  Nachrichten mit einer Punktzahl (Score) im Bereich MIN bis
                 MAX *)
 ~N              neue Nachrichten
 ~O              alte Nachrichten
 ~p              Nachricht ist an dich adressiert (verwendet $alternates)
 ~P              Nachricht ist von dir (verwendet $alternates)
 ~Q              bereits beantwortete Nachrichten
 ~R              gelesene Nachrichten
 ~r [MIN]-[MAX]  Nachrichten mit ``date-received'' im angegebenen Zeitraum
 ~S              veraltete Nachrichten (supersede)
 ~s SUBJECT      Nachrichten mit SUBJECT im ``Subject''-Feld (Betreff)
 ~T              markierte Nachrichten
 ~t NAME         Nachrichten an NAME
 ~U              ungelesene Nachrichten
 ~v              Nachricht ist Teil eines nicht angezeigten Threads
 ~x AUSDRUCK     Nachricht, die AUSDRUCK im ``References''-Feld enthält
 ~y AUSDRUCK     Nachricht, die AUSDRUCK im ``X-Label''-Feld enthält
 ~z [MIN]-[MAX]  Nachrichten mit einer Größe von MIN bis MAX *)
 ~=              doppelte Nachrichten (siehe $duplicate_threads)

Dabei handelt es sich bei AUSDRUCK, NAME, ID und SUBJECT um reguläre Ausdrücke.

*) Die Formen <[MAX], >[MIN], [MIN]- und -[MAX] sind ebenfalls zulässig.

Anpassen von Suchmustern

Beachte, dass Suchmuster, die sich auf Adress-Listen beziehen (c, C, p, P und t) bereits zutreffen, wenn sie auf mindestens einen Eintrag in der ganzen Liste zutreffen. Wenn alle Elemente der Liste geprüft werden sollen, muss dem Muster ein ``^'' vorangestellt werden. Dieses Beispiel erfasst alle Nachrichten, die nur Empfänger in Deutschland haben.

^~C \.de$

Komplexe Muster

Das logische UND wird durch Angabe von mehr als einem Kriterium erreicht. Beispiel:

~t mutt ~f elkins

Hier würden alle Nachrichten ausgewählt, die das Wort ``mutt'' in der Liste der Empfänger und das Wort ``elkins'' im ``From''-Header haben.

Mutt erkennt außerdem die folgenden Operatoren, mit denen komplexere Suchmuster erstellt werden können:

Hier ist ein Beispiel, das ein komplexes Suchmuster zeigt. Das Muster trifft auf alle Nachrichten zu, die nicht ``mutt'' im ``To''- oder ``Cc''-Feld enthalten und die von ``elkins'' sind.

!(~t mutt|~c mutt) ~f elkins

Hier ist ein Beispiel, das innerhalb des regulären Ausdrucks Leerzeichen verwendet (beachte die Begrenzungszeichen ' und "). Damit es zutrifft, muss auf das Subject der Mail ``^Junk +From +Me$'' zutreffen und die Mail muss entweder von ``Jim +Somebody'' oder von ``Ed +SomeoneElse'' stammen:

 '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")'

Suchen nach Datum

Mutt unterstützt absolute und relative Datumsangaben.

Absolut: Das Datum muss im TT/MM/JJ-Format eingegeben werden (Monat und Jahr sind optional und beziehen sich bei Nichtangabe auf den aktuellen Monat und das aktuelle Jahr). Ein Beispiel für einen gültigen Datumsbereich:

Begrenze auf Nachrichten nach Muster: ~d 20/1/95-31/10

Wenn das Mindest-Datum (die erste Angabe) ausgelassen und nur ``-TT/MM/JJ'' angegeben wird, werden alle Nachrichten vor diesem Datum ausgewählt. Wenn das zweite Datum ausgelassen und nur ``TT/MM/JJ-'' angegeben wird, werden alle Nachrichten nach diesem Datum ausgewählt. Wenn nur ein Datum ohne ``-'' verwendet wird, werden nur an diesem Datum versandte Nachrichten ausgewählt.

Fehlergrenzen. Absolute Daten kann man mit Fehlergrenzen versehen. Eine Fehlergrenze ist ein Vorzeichen (+ oder -), gefolgt von einer Zahl und einer der folgenden Einheiten:

y       Jahre
m       Monate
w       Wochen
d       Tage
Als Spezialfall kann man das Vorzeichen durch das Zeichen ``*'' ersetzen; dies ist äquivalent dazu, eine identische positive und negative Fehlergrenze anzugeben.

Beispiel: Um alle Nachrichten auszuwählen, die innerhalb von zwei Wochen um den 15. Januar 2001 verschickt wurden, würde man das folgende Muster verwenden:

 
Begrenze auf Nachrichten nach Muster: ~d 15/1/2001*2w

Relativ. Dieser Datumstyp ist relativ zum aktuellen Datum und kann so angegeben werden:

Die Abweichung wird als postive Zahl mit einer der folgenden Einheiten verwendet.

y               Jahre
m               Monate
w               Wochen
d               Tage

Beispiel: Für die Auswahl aller Nachrichten, die jünger als einen Monat sind, kann man dieses Muster verwenden:

Begrenze auf Nachrichten nach Muster: ~d <1m

Hinweis: Alle Datumsangaben, die beim Suchen verwendet werden, beziehen sich auf die lokale Zeitzone. Wenn die $index_format-Variable kein %[...]-Format enthält, ist das nicht das Datum, das im Index angezeigt wird.

4.3 Verwendung von Markierungen (Tags)

Manchmal soll eine Operation mit einer ganzen Gruppe von Nachrichten auf einmal ausgeführt werden anstatt nur mit einer. Ein Beispiel könnte das Speichern von Nachrichten einer Mailingliste in eine andere Mailbox oder das Löschen aller Nachrichten mit einem bestimmten Subject (Betreff) sein. Um Nachrichten zu markieren, auf die ein vom Benutzer angegebenes Muster zutrifft, kann die ``tag-pattern''-Funktion benutzt werden, die per Voreinstellung auf ``shift-T'' (im Deutschen manchmal ``Umschalt-T'' genannt, A.d.Ü.) gelegt ist. Eine andere Möglichkeit ist es, verschiedene Nachrichten manuell mit der ``tag-message''-Funktion zu markieren, die sich standardmäßig auf der Taste ``t'' befindet. Das Kapitel Muster enthält nähere Informationen über die erwartete Syntax.

Sobald die gewünschten Nachrichten markiert sind, kann der ``tag-prefix'' Operator benutzt werden, der sich in der Voreinstellung auf der ``;''-Taste (Semikolon) befindet. Wenn der ``tag-prefix''-Operator benutzt wird, bezieht sich die nächste Operation auf alle markierten Nachrichten, sofern dies mit der Art der Operation vereinbar ist. Wenn die $auto_tag-Variable gesetzt ist, beziehen sich Operationen - sofern Markierungen existieren - automatisch auf die markierten Nachrichten, ohne dass ``tag-prefix'' verwendet werden muss.

4.4 Das Arbeiten mit Hooks (``Haken'')

Hooks sind ein Konzept, das aus dem Editor Emacs stammt und dem Benutzer das Ausführen beliebiger Kommandos gestattet, bevor eine bestimmte Operation durchgeführt wird. Beispielsweise könnte man seine Konfiguration davon abhängig machen, in welcher Mailbox man gerade Nachrichten liest oder wem man eine Mail schickt. In der Welt von Mutt besteht ein Hook aus einem regulären Ausdruck oder Muster zusammen mit einer Konfigurations-Option oder einem Kommando. Über Details der einzelnen Hooks geben diese Kapitel Auskunft:

Anmerkung: Wenn ein Hook Konfigurations-Einstellungen verändert, bleiben diese Änderungen bis zum Ende der aktuellen mutt-Sitzung wirksam. Da dies in den meisten Fällen nicht gewünscht ist, muss man vor allen anderen Hooks einen speziellen Hook einfügen, der immer ausgeführt wird und die Voreinstellung wieder herstellt. Es folgt ein Beispiel mit send-hook und der my_hdr Anweisung:

send-hook . 'unmy_hdr From:'
send-hook ~Cb@b.b my_hdr from: c@c.c

Auswählen von Nachrichten durch Hooks

Hooks, die sich auf ganze Nachrichten beziehen (send-hook, save-hook, fcc-hook, message-hook), werden besonders ausgewertet. Für die anderen Arten von Hooks ist ein regulärer Ausdruck ausreichend. Für die Arbeit mit Nachrichten wird allerdings eine feinere Kontrolle nötig, da man je nach Aufgabenstellung unterschiedliche Kriterien benötigt.

Mutt erlaubt hierfür die Benutzung von Suchmustern in den Hook-Kommandos. Dies funktioniert genau wie bei der Auswahl der angezeigten Nachrichten oder dem Durchsuchen der Mailbox, wobei man allerdings nur auf die Operatoren zurückgreifen kann, die sich auf Informationen beziehen, die Mutt aus dem Header (Kopf) der Nachricht erhalten kann (z. B. From, To, Cc, Date, Subject usw.).

Wenn man beispielsweise den eigenen Absender davon abhängig machen möchte, wem man gerade Mail schickt, könnte man folgendes tun:

send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt User <user@host>'
Dieses Kommando würde immer dann ausgeführt, wenn Mail an me@cs.hmc.edu geschickt wird.

Natürlich muss für ein solches Muster nicht die vollständige in Mutt verfügbare Suchsprache genutzt werden. Man kann natürlich - wie bei anderen Hooks auch - einen einfachen regulären Ausdruck verwenden, den Mutt dann in eine für die Suchsprache verständliche Form umwandelt. Dafür wird die Variable $default_hook verwendet. Das Suchmuster wird umgewandelt, sobald der Hook deklariert ist. Dafür wird der zu dieser Zeit gültige Wert von $default_hook verwendet.

4.5 Adressbuch-Einträge aus externen Quellen

Mutt unterstützt die Anbindung an externe Suchverzeichnisse wie LDAP, ph/qi, bbdb oder NIS durch ein ``Wrapper-Script'', das die Daten über eine einfache Schnittstelle an Mutt übergibt. Durch die Variable $query_command wird Mutt angewiesen, ein bestimmtes Programm zu benutzen. Beispiel:

set query_command = "mutt_ldap_query.pl '%s'"

Dieses Programm/Skript sollte die Abfrage über die Kommandozeile entgegennehmen. Es muss eine einzeilige Statusmeldung und dann jeden passenden Eintrag auf einer gesonderten Zeile ausgeben. Jede Zeile besteht dabei aus einer Adresse, dem Namen und zusätzlichen optionalen Informationen, durch Tabulatorzeichen getrennt. Falls ein Fehler auftritt oder keine passende Adresse gefunden wird, muss ein Fehlercode ungleich Null zurückgeliefert und eine einzeilige Fehlermeldung ausgegeben werden.

Hier eine mögliche Ausgabe:

Searching database ... 20 entries ... 3 matching:
me@cs.hmc.edu           Michael Elkins  mutt dude
blong@fiction.net       Brandon Long    mutt and more
roessler@guug.de        Thomas Roessler mutt pgp

Es gibt zwei Mechanismen für den Zugriff auf Mutts Abfragefunktion. Die eine ist die Abfrage innerhalb des Index-Menüs durch die Funktion query (Voreinstellung: Q). Dabei wird der Benutzer nach einer Eingabe gefragt und schließlich ein Menü mit allen passenden Einträgen gezeigt. In diesem Menü können Adressen ausgewählt werden, an die Mail verschickt oder für die ein Alias erstellt werden soll. Außerdem können mehrere Nachrichten zum Mailen markiert, eine neue Abfrage gestartet oder das Ergebnis einer neuen Abfrage der Liste hinzugefügt werden.

Der andere Mechanismus für den Zugriff auf die query-Funktion ist das Vervollständigen von Adressen, ähnlich dem Vervollständigen von Alias-Namen. In einem beliebigen Adressfeld kann die complete-query-Funktion (Voreinstellung: ^T) zum Vervollständigen der gerade eingetippten Adresse verwendet werden. Wie bei einem Alias schaut Mutt von der aktuellen Cursor-Position zurück bis zum letzen Leerzeichen oder Komma. Wenn das Ergebnis der Abfrage eindeutig ist, wird es an Ort und Stelle eingebunden. Wenn nicht, zeigt Mutt das Query-Menü, wo ein oder mehrere Einträge ausgewählt werden können.

4.6 Mailbox-Formate

Mutt unterstützt das Lesen und Schreiben von vier verschiedenen Mailbox-Formaten: mbox, MMDF, MH und Maildir. Der Typ der Mailbox wird automatisch erkannt. Es ist also unnötig, die Mailboxen irgendwie kenntlich zu machen. Wenn neue Mailboxen erstellt werden, benutzt Mutt die Standardeinstellung aus der Variablen $mbox_type.

mbox. Dies ist das am weitesten verbreitete Mailbox-Format unter UNIX. Alle Nachrichten werden in einer einzigen Datei gespeichert. Jede Nachricht besitzt eine Zeile der Form:

From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST

um den Beginn einer neuen Nachricht kenntlich zu machen (sie wird oft als die ``From_''-Zeile bezeichnet).

MMDF. Dies ist eine Variante des mbox-Formates. Jede Nachricht wird von Zeilen mit ``^A^A^A^A'' (vier Control-A's) umschlossen.

MH. Hier handelt es sich um eine radikale Abkehr vom mbox- und MMDF-Format. Diese Mailbox besteht aus einem Verzeichnis, in dem jede Nachricht in einer eigenen Datei gespeichert wird. Der Dateiname steht für die Nummer der Nachricht (was allerdings nicht die Nummer sein muss, die Mutt anzeigt). Gelöschte Nachrichten werden mit einem Komma (,) als erstem Zeichen des Dateinamens kenntlich gemacht. Hinweis: Mutt erkennt diesen Typ von Mailbox, indem es nach einer der Dateien .mh_sequences oder .xmhcache sucht (so werden auch normale Verzeichnisse von MH-Mailboxen unterschieden).

Maildir. Dies ist das neueste der Mailbox-Formate. Es wird vom MTA Qmail (einem sendmail-Ersatz) benutzt. Es ähnelt MH, fügt jedoch drei Unterverzeichnisse in die Mailbox ein: tmp, new und cur. Dateinamen für die Nachrichten werden so gewählt, dass sie selbst dann eindeutig sind, wenn zwei Programme über NFS in die Mailbox schreiben. Es ist also kein Locking (``Sperren'' von Dateien) nötig.

4.7 Kurzschreibweisen für Mailboxen

Es gibt eine Reihe von eingebauten Kürzeln, die sich auf bestimmte Mailboxen beziehen. Diese können immer benutzt werden, wenn das Programm die Eingabe von Dateinamen oder Pfaden erwartet.

4.8 Der Umgang mit Mailinglisten

Mutt besitzt eine Reihe von Konfigurationseinstellungen, die den Umgang mit größeren Mengen an Mail einfacher machen. Zuerst muss Mutt mitgeteilt werden, welche Adressen es als Mailinglisten betrachten soll (technisch gesehen muss das nicht zwingend eine Mailingliste sein, aber zu diesem Zweck wird es häufig genutzt). Dies wird durch die Kommandos lists und subscribe in der .muttrc erreicht.

Nachdem Mutt jetzt weiß, bei welchen Adressen es sich um Mailinglisten handelt, kann das Programm verschiedenes tun. Die erste Möglichkeit ist, im Index-Menü den Namen der Mailingliste anzuzeigen, über die du eine Nachricht empfangen hast (d.h. von einer abonnierten Liste). Das ist nützlich, um zwischen persönlichen Nachrichten und Nachrichten von der Liste in der gleichen Mailbox zu unterscheiden. In der Variablen $index_format steht jetzt ``%L'' für ``To: <list>'', sofern ``list'' im ``To''-Feld vorkommt bzw. ``Cc <list>'' wenn ``list'' im ``Cc''-Feld vorkommt (sonst wird der Name des Autors angezeigt).

Oft werden die ``To''- und ``Cc''-Felder in Mailinglisten recht groß. Die meisten Leute kümmern sich nicht darum, den Autor, dem sie antworten, aus der Liste der Empfänger zu entfernen, was dazu führt, dass zwei oder mehr Kopien bei der gleichen Person ankommen. Die ``list-reply''-Funktion, die in der Voreinstellung auf der Taste ``L'' im Menü index und im pager liegt, hilft, dies zu vermeiden, indem die Antwort nur an die Liste und nicht an alle Autoren geschickt wird (außer, wenn dies im Header-Feld Mail-Followup-To gewünscht wird).

Mutt unterstützt auch den Header Mail-Followup-To. Wenn du eine Nachricht an eine Gruppe von Empfängern schickst, die eine oder mehrere abonnierte Mailinglisten enthält und die Option $followup_to gesetzt ist, generiert Mutt einen Mail-Followup-To Header, der alle Empfänger enthält, denen du die Nachricht schickst, nicht jedoch deine eigene Adresse. Damit wird festgelegt, dass Gruppen- oder Listen-Antworten (auch als ``Followups'' bekannt) auf diese Nachricht nur an die ursprünglichen Adressaten der Mail geschickt werden sollen, nicht einzeln an deine Adresse - du wirst die Antwort sowieso über eine der Mailinglisten erhalten, die du abonniert hast.

Umgekehrt beachtet Mutt diesen Header, wenn du eine Gruppen- oder Listen-Antwort auf eine Nachricht schreibst, die einen Mail-Followup-To Header enthält und die Variable $honor_followup_to gesetzt ist. Die Funktion list-reply (Listen-Antwort) stellt in diesem Fall ebenfalls sicher, dass die Antwort auch an die Mailingliste geht, selbst wenn ihre Adresse im Mail-Followup-To nicht auftaucht.

Wenn das Verändern der Header im Editor aktiviert ist, kannst du manuell einen Mail-Followup-To Header hinzufügen. Mutt wird diesen Header nur dann automatisch erstellen, wenn er beim Versenden noch nicht existiert.

Manche Administratoren von Mailinglisten erzeugen ein ``Reply-To''-Feld, das statt auf den Autor auf die Mailingliste zeigt. Das kann zu Problemen führen, wenn man dem Autor direkt antworten möchte, da die meisten Mailprogramme automatisch die Adresse im ``Reply-To''-Feld verwenden. Mutt benutzt die Variable $reply_to um zu entscheiden, welche Adresse benutzt werden soll. Wenn sie gesetzt ist, wird der Benutzer gefragt, ob er die im ``Reply-To''- oder die im ``From''-Feld angegebene Adresse verwenden will. Ist diese Variable nicht gesetzt, wird das ``Reply-To''-Feld benutzt, sofern vorhanden.

Weiterhin kann das Header-Feld ``X-Label:'' verwendet werden, um Mailinglisten oder ihr Thema zu nennen (oder ganz einfach, um einzelne Nachrichten zu kommentieren). Die Platzhalter ``%y'' und ``%Y'' können in der Variablen $index_format verwendet werden, um ``X-Label:''-Felder im Index anzuzeigen, und in den Suchmustern von Mutt kann man mittels `` y'' ``X-Label:''-Felder nach regulären Ausdrücken durchforsten. Das Header-Feld ``X-Label:'' folgt keinem Standard, man kann es aber leicht von procmail oder einem anderen Mail-Filter eingefügen lassen.

Schließlich bietet Mutt noch die Möglichkeit, die Mailbox nach Threads zu sortieren. Ein Thread ist eine Gruppe von Nachrichten, die alle dasselbe Subject (Betreff) tragen. Üblicherweise wird zur grafischen Darstellung eine baum-ähnliche Anordnung benutzt. Dieses Konzept ist auch in den meisten Newsreadern anzutreffen. Es macht den Umgang mit großen Mailinglisten einfacher, weil man auf einfache Weise uninteressante Threads löschen und interessante Themen finden kann.

4.9 Unterstützung von Delivery Status Notification (DSN)

RFC 1894 definiert eine Reihe von MIME Content-Typen zur Weiterleitung des Status von E-Mail. Man kann sie sich als ``Empfangsbescheinigung'' vorstellen. Berkeley sendmail 8.8.x besitzt derzeit einige Kommandozeilen-Optionen, durch die ein Mailprogramm festlegen kann, welche Art von Status-Nachrichten zurückgegeben werden sollen.

Um dies zu unterstützen, wurden zwei Variablen eingeführt. $dsn_notify dient dazu, Rückmeldungen anzufordern, wenn verschiedene Ereignisse eintreten (z.B. Zustellung misslungen, Nachricht zugestellt etc.). $dsn_return legt fest, ob dabei die ganze Nachricht oder nur die Kopfzeilen (Header) zurückgeliefert werden sollen. Die Manpage zu sendmail enthält weitere Details zu DSN.

4.10 POP3 Unterstützung (OPTIONAL)

Wenn Mutt mit der POP3-Unterstützung kompiliert wurde (durch Angabe des Schalters --enable-pop beim Aufruf des configure-Scripts), kann das Programm auf Mailboxen zugreifen, die auf einem entfernten POP3-Server liegen und auch Mail zum lokalen Lesen herunterladen.

Du kannst eine entfernte POP3-Mailbox ansprechen, indem du als Mailbox pop://popserver/ angibst.

Es ist möglich, einen anderen Port zu verwenden, indem man ihn nach dem Servernamen angibt, d.h.: pop://popserver:port/.

Man kann auch für jede Mailbox einen anderen Benutzernamen angeben:

pop://benutzername@popserver[:port]/

Eine Mailbox über POP3 auf neue Mail zu überprüfen ist aufwendiger, als wenn sie lokal verfügbar ist. Deshalb kann man mit der Variablen $pop_checkinterval einstellen, wie oft Mutt bei einem entfernten Server nach neuer Mail fragt; die Voreinstellung sind alle 60 Sekunden.

Wenn Mutt mit SSL-Unterstützung kompiliert wurde (indem dem configure-Skript die Option --with-ssl übergeben wurde), können Verbindungen mit POP3-Servern verschlüsselt werden. Natürlich setzt das voraus, dass der Server mit SSL verschlüsselte Verbindungen unterstützt. Um auf eine Mailbox über POP3/SSL zuzugreifen, verwendet man das Präfix pops:, also:

pops://[benutzername@]popserver[:port]/

Eine andere Möglichkeit über POP3 an deine Mail zu kommen, ist die Funktion fetch-mail (Voreinstellung: G). Sie baut eine Verbindung zu pop_host auf, holt von dort alle neu eingetroffenen Nachrichten und legt sie in der lokalen Mailbox ab. Von diesem Punkt an verhält sich Mutt so, als ob die Mails schon immer lokal vorhanden gewesen wären.

Hinweis: Wenn du nur alle Nachrichten abholen und in die lokale Mailbox schreiben willst, solltest du dir überlegen, ob du dazu nicht ein spezielles Programm wie fetchmail benutzen willst.

4.11 IMAP-Unterstützung (OPTIONAL)

Wenn Mutt mit IMAP-Unterstützung kompiliert wurde (durch Angabe des Schalters --enable-imap beim Aufruf des configure-Scripts), kann es mit Mailboxen auf einem entfernten IMAP-Server umgehen.

Zugriff auf die entfernte Mail-Eingangsbox ist durch Auswählen der Mailbox imap://imapserver/INBOX möglich, wobei imapserver der Name des IMAP-Servers und INBOX der Name der Spool-Mailbox auf dem IMAP Server ist. Um Zugriff auf eine andere Mailbox auf dem Server zu erlangen, kann man imap://imapserver/Pfad/zur/Mailbox angeben, wobei Pfad/zur/Mailbox der Pfad der Mailbox ist.

Ein anderer Port kann so angegeben werden: imap://imapserver:port/INBOX.

Man kann auch für jeden Mail-Ordner einen anderen Benutzernamen angeben, z.B.:

imap://benutzername@imapserver[:port]/INBOX

Wenn Mutt mit SSL-Unterstützung kompiliert wurde (dazu muss configure mit der Option --with-ssl aufgerufen werden), können Verbindungen zu IMAP-Servern verschlüsselt werden. Das setzt selbstverständlich voraus, dass der Server ebenfalls SLL-verschlüsselte Verbindungen unterstützt. Um eine Mailbox mit IMAP/SSL zu lesen, solltest Du als Pfad imaps://[benutzername@]imapserver[:port]/Pfad/zur/Mailbox verwenden.

Eine Pine-kompatible Notation wird ebenfalls unterstützt, also

{[benutzername@]imapserver[:port][/ssl]}Pfad/zur/Mailbox

Nicht alle Server verwenden ``/'' als Hierarchie-Trenner. Mutt sollte erkennen, welches Trennzeichen der Server benutzt und die Pfade entsprechend umschreiben.

Wenn man sich in den Mailboxen auf dem IMAP-Server umschaut, kann man mit dem Kommando toggle-subscribed einstellen, ob man nur die abonnierten oder alle Mailboxen betrachten will. Siehe dazu auch die Variable $imap_list_subscribed.

Einen IMAP-Server auf neu eingetroffene Nachrichten zu überprüfen kann spürbare Verzögerungen nach sich ziehen. Aus diesem Grund solltest du die Variablen $mail_check und $timeout sorgfältig an deine Bedürfnisse anpassen. Ich persönlich verwende

set mail_check=90
set timeout=15
und erhalte damit bei meiner langsamen Modem-Leitung relativ gute Ergebnisse.

Hinweis: Beim UW Server ist es vor v12.250 vorgekommen, dass der Server, wenn mbox als Speichermethode verwendet wurde, die Verbindung zu einem Client unterbrach, sobald ein anderer Client den gleichen Ordner auswählte.

Auswahl der Mailboxen

Seit Version 1.2 bietet Mutt ein Menü, um Mailboxen auf einem IMAP-Server anzuzeigen und auszuwählen. Es funktioniert sehr ähnlich wie das Menü zur Auswahl lokaler Dateien; allerdings gibt es folgende Unterschiede:

Anmeldung am Server

Mutt unterstützt vier Methoden, sich bei einem IMAP-Server anzumelden: SASL, GSSAPI, CRAM-MD5 und LOGIN (es gibt einen Patch von Grant Edwards, der für all die armen Exchange-User NTLM-Authentifizierung möglich macht, aber er ist noch nicht in die stabile Version von Mutt integriert worden). Es gibt auch Unterstützung für das Pseudo-Protokoll ANONYMOUS, das es einem ermöglicht sich auf einem öffentlichen IMAP-Server einzuloggen, auch wenn man dort kein Benutzerkonto hat. Um ANONYMOUS zu verwenden, braucht man nur den Benutzernamen leer zu lassen oder aus "anonymous" zu setzen.

SASL ist eine besondere Art der Authentifizierung, die zwischen verschiedenen Protokollen (darunter GSSAPI, CRAM-MD5, ANONYMOUS und DIGEST-MD5) die sicherste Methode auswählt, die auf deinem Rechner und dem Server verfügbar ist. Bei einigen dieser Methoden (darunter DIGEST-MD5 und möglicherweise GSSAPI) wird die komplette Sitzung verschlüsselt und damit für die umherwimmelnden Netzwerk-Schnüffler unlesbar. Man sollte diese Option nutzen, wenn man sie hat. Um sie einzusetzen, muss man die Cyrus SASL-Bibliothek auf seinem System installiert haben und Mutt mit der Option --with-sasl kompilieren.

Mutt wird jede Methode ausprobieren, die einkompiliert wurde und vom Server angeboten wird, wobei es die folgende Reihenfolge verwendet: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.

Es gibt einige Variablen, um den Anmeldevorgang zu steuern:

4.12 Mehrere IMAP/POP Konten verwalten (OPTIONAL)

Falls du Benutzerkonten auf mehreren IMAP und/oder POP-Servern hast, findest du es vielleicht unbequem und fehleranfällig, all die Authentifizierungs-Einstellungen zu verwalten. Vielleicht kann der Befehl account-hook dir dabei helfen. Dieser Hook funktioniert wie der folder-hook, wird aber aufgerufen, wann immer du auf eine entfernte Mailbox zugreifst (also auch innerhalb des Menüs zur Auswahl von Mailboxen), nicht nur wenn du eine Mailbox tatsächlich öffnest.

Hier sind einige Beispiele:

account-hook . 'unset imap_user; unset imap_pass; unset tunnel'
account-hook imap://rechner1/ 'set imap_user=me1 imap_pass=foo'
account-hook imap://rechner2/ 'set tunnel="ssh rechner2 /usr/libexec/imapd"'

4.13 URLs mit dem Webbrowser anschauen (EXTERN)

Wenn eine Nachricht URLs (unified ressource locator = WWW-Adresse wie z.B. http://www.mutt.org/) enthält, ist es sehr bequem, wenn man diese Adressen in einem Menü angezeigt bekommt und die Möglichkeit hat, sie gleich mit einem Webbrowser zu besuchen. Diese Funktionalität setzt voraus, dass man das externe Programm urlview installiert (erhältlich unter ftp://ftp.guug.de/pub/mutt/contrib/) und folgende Einstellungen vornimmt:

macro index \cb |urlview\n
macro pager \cb |urlview\n


Weiter Zurück Inhalt