Der Mailreader Mutt: Fortgeschrittene Anwendung

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, daß ``\'' in regulären Ausdrücken maskiert werden muß, 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.

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 ``.'' paßt 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 Angeben 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, muß es jedoch als erstes in der Liste stehen. Mit dem ``^'' verhält es sich ähnlich, nur daß es überall außer an erster Stelle stehen darf. Schließlich kann auch der Bindestrich ohne seine spezielle Bedeutung verwendet werden. Dazu muß 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, daß 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].

Zwei besondere Zeichenfolgen können in Zeichenlisten 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 den eingestellten 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, paßt 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.

Wiederholung hat Vorrang vor 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, daß diese Operanden nicht von POSIX definiert und deshalb möglicherweise nicht in den Bibliotheken der verschiedenen 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
     ~z [MIN]-[MAX]  Nachrichten mit einer Größe von MIN bis MAX *)

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, daß 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, muß dem Muster ein ``^'' vorangestellt werden. Dieses Beispiel erfaßt 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:

- ! -- logischer NICHT-Operator
- | -- logischer ODER-Operator
- () -- logischer Gruppierungs-Operator

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

> `

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

> `

### Suchen nach Datum

Mutt unterstützt absolute und relative Datumsangaben.

Absolut: Das Datum muß 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.

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

