четверг, 1 декабря 2011 г.

SpamAssassin + Spamass-Milter + Webuserpref

(ОС: Debian 5.0)


1. apt-get install spamassassin spamass-milter mysql-server-5.0

2. create mysql db for spamassassin

3. mysql spamassassin < /usr/share/doc/spamassassin/userpref_mysql.sql
mysql spamassassin < /usr/share/doc/spamassassin/awl_mysql.sql
mysql spamassassin < /usr/share/doc/spamassassin/bayes_mysql.sql

4. /etc/default/spamass-milter

OPTIONS=”-u spamass-milter -i 127.0.0.1 -e local.lan”       # ключ -е <домен по умолчанию> нужен для того чтобы spamass-milter передавал spamassassin’у доменную часть (которая обязательно требуется для полноценной работы spamassassin’а с базой mysql).

5. /etc/postfix/main.cf

smtpd_milters = unix:/spamass/spamass.sock
milter_connect_macros = j {daemon_name} v {if_name} _

6. http://sourceforge.net/projects/webuserprefs/

vi  /var/www/webuserprefs-0.6/config.php

require(”auth/imap.php”);

$prefs_source  = “db”;

$db_host        = “localhost”;
$db_username    = “spamassassin”;
$db_password    = “secret”;
$db_database    = “spamassassin”;       // Change if necessary
$db_table       = “userpref”;
//$db_sauser    = “sauser”;             // This is ‘username’;
$db_sauser      = “$auth_user”;         // This is ‘username’;

vi /var/www/webuserprefs-0.6/auth/imap.php

$imap_server    = “172.16.0.28″;
$imap_port      = “143″;
$basic_realm    = “SpamAssassin Preferences”;
$return_url     = “http://www.spamassassin.org”;

Теперь при аутентификации на веб приложении, будет запрашиваться логин/пароль от пользовательского почтового ящика. Соответственно каждый пользователь может индивидуально настроить для себя SpamAssassin.

7. /etc/spamassassin/local.cf

user_scores_dsn                 DBI:mysql:spamassassin:localhost
user_scores_sql_username        spamassassin
user_scores_sql_password        secret
user_scores_sql_custom_query    SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = _MAILBOX_ OR username = _DOMAIN_ ORDER BY username ASC

user_awl_dsn                    DBI:mysql:spamassassin:localhost
user_awl_sql_username           spamassassin
user_awl_sql_password           secret
user_awl_sql_table              awl
auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList
#  user_awl_sql_override_username  awl_user

bayes_sql_dsn                   DBI:mysql:spamassassin:localhost
bayes_sql_username              spamassassin
bayes_sql_password              secret
bayes_store_module              Mail::SpamAssassin::BayesStore::SQL
#  bayes_sql_override_username     bayes_user

8. /etc/default/spamassassin

OPTIONS=”–max-children 5 –sql-config –username=spamfilter –nouser-config -D”   # ключ -D это дебаг, после настройки убрать.

Дополнительная информация (man mail::spamassassin::conf):

user_scores_sql_custom_query query
This option gives you the ability to create a custom SQL query to retrieve user scores and preferences.  In order to work correctly your query should return two values, the preference
name and value, in that order.  In addition, there are several “variables” that you can use as part of your query, these variables will be substituted for the current values right
before the query is run.  The current allowed variables are:

_TABLE_
The name of the table where user scores and preferences are stored. Currently hardcoded to userpref, to change this value you need to create a new custom query with the new table
name.

_USERNAME_
The current user’s username.

_MAILBOX_
The portion before the @ as derived from the current user’s username.

_DOMAIN_
The portion after the @ as derived from the current user’s username, this value may be null.

The query must be one one continuous line in order to parse correctly.

Here are several example queries, please note that these are broken up for easy reading, in your config it should be one continuous line.

Current default query:
“SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = ‘@GLOBAL’ ORDER BY username ASC”

Use global and then domain level defaults:
“SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = ‘@GLOBAL’ OR username = ‘@~’||_DOMAIN_ ORDER BY username ASC”

Maybe global prefs should override user prefs:
“SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = ‘@GLOBAL’ ORDER BY username DESC”

Добавление Razor (проверяет письма сравнивая сигнатуру входящих писем со своей collaborative базой сигнатур спамовых писем) к фильтрации писем:

apt-get install razor

В настройках профиля в Webuserpref поставить галочку напротив “Use Razor v2″

Дебаг, ключ -D к SpamAssassin’у. Должен быть примерно такой вывод в логах при получении письма:

Aug 20 14:12:45 cyrus spamd[961]: config: failed to parse line, skipping, in “(no file)”: use_razor1 0
Aug 20 14:12:47 cyrus spamd[961]: razor2: part=0 engine=4 contested=0 confidence=0
Aug 20 14:12:47 cyrus spamd[961]: razor2: results: spam? 0
Aug 20 14:12:47 cyrus spamd[961]: razor2: results: engine 8, highest cf score: 0
Aug 20 14:12:47 cyrus spamd[961]: razor2: results: engine 4, highest cf score: 0

Ошибка в конфиге при вызове razor1 вполне логичны, т.к. razor1 выключен по умолчанию в настройках SpamAssassin’а. Включать не нужно.

Комментариев нет:

Отправить комментарий