Wenn die Protokolle nicht regelmäßig durchgesehen werden, kann es passieren, dass ein Serverproblem erst dann bemerkt wird, wenn alles zu spät ist. Insbesondere, wenn eine Datensicherung nicht funktioniert, sollte irgendjemand informiert werden.
Die ideale Lösung ist es, eine Mail zu versenden. Die muss dann aus dem Sicherungsskript angestoßen werden. Dazu gibt es grundlegend unterschiedliche Konzepte.
- Nutzung des eingebauten Mailservers
- SendEmail: Ein kleiner SMTP-Client
- Mutt: Das Terminal-Mail-Programm
Nutzung des eingebauten Mailservers
Auf einem Linux-Server ist im Normalfall immer ein Mail-Server installiert. Er sorgt dafür, dass zwischen den registrierten Benutzern Mails ausgetauscht werden können. Das war rudimentär zu den Zeiten, als UNIX-Maschinen von mehreren Benutzern gleichzeitig genutzt wurden. Diese Nutzer können auch die Service-Betreiber der verschiedenen Server sein.Allerdings hilft es bei Servern in der Regel wenig, wenn die Nachrichten innerhalb des Servers verteilt werden. Wir benötigen eine Erweiterung des Mail-Servers um das Senden an einen Internet-Mail-Server und ein Programm, mit dem wir aus dem Skript heraus eine Mail versenden können.
mail und postfix
Für das Versenden einer Mail wird der Befehl mail aufgerufen. Dieser ist das direkte Frontend zu dem installierten SMTP-Server, der auf dem lokalen System installiert ist. Die bekannteste Variante davon ist Postfix.Der Befehl mail ist auf den meisten Linux-Systemen nicht mehr standardmäßig vorhanden, steht aber nach der Installation des Pakets mailutils zur Verfügung, muss also installiert werden.
apt install mailutils
Postfix
Nicht auf jedem Linux-System ist ein Postfix als Mail-Server installiert. So beispielsweise auf einem Debian-Server. Dann benötigt man folgenden Befehl:apt install -y postfixIm Laufe der Installation wird angefragt, welcher Servertyp benötigt wird. Hier wählt man die folgenden Optionen:
- Internet mit Satellit
- Als Hilfsserver wird der Mail-Server genannt, zu dem die Adresse gehört. Im Falle einer GMX-Adresse ist das: mail.gmx.net
Postfix-Konfiguration
Die Konfigurationsdateien von Postfix befinden sich im Verzeichnis /etc/postfix. Die wichtigste davon ist main.cf.cd /etc/postfix vi main.cf
Benennen des Relay-Hosts
Dort wird die Verbindung zum Relay-Host geschlagen. Das ist der Internet-Server, den wir benutzen, um die Mail in die weite Welt oder wenigstens bis zum Administrator zu senden. Im Beispiel wird eine GMX-Adresse verwendet. Es funktioniert aber auch mit allen anderen Diensten.
myhostname = gitlab.inf.fh-flensburg.de ... mydestination = relayhost = mail.gmx.net:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_password smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt sender_canonical_maps = hash:/etc/postfix/sender_canonical
Zuordnen der Benutzer zu externen Mail-Adressen
Auf dem Server können verschiedene Nutzer angemeldet sein. Ihnen muss zugeordnet werden, wer welche E-Mail-Adresse für den Kontakt nach außen verwendet. Das konfiguriert die Datei sender_canonical. Sie befindet sich im Verzeichnis /etc/postfix und kann mit einem beliebigen Editor bearbeitet werden. Ich verwende vi, andere mögen nano vielleicht lieber.
vi /etc/postfix/sender_canonicalHier werden die Zuordnungen der lokalen Nutzer zu den E-Mail-Adressen eingetragen. Das Beispiel zeigt die Nutzer gast, arnold und root. In diesem Fall wird für alle Benutzer die gleiche Mail-Adresse verwendet. Das muss aber nicht zwingend so sein.
gast arnold-willemer@gmx.de arnold arnold-willemer@gmx.de root arnold-willemer@gmx.deAnschließend muss die Konfiguration bei Postfix angemeldet werden. Dazu diesen folgende Befehle:
postmap sender_canonical postfix reloadFür die Adresse arnold-willemer@gmx.de muss das Passwort in der Datei /etc/postfix/sasl_password hinterlegt sein.
mail.gmx.net arnold-willemer@gmx.de:meinpasswortDas erste ist der Servername, der unter relayhost in der Datei main.cf steht. Das zweite ist die Mail-Adresse, die in sender_canonical steht. Hinter dem Doppelpunkt steht das Passwort des SMTP-Zugangs für das GMX-Postfach.
Auch diese Datei muss mit postmap in eine db-Datei gewandelt werden. Und auch hier muss dem Postfix mitgeteilt werden, dass sich die Konfiguration geändert hat.
postmap sasl_password postfix reload
Das Absetzen der Mail
Der Befehl mail kann von der Konsole aufgerufen werden. Wird er ohne weitere Optionen aufgerufen, zeigt er die eingetroffenen Mails des Users.Für das Senden wird die Zieladresse als Argument verwendet. So können Benutzer des eigenen Systems untereinander Mails austauschen. Wirklich interessant aber wird es, wenn man als Argument eine Zieladresse im Internet angibt. Dann leitet der lokal installierte Mailserver die Mail an die Zieladresse. Das geschieht im Dialog mit mehreren Zeilen.
$ mail huidibui@mail.de Cc: Subject: Toller Betreff Alles wird gut, glaube mir! .
Die letzte Zeile wird durch einen einfachen Punkt markiert.
Das Versenden aus einem Skript ist im Dialog nicht möglich. Hier müssen alle Bestandteile in einen Aufruf gepackt werden.
mail -s "Betreff der Mail" arnold-willemer@gmx.de < inhalt.txtDas folgende Skript versucht innerhalb einer Datensicherung eine NAS einzuhängen. Sollte das nicht gelingen, weil beispielsweise die NAS nicht erreichbar ist, sollte eine Mail versendet werden. Der Text wurde in einer Datei fehlermeldung.txt hinterlegt.
mount -t nfs NAS04:/volume2/dasi /mnt 2>>err if ! test -d /mnt/backup then mail -s "Fehler: NAS mount" arnold-willemer@gmx.de < fehlermeldung.txt exit fi
sendemail sendet an SMTP-Server
Anstatt den Mail-Server des Systems zu nutzen, kann man mit dem Programm sendemail direkt auf einen SMTP-Server seines Providers senden. Der Charme dieser Lösung liegt darin, dass keine Konfiguration erforderlich ist.Installation
Das Programm gehört zum Standard-Umfang eines Repositories und kann mit dem folgenden Befehl installiert werden:
sudo apt install sendemail
Aufruf
Mit dem folgenden Aufruf kann eine Mail versandt werden.
sendemail -f ich@provider.de -t arnold-willemer@gmx.de \ -u "Fehler: NAS mount" -m "Bitte nachsehen" \ -s smtp.provider.de:587 -xu ich@provider.de -xp geheimDie Optionen haben folgende Bedeutung:
- -f: Absender (from)
- -t: Empfänger (to)
- -u: Subject
- -m: Der Nachrichteninhalt
- -s: SMTP-Server-Adresse mit Port
- -xu: Der Benutzername auf dem SMTP-Server
- -xp: Das Passwort auf dem SMTP-Server
mutt sendet an SMTP-Server
Mutt ist ein Terminal-Mail-Client, der auch von der Konsole aufgerufen werden kann.Installation
Mutt in jedem Linux-Repository vorhanden. Der folgende Befehl installiert mutt.sudo apt install mutt
Aufruf
Die zu sendende Nachricht wird Mutt über eine Pipe übergeben. Mit -s wird der Betreff übergeben und hinter dem doppelten Minuszeichen steht der Empfänger.echo "Nachricht" | mutt -s "Subject" -- arnold@willemer.de
- -a Datei: Mit mutt lassen sich auch Anhänge transportieren.
- -s: Betreff
- -F Datei: Gibt den Pfad und Namen der Konfigurationsdatei an. Standardmäßig liegt diese in ~/.muttrc
set from = "arnold.willemer@gmx.de" set smtp_url = "smtp://arnold.willemer@gmx.de@mail.gmx.net:587/" set smtp_pass = "furchtbargeheim" set ssl_starttls = yes set editor = "vim"Die Datei sollte man nur für den Besitzer lesbar machen. So ist das Passwort im Klartext wenigstens nicht für jedermann lesbar.
chmod 600 ~/.muttrc
Voraussetzung SMTP
Damit mutt senden kann, muss irgendein SMTP-Server auf dem System installiert sein. Sollte es beim Senden einen Fehler 127 geben, ist es am einfachsten, das Paket sendmail zu installieren.sudo apt install sendmail