You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cebka@mailsupport.rambler.ru 0c1b3da90d * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
compat * Add skeleton 16 years ago
perl * Use internal task pool for memcached operation exported for perl 15 years ago
plugins * Rework logic of filters 15 years ago
test * Small updates to memory pool library 15 years ago
utils * Small updates to memory pool library 15 years ago
Makefile.in * Add utility for extracting urls from message 15 years ago
README.koi8.txt * Rework logic of filters 15 years ago
cfg_file.h * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
cfg_file.l * Rework logic of filters 15 years ago
cfg_file.y * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
cfg_utils.c * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
config.h.in * Add initial implementation of surbl check module 15 years ago
configure * Rework logic of filters 15 years ago
filter.c * Implement factors consolidation function (default consolidation function for metrics) 15 years ago
filter.h * Implement factors consolidation function (default consolidation function for metrics) 15 years ago
fstring.c * Small updates to memory pool library 15 years ago
fstring.h * Small updates to memory pool library 15 years ago
main.c * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
main.h * Rework logic of filters 15 years ago
mem_pool.c * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
mem_pool.h * Rework config file memory allocation to separate memory pool for easy reloading 15 years ago
memcached-test.c * Rewrite memcached library to work with events (async model) 16 years ago
memcached.c * Write test case for async memcached library 15 years ago
memcached.h * Write test case for async memcached library 15 years ago
perl.c * Use internal task pool for memcached operation exported for perl 15 years ago
perl.h * Add filters logic 16 years ago
protocol.c * Small updates to memory pool library 15 years ago
protocol.h * Place all protocol logic in separate file 15 years ago
upstream.c * Add skeleton 16 years ago
upstream.h * Add initial implementation of C modules API 16 years ago
url.c * Small updates to memory pool library 15 years ago
url.h * Small updates to memory pool library 15 years ago
util.c * Fix include dependencies 15 years ago
util.h * Add extracting urls from messages 16 years ago
worker.c * Rework logic of filters 15 years ago

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.