Регистрация...

Eserv Forum / E3 / Eserv 3 Mail Server Support / Помогите с реализацией идеи...

imported // (v2)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Новости
12.10.2009
Переезд завершен
Доброго времени суток. Помогите советом, реально ли сделать такой финт ушами...

Стоит на шлюзе IPCop, в нём есть модуль smtp-прокси, дающий фильтрацию на вирусы и на спам. У последнего, помимо статических обновляемых правил, есть ещё байесов фильтр, который обучается путём поедания писем из папок spam — not_spam, расположеных на указаном IMAP-сервере.

Реально ли сделать так, чтобы, при переклассификации пользователем письма как спам, в своём локальном IMAP-каталоге, оное письмо ещё и копировалось в желаемую мне папку, для последующего обучения фильтра на проксе? И, соответсвенно, такое-же правило для того, что классифицируется как не-спам...

ЗБ
 
Комментарии к версии 1 (23.04.2007 10:59) [~Shajtan] 79ae8081
АвторДатаТекстtags
Dandy23.04.2007 11:25
Такой плагин у меня находится в стадии разработки (увы, уехал в длительную коммандировку и до ума довести не успел — не успел потестировать). Идея очень схожая: имеется SQLite таблица с полями LOCAL_USER, OUTER_USER, CNT_IN, CNT_OUT где: LOCAL_USER — адрес локального пользоавателя
OUTER_USER — адрес внешнего пользователя
CNT_IN — количесво писем пришедшиех от OUTER_USER для LOCAL_USER
CNT_OUT — от LOCAL_USER к OUTER_USER

При приеме письма от внешнего отправителя выполняется запрос к базе на предмет наличия записей о переписке в обоих направлениях и при положительном результате все прочие проверки (только на предмет спама) пропускаются (ну и естествено происходит обновление базы). Для писем от локальных пользователей (во внешний мир) так же происходит обновление базы (ну и проверка, если антиспам включен в "параноидальном" режиме — проверяется так же исходящая почта..)
imported
pig23.04.2007 11:31
Меня такая мысль тоже время от времени посещает. Только додумать не успеваю
imported
svp23.04.2007 12:45
Dandy
Готов приобрести апгрейд для mcontent в ограниченном количестве

Shajtan
Вы Шурале!
imported
Shajtan23.04.2007 17:54
Вы Шурале!
Че-его? 8O
imported
Dandy30.07.2007 23:07
Ну, собственно сваял
Лежит тут: ftp://eserv.ru/addons/mailroll/
Описание и инструкция по применению в архиве.

Но тем не менее кратко повторю:
Плагин для регистрации движения почтовой корреспонденции может применяться как дополнительный инструмент для уменьшения вероятности false-positive срабатываний антиспам фильтра (когда валидное письмо ошибочно распознается как спам).
Принцип действия плагина очень прост. Во время SMTP сессии после передачи команд RCPT и MAIL FROM плагин делает запрос к базе (почтовому реестру) и проверяет зарегистрирован ли уже обмен сообщениями с данным отправителем и в случае, если количество отправленных/полученных сообщений превышает заданный порог, письмо считается заведомо "чистым" и проверка на спам с использованием байесовых фильтров отключается

Один из подводных камней, на который сегодня указал Андрей Черезов — если с отправителем установились "доверительные" отношения, а спамеры возьми да и начни отправлять вам спам от его адреса, то все это "богатство" попадает прямиком к вам в ящик (миную все отключенные спам фильтры). Хотя с другой стороны, тут должен помочь SPF.

P.S. а ты добавил SPF запись для своего домена?!
imported
svp02.08.2007 11:50
Добрый день!

Пообщался с замами и менеджерами, предлагают ввести принцип первичности, важнее адресат исходящего сообщения.
imported
Dandy02.08.2007 19:38
Ну собственно этот приоритет и реализован (значением порогов по-умолчанию). С точки зрения плагина, почтовый сервер всегда считается получателем (не важно идет ли письмо от внешнего отправителя внутреннему или наоборот, так как в обоих случаях письмо сначала принимается сервером)

