SSMTP für ein NAS

Beim Betreiben eines NAS kommt es immer wieder vor, dass man automatisiert E-Mails versenden muss. Man könnte hierfür zwar einen eigenen Mailserver aufsetzen, doch ich scheue für ein einfaches NAS oder einen einfachen Server diesen Aufwand. Weiterhin ist es nicht allzu geschickt, einen Mailserver von zu Hause aus über eine DSL-Leitung Mails verschicken zu lassen, da die meisten großen Provider die Annahme von Mails, die von DSL-Leitungen kommen, verweigern. Daher nutze ich für die NAS- und Serversysteme gerne SSMTP – das ist ein sogenannter Nullmailer.

Ein Nullmailer ist kein richtiger Mailserver. Er macht nichts anderes als den Mailversand über einen „echten“ Mailaccount weiter zu leiten. Mein favorisierter Nullmailer ist SSMTP, dessen Einrichtung ich hier beschreibe.

Diese Anleitung ist zwar vorrangig für Bananian auf dem Banana Pi gedacht. Sie funktioniert aber auch auf anderen Debian-Systemen (wie Raspian) und auch Ubuntu. In der Anleitung benutze ich einen Google-Account. Andere, beliebige E-Mail-Accounts funktionieren jedoch auch.

Folgende Schritte sind notwendig:

Software installieren

Die folgenden Kommandos aktualisieren das System und installieren dann ssmtp und die benötigten Utilities. In den Utilities ist u.a. das mail-Kommando, das wir benötigen um Mails von der Kommandozeile aus zu verschicken.

apt-get update
apt-get upgrade
apt-get install ssmtp mailutils sharutils

Konfiguration bearbeiten

Die Konfiguration mit einem Editor (hier: vi) bearbeiten:
vi /etc/ssmtp/ssmtp.conf

Inhalt der Konfigurationsdatei: /etc/ssmtp/ssmtp.conf:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=[E-MAIL-ADRESSE]

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=[HOSTNAME]

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
AuthUser=[E-MAIL-ADRESSE]@googlemail.com
AuthPass=[PASSWORT]

UseSTARTTLS=YES

Erläuterungen

  • Zeile 6: Die E-Mailadresse des Server-Administrators
  • Zeile 10: Der SMTP-Server, der zum Versand verwendet wird. Hier ist es der Google-Server auf Port 587. Beliebige andere Server können verwendet werden.
  • Zeile 16: Der Hostname eures NAS. Kann ganz einfach mit dem Kommando hostname ermittelt werden.
  • Zeile 22: Der Username auf dem Mailserver über den verschickt werden soll bei Googlemail ist dieser gleich der E-Mailadresse, bei anderen Providern kann das anders sein.
  • Zeile 23: Das Passwort des Users auf dem Mailserver.

Wenn Googlemail verwendet wird, dann muss man den „Zugriff für weniger sichere Apps zulassen“, da bei Google ein verschlüsseltes SMTP wohl nicht mehr als sicher genug akzeptiert wird. Dazu loggt man sich bei Google im Web ein und ändert die Einstellungen über folgende URL: https://www.google.com/settings/security/lesssecureapps

Test

Ob alles korrekt funktioniert kann man am Schluss mit folgendem Kommando in der Bash ausprobieren:
echo "Test von SSMTP" | mail -s"Testmail" [RECEIVER]

[RECEIVER] ist dabei die Adresse an die die Testmail geschickt werden soll. Funktioniert das, können ab jetzt Scripts das mail-Kommando des Systems benutzen und zum Beispiel für Infos zur Systemwartung Mails versenden.

Gefällt Ihnen dieser Artikel? Sagen Sie es weiter!
  • Kommentare 14
  • Veröffentlicht in: Tutorials

