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.

77 Kommentare

  1. Vielen Dank für die Anleitung! Habe gerade einen Server am Start, wo ich das ganz gut gebrauchen kann.

    Praktisch, dass ich das Versenden so direkt über meine Google Mail Adresse durchführen kann.

  2. (Wie immer) super Anleitung. Aber GUIs sollte man doch eigentlich mit ‚gksu‘ rootrechtlich starten – ’sudo‘ war da doch irgendwie böse (obwohl ich ehrlich gesagt mich noch nie damit beschäftigt habe warum).

  3. Ich setze bei mir für diesen Zweck immer auf Nullmailer – ssmtp werde ich mir aber definitiv auch mal anschauen. Danke für die tolle Anleitung!

  4. Danke für die Anleitung, habe mir einen extra gmx Account geschaffen zum testen bekomme im Moment aber folgenden Fehler

    .. Creating SSL connection to host
    .. sSMTP[1376] : Invalid response SMTP Server (STARTTLS)
    .. sSMTP[1376] : Cannot open mail.gmx.net:465

    Habe die Konfig mehrfach überprüft, finde aber den Fehler nicht.
    Danke für die Hilfe

    • Ich habs gerade nochmal mit GMX unter Ubuntu Lucid 10.04 getestet. Ich hab einfach nur die Konfigurationen per Copy&Paste übernommen und meine Daten eingetragen. Wichtig ist die /etc/ssmtp/revaliases natürlich auf GMX zu trimmen, aber ich denke dass du das gemacht hast. Bei mir will es sofort laufen. Wie gehst du denn ins Netz? Kann es sein dass dein Zugangsanbieter SMTP zu anderen Mailservern als den eigenen blockt? Manche machen das um Spammer zu behindern.

  5. Also ich kriegs mit Natty und google mail nicht zum Laufen. Ich hab natürlich noch nach anderen Howtos gesucht und auch genug gefunden, aber no chance.
    Ich hab Deine Beispiele auf googlemail.com umgebogen, bin mir sicher über username/pass, typos etc pp.

    Wenn ich den Testbefehl abschicke passiert nichts. Ich bekomme keine Befehlszeile mehr, und weder Strg-C/Strg-D helfen irgendwas. Ich muss den Job per kill wegschiessen.

    Was mich irritiert: mein Thunderbird nutzt zum Versand Port 465 statt 587 und via SSL Login, nicht TLS…
    Hat jemand ein Beispiel oder einen Hinweis, auf was man bei googlemail.com achten muß?

    Danke trotzdem, ich bin sicher, wenn ich es mal ans Laufen gebracht habe, dann werd ichs auch mögen 😉

  6. Sorry, hat sich erledigt. Waren diverse Kleinigkeiten. Man muß den Port nicht anpassen und ich hatte einen Fehler im Usernamen, den ich wirklich x-mal übersehen habe…. dann bekomm ich auch output…

    Erwähnenswert wäre dennoch Strg-D nach dem ssmtp -v … das weiß sicher nicht jeder.

    Vielen Dank für das Tut!

    Cheers,
    Mike

  7. Funktioniert prima ich hatte erst noch Probleme mit Resten von Sendmail als ich etwas wild rumprobierte.
    Aber das ist ja eigene Unfähigkeit.

  8. Nach dem ausführen von ssmtp -v echo@tu-berlin.de passierte bei mir erstmal – nichts. Ich habe gewartet und den ssmtp erstmal abgeschossen und nach Problemen mit meiner Netzwerkkonfiguration gesucht.

    Vier Versuche später habe ich dann Strg-D gemacht und ssmtp hat dann die (leere) Mail verschickt. Ein ein paar mal „Enter“ wäre auch gegangen. Vielleicht sollte das noch mit rein in die ansonsten tolle Anleitung. Sonst wartet man nämlich lange darauf, dass ssmtp was verschickt 😀

  9. Hallo!

    Das hilft super. Gerade wenn man nicht in jedem OpenVZ-Container einen Mailserver fahren will – aber auch nicht seinen eigenen mit den Mails anderer „belasten“ will.

    Funktioniert perfekt 🙂

  10. Danke für die guten Tipps! Ich würde aber gerne meine logs als Attachment anhängen, nicht nur als body text evtl. auch als .tar . Das geht wohl so mit ssmpt nicht. Hast Du da eine Lösung?

  11. Hallo und THX für das gute Tut hat mir in sofern schonmal geholfen das E-Mails jetzt auch meine Webseite verschicken kann.
    Habe das mit gmail.com gemacht funzt klasse.

    Jedoch haben sich mir 4 Problehme eingestellt/dargestellt.

    1. Es werden keine Systemmails lokal versendet und von root und user empfangen.
    2. Ist bei versendeten E-Mails von der Webseite als Absender www-data angegeben.
    3. E-Mails können nicht mehr Lokal versendet werden z.B. user1 möchte user2 eine Lokale E-Mail hinterlassen. (vermutlich selbe problem wie punkt 1)
    4. habe ich keine lokale benachrichtigung ob ssmtp E-Mails versendet, leider nur im E-Mailkonto was mir etwas zuviel smaltalk nach aussen ist.

    Gibt es da möglichkeiten das zu händeln ?
    Habe bisher leider nichts gefunden was mich schlauer macht.
    Für jeden Tip dankbar 😉

    Mfg Berlinerping
    P.S. benutze Debian 6 ohne GUI,Apache2, php5, mysql, DynDNS, CMS ist Joomla 2.5

  12. Ersetzt diese Lösung sendmail vollständig ? Oder laufen sendmail und ssmtp parallel ?

    Muss man ein bereits laufendes sendmail anhalten/deaktivieren ?

    Läuft ssmtp dann als cron job oder als Daemon ? Wie erfolgt der Aufruf von ssmtp ?

    Der Testversand ssmtp -v echo@tu-berlin.de funktioniert bei mir. Die Echo-Mails der TU Berlin landen im Postfach.

    Ich habe in maillog noch Einträge wie:

    Oct 31 17:58:01 x66 sendmail[17662]: q9VGw1qQ017662: from=, size=595, class=0, nrcpts=1, msgid=, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
    Oct 31 17:58:01 x66 sendmail[17661]: q9VGw10Y017661: to=xyz11, ctladdr=xyz11 (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30363, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q9VGw1qQ017662 Message accepted for delivery)
    Oct 31 17:58:01 x66 sendmail[17663]: q9VGw1qQ017662: to=, ctladdr= (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30788, dsn=2.0.0, stat=Sent
    Oct 31 17:59:01 x66 sendmail[17707]: q9VGx1cU017707: from=xyz11, size=363, class=0, nrcpts=1, msgid=, relay=xyz11@localhost
    Oct 31 17:59:01 x66 sendmail[17708]: q9VGx1eh017708: from=, size=595, class=0, nrcpts=1, msgid=, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
    Oct 31 17:59:01 x66 sendmail[17707]: q9VGx1cU017707: to=xyz11, ctladdr=xyz11 (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30363, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q9VGx1eh017708 Message accepted for delivery)
    Oct 31 17:59:01 x66 sendmail[17709]: q9VGx1eh017708: to=, ctladdr= (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30788, dsn=2.0.0, stat=Sent
    Oct 31 18:00:02 x66 sendmail[17756]: q9VH02nD017756: from=root, size=506, class=0, nrcpts=1, msgid=, relay=root@localhost
    Oct 31 18:00:02 x66 sendmail[17754]: q9VH02rL017754: from=xyz11, size=363, class=0, nrcpts=1, msgid=, relay=xyz11@localhost
    Oct 31 18:00:02 x66 sendmail[17757]: q9VH02FR017757: from=, size=737, class=0, nrcpts=1, msgid=, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
    

    Dazu laufen noch zwei Prozesse:

    root      1288     1  0  3314  2112   1 14:00 ?        00:00:00 sendmail: accepting connections
    smmsp     1316     1  0  3184  1564   0 14:00 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
    
  13. Ist ja toll! So einfach kann das gehen. Nach endlosen Versuchen mit Postfix hatte ich das Thema „eMail über Formular versenden“ schon abgehakt. Und nun: installiert – die beiden Dateien angepasst – fertig 🙂

  14. Hallo Christoph!
    Mit diesem Blog konnte ich auf simpelste und schnellste Weise meine Owncloud zu 100% meinen Bedürfnissen anpassen. Es leben Cronjob-Nachrichten 😉
    Vielen Dank – Carsten

  15. Schön, dass Du mal darüber geschrieben hast! Ich habe letztens die Diskussion wieder gehabt, weil Fedora ja keinen eigenen MTA mehr installiert. Ich finde die Entscheidung auch richtig. Lediglich auf meinem, als MX eingetragenen, Server läuft Postfix: Eigener Mailserver. Auf allen anderen Büchsen wie z.B. meinem Raspberry Pi hab ich auch sSMTP und nutze darüber den externen Mailserver.

    Ich glaube viele nutzen nicht sSMTP sondern Postfix oder Sendmail, weil es vorinstalliert ist und sie keine Lust haben die Dinger zu konfigurieren. Dann braucht man sich aber auch nicht wundern, wenn man immer im Spam-Filter landet. sSMTP ist mit Sicherheit die beste Lösung.

  16. Hello,

    erstmals danke an Christoph für den guten sSMTP-Überblick.

    Irgendwie funzt’s bei mir nicht ganz!

    Ich will mit meinem raspberry keine Mails von außen empfangen (sitzt auch hinter eine Firewall und von außen ist nur der ssh:22 port geforwarded).

    Was ich brauche:
    1. crontab (von root, user1, user2, …)
    STDOUT soll per Mail an „MAILTO“-variable geschickt werden
    -> landet zurzeit im dead.letter-file

    2. Mails an lokale user (user1 an user2):
    wie muss ich den Empfänger angeben, damit die Mail intern und nicht gleich über den SMTP-relay gesendet wird?
    -> eine Mail an „user1“ wird nicht an die Adresse im /etc/ssmtp/revaliases (user1:myaddress@gmx.at:mail.gmx.net:465) – also myaddress@gmx.at – gesendet, sondern an user1@gmx.net

    Mailversand an externe User funktioniert manuell problemlos.
    Also zB ‚echo „Hello World“|mails -s „MySubject“ irgendwer@irgendwo.com

    /etc/ssmtp/ssmtp.conf (analog Bsp oben)
    /etc/ssmtp/revaliases:
    root:myaddress@gmx.at:mail.gmx.net:465
    user1:myaddress@gmx.at:mail.gmx.net:465
    user2:myaddress@gmx.at:mail.gmx.net:465

    PS: Ein Tipp von meiner Seite um Attachments zu schicken (sudo get-apt install uuenview). Bsp:
    cat mail.txt|uuenview -a -bo MyAttachment.tgz |sendmail -t
    wobei das file mail.txt zB folgendes enthält:
    –cut–
    From: MyAddress@gmx.at
    To: irgendwer@irgendwo.com
    Subject: MySubject

    Hier kommt der Body-text
    blabla
    –cut–

  17. Ich nutze mutt 1.5.22 unter cygwin zum mailen und hole mails per pop ab. Da gmx auf verschlüsselte mails umstellt, siehe http://www.gmx.net/e-mail-made-in-germany/ssl/, wollte ich meine Konfigurationsdatei .muttrc anpassen und ersetzte

    set pop_host="pop.gmx.net"
    

    durch

    set pop_host="pop.gmx.net:995"
    

    Leider bekam ich beim Abrufen der Mail die Meldung „Illegal instruction (core dumped)“. Der „core“ ist offenbar die Datei mutt.exe.stackdump mit folgendem Inhalt:

    Exception: STATUS_ILLEGAL_INSTRUCTION at eip=0047D288
    eax=00000040 ebx=611841BF ecx=00000068 edx=00000006 esi=004A355B edi=FFFFFFFF
    ebp=000003FA esp=00228DA4 program=C:\Programme\cygwin\bin\mutt.exe, pid 1976, thread main
    cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
    Stack trace:
    Frame     Function  Args
    

    mutt -v | grep ssl zeigt, dass in den configure-options –with-ssl und –enable-pop steht:

    mutt -v | grep ssl
    Configure options: '-C' '--with-mailpath=/var/spool/mail' '--disable-dependency-tracking' '--docdir=/usr/share
    /doc/mutt-1.5.22' '--enable-fcntl' '--enable-hcache' '--enable-iconv' '--enable-imap' '--enable-locales-fix' '
    --enable-pop' '--with-ssl' '--build=x86_64-pc-linux' '--host=i686-pc-cygwin' '--target=i686-pc-cygwin' '--pref
    ix=/usr' '--exec-prefix=/usr' '--sysconfdir=/etc' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--lib
    dir=/usr/lib' '--includedir=/usr/include' '--libexecdir=/usr/sbin' 'CFLAGS=-O2 -g' 'CXXFLAGS=-O2 -g' 'build_al
    ias=x86_64-pc-linux' 'host_alias=i686-pc-cygwin' 'target_alias=i686-pc-cygwin' 'CC=i686-pc-cygwin-gcc'
    

    Wenn ich den Standardport 110 eintrage, also

    set pop_host="pop.gmx.net:110"
    

    erhalte ich die identische Meldung und das gleiche mutt.exe.stackdump, das sich nur in der pid unterscheidet.

    Die Datei .muttrc ist in Unix-Format gespeichert, das ist ja manchmal bei cygwin eine mögliche Fehlerquelle. Ich habe noch den Tipp verfolgt, die Variable pop_port extra zu setzen, aber mutt kennt sie nicht, und auch die Doku von mutt unter http://www.mutt.org/doc/manual/manual-6.html#ss6.3 sagt, dass der Port optional nach der Adresse und Doppelpunkt geschrieben wird:

    pop_host
    
    Type: string
    Default: ""
    
    The name of your POP server for the fetch-mail function. You can also specify an alternative port, username and password, ie:
    
    [pop[s]://][username[:password]@]popserver[:port]
    

    Hat jemand eine Idee? (Mail schicken würde ich gern weiter mit ssmtp.exe, geht auch nicht, dazu mehr in separatem thread, wird sonst zuviel hier.)

    Vielen Dank im voraus und beste Grüße von

    Helmut

  18. Hall Leute.

    Ich habe mich an die Anleitung gehalten.
    Was ich nicht so ganz verstehe.

    Ich habe in der ssmtp.conf erste Zeile User_Name_AAAA=EIN.BEISPIEL@gmail.com und in der revalias User_Name_AAAA:EIN.BEISPIEL@gmail.com:smtp.gmail.com:587 eingetragen.

    User_Name_AAAA gibt es auf dem System nicht als User.

    Sowohl root als auch ich als normaler User können Mail versenden.
    Was laut Anleitung für „User“ nicht gehen sollte.

    eine Idee??

    Gruß.

    B. Zeljak

  19. Hallo Leute!
    Nach upgrade auf Ubuntu 14.04 und Apache2 2.4.7 klappt das Versenden von Mails mittels Web-Formular nicht mehr. Zwar meldet das Formular: „Die Mail wurde versendet“, es wurde also kein Fehler erkannt, aber im Error-Log steht:
    [Wed Oct 08 15:33:14.665413 2014] [core:notice] [pid 3017] AH00094: Command line: ‚/usr/sbin/apache2‘
    ssmtp: No recipients supplied – mail will not be sent

    Folgerichtig kommt auch keine Mail beim Empfänger an.

    Wer kann mir auf die Sprünge helfen?

  20. Hi Christoph!
    Ich verwende genau das gleiche „mailer.php“ und die gleiche html-Eingabemaske, wie schon unter Ubuntu 12.04 (siehe Eintrag vom 10.2.2013).

    Mail aus dem Terminal verschicken mit „ssmtp -v mail@domain.de < test.mail" funktioniert.

  21. Hallo Christoph,

    danke für die Anleitung – sowas habe ich gesucht weil ich meinen N54L mit RAID5 aus der Ferne etwas „überwachen“ will.
    Mit GMX funktioniert das prima, nun habe ich gerade mein (fast nutzloses) GMAIL-Postfach au das 2-Step_Verfahren umgestellt.
    Bei meinem PC gings problemlos über die SMS – aber wie geht es bei einem debian7-Server über die Konsole?
    Diese Variante über Gmail wäre mir lieber…
    Danke.

  22. hallo,
    eins vorweg…bin raspi-neuling…

    wollte den mailversand einrichten (mittels gmx) – wenn ich die testmail sende, tut sich nichts…nach mehrmaligen enter drücken, bekomme ich folgende Meldung:

    [] EHLO gmx.net
    [] AUTH LOGIN
    [] bW9vc3Jvc2VAZ214LmF0
    [<-] 334 UGFzc3dvcmQ6
    [] MAIL FROM:
    [<-] 550 Sender address is not allowed.
    ssmtp: 550 Sender address is not allowed.
    

    was kann hie der fehler liegen? mit str+d hab ich es schon versucht...funzt auch nicht

    wäre über Unterstützung sehr erfreut

    danke

    • Der Fehler steht doch in der Ausgabe: „ssmtp: 550 Sender address is not allowed.“

      GMX wird wohl vermutlich (auch) keine beliebigen Absenderadressen wie root@Hostname mehr erlauben. Ein „FromLineOverride=YES“ sollte das beheben.

    • Hi, wie Klaus schon sagte: Um sich vor Spammern zu schützen erlaubt GMX dir nicht mehr Mails mit einer beliebigen E-Mail-Adresse zu versenden. Du kannst als Absender-Adresse nun also deine GMX-Adresse verwenden, oder aber eben dein Glück mit FromLineOverride=YES versuchen. Grüße, Christoph.

  23. Hallo,

    ich habe schon länger ssmtp benutzt und es hat immer wunderbar funktioniert. Seit kurzem bekomme ich allerdings folgenden Fehler
    „Invalid response SMTP server“

    Hat GMX was geändert, sodass ssmtp nicht mehr funktioniert?
    Ich verwende folgende Konfiguration:

    root=user@gmx.de
    mailhub=mail.gmx.net:465
    rewriteDomain=gmx.net
    hostname=gmx.net
    UseTLS=YES
    AuthUser=user@gmx.de
    AuthPass=password
    FromLineOverride=YES

    Ich würde mich sehr über Antworten freuen.

    Gruß,
    Manuel

  24. Auch von mir herzlichen Dank für die Anleitung. Hat alles auf Anhieb geklappt und ich konnte mir postfix ersparen und erfahre so jeden Morgen, ob meine Backups geklappt haben.

    Gruß
    Stefan

  25. Vielen Dank für die Arbeit die Du dir gemacht hast!
    Super geschriebene und verständliche Anleitung!!
    Spart doch einige Ressourcen auf meinem Raspberry 🙂

  26. Servus,

    erstmal ein dickes Danke für den Tutorial. Ich kann nun via ssmtp (via konsole) auf meine pi2 Mails verschicken, das klappt schon mal. Nun möchte ich gern auch einen Anhang mit Hilfe von mutt vesenden. Mein Aufruf schaut folgendermaßen aus:

    mutt -a /home/pi/aufnahmen/image.jpg empfaenger@web.de < /dev/null

    Als Fehler erhalte ich:

    Kann Verzeichniseintrag für Datei empfaenger@web.de nicht lesen: Datei oder Verzeichnis nicht gefunden
    empfaenger@web.de: Kann Datei nicht anhängen.

    Irgendwo ist hier noch der Wurm drin, kannst du mir hier helfen?

    Grüße Mike

  27. Der Aufruf von: msmtp -a default empfaenger@web.de < /home/pi/aufnahmen/image.jpg

    gibt folgendes aus:

    msmtp: Umschlagabsenderadresse pi wird vom Server nicht akzeptiert
    msmtp: Nachricht des Servers: 501 Syntax error in parameters or arguments
    msmtp: konnte Mail nicht verschicken (Account default aus /etc/msmtprc)

    Würde mich sehr freuen, wenn du mir helfen könntest.

  28. Vielen Dank für die tollen Infos zu ssmtp. Super Idee, wenn es für meine Planungen geht.

    1.) Ich möchte Web-Formulare von meiner Webseite über ssmtp an Fremde versenden.

    2.) Und Fremde sollen auch über ein Formular Kontakt zu mir aufnehmen können.

    z.B. mit GMX

    Kann mir jemand sagen, was ich dann unter

    form name=“form1″ method=“post“ action=“adresse??“

    und Versand mit php mail? (Absender) verwenden muss?

    Kennt jemand eine Beispielseite?

    Vielen Dank

    • Kannst Dir ja zB mal „http://www.lynda.com/articles/send-email-from-a-web-form-with-php“ anschauen.
      Deine Aufgabe hat ja eigentlich nichts damit zu tun, wie die Mail dann letztendlich versendet wird …

  29. Hat jemand schon mal eine Lösung gefunden wegen dem Klartext-Passwort? Ich überlege:

    AuthUser=EIN.BEISPIEL
    AuthPass=GEHEIM

    von einer externen Datei includen zu lassen.

    Man könnte dann per PHP vor dem Absenden die Daten bereitstellen und nach dem Absenden wieder entfernen.

    include scheint aber in der ssmtp.conf nicht zu gehen. Oder muss man dazu irgendwas in den Einstellungen ändern?

    Andere Ideen?

    • So ich habe es gelöst, das Problem bei ssmtp.

      1.) Ich schreibe über ein Script und PHP exec die Daten des Mailaccounts in die beiden Dateien in /etc/ssmtp/

      2.) Ich sende die Mail() ab.

      3.) Ich lösche die Einträge aus den conf dateien wieder raus.

      Der Vorteil ist, dass ich nun beliebige User und Konfigurationen verarbeiten kann. Jedes Mailkonto ein Dateiblock, der jeweils geschrieben und entfernt wird.

      War eine ziemliche Fummelei. Passwort und Username liegen nun nicht mehr im Klartext in der ssmtp.conf.

      Somit ein richtig schönes erweitertes Mailsystem.

      Hat sich also erledigt 🙂

  30. Hallo,

    ich versuche seit Studen E-Mail via ssmtp auf einem Arduino Yun zu versenden. Dabei erhalte ich immer die Fehlermeldung:

    ssmtp: 530 5.7.0 Must issue a STARTTLS command first. (YUN)

    Ich verwende eine E-Mail-Adresse von T-Online. Mit den selben Zugangsdaten funktioniert der Mailvesand z.B. mit Thunderbird.
    Gibt es irgend eine Strategie, wie ich den Fehler finden kann?

    Danke vorab!

  31. Hi Leute, ich hab die aleitung komplett befolgt, bin dem „gmail weg“ gefolgt und bekomme jetzt beim Test email senden folgende Fehlermeldung:
    ssmtp: Cannot open smtp.gmail.com:587
    Weiß jmd woran das liegt?

    • Ich habe es gerade auf einem Raspi mit Linux Mint mit Erfolg probiert, exakt nach der Anleitung. Eventuell blockiert dein Internetanbieter SMTP-Verbindungen zu anderen SMTP-Servern als seinem. Du kannst das bspw. mit…

      $ telnet smtp.gmail.com 587
      Trying 173.194.65.108...
      Connected to gmail-smtp-msa.l.google.com.
      Escape character is '^]'.
      220 smtp.gmail.com ESMTP jo6sm8024990wjb.48 - gsmtp
      quit
      221 2.0.0 closing connection jo6sm8024990wjb.48 - gsmtp
      Connection closed by foreign host.

      …testen.

  32. Super Anleitung, aber bei mir ergaben die Testmails immer ungefähr (wegen Gößer-Kleiner-Zeichen in der Original-Fehlermeldung) folgende Fehlermeldung:

    501 5.5.2 EIN.BEISPIEL?mailbox.org: Helo command rejected: Invalid name
    ssmtp: RCPT TO:empfaenger@example.com (501 5.5.2 EIN.BEISPIEL?mailbox.org: Helo command rejected: Invalid name)

    Der Fehler war in der Zeile „hostname=EIN.BEISPIEL@gmail.com“. Aus dem @ wurde offensichtlich ein Fragezeichen. Bei mailbox.org zumindest darf hinter „hostname=“ nur die domain stehen, also „hostname=mailbox.org“. Vielleicht ist gmail da toleranter…

  33. Ist klar der Artikel ist schon etwas älter, jedoch lag er immer in meinen Favoriten rum.
    Hab mich heute mal dazu durch gerungen ein Ubuntu-Server auf zusetzten zum entwickeln von PHP usw.
    alles soweit super.

    hab auch alles ans laufen bekommen, jedoch solltest Du den Eintrag hostname=EIN.BEISPIEL@gmail.com bei gmail auf hostname=localhost ändern. Denn sonst geht es nicht, jedenfalls bei mir.

    Eine Frage noch dazu, ich bekomme immer alle Emails auch an die gmail Adresse: kann man das verhindern?

    Mit freundlichen Grüßen Andreas

    • Kann die Probleme von Andreas bestätigen, d.h.
      hostname=localhost muss gesetzt werden (oder zumindest nicht hostname=EIN.BEISPIEL@gmail.com
      – Alle Emails landen in der Mailbox des genutzten Mailservers

      Gruß
      Thomas

  34. Hi zusammen,

    ich verzweifle noch und hoffe auf Hilfe.
    Ich hab alles so auf nem RasPi installiert wie beschrieben.
    Das versenden über Komandozeile als user pi (root) funktionier auch einwandfrei.
    Doch als www-data (hab ich auch in die /etc/ssmtp/revaliases eingetragen) bekomme ich den Fehler: ssmtp: Cannot open smtp.stato.de:465

    Kann mir bitte jemand helfen?

    Danke
    Sebastian

  35. Vielen Dank für die tolle Anleitung!
    Ich habe zwei ganz kurze und ggf. doofe Fragen:
    – Nimmt ssmpt E-Mails ‚asynchron‘ entgegen und leitet diese automatisch an den konfigurierten SMTP-Server weiter, auch wenn dieser mal nicht zur Verfügung steht?
    – wenn man aus Java Mails versenden möchte, wie spreche ich dann ssmpt am einfachsten an? Horcht der Server auf einem lokalen Port?

    Besten Dank!

  36. Danke für diese Beschreibung, auch wenn ich jetzt sehr lange gesucht habe, warum ei mir immer nur der Fehler kam: ssmtp: Authorization failed (535 Authentication credentials invalid)
    Ich echt alles probiert, aber leider erst keine Lösung gefunden.
    Erst als ich irgendwo den Hinweis mit Sonderzeichen im PW gesehen habe, konnte ich mir schon denken was da im Busch ist. Und tatsächlich, ich habe das PW geändert und es geht!
    Also Sonderzeichen im PW sind unter Linux immer wieder mal ein Problem!

  37. Hi,

    danke für die Anleitung. Ich verwende nen Raspberry mit Debian und das Mail versenden klappt auch soweit, nur hab ich folgendes komisches Phänomen:

    Wenn ich die Mail über die Kommandozeile direkt mit:
    echo „Hello world email body“ | mail -s „Test Subject“ recipientname@domain.com
    sende kommt bei mir der eingetragene Alias in der /etc/ssmtp/revaliases „richtig“ an.
    In der Revaliases sind die Nutzer root und pi wie in der Anleitung eingetragen.

    Wenn ich den gleichen „Code“ in einem Bash-Script verwende dann ist der Absender immer „root“ ohne irgendetwas sonst??? Woran könnte das liegen?

  38. Hallo Christoph,

    vielen Dank für die tolle Anleitung. Leider musste ich mein Google Konto auf die Verwendung weniger sicherer Apps umstellen.
    Gibt es dafür eine Abhilfe?

    Gruß Jürgen

  39. Moin Moin,

    wie kann ich täglich um 00:00 den Befehl Uptime ausführen lassen und die ausgabe per E-Mail versenden?
    Der ssmtp ist bereits eingerichtet.

    • Noch einige Nachträge.

      1.) Den ssmtp habe ich wie oben steht auf GMX eingerichtet.
      Es kommt aber beim Testen ein Fehler:
      $ ssmtp -v echo@tu-berlin.de
      [] EHLO gmx.net
      [] AUTH LOGIN
      [] bWFpbC12b24tamVubnlAZ214LkRF
      [<-] 334 UGFzc3dvcmQ6
      [<-] 535 Authentication credentials invalid
      ssmtp: Authorization failed (535 Authentication credentials invalid)

      2.) Wenn ich in der Console "mail -s ./usr/bin/uptime mail@mail.de" eingebe und absende kommt "-bash: mail: Kommando nicht gefunden.".
      Mit welchem Befehl wird die Mail versendet?

  40. Hi,
    klasse Anleitung. Ich habe ssmtp auf einem RaspberryPi mit Debian 9 eingerichtet.
    Hat wunderbar funktioniert.

    Die Kommandozeile

    echo "Hello world email body" | mail -s "Test Subject" recipientname@domain.com

    die überall angepriesen wird funktioniert nur in so weit, daß ich eine EMail bekomme, aber Absender, Betreff und Text fehlen.

    Ich habe dann eine EMail mit

    ssmtp EMAIL_ADRESSE@gmx.de
    To: EMAIL_ADRESSE@gmx.de
    From: EMAIL_ADRESSE@gmx.de
    Subject: Test EMail
    
    Hi,
    das ist eine Testmail
    

    geschickt.

    Beim ersten mal funktioniert das wunderbar. Beim zweiten und weiteren malen, bekomme ich wieder kein Sender und kein Betreff, aber alles im Textfenster. Also To: …
    Als ob ssmtp die weitere(n) EMails für als zugehörigen Text zur ersten EMail hält. Nach einem reboot funktioniert es wieder genau ein mal. Dann das gleiche Problem wieder.

    Hat vielleicht einer eine Idee an was das liegen kann?
    Vielen Dank.

    /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=postmaster
    
    # 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=mail.gmx.net:587
    AuthUser=EMAIL_ADRESSE@gmx.de
    AuthPass=GEHEIM
    UseSTARTTLS=YES
    
    # Where will the mail seem to come from?
    rewriteDomain=gmx.de
    
    # The full hostname
    hostname=rp5000-FHEM
    
    # 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
    
    
    /etc/ssmtp/revaliases:
    # sSMTP aliases
    #
    # Format:       local_account:outgoing_address:mailhub
    #
    # Example: root:your_login@your.domain:mailhub.your.domain[:port]
    # where [:port] is an optional port number that defaults to 25.
    root:EMAIL_ADRESSE@gmx.de:mail.gmx.net:587
  41. Habe die letzten Stunden damit verbracht ssmtp mit einem neuen GMX Account zum laufen zubringen, bekommen habe Ich immer „ssmtp: Authorization failed (535 Authentication credentials invalid)“, habe es dann mit web.de probiert, die Error Meldung/Nummer dort brachte mich dann darauf, das man in den Einstellungen, auf der GMX/Web.de-Seite, die Nutzung von dritt Software wie Outlook/Thunderbird usw. extra aktivieren muß… danach funktionierte es sowohl mit gmx als auch web.de

    • Hallo Rene,
      auch habe die „535“-Erfahrung mit meinem GMX-Account gemacht und bislang keine Lösung gefunden. Nach Umstellung des Config-Files auf meinen Account bei ‚kabelmail‘ lief alles innerhalb von 10min.

      Den Hinweis, bei GMX eine externe Nutzung extra zu aktivieren, habe ich mehrfach gelesen. Nur nutze ich Thunderbird (PC) und K9-Mail (Android) seit Jahren, ohne dass ich jemals bei GMX etwas separat freigegeben hätte.

      In der Web-Mail-Oberfläche von GMX habe ich keine Option gefunden, wo ich etwas aktivieren könnte.

      Kannst du mir mitteilen, wie du das geschafft hast? Für deine Mühe vielen Dank im Voraus!

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein