Die Post ist da!

Mail auf der Kommandozeile

01.05.2008 Der schlanke Konsolen-Mailclient Mailx sieht auf den ersten Blick nicht sehr komfortabel aus, hat aber gerade beim Einsatz in Skripten seine Daseinsberechtigung.

Es muss nicht immer Thunderbird, Evolution oder KMail sein. Zwar bieten die großen grafischen Mailclients dem Benutzer viel Komfort, doch es gibt Situationen, in denen ein Einsatz auf der Kommandozeile gefragt ist. Sowohl das Allroundtalent Mutt [1] als auch das sehr schlanke Programm Mailx bieten Optionen für den Batchbetrieb auf der Shell.

Bei den meisten Distributionen zählt Mailx zum Standardumfang. Sowohl OpenSuse als auch Debian enthalten das gleichnamige Paket auf den Installationsmedien. Während unter Open Suse /bin/mail als Symlink auf /usr/bin/mailx verweist, operieren Debian-Systeme anders herum: Hier verweist /usr/bin/mailx auf /usr/bin/mail. Die folgenden Kommandos und Befehlsoptionen wurden alle unter Debian 4.0 "Etch" getestet.

Mailx interaktiv

Starten Sie den Mailclient über den Befehl mailx auf der Shell, so landen Sie in einer interaktiven Umgebung. Der Client präsentiert den Inhalt der Inbox (Standard auf den meisten Systemen: /var/mail/Benutzername ). Dort sehen Sie unter anderem eine Übersicht der Nachrichten mit Absender, Datum, Größe und dem Betreff (Abbildung 1).

Abbildung 1: Die Post ist da: Mailx präsentiert die Inbox schlicht und übersichtlich.

Mittels [?],[Eingabe] verschaffen Sie sich einen schnellen Überblick über die Bedienung des Mailers. Eine Nachricht zeigen Sie am einfachsten durch Angabe der Nummer, gefolgt von [Eingabe] dar. Mit der Eingabetaste blättern Sie auch nach unten. Wahlweise verwenden Sie zum Blättern die Pfeiltasten sowie [Bild-auf] und [Bild-ab]; ein Druck auf [Q] beendet die Darstellung und führt zum Hauptbildschirm zurück. Sind die Nachrichten aus dem Fenster herausgescrollt, blendet [H],[Eingabe] wieder die Übersicht ein.

Zum Beenden der Sitzung kennt Mailx zwei Varianten: [X],[Eingabe] beendet den Mailclient, ohne gelesene Mails aus der Inbox zu entfernen. Dagegen meldet [Q],[Eingabe]:

Saved 2 messages in /home/petrosilie/mbox
Held 3 messages in /var/mail/petrosilie

Zum Löschen von Nachrichten dient [D],[Eingabe]. Auch hier entscheiden Sie über die entsprechende Nummer gezielt, welche Nachrichten verschwinden sollen. So löscht der Befehl d 1 3 die erste und dritte Nachricht. Einen Bereich wählen Sie zum Beispiel über d 1-10 (entfernt die ersten zehn Mails) oder auch d * (löscht alle Nachrichten) aus. Haben Sie aus Versehen etwas Falsches gelöscht, hilft u (wie "undelete") weiter. Das Kommando versteht die selben Ziffernkombinationen wie d.

Über [R],[Eingabe] beantworten Sie eine Mail, und mit [M] verfassen Sie eine neue Nachricht. Geben Sie direkt dahinter die Mailadresse an:

m petronella@huhnix.org

Danach fordert Mailx Sie auf, den Betreff einzugeben, und Sie können die eigentliche Nachricht verfassen. Sobald Sie fertig sind, geben Sie einen Punkt gefolgt von [Eingabe] ein. Danach können Sie hinter Cc: ("Carbon Copy") weitere Empfänger eintragen:

Cc:ole@huhnix.org,max@huhnix.org

Wer gerne mit seinem Lieblingseditor Mails verfasst, gibt direkt nach dem Subject ~v ein. Mailx wertet dann die Umgebungsvariable [2]$VISUAL aus, um den gewünschten Editor zu identifizieren. Arbeiten Sie also gerne mit Joe [3], dann richten Sie diesen Editor über export VISUAL=joe für Mailx ein.

