Mailversand über Crontab mit ssmtp

  • Hallo in die Runde,


    ich bin gerade dabei meinen Server bisschen aufzuwerten. Dabei möchte ich gerne nach manchen "Aufgaben" eine Bestätigungsmail haben. Diese Aufgaben werden durch Crontab gesteuert.

    Ich nutze einen einfachen Mailversand über ssmtp. Der Mailversand in der Konsole funktioniert einwandfrei.


    Code
    ssmtp kontakt@meinedomain.de < mail.txt 
    und 
    sendmail -t < mail.txt funktioniert

    Ich lasse über meine Scripte die mail.txt nach diesem Format erstellen:

    Code
    To: abc@abc.de
    From: max Mustermann <kontakt@meinedomain.de>
    Subject: Test
    
    Nachrichtentext
    Naxhrichtentext
    Nachrichtentext

    Wie bereits gesagt, der Versand direkt im Terminal funktioniert einwandfrei, keine Probleme.


    Wenn ich die Mails aber mittels Crontab versenden lassen möchte, wird gestreikt:

    Code
    /var/log/mail.warn
    
    Apr 30 03:20:01 v220180349xxxxxx sSMTP[1483]: RCPT TO:<kontakt@meinedomain.de> (553 5.7.1 <root@meinedomain.de>: Sender address rejected: not owned by user kontakt@tobis-meinedomain.de)

    Den Fehler verstehe ich schon, allerdings finde ich den Fehler in meiner kleinen Config nicht. Zumal es bei ssmtp ja nicht viel zu konfigurieren gibt xd

    Den Alias (/etc/ssmtp/revaliases) habe ich ebenfalls angelegt - root:kontakt@meinedomain.de:smtp.server.de:465


    Mit folgenden beiden Methoden habe ich die Einstellungen unter crontab -e vorgenommen, beide ohne Erfolg. Die Mail geht nicht raus.

    Code
    15 3 * * 1 /usr/sbin/sendmail -t < /pfad/zur/mail.txt
    
    und
    
    15 3 * * 1 /pfad/zum/skript/welches/die/mail/versendet.sh


    FromLineOverride=YES


    Zudem habe ich sämtliche "Kombinationen" durchgespielt. Ebenfalls habe ich auch alle Befehle mit ssmtp versucht. Bei FromLineOverride=NO geht die Mail zwar raus, aber kein Text ist da wo er sein soll (z.B. Crontab Befehl = Betreffzeile)


    Da der Versand über das Terminal ja funktioniert, gehe ich mal davon aus, dass ich den Befehl in der Crontab falsch habe...


    ...zum verrückt werden :D

  • Fiese Sache - crontab debugging. Bei mir liegt es i.d.R. an einem nicht gesetzten Pfad, d.h. ich rufe "meinScript.sh" auf, /usr/local/bin ist über .bashrc gesetzt, fehlt dann aber wenn ich via cron aufrufe.

    Einen solchen Fehler sehe ich bei dir auf Anhieb nicht - aber vielleicht liegt es ja z.B. an config files für ssmtp die nicht gesourced werden? Schau doch mal was da includiert werden muss, und lass dir ggf. die gesetzten Variablen ausgeben ("set > /tmp/log.file" ) um sie mit deiner funktionierenden Variante zu vergleichen.


    Grüße,

    ItsMee

  • Ändere mal das Shebang auf #!/bin/bash --login.


    Wieso nimmst du eigentlich (noch) sendmail? Es gibt doch viel schönere Tools wie z.B. swaks.



    "Security is like an onion - the more you dig in the more you want to cry"

  • Hay,


    wichtig: Der Cron-(root)-User läuft ev. unter einer anderen Shell als der Terminal-(root)-User, oft nur sh statt bash (da hilft auch nicht, dass die darin laufenden Scripte die Bash über den shebang aufrufen).


    Das heißt auch, dass Einstellungen, die bei Einloggen des Terminal-Users über die .bashrc gemacht werden, nicht im Cron zur Verfügung stehen - z.B. irgendwelche Aliase, Umgebungsvariablen, Pfade (deswegen auch im Cron immer absolute Pfade nehmen), aber ev. auch Wrapper oder Einstellungen zum benutzten MTA whatever. So kann es sein, dass Dinge im Terminal funktionieren, im Cron aber nicht - obwohl derselbe User... die Shell ist aber unterschiedlich :D


    Also bitte mal die .bashrc durchsuchen, ob dort Kandidaten - z.B. Environment-Variablen- dabei sind, die ggf. manuell im Sendescript gesetzt werden müssen.


    CU, Peter

    Peter Kleemann // https://www.pkleemann.de // +49 621 1806222-0 // Kann Programme, Internet, Netzwerke und Telefon.

  • Wieso nimmst du eigentlich (noch) sendmail? Es gibt doch viel schönere Tools wie z.B. swaks.

    Meine Server sind nur zum reinen Hosten da. Die ganzen E-Mail "Funktionalitäten" habe ich ausgelagert. Mein Prinzip "Jedes unnötig installierte Programm ist zuviel". Da sendmail standardmäßig installiert ist (und es für meine kleinen mini E-Mails ausreicht) fiel darauf die Wahl.


    ssmtp ist unmaintained. Ich empfehle stattdessen OpenSMTPD, 2 Zeilen Config!

    Da bin ich wieder bei dem Punk, alles schlank halten. Für meinen Verwendungszweck ist ssmtp völlig ausreichend. Natürlich vorausgesetzt ich bekomme mein Problem gelöst xD


    Die hier beschriebenen Möglichkeiten werde ich schnellstmöglich ausprobieren und mich dann wieder melden.

  • Nutzt dein Mailtool vielleicht per-user configs und du vielleicht verschiedene Benutzer (cron/anderer Versuch)?

    Code
    /var/log/mail.warn
    Apr 30 03:20:01 v220180349xxxxxx sSMTP[1483]: RCPT TO:<kontakt@meinedomain.de> (553 5.7.1 <root@meinedomain.de>: Sender address rejected: not owned by user kontakt@tobis-meinedomain.de)

    Kann es sein, dass dein Mailtool von root versucht zu senden, obwohl es dafür nicht berechtigt ist? Das würde ja vermutlich mit dem cron User übereinstimmen. (Das würde ja ggf. wieder für die per-user configs sprechen.)




    Ansonsten kann ich noch mutt empfehlen, wird auch noch aktualisiert. ( http://www.mutt.org/ )

  • Verdammte Axt! Es lag wirklich an der /etc/ssmtp/revaliases. Gelöscht uns alle Logs sind sauber. Noch besser, die E-Mails kommen an.


    Aber wie ich eben gelesen habe wird es wohl bald neue Aufgaben geben. Die Gen 8 der RS steht vor der Tür xD