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 = "組織のLOGO"-ブラウザでの画像の読み込みが無効になっている場合のテキスト説明。



SIGN_NAME = "Organization"-署名名(文字変換できます、ロシア語でできます)。



DOMEN= "Domen.ru"-署名をインストールするメールドメイン。



実行の自動化



zimbraユーザーからcrontabを設定します。



sudo su zimbra
crontab -e


このユーザーのcrontabe(ZIMBRA_STARTセクションとZIMBRA_ENDセクションの間)でzimbraバックグラウンドジョブが実行されていることに注意してください。



ファイルの最後にタスクを追加します...最後に空の行を残すことを忘れないでください!



スクリプト/usr/local/bin/zimbra/zm_sign_html.shを毎日6:00に起動します。



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)スクリプトのデバッグとZimbraCLIドキュメントの操作に関するヘルプ。



All Articles