Модификация транзитной почты на сервере с Postfix |
[исправить] |
Для автоматического добавления текста к письмам, например, уведомления о
необходимости сохранения коммерческой тайны, можно использовать alterMIME
(http://pldaniels.com/altermime/). При помощи alterMIME также можно добавлять в
транзитную почту произвольные заголовки, изменять содержимое существующих
заголовков, удалять и заменять вложения в зависимости от имени файла и типа контента.
Устанавливаем altermime в Debian/Ubuntu:
aptitude install altermime
или для Fedora/CentOS:
yum install altermime
Для запуска altermime-фильтров будем использовать отдельного пользователя:
useradd -r -c "Postfix Filters" -d /var/spool/filter filter
mkdir /var/spool/filter
chown filter:filter /var/spool/filter
chmod 750 /var/spool/filter
Создаем скрипт /etc/postfix/disclaimer для запуска alterMIME, взяв за основу
готовый пример, который есть в комплекте:
cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer
chgrp filter /etc/postfix/disclaimer
chmod 750 /etc/postfix/disclaimer
По умолчанию скрипт не различает входящие и исходящие письма, для того чтобы
добавлять уведомление только в исходящие письма скрипт нужно немного модифицировать.
Правим скрипт /etc/postfix/disclaimer:
#!/bin/sh
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
# 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; }
# 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/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
$SENDMAIL "$@" <in.$$
exit $?
Создаем файл etc/postfix/disclaimer_addresses с перечнем адресов для которых
следует добавлять уведомление:
test1@example.com
test2@example.com
Текст уведомления помещаем в файл /etc/postfix/disclaimer.txt.
Настраиваем Postfix для вызова alterMIME, в /etc/postfix/master.cf добавляем в строку "smtp":
-o content_filter=dfilt:
т.е. получаем:
smtp inet n - - - - 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
Для замены или удаления вложения необходимо изменить скрипт
/etc/postfix/disclaimer, использовав другие опции запуска altermime:
"--remove=имя файла" (удаление вложения),
"--replace=имя файла --with=файл для замены" (замена вложения),
"--removeall" (удаление всех вложений),
"--alter-header=заголовок --alter-with=замены --alter-mode=replace" (замена заголовка),
"--xheader=заголовок" (добавление заголовка)
|
|
|
|
Раздел: Корень / Администратору / Сетевые сервисы / Mail, почта / Борьба со спамом, фильтрация почты |
1.1, BlackHawk (ok), 21:22, 08/10/2010 [ответить]
| +/– |
как все сложно... все таки exim проще для таких вещей )
PS: на зря в дебиане по дефолту стоит exim
| |
|
2.6, Maxim Chirkov (ok), 19:27, 12/10/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Author: Falko Timme <ft [at] falkotimme [dot] com>
> Last edited 12/20/2007
> Мда... кописта...
Не правда, это на howtoforge.com копипаст.
Оригинал:
Postfix-alterMIME-HOWTO
Derrick J Houy, djhouy@paw.za.org
v0.05, 13 Apr 2005
К тому же, если вы присмотритесь, то увидите howtoforge.com в ссылках в заметке (вторая ссылка). Если еще более внимательно присмотритесь, то заметите, что статья на howtoforge.com - это почти полный копипаст материала из первой ссылки к заметке.
| |
|
1.5, Nikolaev D (?), 14:25, 12/10/2010 [ответить]
| +/– |
grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">"
на таких конструкциях кривые заголовки пропиливают скрипт
| |
1.7, dimonich (ok), 11:46, 11/04/2011 [ответить]
| +/– |
попробовал все сделать как написано, не добавляется текст нигде :(...А очень и очень надо, не могли бы помочь? Т.к. перечитал уже и буржуйские статьи а результат ноль. Либо не там ищу либо что-то не так сделал.
| |
|