Comment changer le champ “De:” pour les emails de Cron?

Réponses:

13

Je ne pense pas que vous puissiez changer l'adresse FROM (quelqu'un devrait ajouter une option MAILFROM).

Vous pouvez faire quelque chose comme ceci pour obtenir un résultat similaire:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" [email protected] -- -r "[email protected]" -F"Full Name of sender"

Toutes les sorties sont dirigées vers la commande mail afin que la variable MAILTO ne soit pas utilisée du tout.

L'adresse to doit être définie, mais vous pourrez peut-être utiliser la variable $ MAILTO. Le - définit le reste des options sur sendmail afin que vous puissiez utiliser les options -r et -F.

-s est le sujet

-r est l'adresse de réponse

-F est le nom complet de l'expéditeur (le rend beau dans les clients de messagerie)

Richard Holloway
la source
serverfault.com/a/437319/30697 devrait probablement être la réponse acceptée.
Lkraav
34

Les versions modernes de cron acceptent "MAILFROM = ..." au format crontab. Je vous suggère d'essayer "man 5 crontab". Si elle mentionne MAILFROM, votre version devrait la prendre en charge. La phrase à rechercher se trouve vers la fin du paragraphe traitant de MAILTO et devrait ressembler à ceci:

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

Jon Green
la source
6
Où "moderne" veut dire quoi? Ceci n'est pas supporté par la version la plus récente de cron dans Debian unstable (3.0pl1-124) d'après ce que je peux voir dans le journal des modifications ou dans la documentation.
Flimzy
thx, cela a fonctionné pour moi sur Archlinux. Il existe de nombreux parfums de cron. L'ISC de Debian date de 2004, élargissant ainsi la définition de "moderne", mais sans aucune information sur le système utilisé, il est difficile de fournir ce détail!
RuiDC
1
Malheureusement, le cron d'Ubuntu (au moins à partir de 14.04 LTS) n'est pas mentionné MAILFROMdans man 5 crontab.
Arto Bendiken
4
Vous pouvez installer croniepour remplacer cronsur Debian / Ubuntu. Ta-daa: MAILFROMexiste:
Andreas Klöckner le
1
la cronie n'existe pas sur Ubuntu 16.04
alex k
7

/ etc / mailname contient la partie du nom de domaine de l'adresse FROM. Si / etc / mailname contient 'somecompany.com', alors cron exécuté pour root aura l'expéditeur sous le nom [email protected]

utilisateur171601
la source
2
Quelques informations ici: wiki.debian.org/EtcMailName - ne dit pas si nullmailer l’utilise. J'utilise sendmail et cela ne semble pas fonctionner pour cela.
Zitrax
5

Vous pouvez définir l'adresse nullmailer à partir de l'adresse via des variables d'environnement ou une ligne de commande. Les arguments de ligne de commande sont -fet -Fpour l'adresse de l'expéditeur et le nom complet, respectivement.

Généralement, vous pouvez définir des variables d’environnement dans la crontab.

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

5 0 * * * /usr/local/bin/daily.sh
Lachlan Roche
la source
Il demande à propos de: pas à:
Kimvais
Hm, cela ne fonctionne pas pour une raison inconnue.
Alexander Artemenko
3

Pour moi, le moyen le plus simple de changer l'adresse de départ sur un système est de créer un ~/.mailrcfichier avec un contenu comme celui-ci:

set name="My Full Name"
set from="[email protected]"

Toutes les mailcommandes qui s'exécutent en tant qu'utilisateur utilisent maintenant ces paramètres.

Niels de Vos
la source
0

Voir cette question si vous utilisez Exim:

exim: réécrit l'en-tête "De" dans l'enveloppe "FROM"

Il convient de définir l'adresse "De" sur celle du propriétaire de la tâche cron. Vous pouvez remplacer $header_from:par votre adresse personnalisée si vous souhaitez la coder en dur.

Vladimir Panteleev
la source
0

Une autre alternative simple consiste à utiliser Mutt,

  • créez un fichier .muttrc dans le répertoire de base de l'utilisateur qui exécute cron avec les éléments suivants

    set realname = "Joe User" set from = "utilisateur @ hôte" set use_from = yes

  • Exécutez un script contenant la commande mutt ou dirigez la commande cron vers mutt pour envoyer un courrier électronique.

Avant que mutt envoie un e-mail, il définira l'en-tête De à partir du fichier .muttrc.

Chida
la source
0

Je devais changer /etc/mail/sendmail.cfet /etc/mail/sendmail.mc, parce que /etc/mailnamen'était pas utilisé. Cela change seulement le domaine d'origine, pas l'utilisateur.

Rudie
la source
0

Voici quelques choses que vous pouvez appliquer pour changer de domaine d'expéditeur:

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

il est envoyé par l'utilisateur @ domaine - l'utilisateur est le nom de connexion sous lequel cron est exécuté - vous devez donc créer un utilisateur "moi" - et exécuter le travail cron en tant qu'utilisateur.

Ensuite, pour changer de domaine, il existe différentes possibilités - il se peut que vous deviez modifier l’entrée du fichier hosts (ou, comme sur ma machine, lorsque je configurais cela - une boîte ubuntu) - changez / etc / mailname - être le domaine dont vous voulez qu'il vienne.

Kem Mason
la source
1
Ce n'est pas vraiment vrai - du moins pas dans de nombreux cas. Sur mon système, par exemple, il est uniquement envoyé par "utilisateur" et non par "utilisateur @ domaine". Il incombe au MTA d’ajouter le nom de domaine local. Ceci est important dans certains cas (comme le mien) où mon MTA (pour des raisons trop compliquées et ennuyeuses à décrire) n’ajoute pas le nom de domaine.
Flimzy