E-Mail und Anhang mit sendmail versenden

sendmail e-mail mit echo Befehl und Anhang versenden. sendmail implementiert die Kompatibilitätsschnittstelle von Postfix und ist in fast allen unixoiden Betriebssysteme enthalten, der Mail Transfer Agent, dessen Geschichte bis in die frühen 1980er Jahre zurückreicht.

E-Mail mit echo sendmail versenden

sendmail versendet E-Mails über das Internet an einen bestimmten Empfänger. Dies kann durch den Befehl „sendmail“ und „echo“ in einer Linux Kommando-zeile erfolgen, und kann auch innerhalb eines Programmier-skripts verwendet werden.

  sendmail: fatal: open /etc/postfix/main.cf: No such file or directory

Vergewissere dich das sendmail auf dem Linux Host vorhanden ist, mit dem Befehl which sendmail oder man sendmail. Falls sendmail nicht gefunden wird, und kein MTA wie Postfix installiert ist, wird sendmail wie folgt bereitgestellt.

$ sudo apt install sendmail -y

sendmail in der Kommandozeile

Das folgende Beispiel zeigt ein Linux-Befehl zum Senden einer E-Mail Nachricht aus der Kommandozeile mit sendmail unter verwendung des echo Befehl.

$ echo -e "Subject:Test Mail using sendmail \nThis is a Test Message\n" | sendmail youremail@example.tld

Der nächste Befehl sendet eine E-Mail mit Absender (From:) Adresse.

$ /usr/sbin/sendmail youremail@example.tld
From: nobody@example.tld
Subject: Test Mail using sendmail
This is a Test Message
.

  Der Punkt (.) beendet den Editor und die E-Mail wird versendet.

Das Beispiel oben erstellt interaktiv mit jeder Zeile eine E-Mail. Es wird eine Nachricht mit dem Betreff „Test Mail using sendmail“ dem Posteingang von youremail@example.tld zugestellt. Die Empfänger E-Mail-Adresse entsprechend ändern. Vergewissere dich, das sendmail auf dem Host vorhanden ist, und es dem Host erlaubt ist, E-Mails zu versenden.

sendmail eraubt die Pipeline Anweisung, dabei ist es möglich eine Nachricht mit einer Textdatei zu versenden.

$ /usr/sbin/sendmail < message.txt -t -i youremail@example.tld

Der Inhalt der Textdatei message.txt hier in diesem Beispiel wie folgt.

From: nobody@example.tld
Subject: Test Mail using sendmail
This is a Test Message

  Die sendmail Option -i behandelt das lesen der Nachricht aus der Standard Eingabe ohne Punkt (.) am Zeilenende. Die Option -t Extrahiert die Empfänger aus den Nachrichtenkopfzeilen und wird allen in der Befehlszeile angegebenen Empfängern hinzugefügt.

E-Mail und Datei mit sendmail versenden

Administratoren stehen oft vor der Aufgabe, eine E-Mail direkt von einem Host zu versenden, dabei steht kein E-Mail Client zur Verfügung. In diesem Beispiel wird mit „sendmail“ eine Datei als Anhang versendet.

Der Zweck ist es, auf einem Postfix MTA die als SPAM abgewiesenen Zustellversuche „blocked using“ herauszufiltern. Um das GZ-Archive zu versenden, muss Postfix auf dem Host konfiguriert sein. Es kann auch ein anderer autorisierter MTA sein, oder es wird ein externes SMTP-Relay verwendet.

#!/bin/bash
cat /var/log/maillog* | grep 'blocked using' | grep 'middleton.tld' > /tmp/blocked.txt
gzip -f /tmp/blocked.txt
( echo "to: sysop@example.tld"
  echo "from: no_reply@$HOSTNAME"
  echo "subject: Report of messages blocked by $HOSTNAME"
  echo "mime-version: 1.0"
  echo "content-type: multipart/related; boundary=messageBoundary"
  echo
  echo "--messageBoundary"
  echo "content-type: text/plain"
  echo
  echo "Please find the document attached."
  echo
  echo "--messageBoundary"
  echo "content-type: text/plain; name=blocked.txt.gz"
  echo "content-transfer-encoding: base64"
  echo
  openssl base64 < /tmp/blocked.txt.gz) | sendmail -t -i

  Option -t extrahiert die Empfänger aus der Nachrichtenkopfzeile. Mit der Option -i ohne . (Punkt) am Ende der Eingabe.

