как обучить с момощью утилиты sa-learn Spamassassin?

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение bobot » 2010-02-16 14:01:52

Как выполнить запуск утилиты sa-learn ?
Вот так

Код: Выделить всё

sa-learn --spam /mail/bobot/Maildir/.spam
это я натравливаю спамассассин на папку спам(куда у меня складывается спам)

и

Код: Выделить всё

sa-learn --ham  /mail/bobot/Maildir/.drafts
это я натравливаю спамассассин на папку не спам (сюда складывается не спам)

Правильно я понимаю, так это делается?

вот я натравливаю на папку Spam (у меня там 500 писем)
и ввожу

Код: Выделить всё

sa-learn --spam /mail/bobot/Maildir/.spam
и результат

Код: Выделить всё

Learned tokens from 4 message(s) (5 message(s) examined)
проверило 4 из 5 , но у меня там 500 писем, в чём дело?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Hety
рядовой
Сообщения: 13
Зарегистрирован: 2009-07-01 10:50:18

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение Hety » 2010-02-17 18:52:49

У спамасассина есть минимум/максимум по значениям для обучения. Если не изменяет память, то ham должен иметь счет не более 2, а спам более 12, чтобы пройти обучалку. Что-то в этом духе. В доках имеются комментарии.

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение Laa » 2010-02-17 19:10:16

Возможно нужно указать тип почтового ящика.
Я так делал и кол-во писем было правильным:

Код: Выделить всё

sa-learn --use-ignores --spam --mbox --showdots ~laa/mail/spam;rm -fv ~laa/mail/spam
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение bobot » 2010-02-17 20:55:57

Laa писал(а):Возможно нужно указать тип почтового ящика.
Я так делал и кол-во писем было правильным:

Код: Выделить всё

sa-learn --use-ignores --spam --mbox --showdots ~laa/mail/spam;rm -fv ~laa/mail/spam
С этим я разобрался нормально!! но всёравно спам валит хоть греби лопатой!! уже уши опухли от телефонных звонков...
Уже даже и не знаю что делать!!!!!!
у меня получается не создаётся база данных, в конфиге путь прописан (я читал что она должна автоматом создаваться, но почему то не создаётся)

Код: Выделить всё

bayes_path /var/mail/bayes
я запускаю от root spamassassin
правда я вот нашёл в каталоге root

Код: Выделить всё

[root@mail]# ls -l /root/.spamassassin
-rw-------  1 root  wheel    90112 Feb 17 16:34 bayes_seen
-rw-------  1 root  wheel  1290240 Feb 17 16:34 bayes_toks
drwxr-xr-x  2 root  wheel      512 Feb  3 16:55 sa-compile.cache
-rw-r--r--  1 root  wheel     1487 Jan 26 10:45 user_prefs
может я не от того юзера запускаю
вот скрипт запуска

Код: Выделить всё

#!/bin/sh
#
# $FreeBSD: ports/mail/p5-Mail-SpamAssassin/files/sa-spamd.sh.in,v 1.2 2008/02/13 04:13:43 beech Exp $
#

# PROVIDE: spamd
# REQUIRE: LOGIN
# BEFORE: mail
# KEYWORD: shutdown

#
# Add the following lines to /etc/rc.conf to enable spamd:
#
#spamd_enable="YES"
#
# See spamd(8) for flags
#

. /etc/rc.subr

name=spamd
rcvar=`set_rcvar`

extra_commands="reload"
load_rc_config $name

# Set defaults
: ${spamd_enable:="NO"}
: ${spamd_flags="-c  "}

pidfile=${spamd_pidfile:-"/var/run/spamd/spamd.pid"}
command=/usr/local/bin/spamd
command_args="--max-children=16 --min-children=8 --max-conn-per-child=10 -d -r ${pidfile}"
required_dirs=/usr/local/share/spamassassin

stop_postcmd=stop_postcmd

stop_postcmd()
{
  rm -f $pidfile
}

run_rc_command "$1"

????


Аватара пользователя
Lord Beaver
рядовой
Сообщения: 31
Зарегистрирован: 2009-12-26 20:37:45
Откуда: Волгоград

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение Lord Beaver » 2010-02-18 11:59:31

