URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91551
[ Назад ]

Исходное сообщение
"Exim + ACL + headers."

Отправлено Aess , 11-Май-11 12:00 
Всем привет.

Заметил такой момент. Спамеры додумались как обходить проверку SpamAssassin-a. Добавляют в header-ы письма X-Spam-Status: No, hits=0.0 required=5.0(частный пример). И следовательно фильтры exim-a не хотять работать с таким письмом как со сапмерским(хотя далее есть еще один X-Spam-Status), потомучто парсят тока до первого появления X-Spam-Status в headers.
Итак господа знатоки вопрос. Как правильно написать condition чтобы найти header и дропнуть письмо? Писал так:

drop
        condition = ${if def:header_X-Spam-Status:{false}}
        message = "Dropped due to contained X-Spam-Status flag"
        log_message =  "Dropped due to contained X-Spam-Status flag"

Но condition = ${if def:header_X-Spam-Status:{false}} возвращает мне пустую строку как бы я не извращался.
Помогите пожалуйста.

С уважением, Игорь.


Содержание

Сообщения в этом обсуждении
"Exim + ACL + headers."
Отправлено PavelR , 11-Май-11 12:05 
> Итак господа знатоки вопрос. Как правильно написать condition чтобы найти header и
> дропнуть письмо?

Гениальная идея - дропать. Не лучше ли удалить _заголовок_ перед/в процессе антиспам обработки ?


"Exim + ACL + headers."
Отправлено Aess , 11-Май-11 12:12 
>> Итак господа знатоки вопрос. Как правильно написать condition чтобы найти header и
>> дропнуть письмо?
> Гениальная идея - дропать. Не лучше ли удалить _заголовок_ перед/в процессе антиспам
> обработки ?

Не суть важно что делать. Если Вам так удобно, то помогите удалить заголовок.

С уважением, Игорь.


"Exim + ACL + headers."
Отправлено Евгений , 11-Май-11 14:55 
Посмотрите документацию. Ваша конструкция всегда будет возвращать false, вы же сами это написали. Уберите {false}
Смотрите также опцию headers_remove в секции роутеров.


"Exim + ACL + headers."
Отправлено Aess , 11-Май-11 15:21 
> Посмотрите документацию. Ваша конструкция всегда будет возвращать false, вы же сами это
> написали. Уберите {false}
> Смотрите также опцию headers_remove в секции роутеров.

condition возвращает пустую строку, а не false.
По поводу headers_remove сейчас посмотрю, спасибо!


"Exim + ACL + headers."
Отправлено Aess , 11-Май-11 16:22 
>> Посмотрите документацию. Ваша конструкция всегда будет возвращать false, вы же сами это
>> написали. Уберите {false}
>> Смотрите также опцию headers_remove в секции роутеров.
> condition возвращает пустую строку, а не false.
> По поводу headers_remove сейчас посмотрю, спасибо!

К сожалению на этапе роутеров не могу этого сделать. Нужно сделать до приёма DATA. По-этому нада курить в сторону ACL. Подскажет кто что?

С уважением, Игорь.


"Exim + ACL + headers."
Отправлено PavelR , 11-Май-11 16:50 
> К сожалению на этапе роутеров не могу этого сделать. Нужно сделать до
> приёма DATA. По-этому нада курить в сторону ACL. Подскажет кто что?

Эмм, я правильно понимаю, что хидера идут в DATA ?


"Exim + ACL + headers."
Отправлено Aess , 11-Май-11 16:55 
>> К сожалению на этапе роутеров не могу этого сделать. Нужно сделать до
>> приёма DATA. По-этому нада курить в сторону ACL. Подскажет кто что?
> Эмм, я правильно понимаю, что хидера идут в DATA ?

Эххххх шли бы они в DATA я бы ничего и не делал. Мне нада проверять до приема DATA. Даже наверное до "#!!# ACL that is used after the RCPT command" блока. Но енто не суть. До DATA будет хорошо.

С уважением, Игорь.


"Exim + ACL + headers."
Отправлено Aess , 12-Май-11 22:38 
>>> К сожалению на этапе роутеров не могу этого сделать. Нужно сделать до
>>> приёма DATA. По-этому нада курить в сторону ACL. Подскажет кто что?
>> Эмм, я правильно понимаю, что хидера идут в DATA ?
> Эххххх шли бы они в DATA я бы ничего и не делал.
> Мне нада проверять до приема DATA. Даже наверное до "#!!# ACL
> that is used after the RCPT command" блока. Но енто не
> суть. До DATA будет хорошо.
> С уважением, Игорь.

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

