Mail über SMTP-Server senden
Der standardmäßige E-Mail-Befehl auf dem Linux-Terminal verwendet den lokalen SMTP-Server (MTA) auf Port 25, um E-Mails zu senden. Manchmal müssen Sie jedoch einen externen SMTP-Server angeben, der zum Senden von E-Mails verwendet werden soll.
Sie haben beispielsweise gerade einen SMTP-Server wie Postfix oder Exim eingerichtet und möchten ihn dann testen, um zu überprüfen, ob er E-Mails ordnungsgemäß empfängt und weiterleitet oder nicht.
Das Versenden von E-Mails über die Befehlszeile mit diesem externen SMTP-Server ist schnell möglich, anstatt einen E-Mail-Client wie Thunderbird auf Ihrem lokalen Rechner einrichten zu müssen.
Es gibt zwei Befehlszeilenprogramme namens mailx und swaks, die zum Senden von E-Mails über einen externen SMTP-Server verwendet werden können. Diese sind sehr nützlich, wenn Sie E-Mails aus einem Bash-Skript automatisiert versenden müssen.
1. mailx-Befehl
Der mailx-Befehl ist in vielen verschiedenen Paketen wie mailutils, heirloom-mailx usw. verfügbar. Zuerst müssen Sie den aptitude-Befehl verwenden, um das für Ihr System verfügbare mailx-Paket zu suchen. Hier ist ein Beispiel
$ aptitude search mailx p bsd-mailx - simple mail user agent p bsd-mailx:i386 - simple mail user agent v mailx - v mailx:i386
Um herauszufinden, welchen mailx-Befehl Ihr System verwendet, führen Sie den Befehl readlink aus. Hier ist eine Beispielausgabe.
$ readlink -f /usr/bin/mailx /usr/bin/bsd-mailx $ readlink -f /usr/bin/mailx /usr/bin/mail.mailutils
Nicht alle mailx-Varianten können externe SMTP-Server zum Versenden von E-Mails verwenden. Nur derjenige, der aus dem S-Nail-Paket kommt (gezogen von Heirloom-Mailx), kann es tun.
Wir werden heirloom-mailx verwenden, da es erlaubt, SMTP-Verbindungsdetails in einem einzigen Befehl anzugeben und schnell eine E-Mail zu senden.
$ sudo apt-get install heirloom-mailx
Senden Sie jetzt eine E-Mail mit einem externen SMTP-Server wie diesem -
echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]
Hier ist eine Schritt-für-Schritt-Version desselben Befehls -
$ echo "This is the message body and contains the message" | mailx -v \ > -r "[email protected]" \ > -s "This is the subject" \ > -S smtp="mail.example.com:587" \ > -S smtp-use-starttls \ > -S smtp-auth=login \ > -S smtp-auth-user="[email protected]" \ > -S smtp-auth-password="abc123" \ > -S ssl-verify=ignore \ > [email protected]
Stellen Sie sicher, dass Sie die richtigen Einstellungen verwenden, wie Portnummer, Authentifizierungsmechanismus usw. Der Befehl würde eine ausführliche Ausgabe erzeugen, die alle Details der SMTP-Kommunikation enthält, die dahinter stattfindet, was das Testen und Debuggen sehr einfach macht.
Hinweis: Das Paket heirloom-mailx wurde ab Ubuntu Version 18 entfernt. Jetzt müssen Sie das S-Nail-Paket installieren.
$ sudo apt-get install s-nail
Der Befehl s-nail ist derselbe wie der Befehl heirloom mailx. Nur der Name ist anders. Führen Sie den gleichen Befehl oben aus, indem Sie mailx durch s-nail ersetzen, und es sollte funktionieren.
Wenn Sie die neueste Version von s-nail (14.9.x) verwenden, kann die Syntax zum Angeben der SMTP-Serverdetails etwas anders sein. Überprüfen Sie das neueste Handbuch hier
http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html
Sehen Sie sich hier den vorherigen Beitrag zum mailx-Befehl an -
9 mail/mailx-Befehlsbeispiele zum Senden von E-Mails von der Befehlszeile unter Linux
2. Swaks-Befehl
Swaks (Schweizer Taschenmesser für SMTP) ist ein einfaches Befehlszeilentool, mit dem SMTP-Server getestet werden können, um zu überprüfen, ob sie ihre Arbeit richtig machen. Es unterstützt auch TLS.
Installieren Sie swaks unter Ubuntu/Debian mit dem folgenden Befehl
$ sudo apt-get install swaks
Senden Sie nun die E-Mail
$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls
Alle Optionen sind ziemlich selbsterklärend. Die Option „--server“ gibt den zu verwendenden externen SMTP-Server an, „--auth“ gibt die Art der Authentifizierung an. Die Option "-tls" weist swaks an, STARTTLS zu verwenden.
Weitere Optionen finden Sie in der Manpage.