Привет. Обратились ко мне с просьбой настроить почтовый сервер так, что бы сервер сам добавлял подписи к письмам пользователей. Хочу рассказать вам, как я эту задачу решил.
У меня имеется — настроенный и рабочий SMTP сервер postfix, который работает на Ubuntu Server 16.04. Добавлять подписи будем при помощи altermime.
Перейдем в режим суперпользователя:
sudo su
Обновим список пакетов:
apt update
Установим altermime:
apt install altermime
Добавим пользователя для altermime:
useradd -r -c "Postfix Filters" -d /var/spool/filter filter
Создадим для него директорию и зададим на нее необходимые разрешения:
mkdir /var/spool/filter chown filter:filter /var/spool/filter/ chmod 755 /var/spool/filter/
Создаем скрипт обработки писем:
nano /etc/postfix/disclaimer
Его содержимое:
#!/bin/sh # Localize these. INSPECT_DIR=/var/spool/filter SENDMAIL=/usr/sbin/sendmail DISCLAIMERS=/etc/postfix/disclaimers # Exit codes from <sysexits.h> EX_TEMPFAIL=75 EX_UNAVAILABLE=69 # Clean up when done or when aborting. trap "rm -f in.$$" 0 1 2 3 15 # Start processing. 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 -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1` from_address=`echo "$from_address" | sed "s/From: //g"` if [ -f $DISCLAIMERS/$from_address ] ; then /usr/bin/altermime --input=in.$$ \ --disclaimer=$DISCLAIMERS/${from_address} \ --disclaimer-html=$DISCLAIMERS/${from_address} || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } fi $SENDMAIL -oi "$@" <in.$$ exit $?
Задаем нужные права на этот файл:
chgrp filter /etc/postfix/disclaimer chmod 750 /etc/postfix/disclaimer
Создаем папку, где у нас будут храниться файлы с подписями:
mkdir /etc/postfix/disclaimers
И в ней создадим файлы с подписями для каждого адреса, которому нужно добавить подпись:
echo "подпись для ящика [email protected]" >> /etc/postfix/disclaimers/[email protected] echo "подпись для ящика [email protected]" >> /etc/postfix/disclaimers/[email protected]
Как видно — имя файла с подписью должно совпадать с адресом отправителя.
Опять меняем права:
chgrp -R filter /etc/postfix/disclaimers chmod -R 750 /etc/postfix/disclaimers
Осталось только внести изменения в конфиг Postfix:
nano /etc/postfix/master.cf
Здесь после сточки с smtp нужно добавить параметр - -o content_filter=dfilt:
Должно получиться что то вроде:
smtp inet n - y - - smtpd
-o content_filter=dfilt:
Пробелы в начале второй строки — важны.
И в конец файла добавляем:
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}
Перезапускаем postfix:
/etc/init.d/postfix restart
Вот и всё, теперь все сообщения, которые будут отправляться с адресов указанных в disclaimers будут дополняться подписью.
Единственный момент — если вы будете отправлять письма в текстовом виде (без html), практически наверняка будут проблемы с кодировкой подписи.
По умолчанию это UTF-8. Если ваш почтовый клиент не воспринимает ее, то изменить кодировку файла можно такими командами:
iconv -f UTF-8 -t cp1251 test\@fl-mon.com > tmp mv tmp test\@fl-mon.com
Соответсвенно cp1251 — нужно изменить на ту, в которой по умолчанию показывает почтовая программа.
Если же в заголовке письма указано, что в письме есть html код, то проблем с кодировкой быть не должно.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<