Sendmail E-Mail auf der Linux Konsole erzeugen
Manchmal ist es von Nöten Systemnachrichten mittels Skript zu erzeugen und an sendmail zu übergeben. Viele vergessen jedoch die notwendigen E-Mail Header mit in die E-Mail einzubauen. Dies ist in erster Linie kein Problem, solange die E-Mail nur intern weitergereicht wird. Problematisch wird es wenn man an Externe Anbieter verschickt. Die meisten behandeln E-Mails ohne richtigen Header als Spam oder lehnen (bouncen) sie gleich ab.
Was alles in den E-Mail Header rein sollte steht z.B. auf der Wikipedia Seite.
Um das Problem zu lösen bringt “sendmail” die Option “-t ” mit. Welche bedeutet, alle E-Mail Header Infos aus einer Datei zu holen. Die Datei könnte folgendermaßen aussehen.
Sendmail E-Mail Header
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: admin@domain.de
Reply-To: antwort-adresse@domain.de
Subject: Text Test =?UTF-8?Q?f=C3=BCr?= Umlaute
To: admin@domain.de
Hallo hier ist ein Text Test "ü ä ö" bzw ß!
Wird der Inhalt der E-Mail bzw. der Betreff korrekt angezeigt,
dann wurde die E-Mail richtig erzeugt.
Die Leerzeile zwischen Header und Text dient als Trenner, sodass
sendmail automatisch erkennt was ist Header und was ist Text.
Sendmail E-Mail Versand
Den gesamten Inhalt speichert man z.B. als “nachricht” ab und schickt diese mit folgenden Befehl ab.
cat nachricht | sendmail -t -f admin@domain.de
E-Mail Envelope From und Header From
Der Envelope From ist der Absender welcher mit der Option “-f” erzeugt wird. Dieser Absender ist der eigentlich wichtige beim E-Mail Versand. Zum Envelope From werden auch etwaige bounces geschickt. Wird die Option weggelassen, erzeugt sendmail als Absender user@server-hostname.de. Dies kann zufolge haben dass bei Unzustellbarkeit der E-Mail die bounces im Nichts versinken, wenn der Absender unbekannt ist.
Der Header From wird bei einem E-Mail Client als Absender angezeigt. Kann hier komplett vom Envelope From abweichen.
E-Mail Reply-To und To
Unter “Reply-To” kann man eine Antwort E-Mail Adresse angeben. Wenn man auf antworten klickt, wird automatisch dieser Empfänger ausgewählt.
Bei “To” gibt man den eigentlichen Empfänger der E-Mail an.
Subject/Betreff Kodierung
Damit Umlaute und bestimmte Sonderzeichen im E-Mail Subject/Betreff auf dem E-Mail Client auch richtig angezeigt werden, muss hier eine Kodierung her.
Eingeleitet wird die Kodierung mit dem Befehl:
=?UTF-8?Q?
Und endet mit:
?=
Das “Q” zwischen den Fragezeichen bedeutet die Art der Kodierung der Zeichen. In dem Fall Quoted-Printable.
Ein “B” würde für base64 stehen. Der komplette String sehe dann so aus:
Subject: Text Test =?UTF-8?B?ZsO8cgo=?= Umlaute
Um das Wort “für” in base64 zu kodieren benutzt man den Linux Befehl:
echo für | openssl base64 -e