mail, mailx, Mail

Aus LinuxUser 03/2003

mail, mailx, Mail

Minimal mit mail

Das Programm mail bietet zwar auf den ersten Blick längst nicht den Komfort anderer Clients unter Linux, hat aber neben den Standardfunktionen eine ganze Reihe Optionen, die es zur ersten Wahl bei einem Kommandozeilen-gesteuerten Einsatz (z. B. in Skripten) machen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

mail (auch mailx oder Mail) finden Sie je nach Distribution im Verzeichnis /usr/bin/ oder /bin. Ohne zusätzliche Parameter gestartet, landen Sie in einer interaktiven Umgebung. Das Programm präsentiert im Terminal-Fenster eine numerierte Liste aller Mails aus der Inbox (auf den meisten Systemen die Datei /var/mail/user oder /var/spool/mail/user). Listing 1 zeigt einen solchen Mail-Ordner. Eine Übersicht über alle interaktiven Kommandos erhalten Sie mit dem ?. Um eine Mail zu lesen, geben Sie einfach deren Nummer an und drücken [Return]. Die nächste Nachricht wird mit dem Pluszeichen (+) angesprungen, und zurück geht es mit Minus (). Haben Sie die Übersicht verloren, weil die E-Mails aus dem Fenster herausgescrollt sind, hilft header weiter.

Listing 1

Inbox in <I>mail<I>

huhn@asteroid:~$ mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/huhn": 4 messages
>   1 philip@blabl.ub    Sat Jan 11 01:20   58/2241  Cheap places in bxl
    2 hjurzik@linux-use  Fri Jan 24 15:13   35/1329  Huhu
    3 hgesser@linux-use  Thu Jan 16 23:22   43/2059  Artikel "mail"
>N  4 Antony@Rockstone.  Mon Jan 20 21:50   45/1687  Information about mail or
& 4
Message 4:
From Antony@Rockstone.co.uk  Mon Jan 20 21:50:15 2003
[…]
To: Heike Jurzik
Subject: Information about mail or mailx?
Date: Mon, 20 Jan 2003 20:50:02 +0000
[…]

Mit d (wie “delete”) löschen Sie Mails. Das können Sie einzeln für jede Mail tippen oder als Parameter direkt eine Liste von Nachrichten übergeben. Während d 1 2 die ersten beiden Mails löscht, entfernt d 1-5 die ersten fünf. Die gesamte Inbox lässt sich mit d @L: * leerfegen. Soll das vor Beenden des Programms wieder rückgängig gemacht werden, hilft u (für “undelete”) weiter. Auch hier dürfen Mails mit Ziffernkombinationen oder dem Sternchen angesprochen werden. Eine Alternative dazu ist, das Programm statt mit q (für “quit”) mit x (wie “exit”) zu beenden.

Ab die Post!

Eine gelesene Nachricht beantworten Sie mit r (wie “reply”), eine neue Mail hingegen beginnen Sie mit m gefolgt von der Adresse. Nun darf beliebig Text eingegeben werden; sobald Sie eine Zeile, die nur einen Punkt . enthält, mit [Return] abschließen, interpretiert das Programm dies als Ende der Mail:

& m hjurzik@linux-user.de
Subject: test
Huhu
alles klar? Ende der Mail wird mit einem . und [Return] markiert:
.
Cc:
&

Im Feld Cc: (Carbon Copy) geben Sie mögliche weitere Adressaten an.

Da der voreingestellte Editor eher umständlich zu bedienen ist, können Sie direkt nach der Eingabe des “Subject” mit ~v gefolgt von [Return] auf den eigenen Lieblings-Editor umschalten. Hier wird die Umgebungsvariable $VISUAL ausgewertet. Möchten Sie also mit dem Editor vim die Nachrichten verfassen, setzen Sie die Variable in der Standard-Shell bash mit dem Aufruf:

huhn@asteroid:~$ export VISUAL=vim

Anschließend wird mit ~v umgeschaltet. Nach Verlassen des Editors geht es zurück ins Programm:

