Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью.
Отделу продаж потребовалось в переписке с клиентами отправлять спец предложения по email без рутиной работы. В двух словах изложу, что и как получилось.
Исходные данные:
— почтовый сервер на базе Zentyal 5.0.1(postfix + dovecot + openDKIM и т.д.)
— alterMIME v0.3.10
— HTML шаблон с предложением.
Сразу скажу спасибо статье Унифицированная динамическая корпоративная подпись с логотипом Postfix + alterMIME, а так же комментариям, из неё подчеркнул основную идею.
Первым делом в файл
Заменим:
На:
Далее создадим структуру каталогов:
Теперь основное, создадим исполняемый файл /etc/postfix/disclaimer.sh с содержимым:
Теперь по порядку:
DISCLAIMER_ADDRESSES — в данный файл заносим адреса отдела продаж, в принципе если у вас домен можно автоматизировать, пример есть в статье откуда я брал идею.
from_address, to_dom и my_domain — требуется для создания фильтра, чтобы не применять это правило для других отделов и не слать письма с предложениями самим себе.
disclaimer.html — html файл с предложениями, включая картинки т.п.
В принципе, если есть желание, модифицировать можно до бесконечности, главное задача, для которой это необходимо.
P.S. Данное решение можно было реализовать и через amavisd-new, но от этой идеи пришлось отказаться, так как нельзя в тело письма вставить xheader, но это тема для другой статьи.
Отделу продаж потребовалось в переписке с клиентами отправлять спец предложения по email без рутиной работы. В двух словах изложу, что и как получилось.
Исходные данные:
— почтовый сервер на базе Zentyal 5.0.1(postfix + dovecot + openDKIM и т.д.)
— alterMIME v0.3.10
— HTML шаблон с предложением.
Сразу скажу спасибо статье Унифицированная динамическая корпоративная подпись с логотипом Postfix + alterMIME, а так же комментариям, из неё подчеркнул основную идею.
Первым делом в файл
master.cf внесем изменения, а именно:Заменим:
smtp inet n - y - - smtpd
На:
smtp inet n - y - - smtpd -o content_filter=dfilt: dfilt unix - n n - - pipe flags=Rq user=filter argv=/etc/postfix/disclaimer.sh -f ${sender} -- ${recipient}
Далее создадим структуру каталогов:
useradd -r -c "Postfix Filters" -d /var/spool/filter filter mkdir /var/spool/filter mkdir /etc/postfix/disclaimer chown filter:filter /var/spool/filter chmod 750 /var/spool/filter
Теперь основное, создадим исполняемый файл /etc/postfix/disclaimer.sh с содержимым:
#!/bin/bash # Рабочий каталог INSPECT_DIR=/var/spool/filter # Ссылка на sendmail SENDMAIL=/usr/sbin/sendmail # Список email отдела продаж DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer/addresses EX_TEMPFAIL=75 EX_UNAVAILABLE=69 trap "rm -f in.$$" 0 1 2 3 15 cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } cat > in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; } # Определим адрес назначения (для точно чтобы не слать вложения локальным пользователям) from_address=`grep "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1 | sed 's/^From: //g' | awk '{print $1}' | cut -d "@" -f 2 | grep -v ^h= | grep -v ^To` to_dom=`echo $to_address |cut -d "@" -f 2` my_domain="example.org" # Применяем правило только для отдела продаж if [ `grep -wi ^${from_address}$ ${DISCLAIMER_ADDRESSES}` ]; then # Определяем что шлем не локальным клиентам if [ "$from_address" = "example.org" ]; then # Прикреплять только в HTML сообщения ContentTypeFirst=`grep -m 1 '^Content-Type: ' in.$$ | cut -d " " -f 2 | cut -d ";" -f 1` ContentTypeMixed=`grep -m 2 '^Content-Type: ' in.$$ | cut -d " " -f 2 | cut -d ";" -f 1 | tail -n 1` isHTML=true if [ "$ContentTypeFirst" = "" ] || [ "$ContentTypeFirst" = "text/plain" ]; then isHTML=false; fi if [ "$ContentTypeFirst" = "multipart/mixed" ] && [ "$ContentTypeMixed" = "text/plain" ]; then isHTML=false; fi if [ "$ContentTypeFirst" = "multipart/mixed" ] && [ "$ContentTypeMixed" != "text/html" ] && [ "$ContentTypeMixed" != "multipart/related" ] && [ "$ContentTypeMixed" != "multipart/alternative" ]; then isHTML=false; fi if $isHTML ; then /usr/bin/altermime --input=in.$$ \ --disclaimer=/etc/postfix/disclaimer/disclaimer.txt \ --disclaimer-html=/etc/postfix/disclaimer/disclaimer.html \ --xheader="X-Copyrighted-Material: Please visit https://www.example.org/privacy.htm" || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } fi fi fi $SENDMAIL -oi "$@" < in.$$ exit $?
Теперь по порядку:
DISCLAIMER_ADDRESSES — в данный файл заносим адреса отдела продаж, в принципе если у вас домен можно автоматизировать, пример есть в статье откуда я брал идею.
from_address, to_dom и my_domain — требуется для создания фильтра, чтобы не применять это правило для других отделов и не слать письма с предложениями самим себе.
disclaimer.html — html файл с предложениями, включая картинки т.п.
В принципе, если есть желание, модифицировать можно до бесконечности, главное задача, для которой это необходимо.
P.S. Данное решение можно было реализовать и через amavisd-new, но от этой идеи пришлось отказаться, так как нельзя в тело письма вставить xheader, но это тема для другой статьи.

