Выполнено на базе статьи http://habrahabr.ru/post/242185/
Предполагается, что необходимые пакеты находятся в /u02/install/ (addAttachFilter.pl, altermime-0.3.10.tar.gz)
antares:~ # cd /u02/install/
antares:/u02/install # tar -xvzf altermime-0.3.10.tar.gz
antares:/u02/install # cd altermime-0.3.10/
Дальше моя инициатива. При компиляции получаем ошибку:
cc1: warnings being treated as errors
qpe.c: In function ‘qp_encode’:
qpe.c:94: error: format ‘%d’ expects type ‘int’, but argument 5 has type ‘size_t’
make: *** [qpe.o] Error 1
Основываясь на подсказке компилятора, в файлах qpe.c и qpe.h меняем size_t на int.
ВНИМАНИЕ!!! Если у вас ошибки нет(версия компилятора старенькая), то менять исходники не надо!!!
Компилим и ставим:
antares:/u02/install/altermime-0.3.10 # make
cc -Wall -Werror -g -I. -O2 -c qpe.c
cc -Wall -Werror -g -I. -O2 altermime.c strstack.o mime_alter.o ffget.o pldstr.o filename-filters.o logger.o MIME_headers.o libmime-decoders.o boundary-stack.o qpe.o -o altermime
antares:/u02/install/altermime-0.3.10 # make install
strip altermime
cp altermime /usr/local/bin
chmod a+rx /usr/local/bin/altermime
Вроде без ошибок.
Дальше в соответствии с документацией (брал из deb пакетов, ибо с сайта ее не дернешь - ссылки не работают:
antares:/u02/install/altermime-0.3.10 # useradd -r -c "Postfix Filters" -d /var/spool/filter filter
antares:/u02/install/altermime-0.3.10 # mkdir /var/spool/filter
antares:/u02/install/altermime-0.3.10 # chown filter /var/spool/filter
antares:/u02/install/altermime-0.3.10 # chmod 750 /var/spool/filter
postfix_filter.sh
берем также из deb пакета и копируем в
antares:/u02/install/altermime-0.3.10 # cp /u02/install/postfix_filter.sh /etc/postfix/disclaimer
antares:/u02/install/altermime-0.3.10 # chown filter /etc/postfix/disclaimer
antares:/u02/install/altermime-0.3.10 # chmod 750 /etc/postfix/disclaimer
antares:/u02/install/altermime-0.3.10 # touch /etc/postfix/disclaimer_addresses
Вносим в disclaimer_addresses какие-нибудь адреса из тех, к которым нужно цеплять подпись, так что файл будет иметь вид:
mail1@domain.com
khsdkfh@domain.com
jdjdj@domain.com
Файле /etc/postfix/disclaimer приводим к виду:
#!/bin/sh
# Localize these.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
# Exit codes from
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; }
####### Changed From Original Script #######
# obtain From address
from_address=`grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1`
if [ `grep -wi ^${from_address}$ ${DISCLAIMER_ADDRESSES}` ]; then
/usr/local/bin/altermime --input=in.$$ \
--disclaimer=/etc/postfix/disclaimer.txt \
--disclaimer-html=/etc/postfix/disclaimer.txt \
--xheader="X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm" || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
####### Changed From Original Script END #######
$SENDMAIL -oi "$@"
exit $?
Создаем файл с подписью:
antares:/u02/install/altermime-0.3.10 # touch /etc/postfix/disclaimer.txt
Собственно в нем будет текст подписи. Например такой:
Пусть всегда будет солнце!
Пусть всегда будет небо!!
Пусть всегда будем мама!!!
Пусть всегда буду я!!!!
В файле /etc/postfix/master.cf меняем
smtp inet n - n - - smtpd
на
smtp inet n - n - - smtpd
-o content_filter=dfilt:
и в конце добавляем:
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}
Ну и рестартуем постфикс после этого.
Ну и что не маловажно - после этого имеем маленькую радость - письма адресатов из файла disclaimer.txt автоматически дописываются веселым жизнейтверждающим лозунгом ;)
То есть прилепить принудительно текстуху при прохождении письма через MTA - это мы сделали.
Но нам этого мало.
Обновление от 23.03.2015 - нам этого оказалось вообще не так надо. Руководство промеж собой перетерло и решилось на кровавый вариант. Он будет описан отдельно. Так что данную тему пока закрываем.
Читать далее