С уважением, Игорь!


"Exim + ACL + headers."
Отправлено DeadLoco , 13-Май-11 02:22 
> хочеться дропнуть его до приема.

А вы не зацикливайтесь на X-Spam-Status. Добавляйте свой хедер, например X-Spam-Ztatuz. И именно его наличие проверяйте фильтрами.

Хотя, в принципе, архитектурно чище будет пропускать всю почту через роутер-чистильщик, который вычищает все ненужные хедеры, и затем через unseen сбрасывает письмо для дальнейшей обработки. Но лично мне такой вариант не подходит, как раз из-за необходимости юзать ацли на стадиях CONN, RCPT и DATA.


"Exim + ACL + headers."
Отправлено Aess , 13-Май-11 03:12 
>> хочеться дропнуть его до приема.
> А вы не зацикливайтесь на X-Spam-Status. Добавляйте свой хедер, например X-Spam-Ztatuz.
> И именно его наличие проверяйте фильтрами.
> Хотя, в принципе, архитектурно чище будет пропускать всю почту через роутер-чистильщик,
> который вычищает все ненужные хедеры, и затем через unseen сбрасывает письмо
> для дальнейшей обработки. Но лично мне такой вариант не подходит, как
> раз из-за необходимости юзать ацли на стадиях CONN, RCPT и DATA.

Я же о томже. Как правильно написать проверку в ACL-e?


"Exim + ACL + headers."
Отправлено DeadLoco , 13-Май-11 18:08 
> Я же о томже. Как правильно написать проверку в ACL-e?

acl_data:
. . . . .
warn    spam            = spamd
        add_header      = X-Spam-Header: $spam_score_int
        condition       = ${if >{$spam_score_int}{49}{1}{0}}
        logwrite        = $spam_score_int
. . . . .
accept


Всякое письмо, набравшее более 4.9 балла от СА, поимеет хедер X-Spam-Header, который потом можно искать и обрабатывать фильтрами.
Но мне больше нравится сортировка писем довекотовским сивом.


"Exim + ACL + headers."
Отправлено PavelR , 13-Май-11 10:13 
>[оверквотинг удален]
>>> Эмм, я правильно понимаю, что хидера идут в DATA ?
>> Эххххх шли бы они в DATA я бы ничего и не делал.
>> Мне нада проверять до приема DATA. Даже наверное до "#!!# ACL
>> that is used after the RCPT command" блока. Но енто не
>> суть. До DATA будет хорошо.
>> С уважением, Игорь.
> Крутил вертел на этапер роутов.. удаляеться хэадер. Но на этом этап уже
> поздно, уже письмо принялось и мне нада кудато его отправить. А
> хочеться дропнуть его до приема.
> С уважением, Игорь!

_ну не понимаю я.... _

Как можно проверить _до приема_ DATA то, что приходит _в_ DATA ?

Вам нужно

1) принять данные
2) проверить хидера
3) дать SMTP-ответ на команду DATA

т.е. принять данные нужно без подтверждения приема.

ну а далее, данные-то приняты уже... проверяем-доставляем, что уж там :-)


"Exim + ACL + headers."
Отправлено Aess , 15-Май-11 11:30 
>[оверквотинг удален]
> drop
>         condition = ${if def:header_X-Spam-Status:{false}}
>         message = "Dropped due
> to contained X-Spam-Status flag"
>         log_message =  "Dropped
> due to contained X-Spam-Status flag"
> Но condition = ${if def:header_X-Spam-Status:{false}} возвращает мне пустую строку как
> бы я не извращался.
> Помогите пожалуйста.
> С уважением, Игорь.

Давайте начнем сначала. Уберем этап на котором будем запускать ACL, а просто помогите мне написть эту ACL. Пройтись по headers найти X-Spam-Status и дропнуть. Все что нужно сделать.


"Exim + ACL + headers."
Отправлено DeadLoco , 16-Май-11 02:50 
> помогите мне написть эту ACL. Пройтись по headers найти X-Spam-Status и
> дропнуть. Все что нужно сделать.

Дропнуть ЧТО? Хедер? Так хедеры на стадии АЦЛей неизменяемы, можно лишь задать хедеры, которые будут _добавлены_ при перебросе сообщения в роутеры. Определить хедеры, которые будут дропнуты, можно лишь в роутерах, но это уже сильно позже АЦЛей.

Поэтому давайте не ацли рисовать, а разбирать задачу в целом. Что, где, когда, как и вообще.