Поясню на примере: пусть имеется письмо: MAIL FROM -> RCPT_TO
Сначала идет проверка наличия записей по прямому направлению, т.е.
Количество(MAIL FROM -> RCPT_TO) > Порог1

После чего по обратному:
Количество(RCPT_TO -> MAIL FROM) > Порог2

Если оба выражения дают истину, то отправитель (а соответственно и письмо) считается доверенным.

Значения "Порог1" и "Порог2" соответственно и задают приоритет прямого или обратного запросов (или как вы выразились принцип первичности или вторичности)
По-умолчанию значения выставлены:
"Порог1" = 2
"Порог2" = 1

Т.е. чтобы отправитель стал доверенным, необходимо в реестре иметь как минимум 3 записи о переписках в прямом направлении ( MAIL FROM -> RCPT_TO) и 2 записи о переписках в обратном (RCPT_TO -> MAIL FROM), что собственно и реализует "принцип первичности"
imported
svp03.08.2007 10:42
Спасибо Dandy!

"Порог1" = 2
"Порог2" = 1

"Ручками" подкручивать можно?
imported
Dandy03.08.2007 10:46
Можно.
Откройте mailroll\index.f найдите следующий кусок кода:
\ необходимое количество писем полученных сервером от конкретного отправителя
\ (отправленных конкретным отправителем) для того чтобы считать отправителя "доверенным отправителем"
2 VALUE vTrustedSenderAsSender

\ необходимое количество писем полученных сервером для конкретного отправителя
\ (отправленных конкретному отправителю, конкретным получателем) для того чтобы считать отправителя
\ "доверенным получателем"
1 VALUE vTrustedSenderAsRecipient

И задайте собственные значения параметров. После чего перезапустите сервис acSMTP

P.S. настоятельно не рекомендую ставить значения меньше установленных по-умолчанию ))
imported
svp03.08.2007 11:47
Хр!

Будет ли адресат считаться доверенным, если отработает:
  • подтверждение доставки?
  • подтверждение прочтения?
imported
pig03.08.2007 12:18
Не совсем понял смысл, но все уведомления в стандартном конфиге, даже порождённые самим acSMTP, считаются за отдельные письма. Остаётся смотреть, где какие отправители.

В PigMail внутренние извещения должны будут проходить мимо MailRoll.
imported
Комментарии к этой версии (10.09.2008 17:46) [~Shajtan] 6d753746
АвторДатаТекстtags
Shajtan12.09.2008 13:19
Так, пока что никто не помогает... ладно, подскажите хотя бы вот что:

как мне корректно прописать другой путь в скрипте ResendMessage.rules.txt? Его содержимое сечас:
Antispam[ResendDir] TARGET-FILE MoveFileWithCreatePath
. Допустим, я хочу складывать письма в другое место — подпапку spam в папке ../data/mail/reclassify . На запись типа
{SMTP[Reclassify]\spam} TARGET-FILE MoveFileWithCreatePath
— не реагирует... как там путь прописать?
imported
Shajtan15.09.2008 14:49
Да, чего-то глуховато тут стало с поддержкой. Ладно, с частью проблемы я разобрался, с путями всё понятно — имя файла тоже надо было прописывать. Теперь новый вопрос: почему ничего не работает, если в строке
Antispam[ResendDir] TARGET-FILE MoveFileWithCreatePath
использовать Copy вместо Move:
Antispam[ResendDir] TARGET-FILE CopyFileWithCreatePath
?

зы: надеюсь, у меня тут не монолог будет, а?
imported
Dandy15.09.2008 16:56
а) ResendMessage.rules.txt попробуйте:
" {SMTP[Reclassify]}\spam\{RANDOM-ID}!{RANDOM-ID}.eml" STR@ TARGET-FILE MoveFileWithCreatePath


б) "почему ничего не работает, если в строке ..." попробуйте:
" {Antispam[ResendDir]}\{RANDOM-ID}!{RANDOM-ID}.eml" STR@ TARGET-FILE CopyFileWithCreatePath
imported
ac15.09.2008 17:13
Shajtan пишет: зы: надеюсь, у меня тут не монолог будет, а?

