Zimbra - Générer une signature HTML basée sur des données LDAP

introduction



L'administrateur Web de Zimbra ne dispose d'aucun outil pour générer des signatures de courrier électronique. AprÚs avoir pelleté un tas de manuels, j'ai réalisé qu'aucun d'entre eux ne me convenait.



La tùche semble anodine, mais une solution simple n'a pas été immédiatement trouvée. J'espÚre que cet article aidera quelqu'un à gagner beaucoup de temps et d'efforts.



Pour ma part, c'est une contribution à la communauté, pour les développements précédemment utilisés.



Configuration requise



systĂšme: Linux Ubuntu 18.04

Version Zimbra: Zimbra 8.8.15



Script de génération de signature HTML



Commençons tout de suite par le script lui-mĂȘme ... ci-dessous, je donnerai des explications et une description du fonctionnement du script.



#!/bin/bash
# created by Parfentiev Aleksey, Shultz Denis
 
SRC_LOGO="https://mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png"
SRC_TXT=" "
SIGN_NAME="_"
DOMEN="domen.ru"
 
# Check for run as zimbra user
ID=`id -u -n`
if [ x$ID != "xzimbra" ]; then
   echo "Please run as ZIMBRA user"
   echo "Exiting..."
   exit 1
fi
 
# Obtain all user accounts in $DOMEN (template: Family.IN@domen.com or family.in_jr@domen.com)
accounts=`zmaccts | grep 'active'| grep $DOMEN | grep -P "(\b[A-z]+)\.(\D{2,5}@).*" | awk '{print $1}'`
 