Fazit

Dieses Beispiel zeigt die Anwendung von sendmail, um eine E-Mail mit echo Befehl und Anhang aus der Shell zu versenden. Durch ändern der einzelnen Zeilen können viele weitere Anwendungszwecke zum Zug kommen. Die Base64 Kodierung wird durch openssl vorgenommen. Die echo Anweisungen erzeugt den MIME-MessageBody.

MySQL root Passwort auf leer setzen

In manchen Situationen ist ein leeres MySQL-Root-Passwort nützlich, zum Beispiel bei der Bereitstellung von Tests, wenn mehrere Datenbankschemata importiert werden müssen oder einfach beim Bereitstellen von SQL-Datenbanken, die für Versuchszwecke bereitgestellt werden sollen.

Wie setzt man ein blankes MySQL-Root-Passwort?

MySQL root Passwort auf leer setzen

Öffne hierzu im Terminal zunächst MySQL mit dem Root-Konto.

$ sudo mysql

Bei einigen Konfigurationen muss möglicherweise der folgende Befehl ausgeführt werden, mit Root-Passwort Eingabe.

$ mysql -u root -p

Wenn man ein leeres Passwort für den Root-Benutzer festlegen muss, so kann dies mit diesem Befehl erstellt werden.

MariaDB> SET PASSWORD FOR 'root'@'localhost' = '';

Wenn das Passwort eines bereits bestehenden Benutzers auf leer gesetzt werden soll, kann folgender ALTER USER Befehl verwendet werden.

MariaDB> ALTER USER 'user'@'localhost' IDENTIFIED BY '';

Der folgende Befehl erstellt ein neuen Benutzer user und wird ein leeres Passwort festlegen.

MariaDB> CREATE USER 'user'@'localhost' IDENTIFIED BY '';

Alternativ kann mit mysqladmin das root Passwort leer gesetzt werden.

$ sudo mysqladmin -u root -pcurrent_password password ''

MySQL lässt sich auch in der grafischen Weboberfläche von phpMyAdmin einfach und übersichtlich verwalten.

Fazit

In diesem Beitrag zeige ich, wie ein leeres MySQL-Root-Passwort erstellt wird, für Situationen nützlich, wie beispielsweise bei der Bereitstellung von Tests, wenn mehrere Datenbankschemata importiert werden müssen, oder einfach, wenn SQL-Datenbanken zum Testen in Nicht-Produktionsumgebungen bereitgestellt werden sollen, hier sind Hürden nicht sehr sinnvoll und eine Vereinfachung kann angestrebt werden.

Relationale Datenbankmanagementsysteme wie MySQL, MariaDB und PostgreSQL gehören laut dem aktuellen DB-Engines-Ranking zu den populärsten. Da sie als sehr zuverlässig gelten und Inkonsistenzen in den Datensätzen vermeiden, sind sie seit Jahrzehnten als etablierter Standard für Datenbanken in den meisten Systemen gesetzt.

Um die Daten darin abzufragen und zu bearbeiten, kommt in der Regel die Datenbanksprache Structured Query Language (SQL) zum Einsatz. So kommunizieren Anwender beispielsweise über eine Maske für Produktsuche in einem Webshop mit einem Server. Dieser fragt wiederum eine Datenbank ab und spielt die erhaltenen Informationen an den Webshop als Suchergebnis zurück.

Auf diesem Weg sind die in der Datenbank gespeicherten Daten anfällig für sogenannte SQL-Injection (SQLi), die beliebigen Code in Abfragen einschleust. So ist es möglich, Informationen unerlaubt auszulesen oder zu verändern. Im schlimmsten Fall erlangen die Eindringlinge Kontrolle über die gesamte Datenbank.

Die mobile Version verlassen