MSMTP mit Cron

  • Hallo,

    ich habe ein kleines Script geschrieben (update.sh) welches ich via cron und Mailbenachrichtigung laufen lassen möchte.


    Als Mailapplikation habe ich msmtp gewählt.


    echo "Inhalt der E-Mail" | mail -s "Betreff" Empfänger@mail.de funktioniert.


    Das Script via Cron läuft. Jedoch der MAilversandt hakt.

    Hier ein Auszug aus meiner "Crontab"


    */5 * * * * /usr/local/bin/update.sh > /dev/pts/1 2>&1 | echo "" mail -s "Update Protokoll" Empfänger@gmx.de


    Hier meine /etc/msmtprc


    Set default values for all following accounts.

    defaults

    # Use the mail submission port 587 instead of the SMTP port 25.

    port 587

    # Always use TLS.

    tls on

    # Mail account

    # Hier wird jetzt alles fuer den E-Mail Account konfiguriert

    # Einen beliebigen Namen verwenden

    account Empfänger@gmx.de

    # Host name of the SMTP server

    # Anpassen

    host mail.gmx.net

    # Envelope-from address

    # Anpassen

    from Empfänger@gmx.de

    auth on

    # Anpassen

    user Empfänger@gmx.de

    # Anpassen

    password Geheim

    # Set a default account

    # Name von oben hier wieder eintragen

    account default: Empfänger@gmx.de

    # Map local users to mail addresses (for crontab)

    #aliases /etc/aliases.msmtp //wurde deaktiviert da AppArmor meckert


    Fehlermeldung gem. /var/log/syslog


    Oct 10 11:10:03 raspberry cron[589]: sendmail: recipient address root not accepted by the server

    Oct 10 11:10:03 raspberry cron[589]: sendmail: server message: 501 Syntax error in parameters or arguments

    Oct 10 11:10:03 raspberry cron[589]: sendmail: could not send mail (account default from /etc/msmtprc)

    Oct 10 11:10:03 raspberry CRON[11459]: (root) MAIL (mailed 44 bytes of output but got status 0x0041 from MTA#012)

    Sehe gerade den Fehler nicht. :wallbash:

    Vielleicht hat jemand eine Idee? Bzw. eine "GUTE" Anleitung zum Thema MSMTP mit cron ( und gmx :-))

  • Go to Best Answer
    • Official Post

    Hallo Raspi_Anwender0815,


    willkommen im Forum! ;)


    Vorab, ich habe keine Ahnung von MSMTP.

    */5 * * * * /usr/local/bin/update.sh > /dev/pts/1 2>&1 | echo "" mail -s "Update Protokoll" Empfänger@gmx.de

    Oct 10 11:10:03 raspberry cron[589]: sendmail: server message: 501 Syntax error in parameters or arguments

    Versuch mal ohne echo "".


    Was passiert, wenn Du den Befehl in dr Konsole ausführst?

    Welche Crontab verwendest Du eigentlich dafür, bzw. wie hast Du diese zum Bearbeiten aufgerufen?

  • Hallo Hyle,


    habe ich gemacht. Ein Schritt weiter... Mail versandt hat geklappt ... nur leider ohne Inhalt... aber cron will nicht...


    root@raspberry:/home/pi# /usr/local/bin/update.sh > /dev/pts/0 2>&1 | mail -s "Update Protokoll" Empfänger@gmx.de

    mail: Null message body; hope that's ok

    Get:1 http://security.debian.org buster/updates InRelease [65.4 kB]

    Hit:2 http://ftp.debian.org/debian buster InRelease

    Get:3 http://ftp.debian.org/debian buster-updates InRelease [51.9 kB]

    Hit:4 http://archive.raspberrypi.org/debian buster InRelease

    Fetched 117 kB in 0s (344 kB/s)

    Reading package lists... Done

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    Calculating upgrade... Done

    The following packages were automatically installed and are no longer required:

    libgnutls-dane0 (3.6.7-4+deb10u7)

    libunbound8 (1.9.0-2+deb10u2)

    Use 'apt autoremove' to remove them.

    The following packages have been kept back:

    linux-headers-amd64:amd64 (4.19+105+deb10u12 => 4.19+105+deb10u13)

    linux-image-amd64:amd64 (4.19+105+deb10u8 => 4.19+105+deb10u13)

    0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

    root@raspberry:/home/pi#

  • root@raspberry:/home/pi# which mail

    /usr/bin/mail


    root@raspberry:/home/pi# ls -l /usr/bin/mail

    lrwxrwxrwx 1 root root 22 Oct 7 08:22 /usr/bin/mail -> /etc/alternatives/mail

  • ein anderer Ansatz wäre die Mail funktion in das Script zu packen. Weiß gerade nicht wie das am elegantesten gemacht wird damit auch das Ergebnis des Updates mitgeliefert wird?? Bin nicht der Scripter vorm Herrn :)


    /usr/local/bin/update.sh


    #!/bin/bash

    apt-get update && apt-get upgrade -V


    Gruß

  • Hallo hyle,

    habe ich mal gemacht.

    Eintrag in der Crontab.


    */5 * * * * /usr/local/bin/update.sh > /dev/pts/0 2>&0 | /usr/bin/mail -s "Update Protokoll" empfänger@gmx.de


    Ausgabe:


    Reading package lists... Done

    E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)

    E: Unable to lock directory /var/lib/apt/lists/

    W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)

    W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)

  • Und wieder einmal Cron ......


    Pack das, was du versenden willst, in ein Script, in diesen Script verwendest du für alle Programme und Dateien, die du aufrufst, die kompletten Pfade.

    Dann packst du dieses Script, und nur dieses Script als Aufruf in die Crontab.

    Selber denken,
    wie kann man nur?

    • Best Answer

    update.sh

    Bash
    #!/bin/bash
    logfile = /tmp/update.log
    sudo apt-get update >$logfile
    sudo apt-get -y upgrade >>$logfile
    sudo apt-get -y autoclean >>$logfile
    cat $logfile | mail -s "Update Protokoll" Empfänger@gmx.de
    rm $logfile


    Im Crontab (welchen auch immer) :

    Code
    */5 * * * * /usr/local/bin/update.sh > /dev/null 2>&1

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hallo,


    erstmal vielmals sorry dass ich mich jetzt erst melde.


    Ich lag ein paar Tage krank im Bett und habe mein Raspi neu aufgesetzt, der durch zuviel "Try & Error" etwas verbummfiedelt war.

    Des Weiteren möchte ich mich sehr herzlich bedanken für Eure TOP Unterstützung!!!

    Das ist hier wirklich ein tolles Forum. Hier wird einen schnell geholfen und ich habe viel gelernt.

    So... nun die gute Nachricht.... es funktioniert !!!!
    Das Script von "Der_Imperator" hat geholfen.

    Wichtig ist zu beachten, das das die Datei /tmp/update.log erstmal ( nur einmal) manuell erstellt werden muss.

    Die Syntax hat auch bei mir etwas gehakt. Diese habe ich wie folgt umgesetzt.


    #!/bin/bash

    logfile=/tmp/update.log

    sudo apt-get update >$logfile

    sudo apt-get -y upgrade >>$logfile

    sudo apt-get -y autoclean >>$logfile

    cat $logfile | mail -s "Pihole Update Protokoll" meinemailAdresse@web.de

    rm $logfile


    Also so funktioniert es.


    Also nochmal vielen Dank an Alle... macht weiter so


    Liebe Grüße