Subject: test
~v
(continue)

Jetzt fehlt noch der Punkt, um die Mail abzuschicken. Neben der Wahl des Editors bietet mail noch weitere Kommandos, die nach Eingabe des “Subject” bei der Mail-Erstellung mit einer Tilde eingeleitet werden (s. Tabelle 1).

Tabelle 1: Kommandos während der Mail-Erstellung

~? Alle verfügbaren Kommandos auflisten
~! Kommando in der Shell ausführen
~t <I>name(n)<I> Name(n) im To-Feld hinzufügen
~s <I>titel<I> Inhalt des Subject-Feldes auf neuen titel setzen
~b <I>name(n)<I> Ein Bcc-Feld (“Blind Carbon Copy”) erstellen
~c <I>name(n)<I> Mail-Adressen zum Cc-Feld hinzufügen
~q Verfassen der aktuellen Mail abbrechen
~r <I>datei<I> Den Inhalt von datei in die Mail einfügen

Rohrpost

mail zeigt seine wirklichen Stärken, wenn es auf der Kommandozeile mit allen Parametern gefüttert zum Einsatz kommt:

huhn@asteroid:~$ echo "hallo Huhniversum" | mail -s "Info" hjurzik@linux-user.de

Hier wird der Text “hallo Huhniversum” mit dem Kommando echo nicht auf die Standardausgabe (das Terminal), sondern per Pipe () an das Kommando mail übergeben. Der Parameter -s setzt das Subject. Zusätzlich dürfen mit -b “name1, name2”Bcc-Empfänger und mit -c “name1, name2”Cc-Empfänger angegeben werden. Die Adressaten werden in einer durch Kommata getrennten Liste definiert. Fügen Sie den Parameter -v (für “verbose”) hinzu, erhalten Sie Statusmeldungen über das, was im Hintergrund abläuft (siehe Listing 2).

Listing 2

Hintergrundinfos

huhn@asteroid:~$ echo "hallo Huhniversum" | mail -v -s "Info" hjurzik@linux-user.de
hjurzik@linux-user.de… Connecting to [127.0.0.1] port 587 via relay…
220 asteroid.cologne.de ESMTP Sendmail 8.12.3/8.12.3/Debian -4; Tue, 28
Jan 2003 17:43:27 +0100; (No UCE/UBE) logging access from:
localhost(OK)-huhn@localhost [127.0.0.1]
>>> EHLO asteroid.cologne.de
250-asteroid.cologne.de Hello huhn@localhost [127.0.0.1], pleased to meet you
[…]
250 2.1.5 <hjurzik@linux-user.de>… Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 h0SGhRW7001354 Message accepted for delivery
hjurzik@linux-user.de… Sent (h0SGhRW7001354 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 asteroid.cologne.de closing connection

Um einen längeren Mail-Text von der Kommandozeile aus zu verschicken, lassen Sie mail eine Datei aus der Standardeingabe lesen:

huhn@asteroid:~$ mail -s "test" hjurzik@linux-user.de < datei

Dieser Aufruf entspricht einem cat dateimail …, ist aber kürzer.

Geskriptet

Verglichen mit anderen Mail-Programmen schneidet mail eher schlecht ab, wenn es um Komfort oder Funktionsumfang geht. Dennoch erweist sich das Kommandozeilen-Tool als sehr praktisch, wenn es um das Einbinden in Shell-Skripte geht. Listing 3 zeigt ein kleines Shell-Skript, das die Home-Verzeichnisse aller Benutzer anschaut und jedem Benutzer eine Mail mit dem aktuellen Speicherverbrauch zuschickt.

Listing 3

Plattenverbrauch-Hinweis

#!/bin/bash
for homedir in /home/@L: *; do
  username=`basename $homedir`
  diskusage=`du -sm $homedir | cut -f 1`
  message="Hinweis: Ihr Home-Verzeichnis $homedir belegt zur Zeit $diskusage MByte Plattenkapazität."
  echo $message | mail -s "Systemhinweis" $username@localhost
done
LinuxUser 03/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben