Shell Befehl mit Mail Versenden

3.8
(6)

E-Mails Versenden aus Shell-Scripts

Das Versenden von E-Mails aus der Linux Shell über einen Server ist sehr nützlich, wenn beispielsweise programmgesteuert Benachrichtigungen aus Shell-Scripts oder Webanwendungen generiert werden.

In diesem Tutorial wird gezeigt, wie mit dem Mail-Befehl unter Linux E-Mails von der Befehlszeile aus versendet werden. Zur Anwendung kommt Heirloom mailx, das verbreitete Open Source Projekt beinhaltet eine Sammlung traditioneller Unix-Dienstprogramme. Ziel ist es, durch praxiserprobte Beispiele mögliche Lösungswege wiederzugeben, es stellt jedoch keine komplette Sammlung umfangreicher Anwendungsmöglichkeiten dar.

Install mail bei Fedora und CentOS

Damit das Versenden möglich ist, muss das Paket mailx, oft auch mailutils auf dem host vorhanden sein, die Bereitstellung unter Fedora und CentOS geht wie folgt:

$ sudo yum install -y mail

Install heirloom-mailx bei Debian und Ubuntu

Für Debian und Linux Mint oder weitere Ubuntu forkes kann folgendes apt-get command ausgeführt werden:

$ sudo apt-get install heirloom-mailx

Der CLI Befehl mail ist nun in der Shell anwendbar:

$ mail -s "Hello World" email@example.com

Beim ersten Versuch eine E-Mail zu Versenden, erhält man wahrscheinlich gleich mal ein Fehler!

No configuration file found at /home/joe/.esmtprc or /etc/esmtprc

Gelöst wird der Fehler, indem man die Konfigurationsdatei esmtprc erstellt, mit vi oder nano oder dem Editor der Wahl:

$ vi ~/.esmtprc

Ein SMTP-Gateway hinzufügen, dieses es erlaubt von unserem Host E-Mail anzunehmen.

hostname = smtp.example.com:25

Mit dieser Konfiguration wird der Benutzer berechtigt, über smtp.example.com E-Mails zu Versenden. Sollen alle Benutzer berechtigt werden, muss die Datei /etc/esmtprc erstellt und bearbeitet werden.

Gibt es noch ein Fehler! muss ein Relayhost berechtigt werden:

SMTP server problem Connection refused

Es sollen E-Mails von unserem Host angenommen werden, zB. soll das Gateway smtp.example.com über TCP Port 25 E-Mails weiterleiten.

Beim SMTP-Gateway wird, wenn dieses Postfix ist, die Datei main.cf angepasst. Mit sudo die Postfix Hauptkonfiguration main.cf editieren.

$ sudo vi /etc/postfix/main.cf

Bei mynetworks wird die Host IP oder der Hostname hinzugefügt, dieser E-Mails versenden darf.

mynetworks =
        127.0.0.0/8
        [::1]/128
        192.168.2.3

In diesem Beispiel ist 192.168.2.3 unser Host von diesem E-Mails versendet werden sollen.

Die änderung der Postfix Hauptkonfiguration aktivieren:

$ sudo postfix reload
Beispiele mit Mail in der Befehlszeile

Beispiele mit Mail in der Befehlszeile

echo "message here" | mail -s "subject" email@example.com < dump.sql.gz

Das Versenden eines zuvor erstellten SQL-Dump, soll nach der Sicherung zugestellt werden.

subnet="$(ip -4 a | grep inet | grep -v 'virbr' | grep -v 'docker' | awk '{print $2}' | grep -v '127.0.0.1')"; ipcalc "${subnet}" | mail -s "${subnet}" hostmaster@example.com

Hier wird die IPv4 Konfiguration ermittelt mit dem Befehl ip, es wird versucht die virtuellen Interfaceses durch grep und awk auszufiltern.

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | mail -s "ifconfig" hostmaster@example.com

ifconfig ist der traditionelle Befehl, dabei muss bei neueren Distributionen das Paket net-utils installiert sein.

hostnamectl | mail -s "my host" email@domain.com

Der Befehl hostnamectl liefert nützliche Informationen, vorhanden bei neueren Linux Versionen.

Der Aufruf man mail zeigt die umfangreichen Möglichkeiten von mailx.

MAILX(1)                                                  User Commands                                                 MAILX(1)

NAME
       mailx - send and receive Internet mail

SYNOPSIS
       mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account]
              [-S variable[=value]] to-addr . . .
       mailx [-BDdeEHiInNRv~] [-T name] [-A account] [-S variable[=value]] -f [name]
       mailx [-BDdeEinNRv~] [-A account] [-S variable[=value]] [-u user]

DESCRIPTION
       Mailx is an intelligent mail processing system, which has a command syntax reminiscent of ed(1) with  lines  replaced  by
       messages.   It  is  based  on Berkeley Mail 8.1, is intended to provide the functionality of the POSIX mailx command, and
       offers extensions for MIME, IMAP, POP3, SMTP, and S/MIME.  Mailx provides enhanced features for interactive use, such  as
       caching  and  disconnected  operation  for  IMAP, message threading, scoring, and filtering.  It is also usable as a mail
       batch language, both for sending and receiving mail.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 3.8 / 5. Anzahl Bewertungen: 6

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.