Zimbra - إنشاء توقيع HTML استنادًا إلى بيانات LDAP

المقدمة



ليس لدى 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 وقم بتشغيل البرنامج النصي كجذر.

  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@domen.ru). تمتلك Zimbra خدمة حفظ ملفات مضمنة (Portfolio). في المربع الخاص بقسم تكنولوجيا المعلومات في Portfolio ، قم بإنشاء مجلد LOGO ، وضع شعار مؤسستنا فيه.



السماح بالوصول إلى هذا المجلد.



صورة



الآن شعار منظمتنا متاح على العنوان:

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



SRC_TXT = "LOGO المنظمة" - تفسير النص إذا تم تعطيل تحميل الصور في المتصفح.



SIGN_NAME = "Organization" - اسم التوقيع (يمكنك ترجمته ، يمكنك ترجمته باللغة الروسية).



دومين= "Domen.ru" - مجال البريد الذي سنقوم بتثبيت التوقيعات عليه.



أتمتة التنفيذ



قم بإعداد crontab من مستخدم zimbra:



sudo su zimbra
crontab -e


كن حذرًا ، وظائف خلفية zimbra تعمل في crontabe لهذا المستخدم (بين أقسام ZIMBRA_START و ZIMBRA_END).



نضيف مهمتنا إلى نهاية الملف ... لا تنسى ترك سطر فارغ في النهاية!



نقوم بتشغيل البرنامج النصي /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


خاتمة



هذا كل شئ حتى الان. يمكنك إضافة ارتباط إلى البريد الإلكتروني. إذا احتاجها شخص ما ، سأضيفها.

اكتب في التعليقات ...



مزاج جيد ، الجميع! ولا تمرض!



روابط للمقالات المستخدمة



Phase13.blogspot.com/search/label/Zimbra

wiki.zimbra.com/wiki/Setting_automatic_Default_Signature



ملاحظة: شكر خاص لدينيس شولتز (TLK234) للمساعدة في تصحيح البرنامج النصي والعمل مع وثائق Zimbra CLI.



All Articles