FreeBSd > Почта

Exim 4.72 + SpamProbe 1.4d на OpenBSD 4.8

(1/1)

lintech:
Пытался поднять связку Exim 4.72 + SpamProbe 1.4d на OpenBSD 4.8
Используя как инструкцию статью http://muff.kiev.ua/content/spamprobe-filtruem-spam
Сходу не заработало - spamprobe не хотел метить письма.
Закралось подозрение что что-то не так со скриптами вызова spamprobe,
пробороздил гуглем инет нашёл у буржуев на форуме похожие скрипты,
с ними заработало.

exim.filter

--- Код: ---# cat /usr/local/etc/spamprobe/exim.filter
# Exim filter
logfile /var/log/spam-filter.log
headers add "X-Spamprobe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} \
${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "SPAM FILTER:  Письмо от $return_path успешно прошло проверку; $value "

--- Конец кода ---

msgscore.sh

--- Код: ---#!/bin/sh
spooldir=/var/spool/exim/input
dbdir=/var/db/spamprobe
echo "$2" > $spooldir/$1-M
sed '1 s/.*//' $spooldir/$1-D >> $spooldir/$1-M
spamprobe -8 -d $dbdir score $spooldir/$1-M
rm $spooldir/$1-M
exit 0

--- Конец кода ---

И из за того что у меня используются mbox а не maildir, пришлось один транспорт
подрихтовать:

--- Код: ---### SpamProbe start ###
SP_check_transport:
driver = appendfile
file = /var/mail/spamfilter
user = spamfilter
group = wheel

--- Конец кода ---

Вроде работает, но пока что база не обученная и он весь спам метит как GOOD 0.3

lintech:
Скормил около 500 писем свежего спама, вроде как начал нормально спам отсеивать.

P.S. Вопрос по логированию:
Что в эту строку: logwrite "SPAM FILTER:  Письмо от $return_path успешно прошло проверку; $value "
добавить чтоб в лог ещё и дату-время писало ?

muff:
Воспользуйтесь переменной $h_date. Например, в вашем случае можно вот так:

--- Код: ---# cat /usr/local/etc/spamprobe/exim.filter
# Exim filter
logfile /var/log/spam-filter.log
headers add "X-Spamprobe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} \
${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "$h_date:  Письмо от $return_path успешно прошло проверку; $value "

--- Конец кода ---

Результат в моем случае:

--- Код: ---Wed, 1 Dec 2010 15:16:05 +0200 SPAM FILTER: Письмо от ip@itms.net.ua успешно прошло проверку; GOOD 0.0000010 a20675bed4dda40c4d1ee47d6a2c75c0

Wed, 01 Dec 2010 15:17:18 +0200 SPAM FILTER: Письмо от mailrobot@express-mail.kiev.ua успешно прошло проверку; GOOD 0.0206662 3e4ba1e66ef3c43bd096e6a44bf45808
--- Конец кода ---

lintech:
Уже сделал, но чуть чуть по другому - воспользовался переменной $tod_log
для вставки-даты и времени, и переменной $recipients для вставки email получателей.

Собственно код:

--- Код: ---# cat /usr/local/etc/spamprobe/exim.filter
# Exim filter
logfile /var/spool/exim/logs/spam-filter.log
headers add "X-Spamprobe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} \
${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "$tod_log FOR $recipients FROM $return_path  $value "

--- Конец кода ---

Логи теперь выглядят вот так:

2010-12-01 15:52:03 FOR poluchatel@mydomain.com FROM otpravitel@domain.com  SPAM 0.6523003 fc367172715bd4b3e93652e4ca2e40
81

muff:
Кстати, документацию по использованию фильтров Exim можно почерпнуть из файла /usr/local/share/doc/exim/filter.txt (FreeBSD)

Навигация

[0] Главная страница сообщений

Перейти к полной версии