Es gibt andere Terminal-basierte Befehlszeilen-Clients, die ebenfalls zum Senden von E-Mails verwendet werden können, wie sendmail, mutt, SSMTP, telnet, aber in dieser Anleitung konzentrieren wir uns auf mail
Befehl.
Der Befehl mail ruft die Standard-Sendmail-Binärdatei (/usr/sbin/sendmail) auf, die sich wiederum mit dem lokalen MTA verbindet, um die Mail an ihr Ziel zu senden. Der lokale MTA ist ein lokal laufender SMTP-Server, der Mails auf Port 25 entgegennimmt.
Das bedeutet, dass ein SMTP-Server wie Postfix auf dem Rechner laufen sollte, auf dem Sie den Mail-Befehl verwenden möchten. Wenn keine läuft, erhalten Sie die Fehlermeldung "send-mail:Cannot open mail:25".
Installation
Installieren Sie mit diesem Befehl:
Für Ubuntu
sudo apt-get install mailutils
Für Centos 7
sudo yum install -y mailx
Für Centos 8/Alma Linux/Rhel
sudo dnf install -y mailx
Testen Sie mit diesem Befehl, ob der Befehl erfolgreich installiert wurde:
mail
Der obige Befehl prüft, ob eine E-Mail für den aktuellen Benutzer vorhanden ist. Sie sollten eine Ausgabe wie diese sehen:
➜ mail
No mail for centos
Nutzung
Senden einer einfachen E-Mail
Verwenden Sie diesen Befehl, um eine E-Mail an [email protected]
zu senden . Das -s
Befehlszeilenargument dient zur Angabe des Betreffs.
mail -s "Test mail" [email protected]
Der obige Befehl wird blockiert, wenn Sie die Eingabetaste drücken und darauf warten, dass Sie Ihre Nachricht eingeben. Wenn Sie fertig sind, verwenden Sie Ctrl-D
um den E-Mail-Client zu benachrichtigen, dass Sie fertig sind und die E-Mail zum Senden bereit ist.
❯ mail -s "Test mail" [email protected]
Hey John,
Please remember to send me the Linux Book.
Regards,
Me.
EOT
Der EOT
wurde eingegeben, als ich Ctrl-D
drückte . Sobald Sie dies getan haben, würde der Mail-Befehl die Nachricht zur Zustellung versenden und fertig.
Nachricht mit Inhalt aus einer Datei senden
Verwenden Sie diesen Befehl, um eine Nachricht aus der Datei /path/to/file.txt
zu senden .
mail -s "Test mail" [email protected] < /path/to/file.txt
Sie können auch diesen einen Liner verwenden, in dem Sie den zu sendenden Inhalt echoen und ihn dann an den Mail-Befehl weiterleiten.
echo "Hello world" | mail -s "Test mail" [email protected]
E-Mail an mehrere Empfänger senden
Um eine E-Mail an mehrere Empfänger zu senden, können Sie eine durch Kommas getrennte Liste von E-Mails verwenden, wie in diesem Beispiel:
echo "Hello world" | mail -s "Test mail" [email protected],[email protected]
CC- und BCC-Empfänger hinzufügen
Blind Carbon Copy (BCC) und Carbon Copy (CC)-Adresse können ebenfalls angehängt werden. Verwenden Sie -c <email>
für CC und -b <email>
für bcc.
Dieses Beispiel gibt CC und BCC an:
echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]
Geben Sie den Absendernamen und die Adresse an
Sie können die Option -r
verwenden um den Namen und die Adresse des Absenders wie folgt anzugeben:
echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]
Alternativ können Sie -a
verwenden um einen zusätzlichen Header an die Nachricht anzuhängen. Hier ist ein Beispiel dafür, wie FROM
bereitgestellt wird als Teil davon.
echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]
Um den Absendernamen anzugeben, verwenden Sie die folgende Syntax:
echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>
Bitte beachten Sie, dass wir die kleinen und großen Pfeile maskieren müssen, da sie eine besondere Bedeutung für den Shell-Prompt haben. Wenn Sie den Befehl aus einem Skript heraus eingeben, würden Sie das weglassen.
Antwortadresse angeben
Verwenden Sie den replyto
um die Antwortadresse wie in diesem Beispiel anzugeben:
echo "Hello world" | mail -s "Test mail" [email protected] [email protected]
E-Mail mit Anhang
Senden Sie eine E-Mail von [email protected]
an [email protected]
mit Anhang.
mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,
Please find the file requested attached.
Kind Regards,
John.
EOF
E-Mail an einen lokalen Systembenutzer
Um eine E-Mail an einen lokalen Systembenutzer zu senden, geben Sie anstelle des Empfängers nur den Benutzernamen an. Sie können den Hostnamen anhängen, dies ist jedoch nicht erforderlich, indem Sie @hostname
verwenden .
mail -s "Test Subject" username
Ausführlich aktivieren
Wenn Sie überprüfen müssen, was los ist, während die E-Mail verarbeitet wird, aktivieren Sie die ausführliche Ausgabe mit dem Argument -v
. Dies ist gut für die Fehlerbehebung, wenn Sie beispielsweise die SMTP-Befehle überprüfen möchten, die vom Mail-Befehl verwendet werden. Hier ist ein Beispiel:
mail -v -s "Hello theere" [email protected] <<< 'This is the message'