Mails von der bash senden

Einfache Emails von der bash aus schicken bzw. mittels shellscripts:

   $ mail root < /tmp/db_reorg.log
   $ echo "Komme zum Abendessen!" | mail sylvia@home.de
   $ echo "Heinz kommt auch mit" |
       mail -c johana -s "Aw:Komme zum Abendessen!" sylvia@home.de

Das Mail Kommendo akzeptiert die folgenden Parameter,

-s subject Betreff

-c address sendet eine Kopie der Email an Benutzer X

-b address sendet eine blind carbon copy der Email an Benutzer X

 

Datei Anhänge

uuencode

Binärdateien per Mail zu senden ist nicht sinnvoll, man könnte zwar eine Datei als Anhang so versenden,

mail -s "bild vom Abendessen" sylvia@home.de < essen.jpeg

aber die Wahrscheinlichkeit, dass diese unbrauchbar ankommt ist sehr hoch.
Beim versenden der Emails werden diese von einen Server zum nächsten gereicht. Jeder davon verändert die Email, d.h. entfernen von Null Bytes (ASCII code 0), umwandeln der end-of-line character LF (“line-feed”, ASCII code 12) in ein lokal passendes Format (e.g. CR LF), oder es werden anführende Leerzeichen und TABS entfernt.

Da nur sehr wenige Zeichen sicher nicht verändert werden, ist die traditionelle Lösung die Email vom Binärformat in ein Textformat für die sichere Übertragung umzuwandeln. Das Programm welches dafür benutzt wird heist uuencode (“UNIX to UNIX encoding”), zum decodieren der Emailheist das Programm uudecode.

 

$ uuencode essen.jpeg essen.jpeg | mail sylvia@home.de

Mit Text und Betreff:

$ (cat mailtext; uuencode essen.jpeg essen.jpeg) |mail -s "bild vom Abendessen" sylvia@home.de

ACHTUNG: Der Dateiname essen.jpeg erscheint zweimal in dem uuencode Befehl: der erse spezifiziert die Input Datei, die zweite ist für die Gegenseite.

mime

Vorteile:

  • vielseitige Dateimöglichkeiten, u.a. Bilder, Audio Dateien
  • mehr als ein Anhang pro Email
  • multi-part Nachrichten

Mutt ist ein interaktiver textbasierender Emailclient.

$ mutt -s "Geburtstags Feier" -a citymap.jpg all@freunde.de < einladung.txt
  • Den Empfänger (“all@freunde.de”)
  • Den Body der Email (gelesen von der Standard Eingabe, hier umgeleitet von der Datei “einladung.txt”)
  • Ein Anhang (mit Option -a)
  • Den Betreff (option -s)

Der interessanteste Teil ist die Option -a, welche für den Anhang verantwortlich ist. Die option -a kann mehrfach angehängt werden.

Wenn nur ein Anhang ohne Betreff gesendet werden soll kann man folgendermassen vorgehen:

$ mutt -a syslogs.tar.gz admin@domain.org < /dev/null

oder

$ echo | mutt -a syslogs.tar.gz admin@domain.org