Um eine E-mail über die Kommandozeile ins freie zu entlassen bieten sich verschiedene Möglichkeiten, welche ich kurz hier aufführen möchte.
Die simpelste Variante stellt eine Verbindung zum Mail-Server via telnet auf Port 25 dar:
1 | $ telnet mail.example.com 25
|
Auf den meisten Systemen wird telnet aus vielfältigen Gründen allerdings nicht vorhanden sein, weshalb es noch die Möglichkeit zur Nutzung von netcat gibt.
1 | $ netcat -v mail.example.com 25
|
Egal für welche Variante wir uns entscheiden sollten, der Ablauf sieht für beide folgendermaßen aus:
1 2 3 4 | Trying mail.example.com... Connected to mail.example.com. Escape character is '^]'. 220 mail.exmaple.com ESMTP |
Wir begrüßen den Mailserver mit HELO client.exmaple.com
. Worauf uns
der Mailserver mit 250 mail.example.com
willkommen heisst.
Anschließend teilen wir unserem dienstbaren Freund
mit MAIL FROM:<janedoe@exmaple.com>
mit von wem unsere E-Mail stammt.
Als Bestätigung erhalten wir ein 250 ok
.
Nun teilen wir dem Mail-Server noch mit an wen wir unsere Post richten
möchten: RCPT TO:<johndoe@example.com>
. Falls der Empfänger dem
Mail-Server genehm sein sollte erhalten wir wieder ein 250 ok
.
Nachdem wir die Formalitäten hinter uns gebracht haben geben wir unser
Mitteilungsbedürfnis mit DATA
preis. Gespannt meldet sich der
Mail-Server mit einem 354 go ahead
zurück und wartet freudig auf
unsere Nachricht:
1 2 3 4 5 6 | subject: Heyhoo Hallo John! Toll Dich kennengelernt zu haben. Liebe Grüße Jane . |
Die Kenntnisnahme unserer Nachricht bekommen wir mit
250 ok 1229451861 qp 18424
vom Mail-Server quittiert, worauf wir uns
mit einem QUIT
verabschieden und von dannen ziehen.
Für die Verwendung in Shell-Skripten gibt es noch folgenden Schnipsel, welcher die o.g. Kommandos noch mal schön zusammenfasst.
1 2 3 4 5 6 7 8 9 10 | #!/usr/bin/env bash netcat localhost 25 << EOF HELO client.example.com MAIL FROM: <janedoe@example.com> RCPT TO: <johndoe@example.com> DATA … . QUIT EOF |