Sendmail ne trouve aucun destinataire dans une entete HTML lorsqu'il est exécuter par Crontab
Bonjour à tous,
Je viens ici désespéré car je ne trouve pas la solution à mon problème, j'ai créer 2 scripts de sauvegarde de base de données qui envoi les résultats de la sauvegarde par mail à mon équipe.
Un script pour PostGreSQL et un script pour MariaDB, mon problème est le suivant, lorsque le script MariaDB est exécuter via cron j'obtiens le message d'erreur suivant:
fatal : (user)(id): no recipients addresses found in message header
En revanche tout se déroule normalement lorsque j'execute ce script à la main avec le même compte utilisateur renseigné dans CRON.
De plus le serveur PostGreSQL qui a la même configuration postfix et la même structure de script n'a aucun problème avec l'envoi de mail via CRON.
Voici à quoi ressemble l'envoi de mail dans mon script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
##########################################
# Envoi de Mail #
##########################################
html='/home/scripts/Backup/MariaDBBackup.html' #Corps du mail au format HTML
html1='/home/scripts/Backup/Temp/MariaDBBackupSuccessError' #Corps du mail au format HTML + Objet du mail (Success ou Error)
html3='/home/scripts/Backup/Temp/MariaDBBackupFull' #Corps du mail au format HTML + Objet du mail (Success ou Error) + Logs sous forme de liste HTML + Sujet du mail
html4="error" #Corps du mail au format HTML + Objet du mail (Success ou Error) + Logs sous forme de liste HTML + Sujet du mail + Log détaillé en cas d'erreur
if [ $backupBDDError = "1" ] ; # Si la variable témoin est à 1 alors une erreur s'est produite pendant les dumps.
then
echo "Ajout de l'objet du mail dans le fichier HTML"
sed "/<h2>/ a Bonjour , <br /> <br /> La sauvegarde du serveur MariaDB sur nom d'hôte (@ip) est en résultat <font color='red'>[ERROR]</font>. " $html >>$html1.txt
echo "Ajout des logs des dumps dans l'objet du mail"
sed "/<ul id='log'>/ r $loghtml" $html1.txt >> $html3.txt
echo "Ajout du sujet du mail"
sed "/Subject:/ c\Subject: [ERROR]Sauvegarde MDB (nom d'hote) [$cpt bases de données]" $html3.txt >> $html3$dateHeureLancement.txt
echo "Ajout des log détaillé au mail en cas d'erreur"
sed "/<ul id='logdetail'>/ r $logFileDetail" $html3$dateHeureLancement.txt >> $html3$html4$dateHeureLancement.txt
echo "Envoi du mail d'erreur"
/usr/sbin/sendmail -t < $html3$html4$dateHeureLancement.txt
else
echo "Ajout de l'objet du mail dans le fichier HTML"
sed "/<h2>/ a Bonjour ,<br /> <br /> La sauvegarde du serveur MariaDB sur NomHOTE (AdresseIP) est en résultat <font color='green'>[SUCCESS].</font> " $html >>$html1.txt
echo "Ajout des logs des dumps dans l'objet du mail"
sed "/<ul id='log'>/ r $loghtml" $html1.txt >> $html3.txt
echo "Ajout du sujet du mail"
sed "/Subject:/ c\Subject: [SUCCES]Sauvegarde MDB (nom d'hote) [$cpt bases de données]" $html3.txt >> $html3$dateHeureLancement.txt
echo "Envoi du mail de succès"
/usr/sbin/sendmail -t < $html3$dateHeureLancement.txt
fi |
Le contenu de $html3$dateHeureLancement.txt
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
From: nomhote@domain.fr
To: adespretz@domain.fr
Subject: [SUCCES]Sauvegarde MDB (nom d'hôtes) [NB bases de données]
Content-Type: text/html
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h2>
Bonjour ,<br /> <br /> La sauvegarde du serveur MariaDB sur nom d'hote (@ip) est en résultat <font color='green'>[SUCCESS].</font>
</h2>
<ul id='log'>
<li> <font color='green'>SUCCESS</font> : BDD1 dump <font color='green'>OK </font> 20M /home/scripts/Backup/Dump/20200221_155401BDD1.sql . </li>
<li> <font color='green'>SUCCESS</font> : BDD2 dump <font color='green'>OK </font> 4,0K /home/scripts/Backup/Dump/20200221_155401BDD2.sql . </li>
<li> <font color='green'>SUCCESS</font> : BDD3 dump <font color='green'>OK </font> 104M /home/scripts/Backup/Dump/20200221_155401BDD3 . </li>
</ul>
<ul id='logdetail'>
</ul>
</body>
</html> |
Comme vous pouvez le voir il y a bien un destinataire dans l'en-tête html.
Je précise que j'ai essayé de changer mon fichier de txt à HTML et j'ai la même erreur.
Encore une fois la structure est la même que sur mon serveur Postgres où tout fonctionne parfaitement.
Voici les logs quand je lance le script à la main sur le serveur MariaDB:
Code:
1 2 3 4 5 6 7
|
Feb 21 11:20:55 nomhote postfix/pickup[8351]: 530016105A06: uid=1002 from=<MariaDBBackup2>
Feb 21 11:20:55 nomhote postfix/cleanup[10758]: 530016105A06: message-id=<20200221102055.530016105A06@nomhote.localdomain>
Feb 21 11:20:55 nomhote postfix/qmgr[8352]: 530016105A06: from=<MariaDBBackup2@domain.fr>, size=7978, nrcpt=1 (queue active)
Feb 21 11:20:55 nomhote postfix/smtp[10761]: 530016105A06: enabling PIX workarounds: disable_esmtp delay_dotcrlf for smtp-relay.domain[ipServeurSMTP]:25
Feb 21 11:20:55 nomhote postfix/smtp[10761]: 530016105A06: to=<adespretz@domain.fr>, relay=smtp-relay.domain[ipServeurSMTP]:25, delay=0.15, delays=0.04/0.02/0.01/0.08, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 6E8A0414B8)
Feb 21 11:20:55 nomhote postfix/qmgr[8352]: 530016105A06: removed |
Voici les logs quand je lance le script via crontab sur le serveur MariaDB:
Code:
1 2 3 4 5 6 7 8 9
|
Feb 21 11:19:01 nomhote postfix/pickup[8351]: 4897B6105A06: uid=1002 from=<MariaDBBackup2>
Feb 21 11:19:01 nomhote postfix/cleanup[10575]: 4897B6105A06: message-id=<20200221101901.4897B6105A06@spvlco7mdb01.localdomain>
Feb 21 11:19:01 nomhote postfix/qmgr[8352]: 4897B6105A06: from=<MariaDBBackup2@domain.fr>, size=854, nrcpt=1 (queue active)
Feb 21 11:19:01 nomhote postfix/smtp[10578]: 4897B6105A06: enabling PIX workarounds: disable_esmtp delay_dotcrlf for smtp-relay.domain[ipServeurSMTP]:25
Feb 21 11:19:01 nomhote postfix/smtp[10578]: 4897B6105A06: to=<root@domain.fr>, orig_to=<root>, relay=smtp-relay.domain[ipServeurSMTP]:25, delay=0.37, delays=0.16/0.08/0.08/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 90B10414B8)
Feb 21 11:19:01 nomhote postfix/qmgr[8352]: 4897B6105A06: removed
Feb 21 11:19:08 nomhote postfix/sendmail[10609]: fatal: MariaDBBackup2(1002): No recipient addresses found in message header |
Voici les logs quand le script se lance via crontab sur le serveur PostgreSQL (ça marche sur ce serveur) :
Code:
1 2 3 4 5 6 7 8 9
|
Feb 21 10:10:16 nomhote postfix/pickup[29398]: B8111608B510: uid=1000 from=<PostgresBackup>
Feb 21 10:10:16 nomhote postfix/cleanup[30008]: B8111608B510: message-id=<20200221091016.B8111608B510@nomhote.localdomain>
Feb 21 10:10:16 nomhote postfix/qmgr[39254]: B8111608B510: from=<PostgresBackup@domain.fr>, size=959, nrcpt=1 (queue active)
Feb 21 10:10:16 nomhote postfix/smtp[30011]: B8111608B510: enabling PIX workarounds: disable_esmtp delay_dotcrlf for smtp-relay.domain[ipServeurSMTP]:25
Feb 21 10:10:16 nomhote postfix/smtp[30011]: B8111608B510: to=<adespretz@domain.fr>, relay=smtp-relay.domain[ipServeurSMTP]:25, delay=0.11, delays=0.06/0.01/0.02/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C5E1D41577)
Feb 21 10:10:16 nomhote postfix/qmgr[39254]: B8111608B510: removed |
/etc/crontab de MariaDB :
Code:
1 2 3 4 5 6 7 8
|
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
54 15 * * mon,tue,wed,thu,fri MariaDBBackup2 . /home/scripts/Backup/MariaDBBackup_3.sh
55 18 * * mon,tue,wed,thu,fri MariaDBBackup2 . /home/scripts/Backup/MariaDBBackup_purge.sh |
/etc/crontab de PostGreSQL :
Code:
1 2 3 4 5 6 7 8
|
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
10 10 * * mon,tue,wed,thu,fri PostgresBackup . /home/scripts/Backup/PostgresBackup2.sh
55 18 * * mon,tue,wed,thu,fri PostgresBackup . /home/scripts/Backup/PostgresBackup_purge.sh |
Par avance merci à ceux qui auront le courage de lire mon pavé.
Cordialement
PS: Les 2 serveurs sont sous centos 7
Alexis.