bobot писал(а):С этим я разобрался нормально!! но всёравно спам валит хоть греби лопатой!! уже уши опухли от телефонных звонков...
Уже даже и не знаю что делать!!!!!!
Может стоит начать отсеивать спам ещё до фильтра?
bobot писал(а):у меня получается не создаётся база данных, в конфиге путь прописан (я читал что она должна автоматом создаваться, но почему то не создаётся)
А правила через sa-compile вообще создавали?

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение bobot » 2010-02-18 12:12:41

Lord Beaver писал(а):
bobot писал(а):С этим я разобрался нормально!! но всёравно спам валит хоть греби лопатой!! уже уши опухли от телефонных звонков...
Уже даже и не знаю что делать!!!!!!
Может стоит начать отсеивать спам ещё до фильтра?
bobot писал(а):у меня получается не создаётся база данных, в конфиге путь прописан (я читал что она должна автоматом создаваться, но почему то не создаётся)
А правила через sa-compile вообще создавали?
нет не задавал правил с помощью sa-compile ............

ну вы имеете ввиду спам отсеивать до фильтра это как?
А можно на примере показать как задавать правила с помощью sa-compile

Код: Выделить всё

sa-compile [options]

Options:
  --list                        Output base string list to STDOUT
  --sudo                        Use 'sudo' for privilege escalation
  --keep-tmps                   Keep temporary files instead of deleting
  -C path, --configpath=path, --config-file=path
                                Path to standard configuration dir
  -p prefs, --prefspath=file, --prefs-file=file
                                Set user preferences file
  --siteconfigpath=path         Path for site configs
                                (default: /etc/mail/spamassassin)
  --updatedir=path              Directory to place updates
                      (default: /var/lib/spamassassin/compiled/<perlversion>/<version>)
  --cf='config line'            Additional line of configuration
  -D, --debug [area=n,...]      Print debugging messages
  -V, --version                 Print version
  -h, --help                    Print usage message

Аватара пользователя
Lord Beaver
рядовой
Сообщения: 31
Зарегистрирован: 2009-12-26 20:37:45
Откуда: Волгоград

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение Lord Beaver » 2010-02-18 13:25:21

bobot писал(а):ну вы имеете ввиду спам отсеивать до фильтра это как?
Проверять клиента на соответствие RFC, PTR и A записи домена, грейлистинг, а уж потом фильтры. При таком подходе спама будут считанные единицы в месяц.
bobot писал(а): А можно на примере показать как задавать правила с помощью sa-compile
В общем случае достаточно

Код: Выделить всё

sa-compile

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение bobot » 2010-02-18 13:33:29

Lord Beaver писал(а):
bobot писал(а):ну вы имеете ввиду спам отсеивать до фильтра это как?
Проверять клиента на соответствие RFC, PTR и A записи домена, грейлистинг, а уж потом фильтры. При таком подходе спама будут считанные единицы в месяц.
bobot писал(а): А можно на примере показать как задавать правила с помощью sa-compile
В общем случае достаточно

Код: Выделить всё

sa-compile
я вот так ставлю это нормально

Код: Выделить всё

/usr/ports/mail/p5-Mail-SpamAssassin

#make

x AS_ROOT (потом исправим )
x SSL (в принипе тоже не использую)
x RAZOR
x SPF_QUERY


#make install

редактируем /usr/local/etc/rc.d/sa-spamd.sh

command_args="-d -r ${pidfile}" исправляем на
command_args="-x -d -m 5 -r ${pidfile}"
добавляем в /etc/rc.conf
spamd_enable="YES"

# mkdir -p /var/spool/filter/spamassassin/
# chmod -R 777 /var/spool/filter 

создаем файл 
/usr/local/etc/mail/spamassassin/local.cf

##############################################
#
##############################################
lock_method flock
trusted_networks 192.168/16 127/8
trusted_networks 127.
whitelist_from *@google.com
##############################################
rewrite_header subject [Possible SPAM]:
required_hits 6.0
required_score 6.0
report_safe 2
use_bayes 1
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 12.0
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
use_auto_whitelist 1

##############################################
auto_whitelist_path /var/spool/filter/spamassassin/auto_whitelist
bayes_path /var/spool/filter/spamassassin/bayes
auto_whitelist_file_mode 0770
bayes_file_mode 0770

##############################################
ok_languages ru en
ok_locales ru en
report_charset windows-1251

