Установлен spamassasin и clamav, задача все что помечено как ****SPAM**** перебрасывать в ящик spam@domain.ru (создан пользователь), остальное отдавать пользователю.В приведенном ниже конфигах редиректа нет, procmail молчит, в лог ничего не сыпется, но спам детектится и метка в теме ставится.
Если же как советовали http://www.opennet.me/openforum/vsluhforumID1/58331.html изменить mailertables на mail.domain.ru скрипт срабатывает, почта сносится в spam, лог procmail это показывает, но любая другая почта перестает ходить, в лог maillog сыпет:
Feb 5 21:21:26 mail sm-mta[2109]: o15ILLDT002109: Milter add: header: X-Spam-Ch
ecker-Version: SpamAssassin 3.2.5 (2008-06-10) on\n\tmail.metallkom-don.ru
Feb 5 21:21:26 mail sm-mta[2112]: o15ILLDT002109: to=<aaa@domain.ru>, d
elay=00:00:04, xdelay=00:00:00, mailer=procmail, pri=31075, relay=/usr/local/etc
/procmailrc, dsn=5.0.0, stat=Can't create outputчто нужно подправить?
mail# uname -a
FreeBSD mail 7.1-RELEASE FreeBSD 7.1-RELEASE #1: Thu Jan 28 23:19:39 MSK 2010 root@mail:/usr/src/sys/i386/compile/ESXI i386
mail#
freebsd.m4:
===========divert(-1)
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.34.2.3.2.1 2008/11/25 02:59:29 kensmith Exp $
OSTYPE(freebsd6)
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
dnl FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
dnl Uncomment to allow relaying based on your MX records.
dnl FEATURE(relay_based_on_MX)
dnl DNS based black hole lists
dnl --------------------------------
dnl FEATURE(dnsbl)
dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', ``"550 Mail from " $&{client_addr} " rejected, see
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
dnl define(`confCW_FILE', `-o /etc/mail/local-host-names')
define(`confMAX_MESSAGE_SIZE',`11428800')
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Port=25, Name=MSA, M=E')dnl
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clamd.sock, F=, T=S:4m;R:4m')
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10)
define(`confMILTER_MACROS_CONNECT',`b, j, _, {daemon_name}, {if_name}, {if_addr}')
dnl define(`confINPUT_MAIL_FILTERS', `spamassassin,clamav')
FEATURE(local_procmail)
MAILER(procmail)
MAILER(`cyrusv2')
MAILER(smtp)
MAILER(local)local-host-names:
=================
domain.ru
mailertables:
==============
domain.ru procmail:/usr/local/etc/procmailrc
procmailrc:
===========
MAILDIR=/var/mail
LOGFILE=/var/log/procmaillog
LOGABSTRACT=yes
VERBOSE=on:0
* ^Subject:.*SPAM
$MAILDIR/spam
>[оверквотинг удален]
>procmailrc:
>===========
>MAILDIR=/var/mail
> LOGFILE=/var/log/procmaillog
> LOGABSTRACT=yes
> VERBOSE=on
>
> :0
> * ^Subject:.*SPAM
> $MAILDIR/spamЗдесь путаница с LDA (Local Delivery Agent).
Procmail умеет доставлять только локальным юзерам из /etc/password.
У Cyrus IMAP собственная база юзеров, для доставки в почтовые ящики используется собственный LDA (возможность фильтрации обкспечивается с помощью Sieve).
Если хочешь юзать Cyrus IMAP, подключи в sendmail.mc макрос mailer.cyrus и убери procmail.
Еще раз - юзеры у Cyrus IMAP не системные, управляются через CLI Cyrus'a
>Здесь путаница с LDA (Local Delivery Agent).
>
>Procmail умеет доставлять только локальным юзерам из /etc/password.так и оказалось, procmail положил сообщения в /var/mail/spam но зайдя клиентом по поп3 я сообщений не вижу...
>У Cyrus IMAP собственная база юзеров, для доставки в почтовые ящики используется
>собственный LDA (возможность фильтрации обкспечивается с помощью Sieve).хм, пока читаю что это и как, не могу понять если возможность глобального применения разбора почты ко всем пользователям?
>Если хочешь юзать Cyrus IMAP, подключи в sendmail.mc макрос mailer.cyrus и убери
>procmail.http://www.yekt.info/2.html
добавил,define(`confLOCAL_MAILER', `cyrus')
define(`CYRUS_MAILER_PATH', /usr/local/cyrus/bin/deliver)а также именно в этом порядке.
MAILER(`smtp')
MAILER(`local')
MAILER(`cyrus')
>Еще раз - юзеры у Cyrus IMAP не системные, управляются через CLI
>Cyrus'a
>... procmail молчит,Покажите вывод команды
date | sendmail -Am -odi -d11.99 local-user
>>... procmail молчит,
>
>Покажите вывод команды
>date | sendmail -Am -odi -d11.99 local-usermail# date | sendmail -Am -odi -d11.99 local-user
openmailer: FILE /var/imap/socket/lmtp
openmailer: MCI@0x2841100c: flags=6006c<CACHED,ESMTP,SIZE,8BITMIME,ENHSTAT,PIPELINED>,
errno=0, herrno=0, exitstat=0, state=2, pid=0,
maxsize=0, phase=client LHLO, mailer=cyrusv2,
status=(null), rstatus=(null),
host=localhost, lastuse=Sat Feb 6 13:11:20 2010giveresponse: status=67, dsn=5.1.1, e->e_message=local-user... User unknown, errnum=0
openmailer: FILE /var/imap/socket/lmtp
openmailer: MCI@0x2841100c: flags=6006c<CACHED,ESMTP,SIZE,8BITMIME,ENHSTAT,PIPELINED>,
errno=0, herrno=0, exitstat=0, state=2, pid=0,
maxsize=0, phase=client DATA 354, mailer=cyrusv2,
status=(null), rstatus=(null),
host=localhost, lastuse=Sat Feb 6 13:11:20 2010openmailer: MCI@0x2841100c: flags=6006c<CACHED,ESMTP,SIZE,8BITMIME,ENHSTAT,PIPELINED>,
errno=0, herrno=0, exitstat=0, state=2, pid=0,
maxsize=0, phase=client DATA 354, mailer=cyrusv2,
status=(null), rstatus=(null),
host=localhost, lastuse=Sat Feb 6 13:11:20 2010giveresponse: status=0, dsn=2.0.0, e->e_message=<NULL>, errnum=0
mail#
mailer=cyrusv2, то есть, как вам уже подсказали в первом ответе, до procmail'a в вашем случае дело не доходит, да и не должно доходить.
>mailer=cyrusv2, то есть, как вам уже подсказали в первом ответе, до procmail'a
>в вашем случае дело не доходит, да и не должно
>доходить.да спасибо, но ответ о глобальном применении одного скрипта sieve по прежнему открыт... не хотелось бы менять cyrus, но видимо придется.
>>mailer=cyrusv2, то есть, как вам уже подсказали в первом ответе, до procmail'a
>>в вашем случае дело не доходит, да и не должно
>>доходить.
>
>да спасибо, но ответ о глобальном применении одного скрипта sieve по прежнему
>открыт... не хотелось бы менять cyrus, но видимо придется.Понять схему MTA-LDA.
Читать доки по Cyrus.
и/или:
Начать с чего нибудь попроще
из IMAP: dovecot, courier-imap
из MTA: sendmail (должен знать каждый, первая реализация SMTP),затем postfix, затем exim.
>Понять схему MTA-LDA.видимо придется.
>Читать доки по Cyrus.
доки по cyrus просто бомба...
например это чего стоит http://cyrusimap.web.cmu.edu/imapd/install-sieve.html
>и/или:
>
>Начать с чего нибудь попроще
>из IMAP: dovecot, courier-imap
>из MTA: sendmail (должен знать каждый, первая реализация SMTP),затем postfix, затем exim.
>
После углубленного прочтения удалость-таки запустить Sieve от cyrus... сама фильтрация заработала, к примеру такое:if anyof (address :contains "from" "testu@test.ru") {
reject text:
wtf!!!!!
.
;
discard;
stop;
}
если же добавить:if allof (header :contains "subject" "SPAM") {
reject text:
спам
.
;
redirect "spam@test.ru";
}
никакого редиректа не выполняется.P.S. правило генерились при помощи smartsieve - полезная штука.
1. вопрос почему такое половинчатое выполнение? MTA-LTA?2. ну и вдогонку, есть ли другие варианты глобально навесить этот скрипт на всех кроме как expect - ом ?
Делай связку Spamassasin-Sendmail с помощью milter-spamc
сейчас он платный, но старые версии халявные если не найдешь я вышлю
сам milter работает стабильно, я его еще доработал и связал с mysql
Выдержка из хелпа:-a email copy all mail to email address
-A always add the X-Spam-Report: header report of rules triggered
-b email copy junk mail to email address
-B email redirect junk mail to email address
-c email copy clean mail to email address
-C check for spam only, disable X-Spam-Report: header completely
-d excess discard spam messages that exceed the threshold by N
-f cf pathname of sendmail.cf file for access database whitelists
-F format redirect junk mail to reformated recipient addresses
-h this usage summary
-H host spamd host name or IP
-K kilo how many KB to pass to SpamAssassin, 64 default, 0 unlimited
-l limit limit number of untrusted recipients per message
-p discard instead of reject if Precedence is list or lower
-P port spamd port address, -1 to disable spamd filtering
-r excess reject spam that exceeds the threshold by N, overrides delivery
-R excess reject spam that exceeds the threshold by N, allow delivery
-s tag spam subject tag
-S append the spam score to the spam subject tag
-t timeout sendmail/milter I/O timeout in seconds, 0 indefinite
-T timeout milter/spamd I/O timeout in seconds, 0 indefinite
-u user default user account to process messages with
-U user force message processing with this user account
-v detail comma separated list of what to write to the mail log:
0, all, info, trace, parse, debug, dialog, state, dns
cache, database, socket-fd, socket-all, libmilter