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

9 mail/mailx-Befehlsbeispiele zum Senden von E-Mails von der Befehlszeile unter Linux

E-Mails von der Kommandozeile aus versenden

Der Mail-Befehl ist ein wesentlicher Befehl, der auf jedem Linux-Server verfügbar sein sollte, damit verschiedene Dienste und andere Webanwendungen E-Mails generieren und übertragen können.

In einem früheren Beitrag zum Mail-Befehl haben wir gesehen, wie der Mail-Befehl verwendet werden kann, um E-Mails von der Befehlszeile auf Ihrem Linux-Server zu senden.

In diesem Tutorial verwenden wir eine erweiterte Version des Mail-Befehls. Es heißt mailx (oder einfach mail, wenn es installiert ist) und kann viel mehr tun als der ältere mail-Befehl aus dem gnu mailutils-Paket.

Wie funktioniert es

Der Befehl mail/mailx benötigt einen laufenden lokalen SMTP-Server (MTA), um die E-Mails zuzustellen. Der von der E-Mail eingeschlagene Weg sieht in etwa so aus -

mail -> sendmail -> local MTA -> recipient MTA [Inbox]

Der Empfänger-MTA wäre der SMTP-Server von Google Mail, wenn Ihr Empfänger beispielsweise jemand bei gmail.com ist. Für den lokalen MTA müssen Sie einen SMTP-Server wie Postfix installieren. Eine Basisinstallation von Postfix mit minimaler Konfiguration würde in den meisten Fällen funktionieren.

Installieren Sie den mailx-Befehl

Auf Ubuntu/Debian-basierten Systemen ist der mailx-Befehl in 2 verschiedenen Paketen verfügbar -

1. Erbstück-Mailx
2. bsd-mailx

Wir werden das heirloom-mailx-Paket verwenden, weil es mehr Funktionen und Optionen hat.
Auf CentOS/Fedora-basierten Systemen gibt es nur ein Paket namens "mailx", das das heirloom-Paket ist.

Um herauszufinden, welches Mailx-Paket auf Ihrem System installiert ist, überprüfen Sie die Ausgabe von "man mailx" und scrollen Sie bis zum Ende herunter, und Sie sollten einige nützliche Informationen sehen.

# ubuntu/debian
$ sudo apt-get install heirloom-mailx
# fedora/centos
$ sudo yum install mailx

Mit dem mailx-Befehl

Nach der Installation kann auf den mailx-Befehl direkt mit dem Namen mail verwiesen werden, also geben Sie diesen einfach in die Befehlszeile ein.

1. Einfache E-Mail

Führen Sie den folgenden Befehl aus, und dann wartet mailx darauf, dass Sie die Nachricht der E-Mail eingeben. Sie können die Eingabetaste für neue Zeilen drücken. Wenn Sie mit der Eingabe der Nachricht fertig sind, drücken Sie Strg+D und mailx zeigt EOT.

an

Danach liefert mailx die E-Mail automatisch an das Ziel.

$ mail -s "This is the subject" [email protected]
Hi someone
How are you
I am fine
Bye
EOT

2. Nachricht aus einer Datei übernehmen

Der Nachrichtentext der E-Mail kann auch aus einer Datei entnommen werden.

$ mail -s "This is Subject" [email protected] < /path/to/file

Die Nachricht kann auch mit dem echo-Befehl -

weitergeleitet werden
$ echo "This is message body" | mail -s "This is Subject" [email protected]

3. Mehrere Empfänger

Um die E-Mail an mehrere Empfänger zu senden, geben Sie alle E-Mails durch ein Komma getrennt ein

$ echo "This is message body" | mail -s "This is Subject" [email protected],[email protected]

4. CC und BCC

Die Optionen „-c“ und „-b“ können verwendet werden, um CC- bzw. BCC-Adressen hinzuzufügen.

$ echo "This is message body" | mail -s "This is Subject" -c [email protected] [email protected]

5. Name und Adresse des Absenders angeben

Verwenden Sie die Option „-r“, um einen „FROM“-Namen und eine Adresse anzugeben. Dem Namen sollte die Adresse folgen, die in "<>".

eingeschlossen ist
$ echo "This is message body" | mail -s "This is Subject" -r "Harry<[email protected]>" [email protected]

6. "Reply-To"-Adresse angeben

Die Antwortadresse wird mit der internen Optionsvariable "replyto" mit der Option "-S" gesetzt.

# replyto email
$ echo "This is message" | mail -s "Testing replyto" -S replyto="[email protected]" [email protected]
# replyto email with a name
$ echo "This is message" | mail -s "Testing replyto" -S replyto="Mark<[email protected]>" [email protected]

7. Anhänge

Anhänge können mit der Option "-a" hinzugefügt werden.

$ echo "This is message body" | mail -s "This is Subject" -r "Harry<[email protected]>" -a /path/to/file [email protected]

8. Externen SMTP-Server verwenden

Dies ist eine exklusive Funktion, die Sie nur mit heirloom mailx und nicht mit bsd mailx oder dem mail-Befehl von gnu mailutils oder dem mutt-Befehl erhalten.

