Wie ändere ich das Feld "Von:" für E-Mails von Cron?


34

Ich verwende Remote-SMTP über nullmailer und es ist erforderlich, das Feld "Von" auf den spezifischen Namen festzulegen, aber cron legt es als root@my.sweet.server.com fest.

Wie könnte ich es in so etwas wie me@ya.ru ändern?


Welche Cron-Implementierung (und welches Betriebssystem)?
Kimvais

In dieser Frage: serverfault.com/questions/438843/… finden Sie eine andere Lösung.
Robin

Antworten:


13

Ich glaube nicht, dass Sie die FROM-Adresse ändern können (jemand sollte eine MAILFROM-Option hinzufügen).

Sie können jedoch so etwas tun, um ein ähnliches Ergebnis zu erzielen:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" toaddress@example.com -- -r "fromaddress@example.com" -F"Full Name of sender"

Die gesamte Ausgabe wird an den Befehl mail weitergeleitet, sodass die Variable MAILTO überhaupt nicht verwendet wird.

Die to-Adresse müsste festgelegt werden, aber möglicherweise können Sie die Variable $ MAILTO verwenden. Mit - werden die restlichen Optionen als sendmail-Optionen festgelegt, sodass Sie die Optionen -r und -F verwenden können.

-s ist das Thema

-r ist die Antwortadresse

-F ist der vollständige Name des Absenders (sieht in E-Mail-Clients gut aus)


serverfault.com/a/437319/30697 sollte wahrscheinlich die akzeptierte Antwort sein.
lkraav

34

Moderne Versionen von cron akzeptieren "MAILFROM = ..." im crontab-Format. Ich schlage vor, dass Sie "Mann 5 Crontab" versuchen. Wenn MAILFROM erwähnt wird, sollte Ihre Version dies unterstützen. Der zu suchende Ausdruck befindet sich gegen Ende des Abschnitts, in dem MAILTO behandelt wird, und sollte ungefähr so ​​lauten:

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.


6
Wo bedeutet "modern" was? Dies wird von der neuesten Version von cron in Debian Unstable (3.0pl1-124) nicht unterstützt, was ich im Changelog oder in der Dokumentation sehen kann.
Flimzy

thx, das hat bei mir auf Archlinux geklappt. Es gibt viele verschiedene Arten von Cron. Debians ISC stammt aus dem Jahr 2004, was die Definition von "modern" erweitert, aber ohne Informationen darüber, auf welchem ​​System es verwendet wird - es ist schwierig, diese Details bereitzustellen!
RuiDC

1
Leider hat Ubuntus Cron (mindestens ab 14.04 LTS) keine Erwähnung von MAILFROMin man 5 crontab.
Arto Bendiken

4
Sie können installieren cronie, um cronauf Debian / Ubuntu zu ersetzen . Ta-daa: MAILFROMexistiert:
Andreas Klöckner

1
cronie existiert nicht auf Ubuntu 16.04
alex k

7

/ etc / mailname enthält den Domainnamen als Teil der FROM-Adresse. Wenn / etc / mailname 'somecompany.com' enthält, hat cron, das für root ausgeführt wird, den Absender root@somecompany.com


2
Einige Infos hier: wiki.debian.org/EtcMailName - sagt nicht, ob nullmailer es benutzt. Ich benutze sendmail und es schien nicht zu funktionieren.
Zitrax

5

Sie können den Nullmailer von der Adresse über Umgebungsvariablen oder die Befehlszeile einstellen. Die Befehlszeilenargumente lauten -fund -Ffür die Absenderadresse bzw. den vollständigen Namen.

Normalerweise können Sie Umgebungsvariablen in der crontab setzen.

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh

Er fragt nach FROM: not TO:
Kimvais

Hm, das funktioniert aus unbekannten Gründen nicht.
Alexander Artemenko

3

Für mich ist der einfachste Weg, die Absenderadresse auf einem System zu ändern, eine ~/.mailrcDatei mit folgendem Inhalt zu erstellen :

set name="My Full Name"
set from="myrealemail@example.com"

Alle mailBefehle, die als mein Benutzer ausgeführt werden, verwenden jetzt diese Einstellungen.



0

Eine andere einfache Alternative ist, Köter zu verwenden,

  • Erstellen Sie eine .muttrc-Datei im Home-Verzeichnis des Benutzers, der cron ausführt

    set realname = "Joe User" set from = "user @ host" set use_from = yes

  • Führen Sie ein Skript mit dem Befehl mutt aus, oder leiten Sie den Befehl cron an mutt from weiter, um eine E-Mail zu senden.

Bevor mutt sendet und eine E-Mail versendet, wird der From-Header aus der .muttrc-Datei gesetzt.


0

Ich musste mich umziehen /etc/mail/sendmail.cfund /etc/mail/sendmail.mc, weil /etc/mailnamenicht benutzt. Es wird jedoch nur die From-Domain geändert, nicht der Benutzer.


0

Hier sind einige Dinge, die Sie anwenden können, um Ihre Absender-Domain zu ändern:

Edit this file: /etc/mailname and change to:
    example.org
sudo postconf -e 'myhostname= example.org'
sudo systemctl restart postfix

-2

es wird von der user @ domain gesendet - der user ist der login name, unter dem der cron läuft - also müsst ihr einen user 'me' erstellen - und den cron job als dieser user ausführen.

Um die Domain zu ändern, gibt es verschiedene Möglichkeiten - es kann sein, dass Sie den Hosts-Dateieintrag ändern müssen (oder, wie auf meinem Computer, als ich dies konfiguriert habe - eine Ubuntu-Box) -, ändern Sie / etc / mailname - um die Domain zu sein, von der sie kommen soll.


1
Das stimmt eigentlich nicht - zumindest in vielen Fällen nicht. Auf meinem System wird es beispielsweise nur von 'Benutzer' gesendet, nicht von 'Benutzer @ Domäne'. Es liegt in der Verantwortung des MTA, den lokalen Domänennamen hinzuzufügen. Dies ist in einigen Fällen (z. B. in meinen Fällen) von Bedeutung, in denen mein MTA (aus Gründen, die zu kompliziert und langweilig sind, um sie zu beschreiben) den Domain-Namen nicht hinzufügt.
Flimzy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.