Zimbra-基于LDAP数据生成HTML签名

介绍



Zimbra Web Admin没有用于生成电子邮件签名的工具。铲起一堆手册后,我意识到它们都不适合我。



该任务看似微不足道,但没有立即找到直接的解决方案。希望本文能帮助某人节省大量时间和精力。



就我个人而言,这是对社区的一项贡献,是对先前使用的开发的支持。



系统要求



系统:Linux Ubuntu 18.04

Zimbra版本:Zimbra 8.8.15



HTML签名生成脚本



让我们从脚本本身开始……在下面,我将给出脚本的工作原理的解释和描述。



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


我们会以您已知的任何方式将此脚本传输到主机。



将其放在/ usr / local / bin文件夹中...或沿此路径创建文件zm_sign_html.sh并复制/粘贴...



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


脚本说明



  1. 检查脚本是否正在从zimbra用户运行(CLI命令从zimbra用户执行)。

    可以采取其他方式...使用runuser命令并以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”-链接到组织的徽标。



创建一个IT部门邮箱(it@domen.ru)。Zimbra具有内置的文档归档服务(Portfolio)。在“产品组合”中IT部门的框中,创建一个LOGO文件夹,并将“我们组织”的徽标放入其中。



允许访问该文件夹。



图片



现在,可以在以下地址找到我们组织的徽标:

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



SRC_TXT =“组织的徽标”-如果禁用了浏览器中的图像加载,则文本说明。



SIGN_NAME =“ Organization”-签名名称(您可以音译,也可以俄语)。



多门=“ Domen.ru”-我们将为其安装签名的邮件域。



执行自动化



从zimbra用户设置crontab:



sudo su zimbra
crontab -e


请注意,zimbra后台作业正在该用户的crontabe中运行(在ZIMBRA_START和ZIMBRA_END部分之间)。



我们将我们的任务添加到文件的末尾...不要忘了在末尾留空行!



我们每天6:00在启动脚本/usr/local/bin/zimbra/zm_sign_html.sh。



示例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


结论



目前为止就这样了。您可以将链接添加到电子邮件。如果有人需要,我会添加它。

在评论中写...



大家好!而且不要生病!



链接到二手文章



phas13.blogspot.com/search/label/Zimbra

wiki.zimbra.com/wiki/Setting_automatic_Default_Signature



PS:特别感谢Denis Schultz(tlk234),以帮助调试脚本和使用Zimbra CLI文档。



All Articles