[LINUX] L'histoire selon laquelle sendmail qui peut être exécuté dans le terminal ne fonctionnait pas avec cron

Ceci est un rappel de ce qu'il faut faire lorsqu'un script shell contenant sendmail sous Linux fonctionne avec des commandes de terminal mais pas avec cron.

Après avoir écrit le shell dans le format suivant, j'ai écrit cron pour qu'il s'exécute à l'heure. Ensuite, cela fonctionnait normalement sur la commande et le courrier était envoyé, mais le courrier n'était pas envoyé même à l'heure programmée écrite dans cron.

mail.sh


#!/bin/sh
{
echo "From: <****@gmail.com> "
echo "To: <****@gmail.com> "
echo "Subject:Titre"
echo "Content-Type: text/plain;charset='UTF-8'"
echo "Content-Transfer-Encoding: base64"
}| sendmail -i -t

Donc, j'ai d'abord soupçonné qu'il y avait un problème avec cron, j'ai défini l'autorisation de fichier sur chmod 777, puis j'ai vérifié le journal, mais cron semblait fonctionner sans problème.

$ tail /var/log/cron
Aug  7 14:20:01 ip-***-**-*-** CROND[17995]: (root) CMD (/home/***/mail.sh)

J'ai pu conclure que le problème était dans sendmail, alors j'ai regardé autour de moi et j'ai trouvé que si j'ajoutais / usr / sbin /, cela fonctionnait bien et le courrier était envoyé, et sur gmail, il était reçu dans le dossier de courrier indésirable.

mail.sh


#!/bin/sh
{
echo "From: <****@gmail.com> "
echo "To: <****@gmail.com> "
echo "Subject:Titre"
echo "Content-Type: text/plain;charset='UTF-8'"
echo "Content-Transfer-Encoding: base64"
}| /usr/sbin/sendmail -i -t

Recommended Posts

L'histoire selon laquelle sendmail qui peut être exécuté dans le terminal ne fonctionnait pas avec cron
L'histoire selon laquelle yapf n'a pas fonctionné avec vscode
L'histoire du débogage dans l'environnement local car la compilation n'a pas fonctionné avec Read the Docs
J'ai acheté et analysé la loterie jumbo de fin d'année avec Python qui peut être exécutée dans Colaboratory
Résultats qui n'ont pas été pris en compte dans la recherche avec ce mot
L'histoire qui s'inscrit dans l'installation de pip
[Python] J'ai examiné une pratique qui peut être exécutée en parallèle avec le thread principal par traitement asynchrone (multiprocessing, asyncio)
Goroutine (contrôle parallèle) utilisable sur le terrain
J'ai étudié le prétraitement qui peut être fait avec PyCaret
L'histoire d'exclure / d'inclure que les débutants de Serverless Framework ont mal compris (n'ont pas compris) dans Pythonista débutant
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
L'histoire du travail de sortie de l'application que Google ne raconte pas
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
À propos du cas où le haut-parleur ne produisait pas de son dans Ubuntu LTS 20.04
Optimisation mathématique pour un travail gratuit avec Python + PuLP
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
Une histoire que heroku, qui peut se faire en 5 minutes, a en fait duré 3 jours
Une histoire qui ne s'est pas terminée par la sortie lors du tournage avec l'entrée de tuyau
J'ai essayé de prédire les chevaux qui seront dans le top 3 avec LightGBM
Puisque python est lu comme "Pichon", il peut être exécuté avec "Pichon" (c'est une histoire)
L'histoire de l'impossibilité de créer un point d'accès en bande 5 GHz sur Ubuntu
Types de fichiers pouvant être utilisés avec Go
Fonctions pouvant être utilisées dans l'instruction for
Construire un Sphinx qui peut être écrit avec Markdown
Répertorier les packages pouvant être mis à jour avec pip
PyQtGraph peut ne pas être disponible dans l'interpréteur.
[systemd] Comment faire face au problème que fancontrol ne fonctionne pas après la suspension
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Résolution du problème selon lequel l'image n'était pas affichée dans ROMol lors du chargement avec PandasTools.LoadSDF.
Dans Python3.8 et versions ultérieures, le mod inverse peut être calculé avec la fonction intégrée pow.
Serveur de partage de fichiers réalisé avec Raspberry Pi pouvant être utilisé pour le travail à distance
Lors de l'écriture dans un fichier csv avec python, une histoire que j'ai fait une légère erreur et n'a pas respecté la date de livraison
Une histoire que je ne savais pas charger de mixin lors de la création d'une façade avec l'application django [Débutant apprend python avec un livre de référence]
Algorithmes de base utilisables par les pros de la compétition
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Liste des couleurs pouvant être définies avec tkinter (mémorial)
Notes sur les connaissances Python utilisables avec AtCoder
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
L'histoire de la confusion entre la production japonaise et Django
Mémo de travail que j'ai essayé i18n avec l'application Flask
Limites qui peuvent être analysées à la fois avec MeCab
Lister les classes qui peuvent être référencées par ObjCClass
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion
Comment afficher le texte et le texte de survol qui peuvent être exécutés en cliquant avec le plug-in Minecraft
Traiter l'erreur selon laquelle une erreur de récupération HTTP se produit dans gpg et la clé ne peut pas être obtenue
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture