Zimbra - Gerar assinatura HTML com base em dados LDAP

Introdução



Zimbra Web Admin não possui ferramentas para gerar assinaturas de e-mail. Depois de vasculhar vários manuais, percebi que nenhum deles me convém.



A tarefa parece trivial, mas uma solução direta não foi encontrada imediatamente. Espero que este artigo ajude alguém a economizar muito tempo e esforço.



Da minha parte, isso é uma contribuição para a comunidade, pelos empreendimentos usados ​​anteriormente.



requisitos de sistema



sistema: Linux Ubuntu 18.04

versão Zimbra: Zimbra 8.8.15



Script de geração de assinatura HTML



Vamos começar já com o próprio script ... abaixo darei explicações e uma descrição de como o script funciona.



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


nós transferimos esse script para a máquina host da maneira que você conhece.



Coloque-o na pasta / usr / local / bin ... ou crie o arquivo zm_sign_html.sh ao longo deste caminho e copie / cole ...



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


Descrição do script



  1. verifique se o script está sendo executado a partir do usuário zimbra (os comandos CLI são executados a partir do usuário zimbra).

    é possível fazer isso de forma diferente ... use o comando runuser e execute o script como 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 " - link para o logotipo da organização.



Crie uma caixa de correio do departamento de TI (it@domen.ru). Zimbra possui um serviço de arquivamento de documentos integrado (Portfólio). Na caixa do departamento de TI no Portfólio, crie uma pasta LOGO, coloque o logotipo da nossa organização nela.



Permita o acesso a esta pasta.



imagem



Agora o logotipo da nossa organização está disponível no endereço:

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



SRC_TXT = "LOGO da organização" - um texto explicativo se o carregamento de imagens no navegador estiver desativado.



SIGN_NAME = "Organização" - Nome da assinatura (você pode transliterar, você pode em russo).



DOMEN= "Domen.ru" - o domínio de e-mail para o qual instalaremos as assinaturas.



Automação de execução



Configure um crontab do usuário zimbra:



sudo su zimbra
crontab -e


Cuidado, os trabalhos em segundo plano do zimbra estão sendo executados no crontabe deste usuário (entre as seções ZIMBRA_START e ZIMBRA_END).



Adicionamos Nossa tarefa ao final do arquivo ... não se esqueça de deixar uma linha em branco no final!



Executamos o script /usr/local/bin/zimbra/zm_sign_html.sh todos os dias às 6:00.



Arquivo crontab de exemplo:



#
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


Conclusão



É tudo por agora. Você pode adicionar um link para e-mail. Se alguém precisar, eu adicionarei.

Escreva nos comentários ...



Bom humor a todos! E não fique doente!



Links para artigos usados



phas13.blogspot.com/search/label/Zimbra

wiki.zimbra.com/wiki/Setting_automatic_Default_Signature



PS: Agradecimentos especiais a Denis Schultz (tlk234) para obter ajuda na depuração do script e trabalhar com a documentação do Zimbra CLI.



All Articles