Стоит Eserv 3.34
Первый раз настраиваю антиспам. Почитал документацию и форум.
Подключил только Libsd.
Завел пользователей spam_lover и popfile_admin
Почта начала классифицироваться — часть писем попадает в папку спам и поступает в ящик spam_lover.
У меня возникло несколько вопросов по переклассификации почты (при ложных срабатываниях)
- Отправителю письма, считающегося спамом приходит уведомление типа 550 Your message is classified as SPAM! If this an error, please contact error@Mydomen.ru or click here: http://Mydomen.ru:3140/MailClassify/user@domen2.ru!42!8706359!2.eml Но даже заходя локально на машину, на которой установлен есерв по http://192.168.0.238:3140/MailClassify/user@domen2.ru!42!8706359!2.eml выдается пустая страница с Forbidden. Подскажите где можно покопать чтобы получалось проталкивать письма?
- Практически все пользователи используют для приема почты Pop3 Добавил в ToEmailRobots.txt строку"spam_ll@Mydomen.ru";1;"smtp\robots\MailClassify\RunRobot";1;"Mail classification robot"Правильно ли я понимаю что если пользователь получит спамовое письмо, прошедшее сквозь фильтр, то для обучения фильтра достаточно будет переслать данное письмо как вложение с темой «spam» и фильтр дообучится? Как это можно проверить?
- Иногда администратору нужно будет переклассифицировать письмо из spam_lover как неспамовое. Из документации вроде понял что достаточно завести в spam_lover папки not_spam и при перетаскивании туда письма должна производиться переклассификация и перекладка письма в ящик адресата.
- 1 Где нужно создавать папки not_spam и spam внутри папки inbox или на одном уровне с ней?
- 2 Вроде пробовал и так и так и при перекладывании в ящике spam_lover письмо адресату не попадает. Где можно поковырять чтобы происходило "доучивание" и переброска Пробовал перебрасывать в spam и not_spam для других ящиков понял, что переклассификация писем происходит (т.к. при повторной отправке такого же письма другому пользователю домена письмо уже не считается спамом)
( $Id: OnRequest.rules.txt,v 1.40 2007/11/10 03:30:48 ac Exp $
DocumentRoot задает каталог, файлы из которого будут выдаваться
веб-сервером в том случае, если иные каталоги не были заданы настройкой
виртуальных серверов.
Путь в DocumentRoot задается абсолютный, например D:\IntetPub,
\\computer\share\path или относительно каталога веб-сервера,
как wwwroot в настройке по умолчанию.
)
\ 353 LOG
\ uCgiDebug ON
\ Port= 3141 | EvalRules: HTTP/XulAdmin \EOF
Uri /secure/*
[IF]
URI?P MLEN @ — 0 MAX SWAP MLEN @ + SWAP SetUri
URI?P " {Http[AdminUser]}:{Http[AdminPass]}" STR@ DUP MLEN ! SEARCH
[IF] MLEN @ /STRING SetUri Http[AdminUser] Http[AdminPass] SetUser -2 UID !
[ELSE] 2DROP Unauthorized Proxy-control-interface \EOF [THEN]
[THEN]
DocumentRoot: {HTTP[DocumentRoot]}
BitrixSitemanager[UseSM] >NUM | DocumentRoot: {BitrixSitemanager[DocumentRoot]}
Uri MailClassify/* | DocumentRoot: ..\CommonPlugins\plugins\popfile\web Replace /
Uri *XXXXXXXXXXXXXXXXXXXXXX* | Forbidden \EOF
\ Port= 80 | DocumentRoot: wwwroot
User NIP 0= | EvalRules: IpMacAuth
Port= {Http[AdminPort]} Port= {Http[AdminSslPort]} OR | EvalRules: http\AdminOnRequest1
Uri /my/* | EvalRules: http\MyOnRequest1
HTTP[Active] >NUM 0= | DocumentRoot: {HTTP[DocumentRoot]}\tempdown
Port= {Http[Port]} Port= {Http[SslPort]} OR | EvalRulesIfExists: http\CustomOnRequest
DirectoryNotfound: index.php index.f 404.php download.php index.e
( DirectoryIndex задает последовательность поиска индексных файлов в
каталоге для случая, когда имя файла не задано, а задан только каталог.
)
DirectoryIndex: index.f index.html index.htm index.php3 index.php index.phtml index.cgi default.htm index.fxml index.e index.ew
\ FILENAME TYPE CR
( Примеры назначения других корневых каталогов в зависимости от
значений заголовков HTTP-запроса.
)
\ Host: ~ ac* | DocumentRoot: ac\wwwroot
\ Accept-Language: ~ *ru* | DocumentRoot: ac\wwwroot\ru
\ Host: ~ * | DocumentRoot: c:\eserv2\wwwroot
\ Uri /admin/* | DocumentRoot: c:\eserv2\wwwroot
\ CR Cookie: STR@ TYPE CR
\ Uri /phpmyadmin* | VirtualRoot: C:\PRO\my-web\phpmyadmin\
\ Uri /progs/* | Replace /download/
\ Uri /download/* | Redirect http://www.nncron.ru{URI}
( Способ авторизации — имя файла или слова, реализующего вариант обработки
запроса LoginUser
)
\ AuthMethod: AuthFile
\ AuthMethod: NtLogon
\ AuthMethod: AuthDomainsDebug
\ LOGIN
\ User =~ admin | Pass =~ admin_pass | TRUE UID !
User NIP UID @ -2 <> AND
[IF]
Port= {Http[AdminPort]} Port= {Http[AdminSslPort]} OR Uri /my/* 0= AND
[IF]
Http[AdminUser] NIP 0= Http[AdminPass] NIP 0= OR
[IF]
TRUE UID ! DocumentRoot: {HTTP[AdminDocumentRoot]}\setpass DirectoryIndex: index.f
[ELSE] Http[AdminPass] NIP 32 <> | Http[AdminPass] MD5 S" Http[AdminPass]" IniS!
UID @ | Pass NIP 0= | UID 0! Unauthorized Proxy-control-interface \EOF \ админу IP-авторизацию не дадим
User= {Http[AdminUser]} PassMD5= {Http[AdminPass]} AND UID !
UID @ 0= | TRUE UID ! DocumentRoot: {HTTP[AdminDocumentRoot]}\wrongpass DirectoryIndex: index.f
[THEN]
[ELSE]
UID @ 0= | AuthMethod: AuthDomains LOGIN
[THEN]
[THEN]
\ разрешим обращение к спискам по макроименам
Uri *}* | UID @ | Port= {Http[AdminPort]} Port= {Http[AdminSslPort]} OR | URI?P S@ URI-DECODE S@ 11 — 0 MAX SWAP 11 + SWAP 2DUP \>/ Redirect " /main/{s}"
( Назначение выдаваемого сервером поля Content-Type в зависимости от
расширения файла.
)
File *.gif | ContentType image/gif
File *.css | ContentType text/css
File *.html | ContentType text/html
File *.htm | ContentType text/html
File *.shtml | ContentType text/html
File *.xml | ContentType text/xml
File *.xsl | ContentType text/xml
File *.xslt | ContentType text/xml
File *.xul | ContentType application/vnd.mozilla.xul+xml
File *.txt | ContentType text/plain
File *.jpg | ContentType image/jpeg
File *.png | ContentType image/png
File *.zip | ContentType application/zip
File *.rar | ContentType application/x-compressed
File *.log | ContentType text/plain
File *.key | ContentType application/octet-stream
File *.exe | ContentType application/octet-stream
File *.doc | ContentType application/octet-stream
File *.hta | ContentType application/hta
File *.svg | ContentType image/svg+xml
File *.ics | ContentType text/calendar
File *.wml | ContentType text/vnd.wap.wml
Uri *DATA/temp/*.log | ContentType text/xml
( Если клиент работает не обычными HTTP-методами, а WebDAV-методами,
то назначение обычных CGI-обработчиков нужно исключить, и заодно
проверить права доступа к DAV.
)
ACTION =~ Dav*
[IF] EvalRules: HTTP/DAV [ELSE] EvalRules: HTTP/CGI [THEN]
( Если Uri в запросе не заканчивается на "/", но соответсвующий
ресурс на сервере является не файлом, а каталогом — производится
редирект на Uri с "/" в конце. Это необходимо для правильной
обработки ссылок браузером.
)
FILENAME IsDirectory FILENAME + 1- C@ CHAR \ <> AND | Redirect {URI}/
( Правила для звонилки )
[DEFINED] Dial [IF] EvalRules: HTTP/Dial [THEN]
Port= {Http[AdminPort]} Port= {Http[AdminSslPort]} OR | EvalRules: http\AdminOnRequest2
Uri /my/* | EvalRules: http\MyOnRequest2
\ Port= {Http[AdminPort]} 0= | Uri /admin/* | UID @ 0= | Unauthorized "Web Admin"
( Базовая проверка прав доступа. Безусловное закрытие Uri,
содержащих ".." для предотвращения выхода на вышележащие каталоги
)
Uri *..* | Forbidden
Uri *::$* | Forbidden
http://192.168.0.238:3140/MailClassify/user@domen2.ru@!42!8706359!2.eml появляется файл
403_200806.log
192.168.0.238 LAN_1 Alexey [9/Jun/2008:22:50:17 +0400] "GET /MailClassify/user@domen2.ru@!42!8706359!2.eml HTTP/1.1" 403 116
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" 192.168.0.238:3140
"ru"Eserv auth_md5 {Auth[UserList]} {Auth[GroupList]}
В стандартной конфигурации он не может жить на одном порту с интерфейсом администратора. Не предусмотрено такое.
Теперь по внутренней пересылке от имени spam_lover. Попытка перепосылки письма происходит при перетаскивании его из папки spam в любую папку, кроме удалённых (Trash) и отправленных (Sent). И делается это простым перемещением письма в DATA\mail\out\127.0.0.1\25\. Раз там ничего нет — значит, агент письмо подхватил и запихал на вход acSMTP — значит, надо смотреть его прохождение в логах acSMTP.
Сейчас поразбираюсь со spam-lover