for ac in $accounts; do
  echo -ne "Checking account: $ac \t"
 
    # Try delete signature
    /opt/zimbra/bin/zmprov dsig $ac $SIGN_NAME
 
    echo -ne "Setting signature... "
 
    # Obtain signature from LDAP user atributes
 
    declare -A arr
    mapfile -t ARRAY < <(/opt/zimbra/bin/zmprov ga $ac | egrep "(^cn|^title|^mobile|^zimbraPrefFromAddress|^st|^l|^street|^telephoneNumber|^pager|^postalCode)" | sed 's/: /:/')
    for sgn in "${ARRAY[@]}" ; do
        KEY=${sgn%%:*}
        VALUE=${sgn#*:}
        arr[$KEY]=$VALUE
    done
 
    HTML='<div style="display: inline-block;" data-mce-style="display: inline-block;">'
    HTML+='<br><table style="width: 550px; border: 0; border-top: 1px #e0e0e0 solid;" align="left" data-mce-style="width: 550px; border: 0; border-top: 1px #e0e0e0 solid;">'
    HTML+='<tbody>'
    HTML+='<tr><td style="width: 87px; padding: 5px;" valign="middle" align="center" data-mce-style="width: 87px; padding: 5px;">'
    HTML+='<img src="'$SRC_LOGO'"  alt="'$SRC_TXT'"></td>'
    HTML+='<td style="font-size: 10pt; color: #808080; font-family: georgia, serif; width: 389px;" data-mce-style="font-size: 10pt; color: #808080; font-family: georgia, serif; width: 389px;">'
    HTML+="${arr['cn']} - ${arr['title']}   <br>: ${arr["telephoneNumber"]} .${arr["pager"]}   : ${arr["mobile"]}"
    HTML+="<br>e-mail: ${ac} <br>${arr['postalCode']} ${arr['st']} ${arr['l']} ${arr['street']}</td></tr></tbody></table></div>"
    unset arr
 
    # Set signature for account $ac and obtain signature id account
    sign_id=$(/opt/zimbra/bin/zmprov csig $ac $SIGN_NAME zimbraPrefMailSignatureHTML "$HTML")
    # Obtain delegates mailbox accounts
    mapfile -t ARRAY < <(/opt/zimbra/bin/zmprov gid $ac name | cut -d " "  -f 3-7 | grep -P '[^.*]')
    for gid in "${ARRAY[@]}" ; do
    # Set defalt signature position (outlook (before) or internet (after attachments)) for each account
    /opt/zimbra/bin/zmprov modifyIdentity $ac "$gid" zimbraPrefDefaultSignatureId $sign_id zimbraPrefForwardReplySignatureId $sign_id zimbraPrefMailSignatureStyle outlook
    done
    echo "done!"


nous transférons ce script sur la machine hÎte d'une maniÚre connue de vous.



Placez-le dans le dossier / usr / local / bin ... ou créez le fichier zm_sign_html.sh le long de ce chemin et copiez / collez ...



sudo -i
#    sudo user
#    /usr/local/bin/zm_sign_html.sh
touch /usr/local/bin/zm_sign_html.sh
#    copy/paste
#  
chmod 755 /usr/local/bin/zm_sign_html.sh


Description du script



  1. vérifier si le script s'exécute depuis l'utilisateur zimbra (les commandes CLI sont exécutées depuis l'utilisateur zimbra).

    il est possible de le faire différemment ... utilisez la commande runuser et exécutez le script en tant que root.

  2. .



    :



    family.in@domen.ru family.in_jr@domen.ru



    : family — .

    in —

    in_jr — ( .).



    : Zimbra



    , ivanov.aa@domen.ru , zavod@domen.ru .



    grep -P "(\b[A-z]+)\.(\D{2,5}@).*"



    accounts=`zmaccts | grep 'active'| grep $DOMEN | grep -P "(\b[A-z]+)\.(\D{2,5}@).*" | awk '{print $1}'`
    


  3. SIGN_NAME ( — CLI , )

  4. .



    LDAP, , HTML ( HTML ).



    
    mapfile -t ARRAY < <(/opt/zimbra/bin/zmprov ga $ac | egrep "(^cn|^title|^mobile|^zimbraPrefFromAddress|^st|^l|^street|^telephoneNumber|^pager|^postalCode)" | sed 's/: /:/')
    


    , : cn, title ..



    :





  5. ( , ) .



    , ( — ).







    , ( « », « » « »).



    . .



    :



    /opt/zimbra/bin/zmprov modifyIdentity $ac "$gid" zimbraPrefDefaultSignatureId $sign_id zimbraPrefForwardReplySignatureId $sign_id zimbraPrefMailSignatureStyle outlook


    zimbraPrefMailSignatureStyle: outlook — , internet — 




    — :





  6. .

  7. .





SRC_LOGO = " mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png " - lien vers le logo de l'organisation.



Créez une boßte aux lettres de service informatique (it@domen.ru). Zimbra dispose d'un service d'archivage de documents intégré (Portfolio). Dans la case du service informatique du Portfolio, créez un dossier LOGO, mettez-y le logo de Notre organisation.



Autorisez l'accĂšs Ă  ce dossier.



image



Maintenant, le logo de Notre organisation est disponible Ă  l'adresse:

mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png



SRC_TXT = "LOGO de l'organisation" - une explication textuelle si le chargement des images dans le navigateur est désactivé.



SIGN_NAME = "Organisation" - Nom de la signature (vous pouvez translittérer, vous pouvez en russe).



DOMEN= "Domen.ru" - le domaine de messagerie pour lequel nous installerons des signatures.



Automatisation de l'exécution



Configurer un crontab Ă  partir de l'utilisateur zimbra:



sudo su zimbra
crontab -e


Attention, des jobs d'arriÚre-plan zimbra sont en cours d'exécution dans le crontabe de cet utilisateur (entre les sections ZIMBRA_START et ZIMBRA_END).



Nous ajoutons Notre tĂąche Ă  la fin du fichier ... n'oubliez pas de laisser une ligne vide Ă  la fin!



Nous exécutons le script /usr/local/bin/zimbra/zm_sign_html.sh tous les jours à 6h00.



Exemple de fichier crontab:



#
35 3 * * * /opt/zimbra/bin/zmcbpadmin --cleanup >/dev/null 2>&1
# ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART
0 6 * * * /usr/local/bin/zm_sign_html.sh


Conclusion



C'est tout pour le moment. Vous pouvez ajouter un lien vers l'e-mail. Si quelqu'un en a besoin, je l'ajouterai.

Ecrivez dans les commentaires ...



Bonne humeur Ă  tous! Et ne tombez pas malade!



Liens vers les articles utilisés



phas13.blogspot.com/search/label/Zimbra

wiki.zimbra.com/wiki/Setting_automatic_Default_Signature



PS: Un merci spécial à Denis Schultz (tlk234) pour obtenir de l'aide sur le débogage du script et sur l'utilisation de la documentation Zimbra CLI.



All Articles