Начнем :)
Значит так, у меня стоит такая связка (только вчера все отладил)
Qmail-1.03+SpamAssassin-2.55+KAV4mailserver-linux-5.0.2.1+Vpopmail-5.4.0+Courier-imap-2.2.2.20040110-3.9
Постараюсь помоч с вашей конфигурацией.
Как я читал (не помню где), необходимый наборпакетов для работы ассассина следующий:
Devel-CoreStack-1.3.tar.gz
Digest-HMAC-1.01.tar.gz
Digest-MD5-2.23.tar.gz
Digest-SHA1-2.02.tar.gz
HTML-Parser-3.27.tar.gz
HTML-Tagset-3.03.tar.gz
MIME-Base64-2.16.tar.gz
Net-DNS-0.33.tar.gz
Test-Harness-2.26.tar.gz
Test-Simple-0.47.tar.gz
и сам ассассин конечно, все эти приблуды качаются из инета, и нужны для разных тестов ассассина.
установка пакетов:
perl Makefile.pl
make
make test
make install
Если при сборке возникает ошибка I could not locate your perl2man programm то нужно в файле /tc/sysconfig/i18n прописать LANG=en_US и выполнить export LANG=en_US
перезагрузить систему.
Затем я сделал запуск демона автоматически при старте системы, для этого:
В исходниках в директории /Mail-SpamAssassin-2.55/spamd переименовываем файл redhat-rc-script.sh в /etc/init.d/spamd – это скрип запуска демона spamd.
(Для debian'a там тоже есть debian-rc-script.sh)
Демон висит на 783 порту
Создадим ссылки для разных уровней запуска системы (REDHAT):
ln -s /etc/init.d/spamd /etc/rcd.0/K30spamd
ln -s /etc/init.d/spamd /etc/rcd.1/K30spamd
ln -s /etc/init.d/spamd /etc/rcd.2/S80spamd
ln -s /etc/init.d/spamd /etc/rcd.3/S80spamd
ln -s /etc/init.d/spamd /etc/rcd.4/S80spamd
ln -s /etc/init.d/spamd /etc/rcd.5/S80spamd
ln -s /etc/init.d/spamd /etc/rcd.6/K30spamd
можно потом делать spamd start и spamd stop
В директории с исходниками в файле
/SpamAssassin-2.55/spamd/README.spamd-vpopmail
написано про интеграцию ассассина с vpopmail (кто желает- попробуйте)
после установки ассассина я подправил конфиг
/etc/mail/spamassassin/local.cf
rewrite_subject 1 -если письмо содержит спам , то в Тему письма (Subj) добавляется ***SPAM**
там много чего настроить можно.
Для работы со спамовыми письмами я использовал скрипт ifspamh-1.4 (берется в инете, версия 1.5 для оболочки KSH)
Он сразу не заработал как я хотел, пришлось править:
Вместо строки:
echo "$output" | $INJECT -a -f "$SENDER" $FORWARD
(все в одной строке)
написал:
echo "$output" | /usr/local/bin/safecat /home/vpopmail/domains/"$HOST"/"$EXT"/Maildir/tmp /home/vpopmail/domains/"$HOST"/"$EXT"/Maildir/.spam/new
(все в одной строке)
утилита safecat-1.11
сохраняет письмо в Maildir формате, первый аргумент временная директория, второй - куда сохранить.
Переменные окружения $HOST и $EXT
$HOST - содержит имя виртуального домена например test.com
$EXT содержит имя пользователя в этом домене,
например user
В итоге получаем путь куда сохранить письмо со спамом.
В исходном состоянии ifspamh могла переправлять письмо со спамом на другой маил.
ifspamh вызывается из .qmail-user -файла, находящегося в директории виртуального домена
например: /home/vpopmail/domains/test.com/.qmail-user
.qmail-user содержит:
|/usr/bin/ifspamh user-spam
/home/vpopmail/domains/test.com/user/Maildir/
первая строка вызывает ifspamh c аргументом (который передавал имя еще одного файла .qmail-user-spam в котором было указано куда сохранять письмо со спамом, но у меня эта конструкция не работала, аргумент нужно оставить, а файл можно не создавать)
вторая строка говорит куда записать письмо, если это не спам.
Вот в принципе и вся интергация, но смысла от нее мало, т.к письма со спамом приходить все равно будут (но с пометкой спам)а удалять спам сразу нельзя, т.к ассассин может ошибатся.
Ддля решения этой проблемы я поставил courier-imap который позволяет почтовому клиенту работать с несколькими папкамии у меня пользователь получает почту отсортированной в две папки спам и не спам и сам разбирает их.
Написал маленько путано :) если что спрашивайте.