Zimbra - Generieren Sie eine HTML-Signatur basierend auf LDAP-Daten

Einführung



Zimbra Web Admin verfügt über keine Tools zum Generieren von E-Mail-Signaturen. Nachdem ich ein paar Handbücher geschaufelt hatte, wurde mir klar, dass keines von ihnen zu mir passt.



Die Aufgabe scheint trivial, aber eine einfache Lösung wurde nicht sofort gefunden. Hoffe, dieser Artikel hilft jemandem, viel Zeit und Mühe zu sparen.



Für meinen Teil ist dies ein Beitrag für die Community, für die zuvor verwendeten Entwicklungen.



System Anforderungen



System: Linux Ubuntu 18.04

Zimbra Version: Zimbra 8.8.15



Skript zur Generierung von HTML-Signaturen



Beginnen wir gleich mit dem Skript selbst ... Im Folgenden werde ich Erklärungen und eine Beschreibung der Funktionsweise des Skripts geben.



#!/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!"


Wir übertragen dieses Skript auf eine Ihnen bekannte Weise auf den Host-Computer.



Legen Sie es im Ordner / usr / local / bin ab ... oder erstellen Sie eine Datei zm_sign_html.sh entlang dieses Pfads und kopieren / einfügen ...



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


Beschreibung des Skripts



  1. Überprüfen Sie, ob das Skript vom zimbra-Benutzer ausgeführt wird (CLI-Befehle werden vom zimbra-Benutzer ausgeführt).

    Es ist möglich, es anders zu machen ... Verwenden Sie den Befehl runuser und führen Sie das Skript als root aus.

  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 " - Link zum Logo der Organisation.



Erstellen Sie ein Postfach für die IT-Abteilung (it@domen.ru). Zimbra verfügt über einen integrierten Dokumentenablageservice (Portfolio). Erstellen Sie im Feld der IT-Abteilung im Portfolio einen LOGO-Ordner und fügen Sie das Logo unserer Organisation ein.



Erlauben Sie den Zugriff auf diesen Ordner.



Bild



Jetzt ist das Logo unserer Organisation unter folgender Adresse verfügbar:

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



SRC_TXT = "LOGO der Organisation" - eine Texterklärung, wenn das Laden von Bildern in den Browser deaktiviert ist.



SIGN_NAME = "Organisation" - Signaturname (Sie können transliterieren, Sie können auf Russisch).



DOMEN= "Domen.ru" - die Mail-Domain, für die wir Signaturen installieren.



Automatisierung der Ausführung



Richten Sie eine Crontab vom Zimbra-Benutzer ein:



sudo su zimbra
crontab -e


Seien Sie vorsichtig, Zimbra-Hintergrundjobs werden im Crontabe dieses Benutzers ausgeführt (zwischen den Abschnitten ZIMBRA_START und ZIMBRA_END).



Wir fügen unsere Aufgabe am Ende der Datei hinzu ... vergessen Sie nicht, am Ende eine leere Zeile zu hinterlassen!



Wir führen das Skript /usr/local/bin/zimbra/zm_sign_html.sh jeden Tag um 6:00 Uhr aus.



Beispiel crontab Datei:



#
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


Fazit



Das ist alles für jetzt. Sie können einen Link zur E-Mail hinzufügen. Wenn jemand es braucht, werde ich es hinzufügen.

Schreiben Sie in die Kommentare ...



Gute Laune, alle zusammen! Und werde nicht krank!



Links zu gebrauchten Artikeln



phas13.blogspot.com/search/label/Zimbra

wiki.zimbra.com/wiki/Setting_automatic_Default_Signature



PS: Besonderer Dank geht an Denis Schultz (tlk234) für Hilfe beim Debuggen des Skripts und beim Arbeiten mit der Zimbra CLI-Dokumentation.



All Articles