cron-Mails mit FQDN verschicken

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
simonszu
Beiträge: 52
Registriert: 29.02.2012 09:20:06

cron-Mails mit FQDN verschicken

Beitrag von simonszu » 19.06.2019 09:52:43

Hallo zusammen,

ich habe einen Server mit eingerichtetem Cron. Dieser Cron soll mir bitte pro Cronjob eine Mail schicken. Dies erfolgt auf dem Server mittels msmtp, was die Mails an einen privaten Mailserver als Relayhost schicken soll. Dieser wiederum leitet die Mails an Googlemail weiter. Für manuelle Mails, die ich mittels mail-Befehl auf der Konsole schreibe, klappt das wunderbar. Für Cronmails eher nicht so wirklich, denn der Crond schreibt in den FROM-Header nur den simplen Hostnamen, und nicht den FQDN. Googlemail mag es aber nicht so wirklich, wenn Mails von root@host kommen, sondern hätte lieber root@host.domain.tld, was verständlich ist.

Ich habe dann in der Manpage zu Cron die Option "-n" gefunden: "Include the FQDN in the subject when sending mails. By default, cron will abbreviate the hostname." Ich habe diese Option also in den EXTRA_OPTS in /etc/default/cron aktiviert, aber ohne wirklichen Erfolg.

Zur Info: Die Mails, die von Cron rausgehen, sehen momentan so aus:

Code: Alles auswählen

From: root (Cron Daemon)
To: root
Cc: 
Bcc: 
Date: Wed, 19 Jun 2019 03:05:03 +0000
Subject: Cron <root@lxmonitor> /backup/victoria-backup.sh
msmtp ist dann wiederum so konfiguriert, dass mails an root über besagten privaten Mailserver relayed werden sollen, und jener Mailserver leitet an Googlemail weiter.

Dies ist die passende msmtp.conf auf dem Host:

Code: Alles auswählen

defaults
auth            on
tls             on
tls_certcheck   on
tls_trust_file  /etc/ssl/certs/ca-certificates.crt
logfile         ~/.msmtp.log
aliases         /etc/aliases
maildomain      lxmonitor.simonszu.de

# simonszu.de
account         simonszu
host            my.mail.server
port            587
from            root@lxmonitor.simonszu.de
user            mail@simonszu.de
password        xyz
msmtp hat also eine konfigurierte Maildomain, und auch ein definiertes FROM. Was kann ich tun, damit Cron diese Daten entweder respektiert, sie selbst irgendwo konfiguriert bekommt, oder msmtp die Mails von Cron mit ordentlichem Header versieht?

libertyx82
Beiträge: 5
Registriert: 29.03.2020 17:26:17

Re: cron-Mails mit FQDN verschicken

Beitrag von libertyx82 » 29.03.2020 17:44:14

Ich habe das gleiche Problem.

Die Mails die von cron versendet werden, haben als Absender (FROM) immer

Code: Alles auswählen

From: root (Cron Daemon)
Die aliases ist mit den entrechenden Einträgen unter /etc angelegt und ich habe es auch schon mit

Code: Alles auswählen

MAILFROM=
in der crontab versucht aber ohne Erfolg.
Die Mails mit diesem Absender werde von keinem öffentlichen Mailserver akzeptiert und kommen als unzustellbar "invalid From Header" zurück.

Es muss doch eine Lösung geben, für den cron eine Absender Adresse zu konfigurieren?

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: cron-Mails mit FQDN verschicken

Beitrag von inne » 29.03.2020 19:09:08

libertyx82 hat geschrieben: ↑ zum Beitrag ↑
29.03.2020 17:44:14

Code: Alles auswählen

MAILFROM=
in der crontab
Debian Bugreport898177

libertyx82
Beiträge: 5
Registriert: 29.03.2020 17:26:17

Re: cron-Mails mit FQDN verschicken

Beitrag von libertyx82 » 29.03.2020 19:12:45

Jap aber, dass hilft leider nicht, er sendet weiterhin als "root (Cron Daemon)" obwohl ich "MAILFROM=linux-server@my-domain.de" in der crontab konfiguriert habe.

simonszu
Beiträge: 52
Registriert: 29.02.2012 09:20:06

Re: cron-Mails mit FQDN verschicken

Beitrag von simonszu » 30.03.2020 08:50:31

Ich habe letztendlich einen Wrapper um Sendmail geschrieben, der den Header austauscht. Folgendes als Script nach /usr/bin/sendmail geschrieben, und darauf geachtet, dass msmtp-mta (oder wie auch immer dieses Zusatzpaket heißt, was msmtp dazu bringt, sendmail zu imitieren) entfernt ist:

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: root@{{ msmtp_mailfrom }}/" | msmtp -v --auto-from=on --read-envelope-from --maildomain={{ msmtp_mailfrom }} -t $BASH_ARGV
Wobei msmtp_mailfrom in dem Falle Template-Variablen sind, weil ich msmtp mit Ansible installiere. Hier einfach den FQDN des Hosts eintragen.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: cron-Mails mit FQDN verschicken

Beitrag von Tintom » 30.03.2020 09:21:26

