aboutsummaryrefslogtreecommitdiffstats
path: root/doc/rspamd.lyx
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-11-09 18:32:53 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-11-09 18:32:53 +0300
commit3bafc4ffebe62dabef34a34b965757a9a859cc62 (patch)
tree0e86b5099aba7175e37df1fd5c1afe5abb7a11d1 /doc/rspamd.lyx
parentbfda3c0113c0c2eb4284ad428a84c7db2fa4b9e3 (diff)
downloadrspamd-3bafc4ffebe62dabef34a34b965757a9a859cc62.tar.gz
rspamd-3bafc4ffebe62dabef34a34b965757a9a859cc62.zip
* Update documentation:
- add information about grow_factor; - document views and user's settings (4.8); - document lua maps (9.4).
Diffstat (limited to 'doc/rspamd.lyx')
-rw-r--r--doc/rspamd.lyx504
1 files changed, 504 insertions, 0 deletions
diff --git a/doc/rspamd.lyx b/doc/rspamd.lyx
index 40731e3a7..c868d412c 100644
--- a/doc/rspamd.lyx
+++ b/doc/rspamd.lyx
@@ -1421,6 +1421,35 @@ factors
\end_layout
\begin_layout Standard
+В секции
+\begin_inset Quotes fld
+\end_inset
+
+factors
+\begin_inset Quotes frd
+\end_inset
+
+ также можно задать параметр grow_factor, который задает коэффициент приращения
+ при добавлении символов в метрику.
+ Работает это так: допустим, добавляется первый символ - его реальный вес
+ будет равен 1 * factor (то есть, если factor равен 1, то и реальный вес
+ будет равен 1), после чего следующий символ будет иметь реальный вес grow_facto
+r * factor (например, если grow_factor = 1.1, то реальный вес будет 1.1 *
+ factor), далее следующий будет иметь вес (1 + ((grow_factor) - 1)*2)*factor
+ (то есть, при предыдущем grow_factor, реальный вес будет 1.2 * factor, следующий
+ символ 1.3, затем 1.4 и.т.д.).
+ Данная возможность позволяет увеличивать вес письмам, проходящим по нескольким
+ правилам.
+ Правила с отрицательным весом не увеличивают grow_factor и не модифицируются
+ им (то есть, реальный вес таких правил равен 1 * factor).
+ Пример задания параметра grow_factor:
+\end_layout
+
+\begin_layout LyX-Code
+grow_factor = 1.1;
+\end_layout
+
+\begin_layout Standard
Также существует возможность создавать
\begin_inset Quotes fld
\end_inset
@@ -1478,6 +1507,323 @@ SYMBOL3 & !SYMBOL4
SYMBOL1, SYMBOL2 и SYMBOL3 в ответе не появятся.
\end_layout
+\begin_layout Section
+Представления и настройки
+\end_layout
+
+\begin_layout Subsection
+Представления
+\end_layout
+
+\begin_layout Standard
+В rspamd существует возможность настройки правил, которые будут проверяться,
+ исходя из определенных критериев.
+ Представления настраиваются в конфигурационном файле rspamd и позволяют
+ разделить правила, исходя из входящих данных, например, заголовок From
+ письма или же по ip, откуда нам пришло данное письмо.
+ Представления проверяются при проверке любого правила и при совпадении
+ данных письма проверяются не все символы, а те, которые заданы данным представл
+ением.
+ При настройки представлений задаются входные данные письма (from и ip)
+ и символы, которые должны проверяться.
+ Входные данные могут дублироваться, то есть, можно задать несколько from
+ и несколько ip, задаются эти параметры либо в виде регулярных выражений:
+\end_layout
+
+\begin_layout LyX-Code
+from =
+\begin_inset Quotes fld
+\end_inset
+
+/^.*@somedomain.com$
+\begin_inset Quotes frd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout LyX-Code
+from =
+\begin_inset Quotes fld
+\end_inset
+
+/^.*@otherdoma[a-z]+.com$
+\begin_inset Quotes frd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Standard
+либо в виде map:
+\end_layout
+
+\begin_layout LyX-Code
+from =
+\begin_inset Quotes fld
+\end_inset
+
+file:///usr/local/etc/rspamd/from.map
+\begin_inset Quotes frd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout LyX-Code
+ip =
+\begin_inset Quotes fld
+\end_inset
+
+http://somehost:81/ip.map
+\begin_inset Quotes frd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Standard
+Символы также могут быть заданы несколькими директивами symbols (которые
+ будут объединены в список):
+\end_layout
+
+\begin_layout LyX-Code
+symbols =
+\begin_inset Quotes fld
+\end_inset
+
+/^.*URIBL.*$/
+\begin_inset Quotes frd
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Standard
+Пример задания представления в конфигурационном файле:
+\end_layout
+
+\begin_layout LyX-Code
+view {
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+ip = "file:///usr/local/etc/rspamd/ip_internal.inc";
+\end_layout
+
+\begin_layout LyX-Code
+skip_check = yes;
+\end_layout
+
+\begin_layout LyX-Code
+from = "file:///usr/local/etc/rspamd/from_internal.inc";
+\end_layout
+
+\begin_layout LyX-Code
+symbols = "/^.*URIBL.*$/";
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+};
+\end_layout
+
+\begin_layout Standard
+Директива
+\begin_inset Quotes fld
+\end_inset
+
+skip_check
+\begin_inset Quotes frd
+\end_inset
+
+ используется для пропуска всех проверок rspamd для данного представлений.
+ В результате при использовании протокола rspamc 1.1 вместо маркера спама
+ (True или False) будет маркер пропуска (Skip).
+ При использовании spamc или же rspamc 1.0 будет стандартный маркер False
+ (так как реально у письма будет 0 баллов).
+\end_layout
+
+\begin_layout Subsection
+Пользовательские настройки
+\end_layout
+
+\begin_layout Standard
+Пользовательские настройки, в отличие от представлений, дают возможность
+ выбора правил, а также настройки граничных значений баллов письма, исходя
+ из получателя письма.
+ При этом, настройки можно задавать индивидуально пользователю или же всему
+ домену пользователя.
+ Индивидуальные настройки пользователя перекрывают настройки домена.
+ При выборе настроек используются следующие данные (учитывая последовательность)
+:
+\end_layout
+
+\begin_layout Enumerate
+проверяется заголовок Deliver-To, передаваемый при использовании протокола
+ rspamc;
+\end_layout
+
+\begin_layout Enumerate
+проверяется заголовок User, передаваемый MTA exim при использовании любого
+ протокола;
+\end_layout
+
+\begin_layout Enumerate
+проверяется первый получатель письма из заголовка rspamc Rcpt;
+\end_layout
+
+\begin_layout Enumerate
+проверяется первый получатель письма из заголовка mime To.
+\end_layout
+
+\begin_layout Standard
+Необходимо обратить внимание , что при наличии нескольких получателей, будет
+ проверяться только первый из них, чтобы избегать двусмысленного поведения.
+ Сами настройки задаются в json файлах, так как данные файлы могут содержать
+ очень много информации о пользователях, и хранить это все в конфигурационном
+ файле нецелесообразно.
+ Для задания пользовательских настроек используется секция
+\begin_inset Quotes fld
+\end_inset
+
+settings
+\begin_inset Quotes frd
+\end_inset
+
+, которая содержит всего два параметра: user_settings и domain_settings.
+ Например:
+\end_layout
+
+\begin_layout LyX-Code
+settings {
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+user_settings = "http://somehost/users.php";
+\end_layout
+
+\begin_layout LyX-Code
+domain_settings = "http://somehost/domains.php";
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+};
+\end_layout
+
+\begin_layout Standard
+Формат соответствующих json файлов достаточно прост - это массив объектов,
+ задающих настройки.
+ Объект настройки содержит следующие параметры:
+\end_layout
+
+\begin_layout Itemize
+name - имя пользователя или домена;
+\end_layout
+
+\begin_layout Itemize
+metrics - объект, задающий предельные очки по метрикам, вида
+\begin_inset Quotes fld
+\end_inset
+
+metric_name
+\begin_inset Quotes frd
+\end_inset
+
+ -> score;
+\end_layout
+
+\begin_layout Itemize
+factors - объект, задающий индивидуальные настройки множителей вида
+\begin_inset Quotes fld
+\end_inset
+
+symbol
+\begin_inset Quotes frd
+\end_inset
+
+ -> score;
+\end_layout
+
+\begin_layout Itemize
+want_spam - булево значение, при задании его как true, rspamd отключает
+ проверки для данного пользователя.
+\end_layout
+
+\begin_layout Standard
+Пример json настроек:
+\end_layout
+
+\begin_layout LyX-Code
+[
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+{
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+"name":"somedomain.ru",
+\end_layout
+
+\begin_layout LyX-Code
+"metrics":{"default":11},
+\end_layout
+
+\begin_layout LyX-Code
+"factors":{"R_FUZZY":10.1},
+\end_layout
+
+\begin_layout LyX-Code
+"want_spam":false
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+},
+\end_layout
+
+\begin_layout LyX-Code
+{
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+"name":"some.other.domain.com",
+\end_layout
+
+\begin_layout LyX-Code
+"metrics":{"default":5.5},
+\end_layout
+
+\begin_layout LyX-Code
+"factors":{"URIBL":20.3},
+\end_layout
+
+\begin_layout LyX-Code
+"want_spam":false
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+}
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+]
+\end_layout
+
+\begin_layout Standard
+Файлы настроек перезагружаются по мере обновления, как и любые другие файлы
+ списков.
+\end_layout
+
\begin_layout Chapter
Настройка модулей
\end_layout
@@ -3017,6 +3363,164 @@ end
end
\end_layout
+\begin_layout Section
+Использование файлов-списков
+\end_layout
+
+\begin_layout Standard
+В lua плагинах можно задавать и использовать файлы списков, как это описано
+ в п.
+ 4.1.
+ Это полезно, когда в lua необходимо использовать некоторые данные, которые
+ бы асинхронно обновлялись в процессе работы rspamd.
+ API по работе со списками сожержит следующие функции:
+\end_layout
+
+\begin_layout Itemize
+rspamd_config:add_radix_map (string) - добавляет определение списка, содержащего
+ ip адреса и сети.
+ При удачном добавлении возвращается объект типа rspamd_radix, который может
+ использоваться в обработчиках символов для определения наличия в каком-либо
+ списке заданного ip;
+\end_layout
+
+\begin_layout Itemize
+rspamd_config:add_hash_map (string) - добавляет определение списка строк
+ (доменов), при успешном добавлении возвращает объект типа rspamd_hash.
+\end_layout
+
+\begin_layout Standard
+Использовать списки целесообразно в функциях-обработчкиках, так как сразу
+ же после добавления эти списки могут оказаться пустыми.
+ Объекты, возвращаемые функциями, регистрирующими файлы списков, имеют метод
+ get_key, позволяющий определить наличие какого-либо элемента в списке.
+ Для списков ip адресов этот объект принимает целое число, для списка строк
+ - строку.
+ Простой пример использования списков.
+\end_layout
+
+\begin_layout Standard
+Регистрация:
+\end_layout
+
+\begin_layout LyX-Code
+local radix_list = nil
+\end_layout
+
+\begin_layout LyX-Code
+local host_list = nil
+\end_layout
+
+\begin_layout LyX-Code
+radix_list = rspamd_config:add_radix_map ('http://somehost/ip.list')
+\end_layout
+
+\begin_layout LyX-Code
+host_list = rspamd_config:add_hash_map ('http://otherhost/host.list')
+\end_layout
+
+\begin_layout Standard
+Использование в обработчике символа:
+\end_layout
+
+\begin_layout LyX-Code
+function check_whitelist (task)
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+-- check client's ip
+\end_layout
+
+\begin_layout LyX-Code
+local ipn = task:get_from_ip_num()
+\end_layout
+
+\begin_layout LyX-Code
+if ipn and radix_list then
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+local key = radix_list:get_key(ipn)
+\end_layout
+
+\begin_layout LyX-Code
+if key then
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+task:insert_result(metric, symbol_ip, 1)
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+end
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+end
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+-- check client's from domain
+\end_layout
+
+\begin_layout LyX-Code
+local from = task:get_from()
+\end_layout
+
+\begin_layout LyX-Code
+if from and host_list then
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+-- extract domain part
+\end_layout
+
+\begin_layout LyX-Code
+local _,_,domain = string.find(from, '@(.+)>?$')
+\end_layout
+
+\begin_layout LyX-Code
+local key = host_list:get_key(domain)
+\end_layout
+
+\begin_layout LyX-Code
+if key then
+\end_layout
+
+\begin_deeper
+\begin_layout LyX-Code
+task:insert_result(metric, symbol_from, 1)
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+end
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+end
+\end_layout
+
+\end_deeper
+\begin_layout LyX-Code
+end
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
\begin_layout Chapter
Использование HTTP Redirector
\end_layout