Comment puis-je faire en sorte que crontab m'envoie par e-mail le résultat de ses travaux? J'ai [email protected]
au-dessus des emplois, mais cela ne fonctionne pas.
Je sais que je dois utiliser quelque chose comme Postfix ou Sendmail, mais je ne peux pas trouver comment y parvenir. J'ai cherché et cherché un guide simple sur la configuration de Postfix, mais ils sont tous incroyablement compliqués et s'attendent à ce que vous configuriez un serveur entier pour envoyer et recevoir des emails et connaître tous les termes (comme, qu'est-ce qu'un nom de domaine? pour les emails sortants?).
Tout ce que je veux faire, c'est que crontab m'envoie un e-mail. Pourquoi est-ce si difficile??
Informations supplémentaires:
Mon fichier crontab ressemble à ceci:
[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Plus d'infos supplémentaires:
La sortie de ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Je sais que cron fonctionne, mais je teste quand même la commande mail avec echo Test | mail -s Test [email protected]
.
Finalement, j'ai utilisé sSMTP
. C'est beaucoup, beaucoup plus simple que Postfix
ou sendmail
et fait le travail à merveille.
Pour référence future, voici comment utiliser sSMTP avec Yahoo Mail (ne vous inquiétez pas, c'est beaucoup moins complexe qu'il n'y paraît):
Utilisez Synaptic pour télécharger ssmtp. Sinon, vous pouvez exécuter Sudo apt-get install ssmtp
.
Ouvrez le fichier de configuration à /etc/ssmtp/ssmtp.conf.
Faites en sorte que la configuration ressemble à ceci:
root=[[email protected]]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[[email protected]]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
Créez le fichier cert.pem avec OpenSSL. J'ai utilisé la commande openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes
(plus d'infos ici ). Vous pouvez coller le fichier n'importe où, mais je l'ai simplement jeté dans ~ /. Où que vous le mettiez, assurez-vous de pointer la ligne TLS_CA_File=
de ssmtp.conf au bon emplacement.
Ouvrez le fichier /etc/ssmtp/revaliases
et ajoutez la ligne [yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587
. Si vous utilisez root, je pense que vous devez ajouter une autre ligne en remplaçant votre nom par "root".
Ça y est, vous êtes prêt à partir! Pour tester, le moyen le plus simple (IMO) consiste à créer un fichier contenant les éléments suivants:
To: [[email protected]]
From: "whateverYaWant" <[[email protected]]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain
Body of your email goes here! Hello world!
sendmail -V
- il devrait indiquer 'sSMTP'.cat fileWithEmailInIt.txt | sendmail -i -t
, puis attendez quelques secondes (10-30) et vérifiez votre courrier électronique!Évidemment, remplacez [[email protected]]
par votre email (sans les crochets) et [yourRealYahooPassword]
par votre mot de passe Yahoo Mail (encore une fois, sans les crochets).
Remarque supplémentaire: Si vous rencontrez des problèmes avec Gmail, essayez l'option 1 de cette réponse (merci à Ben Creasy pour ces informations) .
Installez Postfix. C'est plus compliqué que la plupart des autres paquets mais ce n'est toujours pas compliqué .
Sudo apt-get install postfix
Sélectionnez "Site Internet" puis acceptez toutes les valeurs par défaut. Ensuite, nous devons juste arrêter les connexions extérieures, en transformant cela en " client nul ". Exécutez: sudoedit /etc/postfix/main.cf
et recherchez le paramètre inet_interfaces
(près de la fin) et remplacez-le par loopback-only
, comme suit:
inet_interfaces = loopback-only
Et enfin, redémarrez Postfix avec Sudo /etc/init.d/postfix restart
(le rechargement ne fera pas).
Vous avez maintenant une installation Postfix qui ne relayera pas le courrier électronique des machines extérieures, elle acceptera simplement les connexions sur 127.0.0.1 (et :: 1 pour IPv6).
Sur une note séparée, vos lignes cron ne fonctionnent probablement pas car vous utilisez des chemins non relatifs et des chemins avec des substitutions de Bash dans. sh
ne comprend pas ~
et il se peut que son ensemble PATH
ne soit pas correct. Alors remplacez-les par (je devine juste les chemins réels):
1 0 * * * /home/clonkex/Desktop/toskymesh.sh
59 6 * * * /home/clonkex/Desktop/tooptus.sh
0 3 * * * /usr/bin/snapraid sync
Et si vos scripts doivent être exécutés à partir d'un répertoire spécifique, assurez-vous qu'ils sont cd
dans le bon répertoire. Ne présumez pas que cron
sera au bon endroit car ce ne sera probablement pas le cas.
J'ai eu beaucoup de chance avec exim4.
Sudo apt-get install Alpine exim4 mailutils eximon4 spf-tools-Perl swaks
(Alpine est juste le client de messagerie que j'aime utiliser)
Après cela, j'ai couru
Sudo dpkg-reconfigure exim4-config
et suivi à travers les invites. Cette page: https://help.ubuntu.com/community/Exim4 était également très utile. Il m'a fallu environ 10 minutes pour le faire fonctionner.
Depuis la page de manuel sSMTP: "Il ne fait pas de crénelage, ce qui doit être fait soit dans l’agent utilisateur, soit dans le mailhub. Il n’honore pas non plus .forwards, ce qui doit être fait sur l’hôte receveur. livrer aux pipelines. "
Donc, si vous souhaitez recevoir tous les messages envoyés à root sur votre courrier électronique externe, il est déconseillé d’utiliser sSMTP, car il ne prend pas en charge les alias.
Au lieu de cela, vous pouvez utiliser postfix. C'est encore très simple. Voici comment l'utiliser avec gmail comme smtp pour l'envoi de messages:
Sudo apt-get install postfix mailutils
Type général de configuration du courrier: Système satellite
Nom de messagerie système: nom complet préféré du serveur de messagerie, par exemple, mail.example.com
Hôte relais SMTP (vide pour aucun): [smtp.gmail.com]: 587
Ajoutez à /etc/postfix/main.cf:
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
Créez/etc/postfix/sasl/sasl_passwd
[smtp.gmail.com]:587 [email protected]:password
Ensuite:
Sudo postmap /etc/postfix/sasl/sasl_passwd
Sudo chown -R root:postfix /etc/postfix/sasl
Sudo chmod 750 /etc/postfix/sasl
Sudo chmod 640 /etc/postfix/sasl/sasl_passwd*
Éditez/etc/aliases et ajoutez:
root: [email protected]
Enfin, lancez:
Sudo newaliases
Sudo systemctl stop postfix.service
Sudo systemctl start postfix.service
Maintenant, vous pouvez tester si la redirection fonctionne:
echo "Test to root." | mail -s "Test message to root" root
J'espère que ça aide.