Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre éclairé
    Je dirai de passer les

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    MAILTO=root

    vers

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    MAILTO=""

    dans la configuration des cron puisque les destinataires sont renseignés dans les scripts