[Системное администрирование] Zimbra — Генерация HTML подписи на основе данных LDAP
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Введение
В Веб-Админке Zimbra отсутствуют инструменты для генерации подписи к письмам. Перелопатив кучу мануалов — понял, что ни один из Них меня не устраивает.
Задача кажется тривиальной, но решения в лоб — найти сразу не удалось. Надеюсь, эта статья поможет кому-то сэкономить кучу времени и сил.
С моей же стороны это вклад в сообщество, за ранее использованные наработки.
Системные требования
система: 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 по этому пути и copy/paste…
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
Описание работы скрипта
- проверяем запущен ли скрипт от пользователя zimbra ( команды CLI выполняются от пользователя zimbra).
возможно сделать и по-другому… использовать команду runuser и запускать скрипт из-под root.
- получаем все активные пользовательские аккаунты в нужном домене.
У нас в организации приняты следующие шаблоны именования пользователей:
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}'`
- удаляем подпись с Названием SIGN_NAME ( если такой подписи нет — будет ошибка в этой CLI команде, и скрипт пойдет далее )
- Перебираем Пользователей.
Забираем нужные поля для текущего Пользователя с 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 и т.д.
Название полей можно посмотреть в Админке:
- Получаем аккаунты делегированных ящиков (отправить от имени, отправить как) для текущего Пользователя.
Чтобы было понятнее для чего это делается, покажу на Скриншоте (Настройки — Подписи).
Допустим, у Вас есть доп профиль (здесь он называется «Ит отдел», в которых настроена возможность «отправлять от Имени» или «Отправлять как»).
Тогда мы получаем все доп. профили и для Них устанавливаем подпись.
Расположение подписи настраивается так:
/opt/zimbra/bin/zmprov modifyIdentity $ac "$gid" zimbraPrefDefaultSignatureId $sign_id zimbraPrefForwardReplySignatureId $sign_id zimbraPrefMailSignatureStyle outlook
Последний параметр zimbraPrefMailSignatureStyle: outlook — перед вложенными сообщениями, internet — после…
Сами профили настраиваем в Настройки — Учетные Записи:
- устанавливаем подпись.
- переходим к следующему Пользователю.
Описание параметров
SRC_LOGO=«mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png» — ссылка на логотип организации.
Создаём ящик отдела ИТ (it@domen.ru). В Zimbra есть встроенный сервис хранения документов (Портфель). В ящике отдела ИТ в Портфеле, создаем папку LOGO, в неё помещаем логитип Нашей организации.
Разрешаем доступ к данной папке.
Теперь логотип Нашей организации доступен по адресу:
mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png
SRC_TXT=«ЛОГО Организации» — текстовое пояснение, если отключена загрузка изображений в браузере.
SIGN_NAME=«Организация» — Название подписи ( можно транслитом, можно по-русски).
DOMEN=«domen.ru» — почтовый домен, для которого будем устанавливать подписи.
Автоматизация выполнения
Настраиваем crontab от пользователя zimbra:
sudo su zimbra
crontab -e
Будьте внимательны, в crontabe данного Пользователя выполняются фоновые задания zimbra (между секциями 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
Заключение
На этом пока все. Можно дописать отсылку на e-mail. Если это кому-то необходимо — дополню.
Пишите в комментах…
Всем хорошего настроения! И не болеть!
Ссылки на используемые статьи
phas13.blogspot.com/search/label/Zimbra
wiki.zimbra.com/wiki/Setting_automatic_Default_Signature
P.S.: Отдельная благодарность Шульц Денису (tlk234) за помощь в отладке скрипта и работе с документацией Zimbra CLI.
===========
Источник:
habr.com
===========
Похожие новости:
- [DevOps, Kubernetes, Системное администрирование] Валидация Kubernetes YAML на соответствие лучшим практикам и политикам (перевод)
- [Информационная безопасность, Сетевые технологии, Системное администрирование] SIGRed — новая критическая уязвимость в Windows Server. Как защититься?
- [Сетевые технологии, Системное администрирование] Zextras запускает собственную версию почтового сервера Zimbra 9 Open Source
- [Системное администрирование, Хостинг] Apache & Nginx. Связаны одной цепью
- [DevOps, Системное администрирование] Новые подходы автоматизации Wildfly
- [IT-компании, Видеоконференцсвязь, Системное администрирование] Zoom закрыла уязвимость нулевого дня в клиенте для старых версий Windows
- [DevOps, Kubernetes, Серверное администрирование, Системное администрирование] Fluentd: почему важно настроить выходной буфер
- [Информационная безопасность, Сетевые технологии, Системное администрирование] NGFW для малого бизнеса. Новая линейка CheckPoint 1500 Security Gateway
- [IT-инфраструктура, Распределённые системы, Сетевое оборудование, Системное администрирование] Добавление ноды в Skydive топологию вручную через Skydive client
- [Cisco, Информационная безопасность, Сетевые технологии, Системное администрирование] StealthWatch: анализ и расследование инцидентов. Часть 3
Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_zimbra, #_sistemnoe_administrirovanie (системное администрирование), #_sistemnoe_administrirovanie (
Системное администрирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Введение В Веб-Админке Zimbra отсутствуют инструменты для генерации подписи к письмам. Перелопатив кучу мануалов — понял, что ни один из Них меня не устраивает. Задача кажется тривиальной, но решения в лоб — найти сразу не удалось. Надеюсь, эта статья поможет кому-то сэкономить кучу времени и сил. С моей же стороны это вклад в сообщество, за ранее использованные наработки. Системные требования система: 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 по этому пути и copy/paste… 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 Описание работы скрипта
Описание параметров SRC_LOGO=«mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png» — ссылка на логотип организации. Создаём ящик отдела ИТ (it@domen.ru). В Zimbra есть встроенный сервис хранения документов (Портфель). В ящике отдела ИТ в Портфеле, создаем папку LOGO, в неё помещаем логитип Нашей организации. Разрешаем доступ к данной папке. Теперь логотип Нашей организации доступен по адресу: mail.domen.ru/home/it@domen.ru/Briefcase/Logo/tl_logo.png SRC_TXT=«ЛОГО Организации» — текстовое пояснение, если отключена загрузка изображений в браузере. SIGN_NAME=«Организация» — Название подписи ( можно транслитом, можно по-русски). DOMEN=«domen.ru» — почтовый домен, для которого будем устанавливать подписи. Автоматизация выполнения Настраиваем crontab от пользователя zimbra: sudo su zimbra
crontab -e Будьте внимательны, в crontabe данного Пользователя выполняются фоновые задания zimbra (между секциями 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 Заключение На этом пока все. Можно дописать отсылку на e-mail. Если это кому-то необходимо — дополню. Пишите в комментах… Всем хорошего настроения! И не болеть! Ссылки на используемые статьи phas13.blogspot.com/search/label/Zimbra wiki.zimbra.com/wiki/Setting_automatic_Default_Signature P.S.: Отдельная благодарность Шульц Денису (tlk234) за помощь в отладке скрипта и работе с документацией Zimbra CLI. =========== Источник: habr.com =========== Похожие новости:
Системное администрирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:59
Часовой пояс: UTC + 5