Не забывайте, что форум — это в основном для общения пользователей между собой. А для взаимодействия клиентов с техподдержкой есть раздел техподдержки, см. www.eserv.ru/Support
imported
Shajtan15.09.2008 17:35
2ac — ну так у меня и не совсем стандартная ситуация... как-бы так всё работает, жаловаться не на что — вот в суппорт и не стал стучаться.

2Dandy — с путями я сделал другим путём — создал ещё переменную в Eserv.ini (это насчёт "а", кстати, такая конструкция как Вы написали — что-то сомнительно что заработает, имени файла в ней нету)

а вот с советом "б" — попробовал, не работает. Реализовал задуманное с помощью диких костылей (ну не прогер я, админ — мне проще костыли приделать): теперь сообщения, реклассифицированные пользователем как не-спам, сначала перемещаются в буферный каталог, откуда скриптом с nncron-а каждые пять минут раскидываются в ...\127.0.0.1\25 для переотправки пользователю и в папку, из которой их потом будет забирать SpamAssasin для обучения. Письма, которые помечаются как спам — сразу улетают в соответвующую папку для Assasin-а...

Не знаю ещё, насколько такие усложнения оправданы — поживём-увидим. Пока что работает вроде, и пускай себе..

Спасибо за советы!
imported
ac15.09.2008 17:51
Кстати, а что за антиспам в IPCop'е? Spamassassin? Его (SA) байесу Eserv умеет скармливать спам и не-спам через API.
imported
Shajtan15.09.2008 17:58
Да, имеенно SpamAssasin. А как реализовать такое, дистанционное, обучение? В правиле OnMessageMove я видел команды для обучения только PopFile, SpamProtexx и SD.

Если подскажете, в каком направлении копать — буду благодарен.

зы: хотя да, примерно понятно... тут скорее не к вам вопрос уже, а к разработчикам CopFilter, в составе которого SpamAssasin идёт. Ладно, потом буду думать. Явного рецепта там нету — в IPCop всё администрирование идёт через веб-морду, а там настройки есть только для тренинга байеса через IMAP.
imported
ac15.09.2008 18:23
Да, в комплекте Eserv/3 plugin'а для SA нет. В 2002м был, но байеса тогда в SA не было. Недавно я старый plugin адаптировал, обучение его байеса добавил, будет в комплекте Eserv/4, но и с /3 совместим. И ему в общем без разницы — с локальным SA работать или по сети.

