Допустим, что у Вас уже установлен exim на solaris'e.
Устанавливаем Spamassasin с blastwave.org(так бытрее).
pkgutil -i spamassasin
Правим конфиг:
vi /opt/csw/etc/spamassassin/local.cf
вставляем в конфиг вот такую штуку:
#config begin
#переписать заголовок
rewrite_header Subject *****SPAM*****
# Создать новый отчёт и присоединить его к сообщению, вместо того, чтобы править сообщение
report_safe 1
# Сообщения, пришедшие отсюда спамом не считаются
trusted_networks 192.168.2.0/24
# Порог, после которого сообщения считаются спамом
required_score 6.0
# Использование классификатора Байеса
use_bayes 1
# Автообучение
bayes_auto_learn 1
# hapax – это слово/токен, встречающееся только один раз. Лучше поставить 1.
bayes_use_hapaxes 1
#путь до базы
bayes_path /opt/csw/etc/spamassassin/bayes/bayes
# классификатор не активирутеся, пока не обработает как минимум по 50 писем каждого класса
bayes_min_ham_num 50
bayes_min_spam_num 50
ok_locales ru en
#config end
Создаём скрипт для запуска spamd:
case "$1" in
start)
/opt/csw/bin/spamd -D -d -u exim \ # Если нехотите большого количества информации по debug'у, уберите ключ -D
--siteconfigpath=/opt/csw/etc/spamassassin && echo -n ' spamd'
;;
stop)
spamdpid=`ps -e | grep spamd | grep -v grep | grep -v sh | \
awk '{ print $1 }'`
if [ "$spamdpid" != "" ]; then
kill $spamdpid > /dev/null 2>&1
echo -n " spamd"
fi
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac
exit 0
Необходимо дать права на запись пользователю, от имени которого будет работать spamd (в нашем случае – это exim)
#chown exim /opt/csw/etc/spamassassin
#chmod 766 /opt/csw/etc/spamassassin
Далее нужно создать базы Байеса:
#sa-learn –sync
Учить отличать spamassassin спам от неспама нужно так:
Кладём спам в /home/vmail/spam/spam_new и неспам в /home/vmail/spam/ham_new
#sa-learn –spam /home/vmail/spam/spam_new/
#sa-learn –ham /home/vmail/spam/ham_new/
ВАЖНО: При сортировке спам/хам обязательно нужно занять непредвзятую позицию... Спам-хам делится по СПОСОБУ ДОСТАВКИ ИНФОРМАЦИИ и ЕЕ ПРЕПОДНЕСЕНИЯ, НО НИКАК НЕ ПО СОДЕРЖАНИЮ!
Правим конфиг exim'a
В раздел MAIN CONFIGURATION SETTINGS:
spamd_address = 127.0.0.1 783
В раздел ACL CONFIGURATION:
warn message = X-Spam-Score: $spam_score ($spam_bar)
hosts = !+relay_from_hosts
spam = exim:true
warn message = X-Spam-Status: Yes
spam = exim:true
condition = ${if >{$spam_score_int}{70}{true}{false}}
warn message = X-Spam-Flag: Yes
condition = ${if >={$spam_score_int}{50}{1}{0}}
set acl_m9 = X-Spam-Flag: Yes
warn message = X-Spam-Report: $spam_report
hosts = !+relay_from_hosts
spam = exim:true
warn message = Subject: ***SPAM*** $h_Subject:
hosts = !+relay_from_hosts
spam = exim
deny message = This message scored $spam_score spam points.
spam = exim:true
hosts = !+relay_from_hosts
condition = ${if >{$spam_score_int}{120}{1}{0}}
accept
В раздел ROUTERS CONFIGURATION:
central_filter:
#пользователь, использующийся при работе процесса доставки
user = vmail
#будет использоваться роутер redirect
driver = redirect
#файл системного фильтра
file = /home/vmail/filter
#фильтр не сипользуется, когда exim проверяет адреса
no_verify
#сохраняем копию исходящей почты
directory_transport = local_copy_outgoing
#содержимое файла будет интерпретироваться, как список фильтрующих инструкций
allow_filter
Содержимое файла /home/vmail/filter:
if
$h_X-Spam-Status: CONTAINS "Yes"
or
"${if def:h_X-Spam-Flag {def}{undef}}" is "def"
then
save /home/vmail/users/$local_part/.Spam/
finish
endif
Это язык системного фильтра exim'a. Этот фильтр перенапрвляет все сообщения с установленным флагом X-Spam-Flag и с полем X-Spam-Status, содержащим “Yes” в каталог /home/vmail/users/$local_part/.Spam/ .
Копирование спама из /home/vmail/users/$local_part/.Spam/ . В /home/vmail/spam/spam_new/ и обучение командой sa-learn целесообразно добавить в crontab.