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


34

J'utilise SMTP à distance via nullmailer et il faut définir le champ De pour le nom spécifique, mais cron l'a défini comme étant root@my.sweet.server.com.

Comment pourrais-je le changer en quelque chose comme moi@ya.ru?


Quelle implémentation cron (et OS)?
Kimvais

Voir cette question: serverfault.com/questions/438843/… pour une autre solution.
robin

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" toaddress@example.com -- -r "fromaddress@example.com" -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)


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.


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 root@somecompany.com


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

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="myrealemail@example.com"

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



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.


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.


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

-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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.