Der Befehl mailx kann einen externen SMTP-Server verwenden, um die Nachricht weiterzuleiten. Die Syntax ist etwas langatmig, aber sinnvoll.

$ 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 Aufschlüsselung

$ 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]

Sie können die SMTP-Server von Google Mail verwenden und E-Mails über Ihr Google Mail-Konto senden. Das ist so cool!
Speziell für Google Mail müssten Sie weniger sichere App-Einstellungen aktivieren, bevor Sie solche E-Mails senden können.

9. Ausführlich - SMTP-Kommunikation beobachten

Wenn Sie externe SMTP-Server verwenden, können Sie die gesamte SMTP-Kommunikation überwachen, die im Hintergrund ausgeführt wird. Dies ist besonders beim Testen oder Debuggen von SMTP-Servern nützlich.

$ echo "This is the message body and contains the message from heirloom mailx" | mailx -v -s "This is the subject" -S smtp="smtp.gmail.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="mypassword" -S ssl-verify=ignore [email protected]
Resolving host smtp.gmail.com . . . done.
Connecting to 74.125.68.109:587 . . . connected.
220 mx.google.com ESMTP je4sm32812877pbd.94 - gsmtp
>>> EHLO enlightened
250-mx.google.com at your service, [122.163.43.21]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO enlightened
250-mx.google.com at your service, [122.163.43.21]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
>>> AUTH LOGIN
334 VXNlcmU6
>>> YmnbWFpbC5jb20=
334 UGFzcmQ6
>>> KnJgzKg==
235 2.7.0 Accepted
>>> MAIL FROM:<[email protected]>
250 2.1.0 OK je4sm32812877pbd.94 - gsmtp
>>> RCPT TO:<[email protected]>
250 2.1.5 OK je4sm32812877pbd.94 - gsmtp
>>> DATA
354  Go ahead je4sm32812877pbd.94 - gsmtp
>>> .
250 2.0.0 OK 1417930703 je4sm32812877pbd.94 - gsmtp
>>> QUIT
221 2.0.0 closing connection je4sm32812877pbd.94 - gsmtp

Fehlerbehebung

Falls die Mails nicht richtig zugestellt werden, müssen Sie einige Dinge überprüfen. Prüfen Sie zunächst, ob lokal ein SMTP-Server (MTA) läuft. Das kann der netstat-Befehl erkennen

$ sudo netstat -ltnp | grep 25
[sudo] password for enlightened:
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2541/master
tcp6       0      0 :::25                   :::*                    LISTEN      2541/master

Wenn ein stmp-Server wie Postfix läuft und die Mails immer noch nicht gehen, dann versuchen Sie zum Beispiel, Postfix neu zu konfigurieren. Auf Ubuntu/Debian-Systemen kann dies mit dem Befehl dpkg-reconfigure

erfolgen
$ sudo dpkg-reconfigure postfix

Versuchen Sie dann den Mail-Befehl erneut und es sollte funktionieren. Wenn dies immer noch nicht der Fall ist, wenden Sie sich an Ihren Serveranbieter.

Keine Mails von lokalen Systemen

Wenn Sie versuchen, E-Mails von Ihrem lokalen Computer an eine Gmail-Adresse zu senden, wird Ihre E-Mail höchstwahrscheinlich abgelehnt, also versuchen Sie das nicht.

Dies liegt daran, dass gewöhnliche Computer, die mit einer Internetadresse verbunden sind, eine IP-Adresse haben, die keiner gültigen Domain als solcher zugeordnet ist, und Google Mail diese Anmeldeinformationen streng überprüft, bevor E-Mails zugelassen werden.

Hinweise und Ressourcen

Abgesehen von mailx gibt es andere Tools wie Swaks und smtp-cli, die verwendet werden können, um E-Mails von der Befehlszeile aus zu senden und verschiedene Funktionen wie das Festlegen von SMTP-Servern und das Hinzufügen von Anhängen usw. zu unterstützen.

Der Befehl mailx ist jedoch in den Standard-Repositories der meisten gängigen Distributionen verfügbar und kann daher einfach installiert werden. Außerdem behält es eine Syntax bei, die der des Mail-Befehls sehr ähnlich ist, was es zu einem Ersatz für den älteren Mail-Befehl macht.

Der Befehl mailx ist sogar in der Lage, Mails von entfernten IMAP-Servern zu lesen, aber das haben wir aus diesem Beitrag herausgehalten und werden später darauf eingehen. Weitere Informationen finden Sie in der Manpage für den mailx-Befehl mit "man mailx".


Linux
  1. 4 Möglichkeiten zum Senden von E-Mail-Anhängen über die Linux-Befehlszeile

  2. Durchsuchen Sie Torrents von der Befehlszeile in Linux

  3. Wie sende ich E-Mails über einen externen SMTP-Server mit dem Befehl mailx in Linux?

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

  5. mailq-Befehlsbeispiele unter Linux

Programmieren Sie Hardware über die Linux-Befehlszeile

Diff-Befehl in Linux mit Beispielen

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

Senden Sie E-Mail in Linux von der Befehlszeile aus

Verwendung des Linux-Befehls sed mit Beispielen

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