- >Abweichung (Nachrichten, die älter als Abweichung Einheiten sind)
- <Abweichung (Nachrichten, die neuer als Abweichung Einheiten sind)
- =Abweichung (Nachrichten, die genau Abweichung Einheiten alt sind)

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 ``control-T'' (auf deutschen Tastaturen: ``Strg-T'', 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 daß ``tag-prefix'' verwendet werden muß.

## 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:

- folder-hook
- send-hook
- save-hook
- mbox-hook
- fcc-hook
- fcc-save-hook

### Auswählen von Nachrichten durch Hooks

Hooks, die sich auf ganze Nachrichten beziehen (`send-hook, save-hook, fcc-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 aus dem Envelope (Umschlag) der Nachricht (z. B. From, To, Cc, Date, Subject usw.) beziehen.

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 zu me@cs.hmc.edu geschickt wird.

Natürlich muß 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 $default_hook-Variable 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 Adreßbuch-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 $query_command-Variable 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 muß 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, muß 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 Adreßfeld 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 $mbox_type-Variablen.

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 muß, 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). Jedoch aktualisiert Mutt diese Dateien (noch) nicht.

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, daß 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.

- ! -- Mailbox, in der neue Mail ankommt ( $spool)
- > -- Mailbox, in die gelesene Mail verschoben wird ( $mbox)
- < -- Mailbox, in der ausgehende Mail gespeichert wird ( $record)
- - -- die zuletzt geöffnete Datei
- ~ -- das Home-Verzeichnis
- = oder + -- das $folder-Verzeichnis
- @alias -- Standard-Datei für Mail, die durch die Adresse von alias festgelegt wird.

## 4.8 Der Umgang mit Mailinglisten

Mutt besitzt eine Reihe von Konfigurationseinstellungen, die den Umgang mit größeren Mengen an Mail einfacher machen. Zuerst muß Mutt mitgeteilt werden, welche Adressen es als Mailinglisten betrachten soll (technisch gesehen muß 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 es, 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 $index_format-Variable 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, daß 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, daß 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, daß 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.

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 mißlungen, 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 --enable-pop-Schalters beim Aufruf des configure-Scripts), kann das Programm Mail von einem entfernten Server zum lokalen Lesen herunterladen. Beim Aktivieren der Funktion fetch-mail (Voreinstellung: G) versucht Mutt, eine Verbindung zu pop_host aufzubauen und sich als pop_user anzumelden. Wenn die Verbindung steht, wird der Benutzer nach dem Paßwort für den Mailserver gefragt.

Wenn das Paßwort korrekt war, lädt Mutt alle neu eingetroffene Mail herunter und speichert sie in der lokalen Mailbox. Von diesem Punkt an verhält sich Mutt so, als ob die Mail schon immer lokal vorhanden gewesen wäre.

Hinweis: Die POP3-Unterstützung ist nur zur Bequemlichkeit integriert und ihre Möglichkeiten sind ziemlich begrenzt. Wer mehr Funktionalität benötigt, sollte ein spezielles Programm wie fetchmail benutzen.

## 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 `{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 `{imapserver}Pfad/zur/Mailbox` angeben, wobei `Pfad/zur/Mailbox` der Pfad der Mailbox ist (relativ zum Home-Verzeichnis - es sei denn, Cyrus wird eingesetzt).

Ein anderer Port kann so angegeben werden: `{imapserver:port}inbox`.

Man kann auch für jeden Mail-Ordner einen anderen Benutzernamen angeben, z.B.: `{username@imapserver[:port]}inbox`.

Wenn Mutt mit SSL-Unterstützung kompiliert wurde (dazu muß configure mit der Option --enable-ssl aufgerufen werden), können Verbindungen zu IMAP-Servern verschlüsselt werden. Das setzt selbstverständlich voraus, daß der Server ebenfalls SLL-verschlüsselte Verbindungen unterstützt. Um eine Mailbox mit IMAP/SSL zu lesen, solltest Du als Pfad `{[username@]imapserver[:port]/ssl}path/to/folder` verwenden.

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.

Auf neue Mail zu prüfen ist über IMAP aufwendiger als lokal. Aus diesem Grund läßt sich mit der Variablen $imap_checkinterval einstellen, wie häufig Mutt auf einem entfernten Server nach neuer Mail schaut. Die Voreinstellung ist alle 60 Sekunden.

Mutt wurde für den Umgang mit IMAPrev1-Servern entwickelt und wurde ursprünglich sowohl mit dem UWash IMAP Server v11.241 als auch dem Cyrus IMAP Server v.1.5.14 getestet. Inzwischen wird es hauptsächlich mit UW-IMAP 12.250 entwickelt. Es funktioniert auch mit Cyrus 1.6.11 mehr oder weniger korrekt, lediglich das Menü zur Auswahl von Ordnern reagiert damit ein klein wenig eigensinnig.

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

### Anmeldung am Server

Mutt unterstützt drei Methoden, sich bei einem IMAP-Server anzumelden: 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 muß erst in die stabile Version von Mutt integriert werden). Mutt wird ausprobieren, welche dieser Methoden der Server anbietet, wobei es die sichersten bevorzugt. Das heißt, daß Mutt erst versuchen wird, GSSAPI Authentifizierung (d.h. Kerberos V) zu verwenden, dann CRAM-MD5 und erst dann LOGIN (die schlimmstmögliche Wahl - Dein Passwort geht dabei im Klartext durchs Netz).

Es gibt einige Variablen, um den Anmeldevorgang zu steuern:

- $imap_user - bestimmt den Benutzernamen, unter dem (unabhängig von der Methode) die Anmeldung auf dem IMAP-Server versucht wird.
- $imap_pass - das Passwort für die Anmeldung über die LOGIN-Methode. Wenn diese Variable gesetzt ist und die anderen Methoden nicht funktionieren, verschickt Mutt das Passwort im Klartext, ohne vorher nachzufragen. Setze diese Variable also nicht, falls Du also GSSAPI oder CRAM-MD5 verwenden willst.
- $imap_cramkey - das Geheimnis für die CRAM-MD5 Authentifizierung (d.h. Dein CRAM-Passwort). Wenn diese Variable nicht gesetzt ist und der Server CRAM-MD5 unterstützt, fragt Mutt das Passwort interaktiv ab.

Hinweis: Die IMAP-Unterstützung ist nur sehr eingeschränkt getestet worden, weil sie nur von wenigen Entwicklern verwendet wird. Sie sollte mit den oben genannten Referenz-Servern funktionieren. Wer jedoch ein stabileres Programm für den Zugriff auf IMAP-Mailboxen braucht, sollte die Verwendung eines spezielleren Programms wie fetchmail in Betracht ziehen.

## 4.12 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, daß 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