web-dev-qa-db-fra.com

Comment changer le champ "De:" pour les e-mails de Cron?

J'utilise SMTP à distance via nullmailer et il faut définir le champ De au nom spécifique, mais cron le définir comme [email protected].

Comment pourrais-je le changer en quelque chose comme [email protected]?

36

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

Vous pouvez cependant faire quelque chose comme ça 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 à doit être définie, mais vous pourrez peut-être utiliser la variable $ MAILTO. Le - définit le reste des options comme options 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 (donne une belle apparence aux clients de messagerie)

17
Richard Holloway

Les versions modernes de cron acceptent "MAILFROM = ..." au format crontab. Je vous suggère d'essayer "man 5 crontab". S'il mentionne MAILFROM, votre version devrait le prendre en charge. La phrase à rechercher se situe 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.

37
Jon Green

/ etc/mailname contient la partie nom de domaine de l'adresse FROM. Si/etc/mailname contient 'somecompany.com', alors cron en cours d'exécution pour root aura l'expéditeur en tant que [email protected]

8
user171601

Vous pouvez définir le nullmailer à partir de l'adresse via des variables d'environnement ou la ligne de commande. Les arguments de la ligne de commande sont -f et -F pour l'adresse de l'expéditeur et le nom complet respectivement.

Habituellement, 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
5
Lachlan Roche

Pour moi, la façon la plus simple de changer l'adresse d'expéditeur d'un système est de créer un ~/.mailrc fichier avec un contenu comme celui-ci:

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

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

3
Niels de Vos

Voici quelques éléments que vous pouvez appliquer pour modifier votre domaine d'expéditeur:

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

Je devais changer /etc/mail/sendmail.cf et /etc/mail/sendmail.mc, parce que /etc/mailname n'a pas été utilisé. Cependant, cela ne change que le domaine from, pas l'utilisateur.

0
Rudie

Consultez cette question si vous utilisez Exim:

exim: réécriture de l'en-tête "From" dans l'enveloppe "FROM"

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

0
Vladimir Panteleev

Une autre alternative simple consiste à utiliser mutt,

  • créer un .muttrc dans le répertoire personnel de l'utilisateur qui exécute cron avec ce qui suit

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

  • Exécutez un script contenant la commande mutt ou dirigez la commande cron vers mutt pour envoyer un e-mail.

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

0
Chida