Schlagwort-Archive: GNU/Linux

Unixähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren. Wie CentOS, Debian, Ubuntu Fedora.

E-Mail Versenden aus Linux Shell

E-Mails versenden aus CLI und 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.

Dieses Tutorial beleuchtet, 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.

mailx – mailutils bei Fedora und CentOS

Damit das E-Mail Versenden aus der Linux Shell 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

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 Mail versenden in der Befehlszeile

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

Die klassische Methode ist die Verwendung von sendmail.

$ sendmail -F "Linux host" -f "noreply@example.org" -t 
email@example.org << EOF
Subject: try to test
seems it works.
EOF

Mit sendmail den Inhalt von stats.log an example@email.org senden.

$ (cat /mnt/stats.log) | sendmail -i -- example@email.org

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

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 mit dem ip-Befehl ermittelt, 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.

Linux Mint Automatische Anmeldung deaktivieren

Linux Mint bietet bei der Installation die Wahl, den anschließenden Systemstart mit automatischer Anmeldung zu durchlaufen, möchte man später die Passwort Eingabe wieder aktivieren, lässt sich wie auch bei Ubuntu ab 10.04, die Option in den Einstellungen nicht mehr finden.

In diesem Post wird gezeigt, wie unter Linux Mint 19.1 Tessa und Linux Mint 20 Ulyana, die Benutzeranmeldung mit Passwort nachträglich wieder aktiviert wird.

Erforderlich wurde das abschalten der Automatischen Anmeldung, nach der Feststellung das der Email Client Geary, die Kennworte der Konten nicht speicherte, diese mussten nach jedem Neustart erneut wieder eingegeben werden.

Ab Linux Mint 19.1 Tessa Cinnamon gibt es die Option Automatische Anmeldung in der Systemsteuerung – Anmeldefenster nicht mehr. Dafür kann nun die Einstellung mit dem Texteditor vorgenommen werden, man öffnet mit CTRL + ALT + T ein Terminal, und gibt folgendes Command ein:

~$ sudo vi /etc/lightdm/lightdm.conf

und entfernen die Zeilen mit dem Inhalt:

autologin-user=user1
autologin-user-timeout=0

 Als Editor kann man natürlich auch nano oder xed verwenden.

Nach einem Neustart und der Anmeldung mit Passwort Eingabe, wird nun die Schlüsselverwaltung im Hintergrund geöffnet, hierdurch es Geary ermöglicht wird, die Passwörter in der Schlüsselverwaltung seahorse abzuspeichern.

Linux Mint 20 Cinnamon – autologin
Linux Mint Terminal: cat /etc/lightdm/lightdm.conf

Eine weitere Lösung bietet sich an, die automatische Benutzeranmeldung abzuschalten, durch entfernen des Benutzers im Feld Benutzername, dazu öffnet man Systemeinstellungen und geht zu Anmeldefenster und zum Abschnitt Benutzer.

Anmeldefenster – Benutzer – Automatische Anmeldung – Benutzername leer.

Das Feld Benutzername ist leer = keine automatische Anmeldung.