-
Privater Server und MTA
Hallo, liebe Gemeinde.
Ich habe Zuhause einen kleinen Ubuntu Server V18.04.6 LTS zu stehen.
Der dient im großem und ganzem lediglich dazu, für unser Hausnetzwerk als Backupserver, Archivierung von Papieren und Buchhaltung und ab und an eine lokale LAN-Party abzuhalten.
Alles funktioniert gut, keine Störungen.
Nun kam ich auf die Idee, hier via crontab ein Bash-Script laufen zu lassen, das in regelmäßigen Abstand, ca. 1x die Woche, eine kleine Statistik per E-Mail zukommen lässt damit die Festplatten nicht unnötig volllaufen und ich rechtzeitig die Daten auf DVD verbanne. Da die Möhre nicht permanent läuft sondern nur wenn es halt sein muss, wäre so eine kleine Automatisierung eine feine Sache.
Also erst msmtp drauf, mutt installiert, Script gebastelt..... ihr kennt das sicherlich.
Grundsätzlich funktioniert das ganze auch, wenn man das fertige Script auf der Commandline händisch ausführt,
jedoch wenn der Crontab das Script ausführen soll dann zwar das Script ausgeführt jedoch keine Mail versendet.
Dafür der Hinweis im syslog "No MTA installed, discarding output"
Im crontab habe ich zu testzwecken stehen "* * * * * root echo "kleiner test" | mutt -s "testmail" -- empfänger@blabla.net
.... und nüscht ist mit Email.
Den Anweisungsblock als root ab echo... auf der Kommandozeile eingetippt, E-Mail ist da.
Achso, versendet und empfangen wird die E-Mail dann über outlook.com falls wichtig.
Ich schnall es einfach nicht, warum die Mail versendet wird wenn ich das Script händisch starte,
und über Cron nicht. Noch dazu benötige ich plötzlich einen MTA ?! Und ich weiß gerade auch nicht ob ich konkret Postfix mit dynamischer IP überhaupt zum laufen bringen kann.
Passende Records lassen sich zwar auf der DynSeite setzen, aber eigentlich geht das ja schon längst zu weit als angedacht.
Wo steckt mein Denkfehler ?
Vielleicht könnt ihr mir ja etwas auf die Sprünge helfen ?
Beste Grüße
-
Du hast vermutlich an mehreren Stellen einiges zu ändern:
1. Generell ist davon abzuraten, direkt in der "/etc/crontab" eine komplexe Kommandozeile mit z.B. "|" einzutragen.
Begründung ist die Behandling von Spezialzeichen ($,/,...), die manchmal komplizierte Quotierung erfordert.
Einfacher ist meist, ein Script z.B. nach
zu legen und dann dieses über die crontab zu starten.
2. In der crontab gibt es default keinen PATH und wenig sonstige Umgebungsvariablen. Also: Entweder PATH selbst setzen oder alle Befehle mit vollem Pfad aufrufen (die sichere Variante)
Das könnte auch das Mailen verhinderen. Also mutt-Zeile anreichern (SMTP-Server, Zugangsdaten..)
-
Das war sehr hilfreich, danke.
Ich habe zwischenzeitig das Script nach /usr/local/bin/verlegt und entsprechend den cron angepasst.
Hier habe ich evtl. Ausgaben auch gleich mit 2> in ein temporäres log schreiben lassen.
Hier kam dann der Fehler 127 heraus, also das eine Datei nicht gefunden wurde.
Letzten Endes habe ich sendmail installiert und die Config des mutt nach root kopiert.
Wichtig war hier noch einen defaultblock anzugeben. Jetzt fliegen die Mails
Danke sehr