您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
cebka@cebka-laptop fee5af783e * Configure modules when worker starts for simplifying reconfig procedure 15 年前
compat * Add skeleton 16 年前
perl * Add routines to perl api to access new results adding function and getting param function 15 年前
plugins * Configure modules when worker starts for simplifying reconfig procedure 15 年前
test * Implement expression parser (convertor to inverse polish record) 15 年前
utils * Implement expression parser (convertor to inverse polish record) 15 年前
Makefile.in * Add utility for extracting urls from message 16 年前
README.koi8.txt * Rework logic of filters 15 年前
cfg_file.h * Add utility function for parsing regexp from given string (type flags and pcre flags) 15 年前
cfg_file.l * Rework logic of filters 15 年前
cfg_file.y * Rework config file memory allocation to separate memory pool for easy reloading 15 年前
cfg_utils.c * Configure modules when worker starts for simplifying reconfig procedure 15 年前
config.h.in * Configure modules when worker starts for simplifying reconfig procedure 15 年前
configure * Configure modules when worker starts for simplifying reconfig procedure 15 年前
filter.c * Add filter processing function which implements new filter's logic 15 年前
filter.h * Add filter processing function which implements new filter's logic 15 年前
fstring.c * Small updates to memory pool library 15 年前
fstring.h * Small updates to memory pool library 15 年前
main.c * Rework config file memory allocation to separate memory pool for easy reloading 15 年前
main.h * Implement expression parser (convertor to inverse polish record) 15 年前
mem_pool.c * Configure modules when worker starts for simplifying reconfig procedure 15 年前
mem_pool.h * Implement destructors stack in memory pool, so there is now 15 年前
memcached-test.c * Rewrite memcached library to work with events (async model) 16 年前
memcached.c * Write test case for async memcached library 16 年前
memcached.h * Write test case for async memcached library 16 年前
perl.c * Use internal task pool for memcached operation exported for perl 15 年前
perl.h * Add filters logic 16 年前
protocol.c * Write protocol output functions 15 年前
protocol.h * Write protocol output functions 15 年前
upstream.c * Add skeleton 16 年前
upstream.h * Add initial implementation of C modules API 16 年前
url.c * Remove unused debug messages from url library 15 年前
url.h * Configure modules when worker starts for simplifying reconfig procedure 15 年前
util.c * Implement expression parser (convertor to inverse polish record) 15 年前
util.h * Add extracting urls from messages 16 年前
worker.c * Configure modules when worker starts for simplifying reconfig procedure 15 年前

README.koi8.txt

API Rspamd.
===========

TODO.

Логика работы фильтров rspamd.
==============================

1) Все фильтры регистрируются в конфиг файле в описании цепочек фильтров:
header_filters=regexp,my_func
где имя фильтра - это либо название c модуля, либо название перл функции
Типы фильтров:
* header_filters - фильтр заголовков
* mime_filters - фильтр для каждой mime части
* message_filters - фильтр всего сообщения целиком
* url_filters - фильтры URL ссылок
Свои результаты фильтры регистрируют при помощи добавления результата в метрику.

2) Метрика - это символьное значение, в котором регистрируют свои результаты фильтры
Существует метрика по умолчанию - "default", в которой регистрируют результаты фильтры,
для которых явно не определена метрика
Для каждой метрики существует специальная функция консолидации, которая рассчитывает коэффициенты
результатов согласно внутренней логике соответствия символов и коэффициентов. По умолчанию такой
функцией является простая сумма, которая настраивается особым образом в конфигурационном файле:

# Блок factors
factors {
# Например, "SURBL_DNS"=5.0
"SYMBOL_NAME" = coefficient;
};
Также для метрики можно зарегистрировать особую функцию, прописав в описании метрики
metric {
name = "test_metric";
function = "some_function";
required_score = 20.0;
};
Пока поддерживаются только перловые функции.

3) Результат - это пара значений: SYMBOL:FLAG, при этом, SYMBOL - это
строчка, характеризующая результат, а FLAG - сработал данный фильтр или нет
(1 или 0). Результат добавляется в метрику, после чего передается функции консолидации.

4) Итог - на выходе мы имеем обработанное сообщение, список метрик и их символов и результаты
проверки.

Протокол.
=========

Формат ответа:
SPAMD/1.1 0 EX_OK
\ / \/
Версия Код
ошибки
Spam: False ; 2 / 5
Это формат совместимости с sa-spamd (без метрик)

Новый формат ответа:
RSPAMD/1.0 0 EX_OK
Metric: Name ; Spam_Result ; Spam_Mark / Spam_Mark_Required
Metric: Name2 ; Spam_Result2 ; Spam_Mark2 / Spam_Mark_Required2

Заголовков типа metric может быть несколько.
Формат вывода символов:
SYMBOL1, SYMBOL2, SYMBOL3 -- формат совместимости с sa-spamd
Metric: SYMBOL1, SYMBOL2, SYMBOL3 -- формат rspamd

Формат ответа зависит от формата запроса:
PROCESS SPAMC/1.2
\ / \ /
Команда Версия

SPAMC - протокол совместимости с sa-spamd
RSPAMC - новый протокол rspamd
В любом из режимов работы поддерживаются следующие заголовки:
Content-Length - длина сообщения
Helo - HELO, полученный от клиента
From - MAIL FROM
IP - IP клиента
Recipient-Number - число реципиентов
Rcpt - реципиент

Эти значения могут использоваться в фильтрах rspamd.