GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Senden Sie E-Mails von der Befehlszeile mit einem externen SMTP-Server unter Linux

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.


Linux
  1. Wie sende ich eine HTML-E-Mail mit dem Linux-Befehl „mail“?

  2. Migrieren eines Linux-Servers über die Befehlszeile

  3. Wie sende ich E-Mails von der Befehlszeile aus?

  4. E-Mail vom Linux-Terminal in einer Zeile senden

  5. Wie sende ich über die Befehlszeile in Linux eine Nachricht an meinen socket.io-Websocket?

So senden Sie eine E-Mail mit Dateianhang von der Befehlszeile aus

mailx-Befehl unter Linux – Internet-Mail senden und empfangen

Senden Sie E-Mail in Linux von der Befehlszeile aus

So überwachen Sie den Zustand von Linux-Servern mit Befehlszeilentools

Mutt, Mail und Telnet – Senden Sie E-Mails von der Linux-Befehlszeile oder dem Terminal

Wie sende ich eine Raw-Mail-Nachricht unter Linux?