##############################################
score FROM_ILLEGAL_CHARS 1.5
score HEAD_ILLEGAL_CHARS 1.5
score SUBJ_ILLEGAL_CHARS 1.5
score FORGED_IMS_TAGS 0.5
#
##############################################

score BAYES_00 -9.8
score BAYES_20 -2.856
score BAYES_40 -0.002
score BAYES_60 0.002
score BAYES_80 3.314
score BAYES_99 10.8

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение bobot » 2010-02-18 14:17:20

Lord Beaver писал(а):
bobot писал(а):ну вы имеете ввиду спам отсеивать до фильтра это как?
Проверять клиента на соответствие RFC, PTR и A записи домена, грейлистинг, а уж потом фильтры. При таком подходе спама будут считанные единицы в месяц.
можно вот так greylist сделать

Код: Выделить всё

CREATE TABLE `Greylist` (
  `id` bigint(20) NOT NULL auto_increment,
  `relay_ip` char(15) default NULL,
  `sender` char(64) default NULL,
  `recipient` char(64) default NULL,
  `block_expires` int(11) NOT NULL default '0',
  `record_expires` int(11) NOT NULL default '0',
  `create_time` int(10) unsigned NOT NULL default '0',
  `pass_count` int(10) unsigned NOT NULL default '0',
  `block_count` int(10) unsigned NOT NULL default '0',
  `ehlo` char(64) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `relay_ip` (`relay_ip`,`sender`,`recipient`)
);


Теперь надо прописать в конфиг exim'а:
а) в самом начале прописать макросы:
GREYLIST_TEST=SELECT concat("id=",id," ts=",(unix_timestamp()-block_expires)) \
        from Greylist \
        where relay_ip='${quote_mysql:$sender_host_address}' and \
        sender='${quote_mysql:$sender_address}' and \
        recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}' limit 1
GREYLIST_ADD=INSERT into Greylist (relay_ip,sender,recipient,\
        block_expires,record_expires,create_time,block_count,ehlo) \
        values \
        ('${quote_mysql:$sender_host_address}',\
        '${quote_mysql:$sender_address}',\
        '${quote_mysql:$local_part}@${quote_mysql:$domain}',\
        unix_timestamp()+60*15,unix_timestamp()+60*60*24,unix_timestamp(),1,\
        '${quote_mysql:$sender_helo_name}')
GREYLIST_UPD1=UPDATE Greylist set pass_count=pass_count+1,\
        record_expires=unix_timestamp()+60*60*24 where id=$acl_m2
GREYLIST_UPD2=UPDATE Greylist set block_count=block_count+1 where id=$acl_m2


б) в блоке ACL настроек после RCPT TO в нужном месте прописать сами директивы:
# set variables
warn set acl_m1 = ${lookup mysql{GREYLIST_TEST}{$value}{id=-1 ts=0}}
     set acl_m2 = ${extract{id}{$acl_m1}{$value}{unknown}}
     set acl_m3 = ${extract{ts}{$acl_m1}{$value}{unknown}}

# defer if first attempt
defer   hosts = ! +relay_hosts
        condition = ${if < {$acl_m2}{0}{yes}{no}}
        set acl_m4 = ${lookup mysql{GREYLIST_ADD}{$value}{0}}

# defer if time < block_time
defer   hosts = ! +relay_hosts
        condition = ${if > {$acl_m2}{0}{yes}{no}}
        condition = ${if < {$acl_m3}{0}{yes}{no}}
        set acl_m4 = ${lookup mysql{GREYLIST_UPD2}{$value}{0}}

# pass defers if time > block_time and update count
warn    hosts = ! +relay_hosts
        set acl_m4 = ${lookup mysql{GREYLIST_UPD1}{$value}{0}}

Аватара пользователя
Lord Beaver
рядовой
Сообщения: 31
Зарегистрирован: 2009-12-26 20:37:45
Откуда: Волгоград

Re: как обучить с момощью утилиты sa-learn Spamassassin?

Непрочитанное сообщение Lord Beaver » 2010-02-18 14:42:56

Наверное можно, я по exim'у не подскажу :unknown: Пробуйте. Вот ещё статейку нарыл: http://woland.pl.ua/850-filtruem-spam-p ... a-postfix/