2 вопроса по exim
Модераторы: Trinity admin`s, Free-lance moderator`s
- mclaud
- Advanced member
- Сообщения: 79
- Зарегистрирован: 20 апр 2005, 12:56
- Откуда: Москва
- Контактная информация:
2 вопроса по exim
Сабдж.
1. Как сделать так, чтоб почта, помеченная SA как спам (exiscan) не отбрасывалась, а пересылалась юзеру spam@any.ru? Можно ли будет после этого скармливать неправильно определившиеся письма SA?
2. Возможно ли ограничить кол-во писем с каждого хоста допустим 5 за 5 минут?
1. Как сделать так, чтоб почта, помеченная SA как спам (exiscan) не отбрасывалась, а пересылалась юзеру spam@any.ru? Можно ли будет после этого скармливать неправильно определившиеся письма SA?
2. Возможно ли ограничить кол-во писем с каждого хоста допустим 5 за 5 минут?
- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
Re: 2 вопроса по exim
нужно заменить deny на warn, вставлять нужное поле в заголовки, а в системном фильтре делать с такими письмами все, что душе угодно (включая пересылку/доставку какому-то там юзеру)mclaud писал(а):Сабдж.
1. Как сделать так, чтоб почта, помеченная SA как спам (exiscan) не отбрасывалась, а пересылалась юзеру spam@any.ru? Можно ли будет после этого скармливать неправильно определившиеся письма SA?
возможно, но придется поднапрячься и создать базку (MySQL/PgSQL/DBM/etc), в которую писать timestamp каждого письма и $sender_host_addressmclaud писал(а):2. Возможно ли ограничить кол-во писем с каждого хоста допустим 5 за 5 минут?
при приеме письма в acl_check_rcpt нужно выполнять запрос к базке, получать количество коннектов с данного IP, сравнить его с предельным и при превышении отвергать (или деферить) письмо.
отдельно нужно будет по крону запускать скрипт, который будет старые записи удалять из базки.
отдельно можно организовать файл, в котором будут указаны разные предельные количества коннектов с разных хостов/сетей
--
/corvax
/corvax
- mclaud
- Advanced member
- Сообщения: 79
- Зарегистрирован: 20 апр 2005, 12:56
- Откуда: Москва
- Контактная информация:
поправь пож-та если не прав: в ACL
а в TRANSPORTS
ТАК?
Код: Выделить всё
warn message = SPAM
! hosts = +relay_from_hosts
spam = nobody:true
condition = ${if >{$spam_score_int}{83}{1}{0}}
Код: Выделить всё
if Subject is *SPAM* then redirect to spam@any.ru
ТАК?
- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
при warn значение message будет интерпретировано как вставляемое поле. т. е. лучше сделать примерно так:mclaud писал(а):поправь пож-та если не прав: в ACL
Код: Выделить всё
warn message = SPAM ! hosts = +relay_from_hosts spam = nobody:true condition = ${if >{$spam_score_int}{83}{1}{0}}
Код: Выделить всё
warn message = X-Spam-Quarantined: YES
если нуждо доставлять такие письма локально, я бы сделал это в системном фильтреmclaud писал(а):а в TRANSPORTS
Код: Выделить всё
if Subject is *SPAM* then redirect to spam@any.ru
ТАК?
--
/corvax
/corvax
- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
реально работающий пример:mclaud писал(а):как именно если не секретесли нуждо доставлять такие письма локально, я бы сделал это в системном фильтре
Код: Выделить всё
if $h_X-Spam-Score: contains "++++++++++" then
logwrite "$tod_log $message_id saved because of certainly spam detected"
unseen save /var/vmail/bsd.falbi.kiev.ua/corvax/.spam.certainly-spam/ 640
endif
если кто-то по IMAP сможет читать эти письма, то скармливать их обучалке тоже можноmclaud писал(а):Можно ли будет после этого скармливать неправильно определившиеся письма SA?
все зависит от обертки, которую вы напишите для sa-learn
у меня есть схемы и для imap+mailbox и для imap+user maildir и для imap+virtual maildir
--
/corvax
/corvax
- mclaud
- Advanced member
- Сообщения: 79
- Зарегистрирован: 20 апр 2005, 12:56
- Откуда: Москва
- Контактная информация:
Локальный-это хорошо, но у меня exim - это шлюз. Я попробовалреально работающий пример:
Код:
if $h_X-Spam-Score: contains "++++++++++" then
logwrite "$tod_log $message_id saved because of certainly spam detected"
unseen save /var/vmail/bsd.falbi.kiev.ua/corvax/.spam.certainly-spam/ 640
endif
это доставка в maildir виртуального пользователя
MAIN
system_filter = /usr/local/etc/exim/filter
cat /usr/local/etc/exim/filter
if subject *X-SPAM* then redirect to spam@
пишет unrecognized condition word "*X-SPAM*" near line 1 of filter file. Может поставить как у тебя
if subject contains *X-SPAM* then redirect to spam@?
АГАcorvax:
не понял
это был просто вопросительный знак к предыдущей мессаге?

- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
ясен пень. синтаксис же совершенно не соответствует требованиям к написанию фильтров эксимаmclaud писал(а):Локальный-это хорошо, но у меня exim - это шлюз. Я попробовалреально работающий пример:
Код:
if $h_X-Spam-Score: contains "++++++++++" then
logwrite "$tod_log $message_id saved because of certainly spam detected"
unseen save /var/vmail/bsd.falbi.kiev.ua/corvax/.spam.certainly-spam/ 640
endif
это доставка в maildir виртуального пользователя
MAIN
system_filter = /usr/local/etc/exim/filter
cat /usr/local/etc/exim/filter
if subject *X-SPAM* then redirect to spam@
пишет unrecognized condition word "*X-SPAM*" near line 1 of filter file.
ну и для чего тогда в subject вставлять слово *X-SPAM*?mclaud писал(а):Может поставить как у тебя
if subject contains *X-SPAM* then redirect to spam@?
конечно, если сильно хочется, то можно попробовать использовать такую конструкцию:
Код: Выделить всё
if $h_Subject: contains "*X-SPAM*" then
deliver spam@domain.tld
endif
кроме того, я бы никак не модифицировал поле Subject, а использовал бы свое поле (типа X-Spam-Quarantined, как я и советовал парой мессаг выше)
а вообще-то, надо перед написанием фильтров прочесть filter.txt, чтобы не писать в них всякий бред
--
/corvax
/corvax
- mclaud
- Advanced member
- Сообщения: 79
- Зарегистрирован: 20 апр 2005, 12:56
- Откуда: Москва
- Контактная информация:
теперь
Как только проверить...
Код: Выделить всё
warn message = X-Spam-Quarantined: YES
! hosts = +relay_from_hosts
spam = nobody:true
condition = ${if >{$spam_score_int}{83}{1}{0}}
Код: Выделить всё
cat /usr/local/etc/exim/filter
if $h_Subject: contains *X-Spam-Quarantined* then
deliver spam@ endif
- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
все же не хочется писать, в чем именно фонарность условия вышеописанногоmclaud писал(а):теперьКод: Выделить всё
warn message = X-Spam-Quarantined: YES ! hosts = +relay_from_hosts spam = nobody:true condition = ${if >{$spam_score_int}{83}{1}{0}}
Код: Выделить всё
cat /usr/local/etc/exim/filter if $h_Subject: contains *X-Spam-Quarantined* then deliver spam@ endif
можно наверное и самому догадаться
и еще - это специально домена нет в адресе для доставки?
почитать наконец доку на фильтрыmclaud писал(а):Как только проверить...
так английским-по-белому написано, как тестировать фильтры
--
/corvax
/corvax
- mclaud
- Advanced member
- Сообщения: 79
- Зарегистрирован: 20 апр 2005, 12:56
- Откуда: Москва
- Контактная информация:
/usr/local/etc/exim/bin/exim -bf /usr/local/etc/exim/filter < /var/mail/admin
Warning: no message headers read
Return-path copied from sender
Sender = root@unix.vniidad.ru
Recipient = root@unix.vniidad.ru
Testing forward file file "/usr/local/etc/exim/filter"
exim: error in forward file: missing or malformed local part (expected word or "<") in "if $h_Subject: contains *X-Spam-Quarantined* then"
ну не понимаю в чем дело
Warning: no message headers read
Return-path copied from sender
Sender = root@unix.vniidad.ru
Recipient = root@unix.vniidad.ru
Testing forward file file "/usr/local/etc/exim/filter"
exim: error in forward file: missing or malformed local part (expected word or "<") in "if $h_Subject: contains *X-Spam-Quarantined* then"
ну не понимаю в чем дело

- corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
- Контактная информация:
что-то мне это уже начинает надоедать...mclaud писал(а):/usr/local/etc/exim/bin/exim -bf /usr/local/etc/exim/filter < /var/mail/admin
Warning: no message headers read
Return-path copied from sender
Sender = root@unix.vniidad.ru
Recipient = root@unix.vniidad.ru
Testing forward file file "/usr/local/etc/exim/filter"
exim: error in forward file: missing or malformed local part (expected word or "<") in "if $h_Subject: contains *X-Spam-Quarantined* then"
ну не понимаю в чем дело
1. после contains строка должна быть в кавычках. это ясно следует из моего примера
2. какого фига вокруг X-Spam-Quarantined появились звездочки?
3. какое отношение вся эта конструкция имеет к полю Subject?
--
/corvax
/corvax
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 29 гостей