libertyx82 hat geschrieben: ↑ zum Beitrag ↑
29.03.2020 19:12:45
Jap aber, dass hilft leider nicht, er sendet weiterhin als "root (Cron Daemon)" obwohl ich "MAILFROM=linux-server@my-domain.de" in der crontab konfiguriert habe.
Nur der Vollständigkeit halber: Du hast die Quellen von cron geladen, den im Bugreport genannten Patch angewendet und das Paket anschließend neu gebaut und installiert? Oder wie war deine Vorgehensweise?

libertyx82
Beiträge: 5
Registriert: 29.03.2020 17:26:17

Re: cron-Mails mit FQDN verschicken

Beitrag von libertyx82 » 30.03.2020 09:50:33

ähm nein, ich habe den cron der mit debian buster ausgeliefert wird (3.0pl1-134+deb10u1).

Und welcher Bug Report? Bei meiner ganzen googlelei der letzten Tage bin ich nicht einmal auf einen Bugreport zu diesem Thema gestoßen.

libertyx82
Beiträge: 5
Registriert: 29.03.2020 17:26:17

Re: cron-Mails mit FQDN verschicken

Beitrag von libertyx82 » 30.03.2020 11:43:52

simonszu hat geschrieben: ↑ zum Beitrag ↑
30.03.2020 08:50:31
Ich habe letztendlich einen Wrapper um Sendmail geschrieben, der den Header austauscht. Folgendes als Script nach /usr/bin/sendmail geschrieben, und darauf geachtet, dass msmtp-mta (oder wie auch immer dieses Zusatzpaket heißt, was msmtp dazu bringt, sendmail zu imitieren) entfernt ist:

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: root@{{ msmtp_mailfrom }}/" | msmtp -v --auto-from=on --read-envelope-from --maildomain={{ msmtp_mailfrom }} -t $BASH_ARGV
Wobei msmtp_mailfrom in dem Falle Template-Variablen sind, weil ich msmtp mit Ansible installiere. Hier einfach den FQDN des Hosts eintragen.
ich habe das Script jetzt unter /usr/sbin/sendmail angelegt und angepasst (die Option auto-from musste ich entfernen da es mit dieser gar nicht ging)

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: root@{{ linux-server@mydomain.de }}/" | msmtp -v --read-envelope-from --maildomain={{ linux-server@mydomain.de }} -t $BASH_ARGV
Jetzt sieht der Absender allerdings so aus

Code: Alles auswählen

root@{{
Wie muss ich das Script denn ändern wenn der Absender

Code: Alles auswählen

linux-server@mydomain.de
lauten soll.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: cron-Mails mit FQDN verschicken

Beitrag von Tintom » 30.03.2020 12:53:49

libertyx82 hat geschrieben: ↑ zum Beitrag ↑
30.03.2020 09:50:33
Und welcher Bug Report?
Den, den @inne gepostet hat: viewtopic.php?p=1233813#p1233813

simonszu
Beiträge: 52
Registriert: 29.02.2012 09:20:06

Re: cron-Mails mit FQDN verschicken

Beitrag von simonszu » 30.03.2020 14:00:44

libertyx82 hat geschrieben: ↑ zum Beitrag ↑
30.03.2020 11:43:52

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: root@{{ linux-server@mydomain.de }}/" | msmtp -v --read-envelope-from --maildomain={{ linux-server@mydomain.de }} -t $BASH_ARGV
Jetzt sieht der Absender allerdings so aus

Code: Alles auswählen

root@{{
Wie muss ich das Script denn ändern wenn der Absender

Code: Alles auswählen

linux-server@mydomain.de
lauten soll.
Entferne die doppelten geschweiften Klammern. Die sind noch Teil der Ansible Template-Syntax, die ich verwendet habe. Also mach letztendlich:

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: root@linux-server@mydomain.de/" | msmtp -v --read-envelope-from --maildomain=linux-server@mydomain.de -t $BASH_ARGV
Hinweis am Rand: Doppelte @ in einer Mailadresse, sowie ein @ in einem FQDN sind nicht so toll. Mach lieber "From: root@linux-server.mydomain.de" und "--maildomain=linux-server.mydomain.de". Genau dafür sind Subdomains ja da ;)

libertyx82
Beiträge: 5
Registriert: 29.03.2020 17:26:17

Re: cron-Mails mit FQDN verschicken

Beitrag von libertyx82 » 30.03.2020 14:10:29

simonszu hat geschrieben: ↑ zum Beitrag ↑
30.03.2020 14:00:44
Hinweis am Rand: Doppelte @ in einer Mailadresse, sowie ein @ in einem FQDN sind nicht so toll. Mach lieber "From: root@linux-server.mydomain.de" und "--maildomain=linux-server.mydomain.de". Genau dafür sind Subdomains ja da ;)
Ich glaube da gibt es ein kleines Missverständnis. linux-server@mydomain.de ist die Mailadresse (öffentlich) linux-server ist auch nicht der Hostname.

Habs jetzt wie folgt geändert und es funktioniert :)

Code: Alles auswählen

#! /bin/bash
sed -e "s/From: root (Cron Daemon)/From: linux-server@mydomain.de/" | msmtp -v --read-envelope-from --maildomain=@mydomain.de -t $BASH_ARGV

Antworten