Отправляет email-рассылки с помощью сервиса Sendsay

Спам-фильтр.

Здравствуйте.

Понимаю, то вопрос очень расплывчатый.
Есть некий почтовый сервер. Как устроен пока не имел возможности глянуть, но
подозреваю, что обычно, т.е. fetchmail, и т.д.

Очень много спама валится. Нужно его отфильтровать. Расскажите, кто знает, как
это сделать.

Ответить   Thu, 22 Jun 2006 10:04:37 +0300 (#563889)

 

Ответы:

Здравствуйте, Русскин.

Вы писали 22 июня 2006 г., 10:04:37:

как

http://spamassassin.apache.org/ рулит

Ответить   Иван Осовец Thu, 22 Jun 2006 10:09:14 +0300 (#563892)

 

On Thu, 22 Jun 2006 10:09:14 +0300
Иван Осовец <pr***@t*****.ua> wrote:

но

Еще хорошая штука bmf

Привожу цитату из когда-то откуда-то скачанного документа. Сам пользуюсь этим
способом:

~/.fetchmailrc содержит строку

defaults mda "procmail -f-"

8<.......

3.2 Фильтрация спама

Cэкономьте на профессиональных грyзoпepевoзках, APEНДА КВAРTИР в МOCKВE, Лучшие
туры для отдыха в России и Зарубежом. Брр! Письма подобного содержания валятся
сотнями и, казалось бы, нет способа избавить себя от чтения этого мусора. Для
выделения таких писем и помещения их в отдельный почтовый ящик мы будем использовать
bmf (или другую подобную программу). Работа bmf основана на ведении статистики
хороших и плохих слов и анализе писем на наличие этих слов.

Немного модифицируем ~/.procmailrc:

# Сюда будет помещаться почта, не подходящая ни под одно из
# следующих правил.
DEFAULT=$HOME/.mail/inbox
# Файл, содержащий протокол работы procmail.
LOGFILE=$HOME/.procmail/procmail.log
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

:0fw
| bmf -p

:0:
* ^X-Spam-Status: Yes
$HOME/.mail/spam

:0:
* ^X-Mailing-List:
$HOME/.mail/youros-users

:0:
* ^X-Mailing-List:
$HOME/.mail/youros-security

:0:
* ^From: .* <.+@y*****.com>
$HOME/.mail/yourcompany

Таким образом весь спам будет помещаться в почтовый ящик ~/.mail/spam.

Осталось только создать базы плохих и хороших слов для bmf. Отредактируем файл
~/.muttrc добавим к нему следующие строки:

# bayesian mail filter
macro index <f9> "|bmf -S\n" "SPAM"
macro index <f10> "|bmf -N\n" "NOSPAM"
macro pager <f9> "|bmf -S\n" "SPAM"
macro pager <f10> "|bmf -N\n" "NOSPAM"

Как только встречается очередное подобное письмо, просто нажимаем F9, и спама
становится чуточку меньше :)

(PS: неплохо, конечно, время от времени проверять почтовый ящик spam ложные срабатывания
вполне возможны (у меня не было ни одного)).

8<--
Закон Грехема.
Пустяковые вопросы решаются быстро; важные - никогда не решаются.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 26676; Возраст листа: 1063; Участников: 1543
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/563930

1JAkUhKR9iaxCTEBdV4bVbLPdMBJnWUZ4qogZoUAse8pMADzRwIgU1msgXFRSR6RoE+CaMAeY2i0

hAI+ZZSlURK0raVgTB3TADqw1wDU9ipNxvF8BTb7Eyi7Rs9/53vrCfJbsTxjka1UW3rILrQy0DFL

VMP2xWqo5D3eSb5RDwHEiLiy5xOwWJrV+QfYVoqnB6fCB9d9H0YrKJLrk4KlladHI8BvuwNgMIdA

Y7pms9aoT+FApXT55AFtXh/Esnbs+Ul3Zlz+2nne+2g1BsOGpyDLlHIN1TdRsPe8pwP9KT510ps4

gmf7FCZ+lIfpJVtTuAVxU3j1kFHhvaD03Bc+4U8eaF6KH3PQj/xepOU80Pe2QQ4ac/Imfy8lnhL4

C/DBLHofSYTRZzssoIHM0TVlXOEvMS0nrKj7vvY3DfEt9AzbVQMKIQWp/AAq0fRZxHmACgAAAABJ

RU5ErkJggg==

Hi, all!

Иван Осовец пишет:

Оки, рулит, не спорю.
Mandriva 2006.1, spamassassin-3.1.2-1mdv2007.0,postfix-2.2.9-2mdk (хотя
последний, кажись, ни при чем :( )

Кусок из /etc/mail/spamassassin/local.cf:

# Bayesian classifier auto-learning (default: 1)
#
bayes_auto_learn 1

Далее:

# echo "TEST" | spamc
Received: from localhost by ananta.radio.bars.net.ua
with SpamAssassin (version 3.1.2);
Thu, 22 Jun 2006 17:53:52 +0300
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.1.2 (2006-05-25) on
ananta.radio.bars.net.ua
X-Spam-Level: ******
X-Spam-Status: Yes, score=6.8 required=5.0 tests=EMPTY_MESSAGE,MISSING_HB_SEP,
MISSING_SUBJECT,NO_RECEIVED,NO_RELAYS,TO_CC_NONE autolearn=no
^^^^
version=3.1.2
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----------=_449AAF00.65903F74"

Хто может подсказать, сделать, шоб в подчеркнутой строчке было autolearn=yes
????? Базы байеса сформированы, все пути - прописаны, тест --lint проходим без
мессаг - короче, вроде все O`kay :( Хто подскажет, куда копать.
Заранее спасибо.

daks

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 26681; Возраст листа: 1063; Участников: 1543
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/564087

Ответить   daks (#564087)

 

Здравствуйте, daks.

Вы писали 22 июня 2006 г., 17:58:35:

вот кусок из моего local.cf

auto_learn 1
use_bayes 1
bayes_path /etc/mail/spamassassin/bayes
bayes_file_mode 0666
bayes_learn_to_journal 1
bayes_min_ham_num 1
bayes_min_spam_num 1

в заголовках письма
X-Spam-Status: No, score=-2.6 required=1.0 tests=BAYES_00 autolearn=ham
version=3.0.1
X-Spam-Checker-Version: SpamAssassin 3.0.1 (2004-10-22)

без

Ответить   Иван Осовец Fri, 23 Jun 2006 08:59:44 +0300 (#564268)

 

1JAkUhKR9iaxCTEBdV4bVbLPdMBJnWUZ4qogZoUAse8pMADzRwIgU1msgXFRSR6RoE+CaMAeY2i0

hAI+ZZSlURK0raVgTB3TADqw1wDU9ipNxvF8BTb7Eyi7Rs9/53vrCfJbsTxjka1UW3rILrQy0DFL

VMP2xWqo5D3eSb5RDwHEiLiy5xOwWJrV+QfYVoqnB6fCB9d9H0YrKJLrk4KlladHI8BvuwNgMIdA

Y7pms9aoT+FApXT55AFtXh/Esnbs+Ul3Zlz+2nne+2g1BsOGpyDLlHIN1TdRsPe8pwP9KT510ps4

gmf7FCZ+lIfpJVtTuAVxU3j1kFHhvaD03Bc+4U8eaF6KH3PQj/xepOU80Pe2QQ4ac/Imfy8lnhL4

C/DBLHofSYTRZzssoIHM0TVlXOEvMS0nrKj7vvY3DfEt9AzbVQMKIQWp/AAq0fRZxHmACgAAAABJ

RU5ErkJggg==

Иван Осовец пишет:

У мой сказал, шо строчку auto_learn 1 он скипует, как неизвестную, ну это
видать из-за версий. К сожалению, все осталось по-старому :(( - autolearn=no
В логах нашел это:

Jun 23 09:14:38 ananta spamd[21064]: learn: auto-learn: currently using
scoreset 3, recomputing score based on scoreset 1
Jun 23 09:14:38 ananta spamd[21064]: learn: auto-learn: message score: 6.753,
computed score for autolearn: 5.475
Jun 23 09:14:38 ananta spamd[21064]: learn: auto-learn? ham=0.1, spam=12,
body-points=0, head-points=2.5, learned-points=0
Jun 23 09:14:38 ananta spamd[21064]: learn: auto-learn? no: inside auto-learn
thresholds, not considered ham or spam
Jun 23 09:14:38 ananta spamd[21064]: check: is spam? score=6.753 required=5
Jun 23 09:14:38 ananta spamd[21064]: check:
tests=EMPTY_MESSAGE,MISSING_HB_SEP,MISSING_SUBJECT,NO_RECEIVED,NO_RELAYS,TO_CC_NONE
Jun 23 09:14:38 ananta spamd[21064]: check:
subtests=__ENV_AND_HDR_FROM_MATCH,__UNUSABLE_MSGID
Jun 23 09:14:38 ananta spamd[21064]: spamd: identified spam (6.8/5.0) for
root:65534 in 0.2 seconds, 28 bytes.
Jun 23 09:14:38 ananta spamd[21064]: spamd: result: Y 6 -
EMPTY_MESSAGE,MISSING_HB_SEP,MISSING_SUBJECT,NO_RECEIVED,NO_RELAYS,TO_CC_NONE
scantim
e=0.2,size=28,user=root,uid=65534,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=54829,mid=(unknown),autolearn=no
Jun 23 09:14:38 ananta spamd[21064]: config: copying current conf from backup
Jun 23 09:14:38 ananta spamd[21058]: prefork: child 21064: entering state 1
Jun 23 09:14:38 ananta spamd[21058]: prefork: new lowest idle kid: 21064
Jun 23 09:14:38 ananta spamd[21058]: prefork: child reports idle
Jun 23 09:14:38 ananta spamd[21058]: prefork: child states: II
Jun 23 09:14:38 ananta spamd[21064]: prefork: sysread(11) not ready, wait max
300 secs

Так он пишет в логи если ему вручную скормить мессагу (# echo
"skdjgwojv"|spamc ). Т.е. нормальная реакция. И это:

Jun 23 07:03:20 ananta spamd[4448]: prefork: periodic ping from spamd parent
Jun 23 07:03:20 ananta spamd[4448]: prefork: sysread(11) not ready, wait max
300 secs
Jun 23 07:03:20 ananta spamd[4449]: prefork: periodic ping from spamd parent
Jun 23 07:03:20 ananta spamd[4449]: prefork: sysread(12) not ready, wait max
300 secs

Это при обычной работе, т.е. когда ему письма скармливает postfix. Как это так???

И еще: в письмах нет заголовков spamassassin`a - такое ощущение, шо через него
письма проходят, но он с ними ниче не делает, просто отдает назад postfix`у.
Спасибо.

daks

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 26686; Возраст листа: 1064; Участников: 1547
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/564283

Ответить   daks (#564283)

 

Здравствуйте, daks.

Вы писали 23 июня 2006 г., 9:34:10:

так???

у меня spamassassin работает в паре с sendmail
в sendmail.mc:
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
define(`confMILTER_MACROS_CONNECT', `b, j, _, spamd, lo, 127.0.0.1')dnl
define(`confINPUT_MAIL_FILTERS', `spamassassin')dnl
и в логах sendmail есть инфа о том что письма проверяются spamd
судя по вашим логам взаимодейстия postfix со spamassassin не
происходит
покажите конфиг postfix и spamassassin
и ещё
какой у вас скрипт для запуска spamd и spamass-milter(кстати через
него идет взаимодействие почтой программы и демона)

Ответить   Иван Осовец Fri, 23 Jun 2006 10:13:56 +0300 (#564300)

 

1JAkUhKR9iaxCTEBdV4bVbLPdMBJnWUZ4qogZoUAse8pMADzRwIgU1msgXFRSR6RoE+CaMAeY2i0

hAI+ZZSlURK0raVgTB3TADqw1wDU9ipNxvF8BTb7Eyi7Rs9/53vrCfJbsTxjka1UW3rILrQy0DFL

VMP2xWqo5D3eSb5RDwHEiLiy5xOwWJrV+QfYVoqnB6fCB9d9H0YrKJLrk4KlladHI8BvuwNgMIdA

Y7pms9aoT+FApXT55AFtXh/Esnbs+Ul3Zlz+2nne+2g1BsOGpyDLlHIN1TdRsPe8pwP9KT510ps4

gmf7FCZ+lIfpJVtTuAVxU3j1kFHhvaD03Bc+4U8eaF6KH3PQj/xepOU80Pe2QQ4ac/Imfy8lnhL4

C/DBLHofSYTRZzssoIHM0TVlXOEvMS0nrKj7vvY3DfEt9AzbVQMKIQWp/AAq0fRZxHmACgAAAABJ

RU5ErkJggg==

Иван Осовец пишет:

Эт хорошо, но меня интересует прикрутка ИМЕННО к постфиксу :)

В том то и дело :(

Фрагмент master.cf:

localhost:10027 inet n - n - 10 smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o myhostname=localhost

spamfilter unix - n n - 10 pipe
flags=R
user=root argv=/etc/postfix/scripts/spam.pl "localhost:10027" "spamfilter"\
"${sender}" "${recipient}" "/usr/local/bin/spamc"

/etc/mail/spamassassin/local.cf:

rewrite_header Subject *****SPAM*****
report_safe 2
trusted_networks 192.168.1.
bayes_auto_learn 1
bayes_path /var/spamd/bayes
use_bayes 1
bayes_file_mode 0666
bayes_learn_to_journal 1
bayes_min_ham_num 1
bayes_min_spam_num 1
auto_whitelist_path /var/spool/spamassassin/auto-whitelist
auto_whitelist_file_mode 0666

Spamass-milter - отсутствует. Я так понимаю, он для sendmail`a. Загвоздка
где-то в spam.pl. А так как программер из меня никакой пока - ниче поделать не
могу. А ради проверки через spamassassin прикручивать к postfix`у amavis - из
пушки по воробьям. Посему - хто чем поможет. Мож у кого есть рабочий скрипт
для скармливания писем от postfix`а spamassassin`у???

Содержимое /etc/postfix/scripts/spam.pl:

#!/usr/bin/perl -w
use strict;
use Net::SMTP;
my $host = &sall_ch(shift(@ARGV), '"');
my $ehlo = &sall_ch(shift(@ARGV), '"');

my $mail_from = &sall_ch(shift(@ARGV), '"');
my $rcpt_to = &sall_ch(shift(@ARGV), '"');
my $spamc = &sall_ch(shift(@ARGV), '"');

if
(!defined($host)||!defined($ehlo)||!defined($mail_from)||!defined($rcpt_to))
{
die("use $0 <host> <ehlo> <mail_from> <rcpt_to> [cmd]\n");
}

if (defined($spamc)) {
open(CF, "$spamc |") or undef($spamc);
}

my $smtp = Net::SMTP->new($host);
$smtp->hello($ehlo);
$smtp->mail($mail_from);
$smtp->to($rcpt_to);

$smtp->data();
if (defined($spamc)) {
while(<CF>) {
next if (/^delivered\-to\:/i);
$smtp->datasend($_);
}
}
else {
while(<>) {
next if (/^delivered\-to\:/i);
$smtp->datasend($_);
}
}
$smtp->dataend();
close(CF) if defined($spamc);

$smtp->quit;
exit 0;

############################################################
sub sall_ch($$) {
my($string, $chars) = (shift(), shift());
return(undef) unless defined($string);
$string =~ s/^[\Q$chars\E]+//;
$string =~ s/[\Q$chars\E]+$//;
return($string);
}

Спасибо.

daks

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 26693; Возраст листа: 1064; Участников: 1547
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/564457

Ответить   daks (#564457)

 

В сообщении от Четверг, 22-июн-2006 10:09 Иван Осовец написал(a):

Я его использую в Kmail. Действительно хорошо работает, но как он работатет с
консольными прогами?

Ответить   Thu, 22 Jun 2006 14:55:38 +0300 (#564101)