Проверьте, как запускается SAшный spamd в IPCop+CopFilter'е — биндит только localhost, или с машины с Eserv тоже телнетится на 783й порт. И включена ли поддержка команды TELL в этом spamd.
imported
Dandy16.09.2008 09:37
Shajtan пишет:
2Dandy — с путями я сделал другим путём — создал ещё переменную в Eserv.ini (это насчёт "а", кстати, такая конструкция как Вы написали — что-то сомнительно что заработает, имени файла в ней нету)
по а) согласен, зевнул а вот почему б) не срабатывает — это вопрос...
imported
Shajtan16.09.2008 11:04
2ac — 783 на IPCop открыт, слушаеться, но снаружи недоступен. Стоит открыть? Там настройки у него свои, всё-ж фаерволл "коробочный"... но если надо — то в принципе попробую прокинуть.
imported
ac16.09.2008 12:43
Прокинуть надо только для ЛС (тогда все смогут обучать его даже напрямую — есть plugin'ы для почт.клиентов, например SpamAssassin Coach для Thunderbird), или только для машины с Eserv, тогда мы свой plugin в acIMAP прикрутим (и тоже все смогут обучать, но не напрямую, а IMAP-действиями).
imported
Shajtan19.09.2008 17:10
2ac: — Ну, порт я открыл, мне бы интересно именно с почтариком его совокупить. Команду TELL не проверял — точно не знаю, как её серваку сообщить — но сеанс по этому порту с сервака открывается, в конфиге smamd я опцию -l (по ману — то что нужно для внешнего обучения) — включил. Дальше ваш ход — как привинтить плагин к ESERV?




Да, вдогонку — плагин к Бёрду я прикрутил, но почему-то не фурычит он. Не отправляет никаких данных, и кнопки даже в Бёрде не появилось соответствующей... скорее всего, устарел плагинчик.
imported
ac19.09.2008 23:33
Хорошо. См. сегодняшние добавления в базовый конфиг -
http://www.eserv.ru/ru/rss/50.xml

Вам нужно взять оттуда acIMAP/conf/imap/OnMessageMove.rules.txt acIMAP/conf/OnStartup.rules.txt
CommonPlugins/plugins/spamassassin/activate.f
CommonPlugins/plugins/spamassassin/index.f

в index.f заменить
    " localhost" SaPort fsockopen на
    " ip_вашего_IPCop" SaPort fsockopen

В Eserv3.ini в раздел [SMTP] добавить:
UseSpamAssassin=1

Перезапустить acIMAP. Теперь при переносе писем IMAP'ом в папки 'spam/clear' SA будет обучаться также как ранее обучались PopFile, SP и SD. В общем логе DATA\log\imap\200809rc.txt обучение тоже должно отражаться.

В acIMAP.log при этом будет некоторая отладочная информация, на которую надо будет посмотреть, если что-то не заработает. Собственно процесс обучения можно будет смотреть и на IPCop'е, там должны будут обновляться файлы .spamassassin/bayes_* (или mysql-базы, если он так настроен хранить списки слов).

Пишите о результатах.

P.S. Обратите внимание, что к acSMTP мы SA здесь не подключали, т.е. собственно удаление спама из входного потока останется на совести вашего IPCop.
imported
ac20.09.2008 05:21
Shajtan пишет: Да, вдогонку — плагин к Бёрду я прикрутил, но почему-то не фурычит он. Не отправляет никаких данных, и кнопки даже в Бёрде не появилось соответствующей... скорее всего, устарел плагинчик.

Извините, эту догонку пропустил. Кнопочку в Thunderbird надо вручную добавлять на панель после установки расширения — в контекстном меню на панели инструментов выбрать "Настроить...", и там кнопку перетащить. Попробовал, работает. По крайней мере если верить логу spamd.log:
Sat Sep 20 05:05:32 2008 [-5864] info: spamd: connection from rainbow [127.0.0.1] at port 60696
Sat Sep 20 05:05:34 2008 [-5864] warn: spamd: bad protocol: header error: (Content-Length mismatch: Expected 98308 bytes, got 65463 bytes) at spamd.raw line 1995, <GEN29> line 774.
Sat Sep 20 05:05:36 2008 [4136] info: prefork: child states: II
Sat Sep 20 05:06:53 2008 [-5864] info: spamd: connection from rainbow [127.0.0.1] at port 60706
Sat Sep 20 05:06:56 2008 [-5864] info: spamd: Tell: Setting local for (unknown):0 in 2.7 seconds, 1544 bytes
Sat Sep 20 05:06:56 2008 [4136] info: prefork: child states: II
Sat Sep 20 05:10:25 2008 [-5864] info: spamd: connection from rainbow [127.0.0.1] at port 60729
Sat Sep 20 05:10:26 2008 [-5864] info: spamd: Tell: Setting local for (unknown):0 in 0.9 seconds, 3583 bytes
Sat Sep 20 05:10:26 2008 [4136] info: prefork: child states: II

Правда, как там же видно, с какими-то глюками — Thunderbird не всё письмо ему отправил.

Настройки plugin'а тоже работают: вот я ставлю "ac" (не настроенное в spamd) в username:
Sat Sep 20 05:15:39 2008 [-5864] info: spamd: connection from rainbow [127.0.0.1] at port 60745
Sat Sep 20 05:15:39 2008 [-5864] info: spamd: handle_user unable to find user: 'ac'
Sat Sep 20 05:15:46 2008 [-5864] info: reporter: spam reported to DCC
Sat Sep 20 05:15:46 2008 [-5864] info: spamd: Tell: Setting local,remote for ac:0 in 7.2 seconds, 524 bytes
Sat Sep 20 05:15:46 2008 [4136] info: prefork: child states: II

Примечание для случайно зашедших: в данном сообщении речь о plugin'е "SpamAssassin Coach для Thunderbird", а не SA-plugin'е для Eserv.
imported
Shajtan20.09.2008 12:22
2ac: Что-то не завелось сходу. В логах acIMAP:
Exception #-2003 at: conf\imap/OnMessageMove.rules.txt:18:30: TARGET-FILE CutAntispamHeaders ^ conf\imap/OnMessageMove.rules.txt - file not found 2008-09-20 13:01:03;172.16.11.7;Error 2003 in the rule file "conf\imap/OnMessageMove.rules.txt", line: 18, char: 30


  • ругается на CutAntispamHeaders, я так понимаю... в старом моём OnMessageMove.rules.txt этой строчки не было.
Закомментил эту строку, имя файла дальше по скрипту заменил с TARGET-FILE-WH на TARGET-FILE — сейчас вроде бы пошёл процесс, в логи acIMAP идут ответы от SA на шлюзе.

Спасибо, осталось с TARGET-FILE-WH разобраться.
imported
ac20.09.2008 21:05
Там по ссылкам выше, откуда вы брали OnMessageMove, есть история изменений этого файла (http://www.eserv.ru/cvsweb-nt/cvsweb.cgi/install/Eserv3/acIMAP/conf/imap/OnMessageMove.rules.txt). И как раз предыдущее изменение про эту обрезку заголовков, там же и ссылка на необходимый для этого acIMAP.exe:

Revision 1.17 Changes since 1.16: +18 -8 lines
Diff to previous 1.16
Обрезка антиспам-заголовков перед переобучением.
Только для acIMAP от 8 апреля и позднее (http://www.eserv.ru/download/acIMAP_080408_1.rar)
imported
Shajtan20.09.2008 21:34
ну да, сам дурак — не посмотрел. Ладно, спасибо — в понедельник испрявлю, погоняю чуток да переведу на этот сервак всех юзеров (сейчас на временном сидят) — пускай тоже проверяют. О результатах отпишусь.

Хочу заметить, что сейчас такая связка — сначала IPCop на шлюзе, с smtp-проксёй, а потом EServ — меня очень устраивает хотя бы по антивирусной проверке. На Eserv-е стоит модель DRWEba, который частенько пропускает бяку — а с тех пор, как юзаю проверку CLAM-ом на шлюзе, количество бяки сократилось. Теперь вот узнаю, насколько лучше будет работать двойная спам-проверка... хочу обучить SA недельку-другую, чтобы отсеять ложные срабатывания — а потом просто запретить проход спам-писем до сервака (они ещё какое-то время в каратнине лежат, так что потерять нужное, если вовремя спохватиться, сложно.)
imported
ac21.09.2008 18:12
Так к Eserv тоже может с clamd работать. А DrWEB пропускал вирусы до очередного обновления баз, или попадались вообще не ловимые им вирусы?

Насчет обучения SA — не так легко и удобно как с POPfile/SP/SD. Потому что в SA все шиворот-навыворот. Байес его обучается нормально, но вот антиспам-эвристики его, которые должны быть вычислены ДО байеса (чтобы байесом статистически учитываться) работают с ним рядом "параллельно", и веса их берутся с потолка, и вес оценки байеса точно также берется от балды (чем в итоге портит работу байеса). В итоге, если ручной регулировкой весов удастся фильтровать хотя бы 95% (и без ложных срабатываний), то админу можно ставить памятник. А с конфигом по умолчанию SA вообще использовать нельзя, он и половины спама не отсеивает.

Понятно откуда это взялось (байес прикручен на несколько лет позже создания первых версий SA, когда стало понятно что байесам он проигрывает), но непонятно, почему разработчики не встроили его нормально, а именно сверху всех его эвристик. Тем более что все для этого есть: имена сработавших правил (которые он в заголовок пишет) должны обрабатываться его байесом как обычные слова, тогда их веса будут выставляться автоматом на основе обучения, т.е. математически точно.
imported
Shajtan06.10.2008 12:15
C CLAM-ом тут ведь как... на ESErve, как я понимаю, только один антивирь может крутиться — а DrWeb у нас купленный, пропадать добру как-то негоже. Сейчас же — двойная проверка, на шлюзе и на серваке. Вирусни стало поменьше...

С дефолтными конфигами IPCop-а (они там, понятное дело, отличаются от дефолных SA) спам режет неплохо, огорчили ложные срабатывания. Пока что задрал планку распознавания как спам, и активно юзаю Whitelist-ы.

Кстати, давно хотел сказать — почему бы в EServ-е не добавить функционала к Whitelist-ам? К примеру, очень удачным решением оказалась фича в IPCop-е, что в whitelist добавляются все адреса, НА КОТОРЫЕ уходит моя почта. Файл белых списков, конечно, разросся — но дубликатов нету, чистится раз в сутки по крону, и ложные срабатывания ушли совсем. Быть может, вы учтёте такие пожелания в будущих версиях EServ-а? (если интересно, то могу расписать своё видение управления whitelist-ами).

По работе связки IPCop+EServ — обучение через API SA для больших рабочих групп становиться затруднительным, ибо сильно просаживает шлюз. Разумнее учить шлюз через IMAP-папки, настроив правила IMAP-копирования на EServ-е.
imported
Shajtan06.10.2008 12:16
C CLAM-ом тут ведь как... на ESErve, как я понимаю, только один антивирь может крутиться — а DrWeb у нас купленный, пропадать добру как-то негоже. Сейчас же — двойная проверка, на шлюзе и на серваке. Вирусни стало поменьше...

С дефолтными конфигами IPCop-а (они там, понятное дело, отличаются от дефолных SA) спам режет неплохо, огорчили ложные срабатывания. Пока что задрал планку распознавания как спам, и активно юзаю Whitelist-ы.

Кстати, давно хотел сказать — почему бы в EServ-е не добавить функционала к Whitelist-ам? К примеру, очень удачным решением оказалась фича в IPCop-е, что в whitelist добавляются все адреса, НА КОТОРЫЕ уходит моя почта. Файл белых списков, конечно, разросся — но дубликатов нету, чистится раз в сутки по крону, и ложные срабатывания ушли совсем. Быть может, вы учтёте такие пожелания в будущих версиях EServ-а? (если интересно, то могу расписать своё видение управления whitelist-ами).

По работе связки IPCop+EServ — обучение через API SA для больших рабочих групп становиться затруднительным, ибо сильно просаживает шлюз. Разумнее учить шлюз через IMAP-папки, настроив правила IMAP-копирования на EServ-е.
imported
Dandy06.10.2008 14:04
Shajtan пишет:
Кстати, давно хотел сказать — почему бы в EServ-е не добавить функционала к Whitelist-ам? К примеру, очень удачным решением оказалась фича в IPCop-е, что в whitelist добавляются все адреса, НА КОТОРЫЕ уходит моя почта. Файл белых списков, конечно, разросся — но дубликатов нету, чистится раз в сутки по крону, и ложные срабатывания ушли совсем. Быть может, вы учтёте такие пожелания в будущих версиях EServ-а? (если интересно, то могу расписать своё видение управления whitelist-ами).

Велосипед уже изобретен в виде плагина MailRoll
imported
ac06.10.2008 17:56
Shajtan пишет: По работе связки IPCop+EServ — обучение через API SA для больших рабочих групп становиться затруднительным, ибо сильно просаживает шлюз. Разумнее учить шлюз через IMAP-папки, настроив правила IMAP-копирования на EServ-е.

Так заработал у вас этот вариант с обращением acIMAP'а к SA для обучения?
imported
Shajtan07.10.2008 10:59
2AC Да, всё заработало, но, как я написал выше, переобучение серьёзно затормаживает работу шлюза. Разумнее откладывать это на ночные часы — проводить обучение по расписанию, натравливая SA на папки Spam — Not_spam

2Dandy Ну вот, проморгал... Спасибо, посмотрю.
imported
ac07.10.2008 18:39
Shajtan пишет: 2Dandy Ну вот, проморгал... Спасибо, посмотрю.


ftp пока не работает, вот http:
http://www.eserv.ru/download/mailroll v.0.7.7z
imported
Работает на Eserv/5.05555 (05.06.2016)