Ubuntuserver 22.04: cron verschickt unkontrolliert email

Orion66

Cadet 3rd Year
Registriert
Jan. 2010
Beiträge
34
Hallo Leute
Ich habe ein Problem, dem ich einfach nicht auf den Grund komme:

Cron verschickt alle paar Sekunden ein Email mit dem Betreff "Cron <root@srv01> /usr/bin/curl http://test.home:82/crontab_min.php;"
Der Inhalt des Mails ist eine php-Fehlermeldung "<b>Deprecated</b>: Implicit conversion from float 0.5 to int loses precision in <b>/var/www/test/crontab_min.php</b> on line <b>49</b><br />"

Wenn ich den kompletten Inhalt der crontab_min.php auskommentiere, ändert das nichts am Versand der Mails.
Nur wenn ich in crontab die Zeile "0-59 * * * * root /usr/bin/curl http://test.home:82/crontab_min.php;" auskommentiere, stoppt der Mailversand.

So sieht meine crontab aus:
Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user    command
17 *    * * *    root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0-59 * * * * root /usr/bin/curl http://test.home:82/crontab_min.php;
#

2 Fragen ergeben sich für mich daraus:

* Die Mails werden an root@srv01 geschickt, was natürlich scheitert, weil dieser Empfänder nicht existiert. Wie kann der Empfänger geändert werden?

* Wie kann der Versand unterbunden werden?

Für den Mailversand ist MSMTP eingerichtet.

lg
 
Zuletzt bearbeitet:
Die Mails gehen immer an den User unter dem der Job läuft, die Adresse kannst du bei Bedarf in deinem MTA umschreiben lassen oder du setzt direkt im crontab die MAILTO Variable.
Wenn der Job auf stdout und stderr keinen Output generiert wird auch keine Mail verschickt. Du kannst also z.B. den Output nach woanders umleiten, z.B. durch logger in den syslog pipen oder fire & forget nach /dev/null

PS: alternativ vielleicht einfach deinen PHP Code fixen oder das php error reporting anders einstellen.
 
Zuletzt bearbeitet:
Also jetzt mal ernsthaft.
Du erstellst einen cronjob der alle paar sek loos geht und fragst dich warum er alle par sek los geht?.

Ich check dein vorhaben nun nicht was soll das ziel sein?
Den intervall ändern?
deaktivieren weisst du ja schon wie!
 
Am Ende ein >> /dev/null oder so dahinter, dann wird der Output in den Müll entsorgt statt als Mail weggeschickt zu werden.
 
up.whatever schrieb:
PS: alternativ vielleicht einfach deinen PHP Code fixen oder das php error reporting anders einstellen.
Das ist ja das komische: ich habe die betreffende PHP Datei komplett auskommentiert und sogar den apache2 Service deaktiviert. Die Mails gehen trotzdem raus!

RiversOnRevers schrieb:
Also jetzt mal ernsthaft.
Du erstellst einen cronjob der alle paar sek loos geht und fragst dich warum er alle par sek los geht?.

Er soll ja los gehen, aber bitte keine Mails! Und schon gar nicht an einen Empfänder den es gar nicht gibt!

lg
 
Orion66 schrieb:
Er soll ja los gehen, aber bitte keine Mails! Und schon gar nicht an einen Empfänder den es gar nicht gibt!
Beides ist problemlos möglich:
MAILTO=""
Leerer Empfänger => keine E-Mails für keinen Cronjob der crontab, es sei denn du definierst MAILTO anschließend erneut.
MAILTO="user@example.com"
Empfängeradresse festlegen. Allerdings muss dafür der Mailversand auf dem System korrekt konfiguriert sein. Das schließt einen gültigen Absender mit ein. Der kann mit MAILFROM festgelegt werden (wobei diese Varaible nicht von allen cron daemons unterstützt wird).
 
Zuletzt bearbeitet:
up.whatever schrieb:
Die Mails gehen immer an den User unter dem der Job läuft, die Adresse kannst du bei Bedarf in deinem MTA umschreiben lassen oder du setzt direkt im crontab die MAILTO Variable.
Wenn der Job auf stdout und stderr keinen Output generiert wird auch keine Mail verschickt. Du kannst also z.B. den Output nach woanders umleiten, z.B. durch logger in den syslog pipen oder fire & forget nach /dev/null

PS: alternativ vielleicht einfach deinen PHP Code fixen oder das php error reporting anders einstellen.
Das heisst, Mailversand ist in cron default, wenn Output vorhanden und auf dem System Mailversand eingerichtet ist?
 
Ja. Ein Blick in die manpage von Ubuntu 22.04 bringt Klarheit:
In addition to LOGNAME, USER, HOME, and SHELL, bcron-exec(8) will look at MAILTO if it has
any reason to send mail as a result of running commands in ``this'' crontab.
If MAILTO is
defined (and non-empty), mail is sent to the user so named. If MAILTO is defined but
empty (MAILTO=""), no mail will be sent. Otherwise mail is sent to the owner of the
crontab.
Hervorhebungen von mir.
 
Vielen Dank für eure wertvollen Hinweise.
Dadurch ist das Verhalten für mich nun nachvollziehbar.

lg
 
Zurück
Oben