Kommentare (14) Schreibe einen Kommentar

    • Streng genommen ist „Nullmailer“ der Name eines Programms von Bruce Guenter. Er beschreibt es als „Simple relay-only mail transport agent“ (siehe Homepage des Original-Nullmailers). SSMTP wird auf seiner eigenen Homepage als „extrem einfacher MTA“ beschrieben. Ich habe das Wort „Nullmailer“ hier als Synonym für einen einfachen MTA verwendet, der selbst keinen Server implementiert, sondern die Mail einfach an einen anderen Server weiterleitet. Beide – Nullmailer und SSMTP emulieren aus Sicht der Shell die Kommandos mail und sendmail – eMail-Clients sind sie damit nicht – eher „relay agents“.

      Antworten

  1. Hallo Kai,
    ich habe Deine (und allerlei andere) Anleitung(en) gelesen und verschiedene Szenarien durchprobiert. Meine Logdateien geben mir aber immer aus:
    Sep 28 14:11:30 LKG8A7174 sSMTP[13049]: Unable to locate mailhub.web.de
    Sep 28 14:11:30 LKG8A7174 sSMTP[13049]: Cannot open mailhub.web.de:587
    Ich beschreibe mal meine Konfiguration (ausgehend von einem Konzept als PDC wie hier beschrieben: http://www.tecchannel.de/a/samba-als-windows-domain-controller-auf-dem-nslu2,1744753):
    Inhalt der Datei /etc/ssmtp/ssmtp.conf:

    root=postmaster

    mailhub=smtp.web.de:587

    rewriteDomain=

    hostname=BP-Servername

    FromLineOverride=NO

    UseTLS=YES
    UseSTARTTLS=YES

    AuthUser=mail.account@web.de
    AuthPass=PW_Geheim

    In einigen Beiträgen heißt es, man solle bei root ein Mailadresse eingeben, in anderen heißt es, hier steht lediglich eine Bezeichnung – beides habe ich versucht, es hat sich nichts geändert.

    Um das Passwort weitgehend zu schützen, habe ich folgende Befehle ausgeführt:

    # chown root:mail /etc/ssmtp/ssmtp.conf
    # chmod 640 /etc/ssmtp/ssmtp.conf

    Für alle Fälle habe ich den Nutzer ‚root‘ (andere Nutzer können auf dem Banana-Server sowieso nicht aktiv werden – s.a. PDC-Konzept oben) auch noch mal als Mitglied der Gruppe ‚mail‘ angemeldet:

    usermod -a -G mail root

    Inhalt der Datei /etc/ssmtp/revaliases:

    root:mein.account@web.de:mailhub.web.de:587

    Im Router (FritzBox) habe ich probeweise mal die web.de-Adresse als Absender im Push-Service eingetragen – könnte ja sein, daß die Box die Mails nicht rausläßt – kein Erfolg.
    Unter Windows habe ich in der Konsole mal einen entsprechenden telnet-Befehl eingegeben:
    telnet mail.web.de 587

    Die Antwort kam prompt:
    220 web.de Nemesis ESMTP Service ready

    Der ‚transmitting Channel‘ wäre also offen – nur eben nicht vom Banana Pi-Server aus.

    Hast Du ’ne Idee?

    Freundliche Grüße von
    Dremus

    Antworten

    • Hi Dremus,

      was mich stutzig macht ist diese Zeile hier:
      > Sep 28 14:11:30 LKG8A7174 sSMTP[13049]: Unable to locate mailhub.web.de

      => Natürlich kann dieser Host nicht gefunden werden, weil er nicht existiert. Du willst die Mail ja über smtp.web.de schicken.

      Die Lösung könnte diese Zeile hier sein:
      > Inhalt der Datei /etc/ssmtp/revaliases:
      > root:mein.account@web.de:mailhub.web.de:587

      Hier hast du eben jenen Host eingetragen, so dass SSMTP für deinen Account nicht den Standard-SMTP-Server (smtp.web.de) nimmt, sondern den nicht existierenden mailhub.web.de. Probiere doch mal aus, diese Stelle zu ändern.

      Wenn’s das nicht war, müssen wir weiter nachforschen 😉

      Grüße
      Kai

      Antworten

    • Hallo Kai,
      unter den gegebenen Umständen konntest Du den Fehler auch nicht finden – ich fand einen Hinweis auf meinen Fehler hier: https://debianforum.de/forum/viewtopic.php?f=8&t=154935
      Ich muß die /etc/ssmtp/ssmtp.conf vor Zeiten nochmal editiert haben und den Wert für „FromLineOverride“ von NO auf YES gesetzt haben – warum auch immer. Das geht natürlich nicht.
      Yetzt (mit „NO“) schickt der Cronjob ordentlich seine Vollzugsmeldung raus.
      Trotzdem vielen Dank.
      Dremus.

      Antworten

  2. Hallo Kai,
    Deine Idee war richtig, danke dafür.
    Ich hab noch einiges an der Schreibweise probiert, bis ich hier fündig wurde:
    https://wiki.archlinux.org/index.php/SSMTP

    Mein Eintrag in der /etc/ssmtp/revaliases lautet jetzt:
    root:mein.account@web.de:smtp.web.de:587

    Bislang haben meine händischen Versuche, eine Kurzmeldung auf diesem Weg zu verschicken, allerdings noch keinen Erfolg (vielleicht schreibe ich ja nur die Befehle falsch):

    ssmtp mein.account@web.de To mein.account@web.de From: MIR „Test von SSMTP“
    RCPT TO: (501 Syntax error in parameters or arguments)

    ssmtp „Test von SSMTP“ mein.account@web.de
    RCPT TO: (501 Syntax error in parameters or arguments)

    echo „Test von SSMTP“ | mail -s“Testmail“ mein.account@web.de
    geht ohne Fehlermeldung durch, als Ergebnis kommt aber ein Mail mit dem Betreff:
    „Mail delivery failed: returning message to sender“ und kein Inhalt.

    Diesen Mailversender brauch ich eigentlich für eine Statusmeldung wegen meiner „50unattended-upgrades „.

    Es grüßt
    Dremus.

    Antworten

  3. Is ja noch früh:
    Die dritte Test-Variante hatte einen Schreibfehler in der Adresse „mein.account@web.de“ – Jetzt ist alles in Ordnung.
    Danke nochmal und einen schönen Tag wünscht
    Dremus.

    Antworten

  4. Guten Morgen Kai,
    habe jetzt das System auf Bananian160401 (Debian 8.6) geupgraded; zusätzlich zu den 50unattended-upgrades läuft jetzt auch noch eine Routine für ein Systembackup („Selfie“ – vergl. http://www.gargi.org/showthread.php?4559-Banana-Pi-als-Raspberry-Alternative&p=11979&viewfull=1#post11979).
    die Befehle
    ssmtp -v echo@tu-berlin.de
    bzw.
    echo „Test von SSMTP“ | mail -s“Testmail“ mein.account@web.de
    laufen ordnungsgemäß durch.
    Wenn aber ein Backup nach cronjob oder ein unattended Update durchgeführt wird, steht in der /var/log/mail.err folgende Fehlermeldung:
    „[Datum] [Uhrzeit] [HOSTNAME] sSMTP [xxxx] 550 Sender address is not allowed.“
    Hast Du eine Idee?
    Dremus.

    Antworten

    • Vielleicht hätte ich gleich dazusagen sollen, daß ich mir bisher noch keine Gedanken um die Änderungen von Deb7 auf Deb8 (Stichwort u.a.: systemd) gemacht habe. Vielleicht hat das ja was damit zu tun. Müßte aber erst nochmal ein Deb7-System aufsetzen (dauert aber noch), um die Gegenprobe zu machen – ohne das technische notwendige Hintergrundwissen muß ich leider so umständlich verfahren.
      Viele Grüße,
      Dremus

      Antworten

    • Hallo Kai,
      heute ist zum ersten Mal ein unattended-update gelaufen und ich habe eine Mail über den ordnungsgemäßen Vollzug erhalten.
      Also bezieht sich die Fehlermeldung wohl tatsächlich nur auf das Systgembackup via cronjob.
      ?
      Viele Grüße,
      Dremus

      Antworten

    • Hallo Kai,
      ich quäle mich hier so Stück für Stück durch die Möglichkeiten.
      Eigentlich ist sSMTP ja richtig konfiguriert, weil ich nach einem unattended-update auch eine korrekte Mail erhalte.
      Wenn ich jetzt in der Konsole „debconf-show ssmtp“ eingebe, erhalte ich:
      ssmtp/overwriteconfig: true
      ssmtp/mailname:
      ssmtp/port: 25
      ssmtp/hostname:
      ssmtp/root: postmaster
      ssmtp/rewritedomain:
      ssmtp/mailhub: mail
      ssmtp/fromoverride: false
      als hätte ich die /etc/ssmtp/ssmtp.conf überhaupt nicht angepaßt!
      ?
      Viele Grüße von
      Dremuis.

      Antworten

    • Hallo Kai,
      habe jetzt mal die logs durchforstet. In der /var/log/syslog finde ich nach einem Backup-Lauf als letzten Eintrag:
      „[Datum] [Uhrzeit] [HOSTNAME] CRON[xxxx]: (root) MAIL (mailed 151 bytes of output but got status 0x0001 from MTA#012)“
      Läßt sich hier ein Hinweis auf die Ursache meines Problems erkennen?
      Viele Grüße,
      Dremus

      Antworten

      • Hallo Dremus,

        deine Fehlermeldung („[Datum] [Uhrzeit] [HOSTNAME] sSMTP [xxxx] 550 Sender address is not allowed.“) kommt dann, wenn du versuchst eine Mail mit einem Absender zu verschicken, die der SMTP-Server nicht akzeptiert. Nicht jeder SMTP-Server ist so scharf eingestellt, aber es gibt welche. Zum Beispiel: Du gibst als Absender mein.name@gmx.net an, versuchst aber über smtp.web.de zu senden. In dem Fall würde der Mailserver das ganze wie oben quittieren.

        Schau‘ doch mal nach, welcher Absender bei dir sendet! Das können auch verschiedene sein – also dass deine Unattended Updgrades einen anderen Absender haben als dein Cron-Backup.

        Viele Grüße
        Kai

        Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


Bitte aus Sicherheitsgründen folgende Zahlen eingeben: *