Auf Kommando

Flexibel und schnell spielt Mailx seine ganze Stärke auf der Shell aus. Der generelle Aufruf lautet:

mailx [Optionen
] user
@ziel
.tld

In den Optionen definieren Sie beispielsweise nach -s den Betreff der Mail (achten Sie bei der Verwendung von Leer- und Sonderzeichen auf Anführungszeichen), über -b Mailadressen für das Bcc-Feld ("Blind Carbon Copy"), über -c weitere Empfänger per Cc: und so weiter.

Fehlt nur noch der Mailbody, also der eigentliche Text der Nachricht: Handelt es sich um eine kurze Nachricht, hilft echo weiter. Handelt es sich um einen längeren Text, lohnt es sich, diesen in eine Datei auszulagern. Diese lassen Sie Mailx dann aus der Standardeingabe [4] einlesen.

Bei der Fehlersuche hilft der Parameter -v weiter. Auf Debian-Systemen meldet Mailx anschließend, dass es dem Benutzer einen entsprechenden Statusbericht zustellt. Der findet sich kurz danach in der Inbox.

Einige typische Beispiele für die geschilderte Verwendung der Mailx-Optionen finden Sie im Kasten "Mailx-Optionen nutzen".

Mailx-Optionen nutzen

Kopie versenden

$ mailx -s 'Hallo!' petronella@huhnix.org -c petrosilie@huhnix.org […]

Nachricht mit echo

$ echo 'Hallo, hier ist ein Test.' | mailx -s 'Hallo!' petronella@huhnix.org -c petrosilie@huhnix.org

Nachrichtentext auslagern

$ mailx -s 'Hallo!' petronella@huhnix.org < mail.txt

Fehlersuche per Statusbericht

$ echo 'Hallo, hier ist ein Test.' | mailx -v -s 'Hallo!' petronella@huhnix.org
Mail Delivery Status Report will be mailed to <huhn>.

Attachments

Etwas komplizierter gestaltet sich das Ganze, wenn Sie einen Anhang an die Nachricht anfügen möchten. Hier führt nur ein Umweg über Uuencode zum Ziel. Mit diesem Werkzeug wandeln Sie Binärdateien wie Bilder oder ausführbare Programme in druckbare ASCII-Zeichen um. Danach kann die Textdatei auf die Reise gehen (Kasten "Attachments verschicken", oben). Der Empfänger sieht die Datei anschließend als Textblock zwischen den Schlüsselwörtern begin und end. Mit Uudecode geht's in die andere Richtung: Das Kommando uudecode attach_bild.txt hinterlässt als Ergebnis die Datei hej.jpg.

Einfacher wird das Ganze, wenn Sie Mutt im Batchmodus einsetzen. Dieser Mailclient bietet nicht nur die schon erwähnten Optionen -s für den Betreff, -c für Kopien sowie -b für Blindkopien, sondern darüber hinaus den Parameter -a, mit dem Sie ganz unkompliziert Anhänge verschicken (Kasten "Attachments verschicken", unten).

Attachments verschicken

Attachments mit Uuencode und Mailx

$ uuencode hej.jpg hej.jpg > attach_bild.txt
$ mailx -s 'Foto' petronella@huhnix.org < attach_bild.txt

Attachments mit Mutt

$ mutt -s 'Foto' -a hej.jpg petronella@huhnix.org < mail.txt
Infos

[1] Mutt: Karl Deutsch, "Handgestrickt", LinuxUser 05/2007, S. 62, http://www.linux-user.de/ausgabe/2007/05/062-mutt/

[2] Umgebungsvariablen: Heike Jurzik, "Gut eingerichtet", LinuxUser 05/2007, S. 88, http://www.linux-user.de/ausgabe/2007/05/088-zubefehl/

[3] Editoren auf der Shell: Heike Jurzik, "Maximal minimalistisch", LinuxUser 04/2007, S. 94, http://www.linux-user.de/ausgabe/2007/04/094-zubefehl/

[4] Ein-/Ausgabeumleitung: Heike Jurzik, "Datenfluss", LinuxUser 07/2007, S. 94, http://www.linux-user.de/ausgabe/2007/07/094-zubefehl/

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare