TEILEN
Mittwald: Webhosting. Einfach intelligent.

Es gibt Fälle, in denen soll das eigene Linux-System Mails verschicken können. Ein Beispiel wäre etwa Cron, das im Fall von Problemen Status-Mails verschicken kann. Oder man hat einen Webserver installiert, über den mittels der mail-Funktion von PHP Mails verschickt werden sollen usw., doch extra dafür schwere Brocken wie Postfix, Sendmail und Co. einzurichten wäre zu aufwändig. Noch dazu ist es für „Privatleute“ ohne richtigen Server, ohne ordentliche Zertifikate und ohne feste IPs sowieso nicht möglich direkt Mails zu verschicken, da die meisten Mail-Server den Empfang von solchen Servern sowieso ablehnen, sonst wäre ja SPAM-Versender Tür und Tor geöffnet. Für den Privatmann gilt es daher eigene Mails an einen SMTP-Relay-Server weiterzuleiten (also den SMTP-Mailserver eines „ordentlichen“ Anbieters) und dafür reicht auch ein simples Tool wie ssmtp.

ssmtp ist kein ausgewachsender MTA (Mail-Transfer-Agent) wie Postfix, Exim oder eben Sendmail, sondern einfach nur ein kleines Tool das eine Mail vom System entgegennimmt und zu einem zuvor konfigurierten Mailserver weiterleitet. Wie eingangs gesagt, müsste man mit einem Heimserver einen MTA wie Postfix sowieso als „Satellite System“ konfigurieren und Mails über einen Smarthost leiten, daher kann man sich den Aufwand mit der Einrichtung des Dienstes gleich sparen. ssmtp will erst einmal aus den Paketquellen installiert werden…

$ sudo apt-get install ssmtp

…danach gibt es mit den Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases zwei Konfigurationsdateien, die an die eigene Situation angepasst werden wollen. Ich fange mal mit der ssmtp.conf an, in der der zu nutzende Mailserver eingetragen wird.

$ sudo gedit /etc/ssmtp/ssmtp.conf

Als Beispiele führe ich die Konfiguration an, um Mails über Google bzw. GMX zu verschicken. Wie ihr seht steht das Passwort im Klartext in der Konfigurationsdatei. Ich würde daher für den eigenen Mailserver einen extra Account bei einem Freemailer einrichten, oder bei Google die 2-Step Verification aktivieren, so dass man ein Passwort extra für ssmtp erzeugen kann. Somit stünden dann die wichtigsten Zugangsdaten nicht mehr im Klartext auf der Platte.

Google Mail

root=EIN.BEISPIEL@gmail.com
mailhub=smtp.gmail.com:587
hostname=EIN.BEISPIEL@gmail.com
UseSTARTTLS=YES
AuthUser=EIN.BEISPIEL
AuthPass=GEHEIM
FromLineOverride=YES

GMX.net

root=EIN.BEISPIEL@gmx.de
mailhub=mail.gmx.net:465
rewriteDomain=gmx.net
hostname=gmx.net
UseTLS=YES
AuthUser=EIN.BEISPIEL@gmx.DE
AuthPass=GEHEIM
FromLineOverride=NO

Passt die FETT geschriebenen Passagen bitte an eure Situation an, die restlichen Einstellungen solltet ihr direkt übernehmen können. Sobald ihr die ssmtp.conf vollständig eingerichtet habt, könnt ihr festlegen welcher User welchen Mailserver benutzen darf. Dies wird über die revaliases-Datei festgelegt, öffnet auch diese daher wieder in einen Editor.

$ sudo gedit /etc/ssmtp/revaliases

Hier tragt ihr nun im folgenden Format ein welcher Nutzer welchen Server benutzen darf. In meinem Beispiel greife ich wieder Google Mail auf, die FETT gedruckten Passagen müssten wieder angepasst werden.

root:EIN.BEISPIEL@gmail.com:smtp.gmail.com:587
www-data:EIN.BEISPIEL@gmail.com:smtp.gmail.com:587
OTTO:EIN.BEISPIEL@gmail.com:smtp.gmail.com:587

In meinem Fall darf also „root“, der User des Webservers „www-data“ und der Benutzer „otto“ Mails direkt vom System aus verschicken. Die zweite Zeile könnt ihr natürlich weglassen, wenn bei euch gar kein Webserver installiert ist, oder dieser gar keinen Zugriff auf ssmtp braucht.

Das Ganze will natürlich nun auch getestet werden. Eine Möglichkeit ist es direkt über ssmtp eine Mail zu schicken. Der folgende Befehl schickt etwa eine leere Mail an echo@tu-berlin.de, das diese wiederum gleich wieder zurück zu euch schickt. So könnt ihr bequem testen, ob eure Einstellungen funktioniert haben. Zudem bewirkt der Schalter „-v“, dass bei der Aktion Rückgaben ins Terminal geschrieben werden. Zum Senden müsst ihr nach dem Ausführen des Befehls noch [STRG]+[D] drücken.

$ ssmtp -v echo@tu-berlin.de
[<-] 220 smtp.gmail.com ESMTP x65sm8488142wmg.4 - gsmtp
[->] EHLO EIN.BEISPIEL@gmail.com
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO EIN.BEISPIEL@gmail.com
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 #############
[->] ##########
[<-] 334 #########
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:<EIN.BEISPIEL@gmail.com>
[<-] 250 2.1.0 OK ########### - gsmtp
[->] RCPT TO:<echo@tu-berlin.de>
[<-] 250 2.1.5 OK x65s########### - gsmtp
[->] DATA
[<-] 354  Go ahead ############# - gsmtp
[->] Received: by EIN.BEISPIEL@gmail.com (sSMTP sendmail emulation); Thu, 11 Feb 2016 16:34:00 +0100
[->] From: "USERNAME" <EIN.BEISPIEL@gmail.com>
[->] Date: Thu, 11 Feb 2016 16:34:00 +0100
[->]
[->] .
[<-] 250 2.0.0 OK 1455204843 ########### - gsmtp
[->] QUIT
[<-] 221 2.0.0 closing connection ########### - gsmtp

Alternativ könntet ihr natürlich auch via mutt oder mailx direkt vollständige Mails verschicken. ssmtp ersetzt sicherlich nicht einen ordentlich aufgesetzten Postfix-Dienst auf einem richtigen Server, doch wenn die eigenen Workstation zuhause einfach nur in der Lage sein soll ein paar Status-Mails in Netz zu senden, dann ist ssmtp ein ganz praktisches Werkzeug.

62 KOMMENTARE