aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorcebka@lenovo-laptop <cebka@lenovo-laptop>2010-02-04 20:58:47 +0300
committercebka@lenovo-laptop <cebka@lenovo-laptop>2010-02-04 20:58:47 +0300
commitf57b47be64858f088fc0406c05d8fed94f5f9477 (patch)
tree92489e4820556d7afb190622aab8bc0b84dccfeb /doc
parentbb5a1a9fb091ae443dd37c497fcf9202649ba95d (diff)
downloadrspamd-f57b47be64858f088fc0406c05d8fed94f5f9477.tar.gz
rspamd-f57b47be64858f088fc0406c05d8fed94f5f9477.zip
* Add a little review of rspamd
* Add local_scan.c from Anton Nekhoroshikh for exim MTA
Diffstat (limited to 'doc')
-rw-r--r--doc/why-rspamd.html392
-rw-r--r--doc/why-rspamd.pod333
-rw-r--r--doc/why-rspamd.txt240
3 files changed, 965 insertions, 0 deletions
diff --git a/doc/why-rspamd.html b/doc/why-rspamd.html
new file mode 100644
index 000000000..aceb1228c
--- /dev/null
+++ b/doc/why-rspamd.html
@@ -0,0 +1,392 @@
+<html><head><title>&#1060;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103; &#1089;&#1087;&#1072;&#1084;&#1072; &#1087;&#1088;&#1080; &#1087;&#1086;&#1084;&#1086;&#1097;&#1080; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099; rspamd.</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" >
+</head>
+<body class='pod'>
+<!--
+ generated by Pod::Simple::HTML v3.13,
+ using Pod::Simple::PullParser v3.13,
+ under Perl v5.010000 at Thu Feb 4 17:55:58 2010 GMT.
+
+ If you want to change this HTML document, you probably shouldn't do that
+ by changing it directly. Instead, see about changing the calling options
+ to Pod::Simple::HTML, and/or subclassing Pod::Simple::HTML,
+ then reconverting this document from the Pod source.
+ When in doubt, email the author of Pod::Simple::HTML for advice.
+ See 'perldoc Pod::Simple::HTML' for more info.
+
+-->
+
+<!-- start doc -->
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h1><a class='u' href='#___top' title='click to go to top of document'
+name="(1060)(1080)(1083)(1100)(1090)(1088)(1072)(1094)(1080)(1103)_(1089)(1087)(1072)(1084)(1072)_(1087)(1088)(1080)_(1087)(1086)(1084)(1086)(1097)(1080)_(1089)(1080)(1089)(1090)(1077)(1084)(1099)_rspamd."
+>&#1060;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103; &#1089;&#1087;&#1072;&#1084;&#1072; &#1087;&#1088;&#1080; &#1087;&#1086;&#1084;&#1086;&#1097;&#1080; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099; rspamd.</a></h1>
+
+<h2><a class='u' href='#___top' title='click to go to top of document'
+name="1._(1048)(1089)(1090)(1086)(1088)(1080)(1103)_(1080)_(1087)(1088)(1077)(1076)(1087)(1086)(1089)(1099)(1083)(1082)(1080)_(1089)(1086)(1079)(1076)(1072)(1085)(1080)(1103)."
+>1.
+&#1048;&#1089;&#1090;&#1086;&#1088;&#1080;&#1103; &#1080; &#1087;&#1088;&#1077;&#1076;&#1087;&#1086;&#1089;&#1099;&#1083;&#1082;&#1080; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103;.</a></h2>
+
+<p>&#1052;&#1099; &#1076;&#1086;&#1083;&#1075;&#1086;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1083;&#1080; &#1076;&#1083;&#1103; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1080; &#1089;&#1087;&#1072;&#1084;&#1072; spamassassin,
+&#1086;&#1076;&#1085;&#1072;&#1082;&#1086;,
+&#1087;&#1088;&#1080; &#1085;&#1072;&#1096;&#1080;&#1093; &#1086;&#1073;&#1098;&#1077;&#1084;&#1072;&#1093; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1086;&#1075;&#1086; &#1090;&#1088;&#1072;&#1092;&#1080;&#1082;&#1072; (9-10 &#1084;&#1080;&#1083;&#1083;&#1080;&#1086;&#1085;&#1086;&#1074; &#1087;&#1080;&#1089;&#1077;&#1084; &#1074; &#1089;&#1091;&#1090;&#1082;&#1080;) spamassassin &#1085;&#1077; &#1086;&#1073;&#1077;&#1089;&#1087;&#1077;&#1095;&#1080;&#1074;&#1072;&#1083; &#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086;&#1081; &#1087;&#1088;&#1086;&#1080;&#1079;&#1074;&#1086;&#1076;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1080;.
+&#1055;&#1086;&#1089;&#1083;&#1077; &#1072;&#1085;&#1072;&#1083;&#1080;&#1079;&#1072; &#1080;&#1089;&#1093;&#1086;&#1076;&#1085;&#1086;&#1075;&#1086; &#1082;&#1086;&#1076;&#1072; &#1080; &#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087;&#1086;&#1074; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1073;&#1099;&#1083;&#1086; &#1074;&#1099;&#1103;&#1074;&#1083;&#1077;&#1085;&#1099; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1080;&#1077; &#34;&#1074;&#1088;&#1086;&#1078;&#1076;&#1077;&#1085;&#1085;&#1099;&#1077;&#34; &#1087;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084;&#1099; SA:</p>
+
+<ul>
+<li>&#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1072; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072; &#1086;&#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1085;&#1072;&#1073;&#1086;&#1088;&#1086;&#1084; &#1088;&#1077;&#1075;&#1091;&#1083;&#1103;&#1088;&#1085;&#1099;&#1093; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1081;,
+&#1086;&#1076;&#1085;&#1072;&#1082;&#1086;,
+&#1082;&#1086;&#1083;&#1080;&#1095;&#1077;&#1089;&#1090;&#1074;&#1086; &#1101;&#1090;&#1080;&#1093; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1081; &#1089;&#1083;&#1080;&#1096;&#1082;&#1086;&#1084; &#1074;&#1077;&#1083;&#1080;&#1082;&#1086; &#1080; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1082;&#1083;&#1102;&#1095;&#1077;&#1074;&#1099;&#1084; &#1084;&#1086;&#1084;&#1077;&#1085;&#1090;&#1086;&#1084; &#1079;&#1072;&#1076;&#1091;&#1084;&#1095;&#1080;&#1074;&#1086;&#1089;&#1090;&#1080; SA (&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;,
+&#1076;&#1083;&#1103; &#1080;&#1079;&#1074;&#1083;&#1077;&#1095;&#1077;&#1085;&#1080;&#1103; received &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1086;&#1074; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072;,
+SA &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1103;&#1077;&#1090; &#1086;&#1085;&#1099;&#1077; &#1085;&#1072; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1080;&#1077; &#1074;&#1089;&#1077;&#1084; &#1077;&#1084;&#1091; &#1080;&#1079;&#1074;&#1077;&#1089;&#1090;&#1085;&#1099;&#1084; MTA,
+&#1086;&#1095;&#1077;&#1074;&#1080;&#1076;&#1085;&#1086;,
+&#1095;&#1090;&#1086; &#1090;&#1072;&#1082;&#1086;&#1077; &#1076;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1077; &#1085;&#1077; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1086;&#1087;&#1090;&#1080;&#1084;&#1072;&#1083;&#1100;&#1085;&#1099;&#1084;);</li>
+
+<li>&#1085;&#1077;&#1090; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1080; &#1103;&#1074;&#1085;&#1086; &#1087;&#1086;&#1083;&#1091;&#1095;&#1080;&#1090;&#1100; ip &#1072;&#1076;&#1088;&#1077;&#1089;,
+&#1089; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; &#1085;&#1072;&#1084; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1080; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086; (&#1074; SA &#1101;&#1090;&#1086; &#1076;&#1077;&#1083;&#1072;&#1077;&#1090;&#1089;&#1103; &#1087;&#1072;&#1088;&#1089;&#1086;&#1084; received &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1086;&#1074;,
+&#1095;&#1090;&#1086; &#1103; &#1083;&#1080;&#1095;&#1085;&#1086; &#1085;&#1077; &#1089;&#1095;&#1080;&#1090;&#1072;&#1102; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1100;&#1085;&#1099;&#1084;,
+&#1072; &#1090;&#1077;&#1084; &#1073;&#1086;&#1083;&#1077;&#1077; &#1086;&#1087;&#1090;&#1080;&#1084;&#1072;&#1083;&#1100;&#1085;&#1099;&#1084; &#1089;&#1087;&#1086;&#1089;&#1086;&#1073;&#1086;&#1084;,
+&#1090;&#1072;&#1082; &#1082;&#1072;&#1082; MTA &#1074;&#1089;&#1077;&#1075;&#1076;&#1072; &#1079;&#1085;&#1072;&#1077;&#1090;,
+&#1086;&#1090;&#1082;&#1091;&#1076;&#1072; &#1077;&#1084;&#1091; &#1087;&#1088;&#1080;&#1096;&#1083;&#1086; &#1076;&#1072;&#1085;&#1085;&#1086;&#1077; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086;)</li>
+
+<li>&#1085;&#1077;&#1090; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1080; &#1087;&#1077;&#1088;&#1077;&#1076;&#1072;&#1095;&#1080; &#1089;&#1087;&#1072;&#1084; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1091; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; SMTP &#1076;&#1080;&#1072;&#1083;&#1086;&#1075;&#1072;</li>
+
+<li>MIME &#1087;&#1072;&#1088;&#1089;&#1080;&#1085;&#1075; &#1087;&#1080;&#1089;&#1077;&#1084; &#1086;&#1095;&#1077;&#1085;&#1100; &#1084;&#1077;&#1076;&#1083;&#1077;&#1085;&#1085;&#1099;&#1081;,
+&#1090;&#1072;&#1082; &#1082;&#1072;&#1082; &#1086;&#1087;&#1103;&#1090;&#1100; &#1078;&#1077; &#1089;&#1076;&#1077;&#1083;&#1072;&#1085; &#1085;&#1072; &#1073;&#1072;&#1079;&#1077; &#1088;&#1077;&#1075;&#1091;&#1083;&#1103;&#1088;&#1085;&#1099;&#1093; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1081;</li>
+</ul>
+
+<p>&#1042; &#1080;&#1090;&#1086;&#1075;&#1077; &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100;,
+&#1095;&#1090;&#1086; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1072;&#1103; &#1087;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084;&#1072; SA - &#1101;&#1090;&#1086; &#1080;&#1079;&#1083;&#1080;&#1096;&#1085;&#1103;&#1103; &#1091;&#1074;&#1083;&#1077;&#1095;&#1077;&#1085;&#1085;&#1086;&#1089;&#1090;&#1100; &#1072;&#1074;&#1090;&#1086;&#1088;&#1086;&#1074; &#1088;&#1077;&#1075;&#1091;&#1083;&#1103;&#1088;&#1085;&#1099;&#1084;&#1080; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1103;&#1084;&#1080; &#1080; &#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1080;&#1077; &#1086;&#1087;&#1090;&#1080;&#1084;&#1080;&#1079;&#1072;&#1094;&#1080;&#1080;.
+&#1042; &#1080;&#1090;&#1086;&#1075;&#1077;,
+&#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1073;&#1072;&#1079;&#1086;&#1074;&#1099;&#1093; &#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087;&#1086;&#1074; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103; rspamd &#1073;&#1099;&#1083;&#1080; &#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087;&#1099; &#1086;&#1087;&#1090;&#1080;&#1084;&#1080;&#1079;&#1072;&#1094;&#1080;&#1080; &#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1080; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1080; &#1087;&#1080;&#1089;&#1077;&#1084;,
+&#1074; &#1095;&#1080;&#1089;&#1083;&#1077; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093;:</p>
+
+<ul>
+<li>&#1087;&#1086;&#1083;&#1085;&#1086;&#1089;&#1090;&#1100;&#1102; &#1072;&#1089;&#1080;&#1085;&#1093;&#1088;&#1086;&#1085;&#1085;&#1072;&#1103; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072; &#1089; &#1089;&#1077;&#1090;&#1100;&#1102; (&#1085;&#1072; &#1073;&#1072;&#1079;&#1077; libevent),
+&#1074; &#1090;&#1086;&#1084; &#1095;&#1080;&#1089;&#1083;&#1077; DNS &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1099; &#1080; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072; &#1089; http</li>
+
+<li>&#1073;&#1099;&#1089;&#1090;&#1088;&#1099;&#1077; &#1084;&#1077;&#1093;&#1072;&#1085;&#1080;&#1079;&#1084;&#1099; &#1074;&#1099;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1103; &#1087;&#1072;&#1084;&#1103;&#1090;&#1080;</li>
+
+<li>&#1082;&#1086;&#1084;&#1087;&#1080;&#1083;&#1103;&#1094;&#1080;&#1103; &#1074;&#1089;&#1077;&#1093; &#1088;&#1077;&#1075;&#1091;&#1083;&#1103;&#1088;&#1085;&#1099;&#1093; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1081; &#1080; &#1074;&#1099;&#1079;&#1086;&#1074; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1090;&#1077;&#1093; &#1080;&#1079; &#1085;&#1080;&#1093;,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1085;&#1072;&#1080;&#1073;&#1086;&#1083;&#1077;&#1077; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1099; (&#1090;&#1086; &#1077;&#1089;&#1090;&#1100;,
+&#1080;&#1084;&#1077;&#1077;&#1090;&#1089;&#1103; &#1084;&#1077;&#1093;&#1072;&#1085;&#1080;&#1079;&#1084; &#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1103; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080; &#1089;&#1088;&#1072;&#1073;&#1072;&#1090;&#1099;&#1074;&#1072;&#1085;&#1080;&#1103; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1093; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;,
+&#1080; &#1087;&#1088;&#1080; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1077; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1075;&#1086; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072; &#1091;&#1095;&#1080;&#1090;&#1099;&#1074;&#1072;&#1077;&#1090;&#1089;&#1103; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1072; &#1087;&#1088;&#1077;&#1076;&#1099;&#1076;&#1091;&#1097;&#1080;&#1093;,
+&#1095;&#1090;&#1086; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1084;&#1072;&#1082;&#1089;&#1080;&#1084;&#1072;&#1083;&#1100;&#1085;&#1086; &#1073;&#1099;&#1089;&#1090;&#1088;&#1086; &#1087;&#1088;&#1086;&#1074;&#1077;&#1089;&#1090;&#1080; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1099;&#1077; &#1090;&#1077;&#1089;&#1090;&#1099;)</li>
+
+<li>&#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1103;&#1077;&#1084;&#1072;&#1103; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1072;: &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1103; &#1087;&#1083;&#1072;&#1075;&#1080;&#1085;&#1086;&#1074; &#1085;&#1072; &#1089;&#1080;,
+lua,
+&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; &#1085;&#1086;&#1074;&#1099;&#1093; &#1090;&#1080;&#1087;&#1086;&#1074; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1086;&#1074;,
+&#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1081; &#1087;&#1088;&#1086;&#1090;&#1086;&#1082;&#1086;&#1083;&#1072; rspamc,
+&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; &#1085;&#1086;&#1074;&#1099;&#1093; &#1090;&#1080;&#1087;&#1086;&#1074; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1093; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084;&#1086;&#1074;,
+&#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084;&#1086;&#1074; &#1085;&#1086;&#1088;&#1084;&#1072;&#1083;&#1080;&#1079;&#1072;&#1094;&#1080;&#1080; &#1080; &#1087;&#1072;&#1088;&#1089;&#1080;&#1085;&#1075;&#1072; &#1090;&#1077;&#1082;&#1089;&#1090;&#1086;&#1074;</li>
+
+<li>&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1076;&#1080;&#1085;&#1072;&#1084;&#1080;&#1095;&#1077;&#1089;&#1082;&#1086;&#1081; &#1079;&#1072;&#1075;&#1088;&#1091;&#1079;&#1082;&#1080; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1093; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1077;&#1082;,
+&#1089;&#1087;&#1080;&#1089;&#1082;&#1086;&#1074; ip &#1072;&#1076;&#1088;&#1077;&#1089;&#1086;&#1074; &#1080; &#1087;&#1088;&#1086;&#1095;&#1077;&#1081; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1080; &#1095;&#1077;&#1088;&#1077;&#1079; HTTP &#1087;&#1088;&#1086;&#1090;&#1086;&#1082;&#1086;&#1083; &#1089; &#1087;&#1086;&#1076;&#1076;&#1077;&#1088;&#1078;&#1082;&#1086;&#1081; &#1076;&#1072;&#1090;&#1099; &#1084;&#1086;&#1076;&#1080;&#1092;&#1080;&#1082;&#1072;&#1094;&#1080;&#1080; &#1090;&#1072;&#1082;&#1080;&#1093; &#1089;&#1087;&#1080;&#1089;&#1082;&#1086;&#1074;</li>
+
+<li>&#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1074;&#1077;&#1079;&#1076;&#1077;,
+&#1075;&#1076;&#1077; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;,
+&#1089;&#1087;&#1077;&#1094;&#1080;&#1072;&#1083;&#1080;&#1079;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1099;&#1093; &#1082;&#1086;&#1085;&#1077;&#1095;&#1085;&#1099;&#1093; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1086;&#1074; &#1076;&#1083;&#1103; &#1088;&#1072;&#1079;&#1073;&#1086;&#1088;&#1072; &#1080; &#1072;&#1085;&#1072;&#1083;&#1080;&#1079;&#1072; &#1090;&#1077;&#1082;&#1089;&#1090;&#1086;&#1074;</li>
+
+<li>&#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1073;&#1099;&#1089;&#1090;&#1088;&#1086;&#1075;&#1086; mime &#1087;&#1072;&#1088;&#1089;&#1077;&#1088;&#1072; gmime</li>
+</ul>
+
+<p>&#1042; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1077; &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1072; &#1089; SA &#1085;&#1072; rspamd &#1087;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1080;&#1081; &#1087;&#1086;&#1082;&#1072;&#1079;&#1072;&#1083; &#1074; &#1089;&#1088;&#1077;&#1076;&#1085;&#1077;&#1084; &#1074; 10 &#1088;&#1072;&#1079; &#1073;&#1086;&#1083;&#1077;&#1077; &#1073;&#1099;&#1089;&#1090;&#1088;&#1091;&#1102; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1091; &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1081;.
+&#1042; &#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &#1084;&#1086;&#1084;&#1077;&#1085;&#1090; rspamd &#1080;&#1084;&#1077;&#1077;&#1090; &#1089;&#1090;&#1072;&#1090;&#1091;&#1089; &#1073;&#1077;&#1090;&#1072; &#1074;&#1077;&#1088;&#1089;&#1080;&#1080;,
+&#1085;&#1086; &#1074;&#1087;&#1086;&#1083;&#1085;&#1077; &#1087;&#1088;&#1080;&#1075;&#1086;&#1076;&#1077;&#1085; &#1076;&#1083;&#1103; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099;.</p>
+
+<h2><a class='u' href='#___top' title='click to go to top of document'
+name="2._(1059)(1089)(1090)(1072)(1085)(1086)(1074)(1082)(1072)_(1080)_(1085)(1072)(1089)(1090)(1088)(1086)(1081)(1082)(1072)_rspamd"
+>2.
+&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1072; &#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1072; rspamd</a></h2>
+
+<p>&#1044;&#1083;&#1103; &#1089;&#1073;&#1086;&#1088;&#1082;&#1080; rspamd &#1074;&#1072;&#1084; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1091;&#1102;&#1090;&#1089;&#1103;:</p>
+
+<ul>
+<li>libevent <a href="http://www.monkey.org/~provos/libevent/" class="podlinkurl"
+>http://www.monkey.org/~provos/libevent/</a> - &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082;&#1072; &#1076;&#1083;&#1103; &#1072;&#1089;&#1080;&#1085;&#1093;&#1088;&#1086;&#1085;&#1085;&#1086;&#1081; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1080; &#1089;&#1086;&#1073;&#1099;&#1090;&#1080;&#1081;</li>
+
+<li>glib <a href="http://library.gnome.org/devel/glib/" class="podlinkurl"
+>http://library.gnome.org/devel/glib/</a> - &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082;&#1072; &#1086;&#1073;&#1097;&#1077;&#1075;&#1086; &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103;,
+&#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1097;&#1072;&#1103; &#1084;&#1085;&#1086;&#1075;&#1080;&#1077; &#1074;&#1077;&#1097;&#1080;,
+&#1086; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1095;&#1080;&#1082;&#1080; libc,
+&#1091;&#1074;&#1099;,
+&#1079;&#1072;&#1073;&#1099;&#1083;&#1080; (glib &#1085;&#1077; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1075;&#1088;&#1072;&#1092;&#1080;&#1095;&#1077;&#1089;&#1082;&#1086;&#1081; &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082;&#1086;&#1081;,
+&#1093;&#1086;&#1090;&#1103; &#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103;,
+&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;,
+gtk)</li>
+
+<li>gmime <a href="http://spruce.sourceforge.net/gmime/" class="podlinkurl"
+>http://spruce.sourceforge.net/gmime/</a> - MIME &#1087;&#1072;&#1088;&#1089;&#1077;&#1088; &#1085;&#1072; &#1073;&#1072;&#1079;&#1077; &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082;&#1080; glib</li>
+
+<li>lua <a href="http://www.lua.org/" class="podlinkurl"
+>http://www.lua.org/</a> - &#1074;&#1089;&#1090;&#1088;&#1072;&#1080;&#1074;&#1072;&#1077;&#1084;&#1099;&#1081; &#1089;&#1082;&#1088;&#1080;&#1087;&#1090;&#1086;&#1074;&#1099;&#1081; &#1103;&#1079;&#1099;&#1082; (&#1074; &#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087;&#1077;,
+&#1085;&#1072;&#1083;&#1080;&#1095;&#1080;&#1077; lua &#1085;&#1077;&#1086;&#1073;&#1103;&#1079;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;,
+&#1085;&#1086; &#1073;&#1077;&#1079; lua &#1084;&#1085;&#1086;&#1075;&#1080;&#1081; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1086;&#1085;&#1072;&#1083; rspamd &#1086;&#1089;&#1090;&#1072;&#1085;&#1077;&#1090;&#1089;&#1103; &#1085;&#1077;&#1088;&#1077;&#1072;&#1083;&#1080;&#1079;&#1086;&#1074;&#1072;&#1085;&#1085;&#1099;&#1084;)</li>
+
+<li>perl <a href="http://www.perl.org/" class="podlinkurl"
+>http://www.perl.org/</a> - &#1085;&#1072; &#1087;&#1077;&#1088;&#1083;&#1077; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;,
+&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;,
+&#1082;&#1086;&#1085;&#1089;&#1086;&#1083;&#1100;&#1085;&#1099;&#1081; &#1082;&#1083;&#1080;&#1077;&#1085;&#1090; rspamc,
+&#1088;&#1072;&#1089;&#1087;&#1086;&#1079;&#1085;&#1072;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100; &#1088;&#1077;&#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1074; &#1074; URL&#39;&#1103;&#1093;,
+&#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091; &#1085;&#1072;&#1083;&#1080;&#1095;&#1080;&#1077; &#1087;&#1077;&#1088;&#1083;&#1072; &#1074; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1077; &#1082;&#1088;&#1072;&#1081;&#1085;&#1077; &#1078;&#1077;&#1083;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;</li>
+
+<li>cmake <a href="http://www.cmake.org/" class="podlinkurl"
+>http://www.cmake.org/</a> - &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072; &#1089;&#1073;&#1086;&#1088;&#1082;&#1080;,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1072;&#1103; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; rspamd &#1089;&#1086;&#1073;&#1080;&#1088;&#1072;&#1090;&#1100;&#1089;&#1103; (&#1087;&#1086; &#1082;&#1088;&#1072;&#1081;&#1085;&#1077;&#1081; &#1084;&#1077;&#1088;&#1077;,
+&#1074; &#1090;&#1077;&#1086;&#1088;&#1080;&#1080;) &#1085;&#1072; &#1074;&#1089;&#1077;&#1093; Posix &#1089;&#1086;&#1074;&#1084;&#1077;&#1089;&#1090;&#1080;&#1084;&#1099;&#1093; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072;&#1093;.
+&#1048;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1089;&#1090;&#1072;&#1085;&#1076;&#1072;&#1088;&#1090;&#1085;&#1099;&#1077; &#1074; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1089;&#1080;&#1090;&#1091;&#1072;&#1094;&#1080;&#1080; autotools &#1103; &#1085;&#1077; &#1089;&#1090;&#1072;&#1083;,
+&#1090;&#1072;&#1082; &#1082;&#1072;&#1082; &#1089;&#1095;&#1080;&#1090;&#1072;&#1102; &#1080;&#1093; &#1089;&#1072;&#1084;&#1086;&#1081; &#1085;&#1077;&#1091;&#1076;&#1086;&#1073;&#1085;&#1086;&#1081; &#1074; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1086;&#1081; &#1089;&#1073;&#1086;&#1088;&#1082;&#1080; &#1080;&#1089;&#1093;&#1086;&#1076;&#1085;&#1080;&#1082;&#1086;&#1074;,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1091;&#1102; &#1084;&#1086;&#1078;&#1085;&#1086; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1087;&#1088;&#1080;&#1076;&#1091;&#1084;&#1072;&#1090;&#1100;.</li>
+
+<li>mercurial <a href="http://mercurial.selenic.com/" class="podlinkurl"
+>http://mercurial.selenic.com/</a> - &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; &#1074;&#1077;&#1088;&#1089;&#1080;&#1103;&#1084;&#1080; (SCM),
+&#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1084;&#1072;&#1103; &#1076;&#1083;&#1103; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1080; rspamd.
+&#1058;&#1072;&#1082; &#1082;&#1072;&#1082; &#1074; &#1085;&#1072;&#1089;&#1090;&#1086;&#1103;&#1097;&#1077;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103; rspamd &#1085;&#1072;&#1093;&#1086;&#1076;&#1080;&#1090;&#1089;&#1103; &#1074; &#1089;&#1086;&#1089;&#1090;&#1086;&#1103;&#1085;&#1080;&#1080; &#1073;&#1077;&#1090;&#1072;-&#1074;&#1077;&#1088;&#1089;&#1080;&#1080;,
+&#1090;&#1086; &#1088;&#1077;&#1083;&#1080;&#1079;&#1099; &#1074;&#1099;&#1093;&#1086;&#1076;&#1103;&#1090; &#1085;&#1077;&#1095;&#1072;&#1089;&#1090;&#1086; &#1080; &#1079;&#1072;&#1095;&#1072;&#1089;&#1090;&#1091;&#1102; &#1103;&#1074;&#1083;&#1103;&#1102;&#1090;&#1089;&#1103; &#1084;&#1077;&#1085;&#1077;&#1077; &#1089;&#1090;&#1072;&#1073;&#1080;&#1083;&#1100;&#1085;&#1099;&#1084;&#1080;,
+&#1095;&#1077;&#1084; &#1090;&#1077;&#1082;&#1091;&#1097;&#1072;&#1103; &#1074;&#1077;&#1088;&#1089;&#1080;&#1103; &#1074; &#1088;&#1077;&#1087;&#1086;&#1079;&#1080;&#1090;&#1086;&#1088;&#1080;&#1080;,
+&#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091; &#1076;&#1083;&#1103; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080; rspamd &#1083;&#1091;&#1095;&#1096;&#1077; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074;&#1077;&#1088;&#1089;&#1080;&#1102; &#1085;&#1077;&#1087;&#1086;&#1089;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1077;&#1085;&#1085;&#1086; &#1080;&#1079; &#1088;&#1077;&#1087;&#1086;&#1079;&#1080;&#1090;&#1086;&#1088;&#1080;&#1103;.</li>
+</ul>
+
+<p>&#1055;&#1086;&#1089;&#1083;&#1077; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080; &#1074;&#1089;&#1077;&#1093; &#1090;&#1088;&#1077;&#1073;&#1091;&#1077;&#1084;&#1099;&#1093; &#1087;&#1088;&#1086;&#1075;&#1088;&#1072;&#1084;&#1084; &#1080; &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082; &#1084;&#1086;&#1078;&#1085;&#1086; &#1087;&#1088;&#1080;&#1089;&#1090;&#1091;&#1087;&#1080;&#1090;&#1100; &#1085;&#1077;&#1087;&#1086;&#1089;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1077;&#1085;&#1085;&#1086; &#1082; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1077; rspamd.</p>
+
+<dl>
+<dt><a name="1_(1089)(1082)(1072)(1095)(1080)(1074)(1072)(1077)(1084)_(1090)(1077)(1082)(1091)(1097)(1077)(1077)_(1089)(1086)(1089)(1090)(1086)(1103)(1085)(1080)(1077)_(1088)(1077)(1087)(1086)(1079)(1080)(1090)(1086)(1088)(1080)(1103):_$_hg_clone_http://rspamd.hg.sourceforge.net:8000/hgroot/rspamd/rspamd"
+>1 &#1089;&#1082;&#1072;&#1095;&#1080;&#1074;&#1072;&#1077;&#1084; &#1090;&#1077;&#1082;&#1091;&#1097;&#1077;&#1077; &#1089;&#1086;&#1089;&#1090;&#1086;&#1103;&#1085;&#1080;&#1077; &#1088;&#1077;&#1087;&#1086;&#1079;&#1080;&#1090;&#1086;&#1088;&#1080;&#1103;: $ hg clone http://rspamd.hg.sourceforge.net:8000/hgroot/rspamd/rspamd</a></dt>
+
+<dd>
+<dt><a
+>2 &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1088;&#1091;&#1077;&#1084; rspamd: $ cd rspamd &#38;&#38; cmake .
+(&#1087;&#1088;&#1080; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086;&#1089;&#1090;&#1080; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1084;&#1086;&#1078;&#1085;&#1086; &#1074;&#1085;&#1072;&#1095;&#1072;&#1083;&#1077; &#1074;&#1086;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1086;&#1081; ccmake .)</a></dt>
+
+<dd>
+<dt><a name="3_(1089)(1086)(1073)(1080)(1088)(1072)(1077)(1084):_$_make"
+>3 &#1089;&#1086;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084;: $ make</a></dt>
+
+<dd>
+<dt><a name="4_(1091)(1089)(1090)(1072)(1085)(1072)(1074)(1083)(1080)(1074)(1072)(1077)(1084):_#_make_install"
+>4 &#1091;&#1089;&#1090;&#1072;&#1085;&#1072;&#1074;&#1083;&#1080;&#1074;&#1072;&#1077;&#1084;: # make install</a></dt>
+</dl>
+
+<h3><a class='u' href='#___top' title='click to go to top of document'
+name="(1050)(1086)(1085)(1092)(1080)(1075)(1091)(1088)(1080)(1088)(1086)(1074)(1072)(1085)(1080)(1077)"
+>&#1050;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077;</a></h3>
+
+<p>&#1042; &#1087;&#1088;&#1086;&#1094;&#1077;&#1089;&#1089;&#1077; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080; &#1089;&#1090;&#1072;&#1074;&#1103;&#1090;&#1089;&#1103; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1077; &#1092;&#1072;&#1081;&#1083;&#1099; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; &#1074; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075; {PREFIX}/etc.
+&#1055;&#1088;&#1080; &#1101;&#1090;&#1086;&#1084;,
+&#1074; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075; etc/rspamd &#1091;&#1089;&#1090;&#1072;&#1085;&#1072;&#1074;&#1083;&#1080;&#1074;&#1072;&#1102;&#1090;&#1089;&#1103; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1072; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; (headers,
+html,
+drugs,
+loto &#1080;.&#1090;.&#1087;.),
+&#1072; &#1074; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075; etc/rspamd.conf.sample &#1091;&#1089;&#1090;&#1072;&#1085;&#1072;&#1074;&#1083;&#1080;&#1074;&#1072;&#1077;&#1090;&#1089;&#1103; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;.
+&#1045;&#1075;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074; &#1092;&#1072;&#1081;&#1083; etc/rspamd.conf &#1080; &#1086;&#1090;&#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1080;&#1080; &#1089; &#1089;&#1086;&#1073;&#1089;&#1090;&#1074;&#1077;&#1085;&#1085;&#1099;&#1084;&#1080; &#1087;&#1088;&#1077;&#1076;&#1087;&#1086;&#1095;&#1090;&#1077;&#1085;&#1080;&#1103;&#1084;&#1080;.
+&#1050;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; &#1089;&#1085;&#1072;&#1073;&#1078;&#1077;&#1085; &#1082;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1103;&#1084;&#1080; &#1082; &#1082;&#1072;&#1078;&#1076;&#1086;&#1081; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1080;&#1074;&#1077;,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1087;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1086; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085; &#1074; &#1076;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;&#1090;&#1072;&#1094;&#1080;&#1080; &#1082; rspamd,
+&#1085;&#1072;&#1093;&#1086;&#1076;&#1103;&#1097;&#1077;&#1081;&#1089;&#1103; &#1074; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075;&#1077; &#1080;&#1089;&#1093;&#1086;&#1076;&#1085;&#1080;&#1082;&#1086;&#1074; doc/rspamd.pdf.
+&#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1078;&#1077; &#1088;&#1091;&#1082;&#1086;&#1074;&#1086;&#1076;&#1089;&#1090;&#1074;&#1077; &#1087;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1086; &#1080;&#1079;&#1083;&#1086;&#1078;&#1077;&#1085; &#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; rspamd &#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1074;&#1089;&#1077;&#1093; &#1084;&#1086;&#1076;&#1091;&#1083;&#1077;&#1081; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099;.
+&#1044;&#1083;&#1103; &#1073;&#1072;&#1079;&#1086;&#1074;&#1086;&#1081; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1080;&#1089;&#1087;&#1088;&#1072;&#1074;&#1080;&#1090;&#1100; &#1087;&#1091;&#1090;&#1080; &#1082; &#1092;&#1072;&#1081;&#1083;&#1072;&#1084; &#1083;&#1086;&#1075;&#1086;&#1074;,
+&#1087;&#1080;&#1076;&#1092;&#1072;&#1081;&#1083;&#1091;,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1086;&#1073;&#1088;&#1072;&#1090;&#1080;&#1090;&#1100; &#1074;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077; &#1085;&#1072; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1099; factors &#1080; classifiers.
+&#1054;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1102;&#1089;&#1100; &#1085;&#1072; &#1101;&#1090;&#1086;&#1084; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1087;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1077;&#1077;.</p>
+
+<p>&#1042;&#1089;&#1077; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1080;&#1074;&#1099; rspamd &#1080;&#1084;&#1077;&#1102;&#1090; &#1092;&#1086;&#1088;&#1084;&#1072;&#1090; param = value; &#1075;&#1076;&#1077; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083; &#39;;&#39; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1087;&#1088;&#1080;&#1079;&#1085;&#1072;&#1082;&#1086;&#1084; &#1086;&#1082;&#1086;&#1085;&#1095;&#1072;&#1085;&#1080;&#1103; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1080;&#1074;&#1099;.
+&#1058;&#1072;&#1082;&#1078;&#1077; &#1092;&#1072;&#1081;&#1083; &#1088;&#1072;&#1079;&#1073;&#1080;&#1090; &#1085;&#1072; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080;,
+&#1082;&#1072;&#1078;&#1076;&#1072;&#1103; &#1089;&#1077;&#1082;&#1094;&#1080;&#1103; &#1080;&#1084;&#1077;&#1077;&#1090; &#1080;&#1084;&#1103; (&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088; worker {}) &#1080; &#1074;&#1085;&#1091;&#1090;&#1088;&#1077;&#1085;&#1085;&#1080;&#1077; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1074;&#1099; &#1074;&#1085;&#1091;&#1090;&#1088;&#1080; &#1092;&#1080;&#1075;&#1091;&#1088;&#1085;&#1099;&#1093; &#1089;&#1082;&#1086;&#1073;&#1086;&#1082;.
+&#1055;&#1086;&#1089;&#1083;&#1077; &#1082;&#1072;&#1078;&#1076;&#1086;&#1081; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080; &#1090;&#1072;&#1082;&#1078;&#1077; &#1086;&#1073;&#1103;&#1079;&#1072;&#1090;&#1077;&#1083;&#1077;&#1085; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083; &#39;;&#39;.
+&#1058;&#1072;&#1082;&#1078;&#1077; &#1082;&#1072;&#1078;&#1076;&#1099;&#1081; &#1084;&#1086;&#1076;&#1091;&#1083;&#1100; &#1080;&#1084;&#1077;&#1077;&#1090; &#1086;&#1089;&#1086;&#1073;&#1099;&#1081; &#1092;&#1086;&#1088;&#1084;&#1072;&#1090; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080;:</p>
+
+<pre>
+.module 'name' {
+ param = value;
+};
+</pre>
+
+
+<p>&#1042;&#1089;&#1077; &#1101;&#1090;&#1086; &#1084;&#1086;&#1078;&#1077;&#1090; &#1087;&#1086;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100;&#1089;&#1103; &#1089;&#1083;&#1086;&#1078;&#1085;&#1099;&#1084; &#1085;&#1072; &#1087;&#1077;&#1088;&#1074;&#1099;&#1081; &#1074;&#1079;&#1075;&#1083;&#1103;&#1076;,
+&#1085;&#1086; &#1101;&#1090;&#1086; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1083;&#1091;&#1095;&#1096;&#1077; &#1089;&#1090;&#1088;&#1091;&#1082;&#1090;&#1091;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083; &#1080; &#1086;&#1073;&#1083;&#1077;&#1075;&#1095;&#1072;&#1077;&#1090; &#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1103;&#1077;&#1084;&#1086;&#1089;&#1090;&#1100; rspamd.
+&#1044;&#1083;&#1103; &#1087;&#1077;&#1088;&#1074;&#1086;&#1085;&#1072;&#1095;&#1072;&#1083;&#1100;&#1085;&#1086;&#1081; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1086;&#1073;&#1088;&#1072;&#1090;&#1080;&#1090;&#1100; &#1074;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077; &#1085;&#1072; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; factors,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1086;&#1087;&#1080;&#1089;&#1099;&#1074;&#1072;&#1077;&#1090; &#1074;&#1077;&#1089;&#1072; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1093; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;,
+&#1088;&#1072;&#1079;&#1076;&#1077;&#1083; metric,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1086;&#1087;&#1080;&#1089;&#1099;&#1074;&#1072;&#1077;&#1090; &#1084;&#1072;&#1082;&#1089;&#1080;&#1084;&#1072;&#1083;&#1100;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;,
+&#1095;&#1090;&#1086;&#1073;&#1099; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086; &#1089;&#1095;&#1080;&#1090;&#1072;&#1083;&#1086;&#1089;&#1100; &#1089;&#1087;&#1072;&#1084;&#1086;&#1084;,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1085;&#1072; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; classifiers.
+&#1056;&#1072;&#1079;&#1076;&#1077;&#1083; classifiers &#1086;&#1073;&#1077;&#1089;&#1087;&#1077;&#1095;&#1080;&#1074;&#1072;&#1077;&#1090; &#1088;&#1072;&#1073;&#1086;&#1090;&#1091; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1093; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084;&#1086;&#1074;.
+&#1042; rspamd &#1074; &#1085;&#1072;&#1089;&#1090;&#1086;&#1103;&#1097;&#1077;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103; &#1088;&#1077;&#1072;&#1083;&#1080;&#1079;&#1086;&#1074;&#1072;&#1085; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084; winnow,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1080;&#1084; &#1086;&#1073;&#1088;&#1072;&#1079;&#1086;&#1084;:</p>
+
+<dl>
+<dt><a name="1_(1090)(1077)(1082)(1089)(1090)_(1088)(1072)(1079)(1073)(1080)(1074)(1072)(1077)(1090)(1089)(1103)_(1085)(1072)_(1089)(1083)(1086)(1074)(1072),_(1090)(1072)(1082)(1078)(1077)_(1074)(1099)(1076)(1077)(1083)(1103)(1077)(1090)(1089)(1103)_(1086)(1082)(1085)(1086)_(1074)_(1087)(1103)(1090)(1100)_(1089)(1083)(1086)(1074)"
+>1 &#1090;&#1077;&#1082;&#1089;&#1090; &#1088;&#1072;&#1079;&#1073;&#1080;&#1074;&#1072;&#1077;&#1090;&#1089;&#1103; &#1085;&#1072; &#1089;&#1083;&#1086;&#1074;&#1072;,
+&#1090;&#1072;&#1082;&#1078;&#1077; &#1074;&#1099;&#1076;&#1077;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1086;&#1082;&#1085;&#1086; &#1074; &#1087;&#1103;&#1090;&#1100; &#1089;&#1083;&#1086;&#1074;</a></dt>
+
+<dd>
+<dt><a name="2_(1086)(1082)(1085)(1086)_(1087)(1077)(1088)(1077)(1084)(1077)(1097)(1072)(1077)(1090)(1089)(1103)_(1087)(1086)_(1089)(1083)(1086)(1074)(1072)(1084),_(1087)(1088)(1080)_(1101)(1090)(1086)(1084)_(1074)(1099)(1076)(1077)(1083)(1103)(1102)(1090)(1089)(1103)_(1089)(1083)(1086)(1074)(1086)(1089)(1086)(1095)(1077)(1090)(1072)(1085)(1080)(1103)_(1087)(1086)_(1086)(1087)(1088)(1077)(1076)(1077)(1083)(1077)(1085)(1085)(1086)(1084)(1091)_(1072)(1083)(1075)(1086)(1088)(1080)(1090)(1084)(1091)_(1080)_(1074)(1099)(1095)(1080)(1089)(1083)(1103)(1077)(1090)(1089)(1103)_(1080)(1093)_(1093)(1077)(1096)"
+>2 &#1086;&#1082;&#1085;&#1086; &#1087;&#1077;&#1088;&#1077;&#1084;&#1077;&#1097;&#1072;&#1077;&#1090;&#1089;&#1103; &#1087;&#1086; &#1089;&#1083;&#1086;&#1074;&#1072;&#1084;,
+&#1087;&#1088;&#1080; &#1101;&#1090;&#1086;&#1084; &#1074;&#1099;&#1076;&#1077;&#1083;&#1103;&#1102;&#1090;&#1089;&#1103; &#1089;&#1083;&#1086;&#1074;&#1086;&#1089;&#1086;&#1095;&#1077;&#1090;&#1072;&#1085;&#1080;&#1103; &#1087;&#1086; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1084;&#1091; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084;&#1091; &#1080; &#1074;&#1099;&#1095;&#1080;&#1089;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1080;&#1093; &#1093;&#1077;&#1096;</a></dt>
+
+<dd>
+<dt><a
+>3 &#1082;&#1072;&#1078;&#1076;&#1099;&#1081; &#1087;&#1086;&#1083;&#1091;&#1095;&#1077;&#1085;&#1085;&#1099;&#1081; &#1090;&#1072;&#1082;&#1080;&#1084; &#1086;&#1073;&#1088;&#1072;&#1079;&#1086;&#1084; &#1093;&#1077;&#1096; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1103;&#1077;&#1090;&#1089;&#1103; &#1074; &#1092;&#1072;&#1081;&#1083;&#1077; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080;,
+&#1074; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1084; &#1093;&#1088;&#1072;&#1085;&#1103;&#1090;&#1089;&#1103; &#1093;&#1077;&#1096;&#1080; &#1080; &#1080;&#1093; &#1074;&#1077;&#1089;&#1072;,
+&#1077;&#1089;&#1083;&#1080; &#1093;&#1077;&#1096; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;,
+&#1090;&#1086; &#1077;&#1075;&#1086; &#1074;&#1077;&#1089; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1082; &#1089;&#1091;&#1084;&#1084;&#1072;&#1088;&#1085;&#1086;&#1084;&#1091; &#1074;&#1077;&#1089;&#1091; &#1076;&#1072;&#1085;&#1085;&#1086;&#1075;&#1086; &#1092;&#1072;&#1081;&#1083;&#1072;</a></dt>
+
+<dd>
+<dt><a name="4_(1092)(1072)(1081)(1083),_(1085)(1072)(1073)(1088)(1072)(1074)(1096)(1080)(1081)_(1074)_(1089)(1091)(1084)(1084)(1077)_(1073)(1086)(1083)(1100)(1096)(1077)_(1074)(1077)(1089)(1072)_(1089)(1095)(1080)(1090)(1072)(1077)(1090)(1089)(1103)_(1082)(1083)(1072)(1089)(1089)(1086)(1084)_(1087)(1080)(1089)(1100)(1084)(1072)"
+>4 &#1092;&#1072;&#1081;&#1083;,
+&#1085;&#1072;&#1073;&#1088;&#1072;&#1074;&#1096;&#1080;&#1081; &#1074; &#1089;&#1091;&#1084;&#1084;&#1077; &#1073;&#1086;&#1083;&#1100;&#1096;&#1077; &#1074;&#1077;&#1089;&#1072; &#1089;&#1095;&#1080;&#1090;&#1072;&#1077;&#1090;&#1089;&#1103; &#1082;&#1083;&#1072;&#1089;&#1089;&#1086;&#1084; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072;</a></dt>
+</dl>
+
+<p>&#1054;&#1089;&#1085;&#1086;&#1074;&#1085;&#1072;&#1103; &#1080;&#1076;&#1077;&#1103; &#1090;&#1072;&#1082;&#1086;&#1075;&#1086; &#1087;&#1086;&#1076;&#1093;&#1086;&#1076;&#1072; &#1074; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1080; &#1087;&#1086; &#1089;&#1083;&#1086;&#1074;&#1086;&#1089;&#1086;&#1095;&#1077;&#1090;&#1072;&#1085;&#1080;&#1103;&#1084;,
+&#1082; &#1082;&#1072;&#1082;&#1086;&#1084;&#1091; &#1082;&#1083;&#1072;&#1089;&#1089;&#1091; &#1087;&#1088;&#1080;&#1085;&#1072;&#1076;&#1083;&#1077;&#1078;&#1080;&#1090; &#1076;&#1072;&#1085;&#1085;&#1086;&#1077; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086;.
+&#1042; SA &#1076;&#1083;&#1103; &#1101;&#1090;&#1086;&#1081; &#1094;&#1077;&#1083;&#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103; &#1074;&#1077;&#1088;&#1086;&#1103;&#1090;&#1085;&#1086;&#1089;&#1090;&#1085;&#1099;&#1081; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084; bayes,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1087;&#1086;&#1093;&#1086;&#1078; &#1085;&#1072; &#1074;&#1099;&#1096;&#1077;&#1086;&#1087;&#1080;&#1089;&#1072;&#1085;&#1085;&#1099;&#1081;,
+&#1085;&#1086; &#1089;&#1095;&#1080;&#1090;&#1072;&#1077;&#1090; &#1085;&#1077; &#1074;&#1077;&#1089;&#1072;,
+&#1072; &#1074;&#1077;&#1088;&#1086;&#1103;&#1090;&#1085;&#1086;&#1089;&#1090;&#1080;.
+&#1069;&#1092;&#1092;&#1077;&#1082;&#1090;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100; &#1082;&#1072;&#1078;&#1076;&#1086;&#1075;&#1086; &#1080;&#1079; &#1072;&#1083;&#1075;&#1086;&#1088;&#1080;&#1090;&#1084;&#1086;&#1074; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1085;&#1086; &#1086;&#1076;&#1080;&#1085;&#1072;&#1082;&#1086;&#1074;&#1072; &#1080; &#1079;&#1072;&#1074;&#1080;&#1089;&#1080;&#1090; &#1074; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1086;&#1084; &#1086;&#1090; &#1101;&#1092;&#1092;&#1077;&#1082;&#1090;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1080; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1103;.
+&#1054;&#1076;&#1085;&#1072;&#1082;&#1086;,
+&#1074; &#1086;&#1090;&#1083;&#1080;&#1095;&#1080;&#1077; &#1086;&#1090; SA,
+rspamd &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090; &#1085;&#1077; &#1086;&#1090;&#1076;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077; &#1089;&#1083;&#1086;&#1074;&#1072;,
+&#1072; &#1089;&#1083;&#1086;&#1074;&#1086;&#1089;&#1086;&#1095;&#1077;&#1090;&#1072;&#1085;&#1080;&#1103;,
+&#1095;&#1090;&#1086; &#1087;&#1086;&#1074;&#1099;&#1096;&#1072;&#1077;&#1090; &#1077;&#1075;&#1086; &#1101;&#1092;&#1092;&#1077;&#1082;&#1090;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100;.
+&#1042; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080; classifiers &#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1077; &#1082;&#1083;&#1072;&#1089;&#1089;&#1099; &#1087;&#1080;&#1089;&#1077;&#1084;,
+&#1072; &#1076;&#1072;&#1083;&#1077;&#1077; &#1074; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080; factors &#1091;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; &#1080;&#1093; &#1074;&#1077;&#1089; (&#1079;&#1072;&#1076;&#1072;&#1074;,
+&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;,
+&#1076;&#1083;&#1103; &#1079;&#1072;&#1074;&#1077;&#1076;&#1086;&#1084;&#1086; &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1076;&#1085;&#1099;&#1093; &#1087;&#1080;&#1089;&#1077;&#1084; - ham - &#1086;&#1090;&#1088;&#1080;&#1094;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;).
+&#1056;&#1072;&#1079;&#1084;&#1077;&#1088; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080; &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1073;&#1099;&#1090;&#1100; &#1088;&#1072;&#1079;&#1091;&#1084;&#1085;&#1086; &#1073;&#1086;&#1083;&#1100;&#1096;&#1080;&#1084; &#1076;&#1083;&#1103; &#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1080;&#1103; &#1082;&#1072;&#1082; &#1084;&#1086;&#1078;&#1085;&#1086; &#1073;&#1086;&#1083;&#1100;&#1096;&#1077;&#1075;&#1086; &#1095;&#1080;&#1089;&#1083;&#1072; &#1093;&#1077;&#1096;&#1077;&#1081;.
+&#1054;&#1076;&#1085;&#1072;&#1082;&#1086;,
+&#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086; &#1091;&#1095;&#1080;&#1090;&#1099;&#1074;&#1072;&#1090;&#1100;,
+&#1095;&#1090;&#1086; &#1101;&#1090;&#1080; &#1092;&#1072;&#1081;&#1083;&#1099; &#1094;&#1077;&#1083;&#1080;&#1082;&#1086;&#1084; &#1079;&#1072;&#1075;&#1088;&#1091;&#1078;&#1072;&#1102;&#1090;&#1089;&#1103; &#1074; &#1087;&#1072;&#1084;&#1103;&#1090;&#1100; (&#1093;&#1086;&#1090;&#1103;,
+&#1088;&#1077;&#1072;&#1083;&#1080;&#1079;&#1072;&#1094;&#1080;&#1103; &#1086;&#1090;&#1086;&#1073;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072; &#1074; &#1087;&#1072;&#1084;&#1103;&#1090;&#1080; &#1074; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1093; &#1054;&#1057; &#1076;&#1086;&#1087;&#1091;&#1089;&#1082;&#1072;&#1077;&#1090; &#1079;&#1072;&#1075;&#1088;&#1091;&#1079;&#1082;&#1091; &#1080; &#1074;&#1099;&#1075;&#1088;&#1091;&#1079;&#1082;&#1091; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1101;&#1090;&#1086;&#1075;&#1086; &#1092;&#1072;&#1081;&#1083;&#1072; &#1074; &#1089;&#1074;&#1086;&#1087; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099;,
+&#1085;&#1086; &#1101;&#1092;&#1092;&#1077;&#1082;&#1090;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100; &#1101;&#1090;&#1086;&#1075;&#1086; &#1076;&#1086;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086; &#1085;&#1080;&#1079;&#1082;&#1072;),
+&#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086; &#1089;&#1086;&#1080;&#1079;&#1084;&#1077;&#1088;&#1103;&#1090;&#1100; &#1088;&#1072;&#1079;&#1084;&#1077;&#1088; &#1086;&#1087;&#1077;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1086;&#1081; &#1087;&#1072;&#1084;&#1103;&#1090;&#1080; &#1080; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080;.</p>
+
+<h2><a class='u' href='#___top' title='click to go to top of document'
+name="4._(1055)(1086)(1076)(1082)(1083)(1102)(1095)(1077)(1085)(1080)(1077)_(1080)_(1087)(1088)(1086)(1074)(1077)(1088)(1082)(1072)_(1088)(1072)(1073)(1086)(1090)(1086)(1089)(1087)(1086)(1089)(1086)(1073)(1085)(1086)(1089)(1090)(1080)_rspamd"
+>4.
+&#1055;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1080;&#1077; &#1080; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1082;&#1072; &#1088;&#1072;&#1073;&#1086;&#1090;&#1086;&#1089;&#1087;&#1086;&#1089;&#1086;&#1073;&#1085;&#1086;&#1089;&#1090;&#1080; rspamd</a></h2>
+
+<p>&#1044;&#1083;&#1103; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1082;&#1080; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099; rspamd &#1087;&#1088;&#1086;&#1097;&#1077; &#1074;&#1089;&#1077;&#1075;&#1086; &#1074;&#1086;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1086;&#1081; rspamc:</p>
+
+<pre>
+hostname:~> rspamc stat
+Do rspamc command stat
+Messages scanned: 1234040
+Messages learned: 59151
+Connections count: 1176623
+Control connections count: 59152
+Pools allocated: 2530714
+Pools freed: 2530699
+Bytes allocated: 66991793394
+Memory chunks allocated: 6453232
+Shared chunks allocated: 3
+Chunks freed: 6453090
+Oversized chunks: 468849
+Statfile: WINNOW_HAM (version 69); length: 100.0 MB; free blocks: 4563488; total blocks: 6553581; free: 69.63%
+Statfile: WINNOW_SPAM (version 36383); length: 100.0 MB; free blocks: 760504; total blocks: 6553581; free: 11.60%
+</pre>
+
+
+<p>&#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077; &#1074;&#1099;&#1074;&#1086;&#1076;&#1080;&#1090;&#1089;&#1103; &#1086;&#1073;&#1097;&#1072;&#1103; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1072;.
+&#1058;&#1072;&#1082;&#1086;&#1075;&#1086; &#1078;&#1077; &#1101;&#1092;&#1092;&#1077;&#1082;&#1090;&#1072; &#1084;&#1086;&#1078;&#1085;&#1086; &#1076;&#1086;&#1089;&#1090;&#1080;&#1075;&#1085;&#1091;&#1090;&#1100; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1086;&#1081; telnet &#1085;&#1072; &#1087;&#1086;&#1088;&#1090; &#1087;&#1088;&#1086;&#1094;&#1077;&#1089;&#1089;&#1072; controller (&#1086;&#1085; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085; &#1074; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1086;&#1084; &#1092;&#1072;&#1081;&#1083;&#1077; &#1074; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080; worker,
+type &#1091; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; controller).
+&#1055;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; &#1101;&#1090;&#1086; &#1087;&#1086;&#1088;&#1090; 11334 &#1085;&#1072; &#1072;&#1076;&#1088;&#1077;&#1089;&#1077; 127.0.0.1.
+&#1056;&#1072;&#1073;&#1086;&#1090;&#1091; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083; &#1080; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080; &#1084;&#1086;&#1078;&#1085;&#1086; &#1090;&#1072;&#1082;&#1078;&#1077; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1087;&#1086; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1077; rspamc:</p>
+
+<pre>
+~> rspamc symbols /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Sending 4950 bytes...
+RSPAMD/1.1 0 OK
+Metric: default; False; -3.35 / 10.00 / 0.00
+Symbol: WINNOW_HAM; 5.00
+Symbol: RECEIVED_RBL; pbl.spamhaus.org,insecure-bl.rambler.ru
+Urls:
+</pre>
+
+
+<p>&#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077; &#1087;&#1086;&#1082;&#1072;&#1079;&#1099;&#1074;&#1072;&#1102;&#1090;&#1089;&#1103; &#1073;&#1072;&#1083;&#1083;&#1099;,
+&#1085;&#1072;&#1073;&#1088;&#1072;&#1085;&#1085;&#1099;&#1077; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086;&#1084;,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1076;&#1086;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1072;&#1103; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1103;.
+&#1055;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1077;&#1077; &#1086; &#1087;&#1088;&#1086;&#1090;&#1086;&#1082;&#1086;&#1083;&#1077; rspamc &#1074; &#1076;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;&#1090;&#1072;&#1094;&#1080;&#1080; (doc/rspamd.pdf).
+&#1044;&#1083;&#1103; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1080;&#1103; rspamd &#1082; MTA &#1083;&#1091;&#1095;&#1096;&#1077; &#1074;&#1089;&#1077;&#1075;&#1086; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; milter,
+&#1077;&#1089;&#1083;&#1080; &#1074;&#1072;&#1096; MTA postfix &#1080;&#1083;&#1080; sendmail.
+&#1042; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; milter&#39;&#1072; &#1084;&#1086;&#1078;&#1085;&#1086; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100;,
+&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;,
+rmilter: <a href="https://www.milter.org/milter/71/" class="podlinkurl"
+>https://www.milter.org/milter/71/</a>.
+&#1054; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1077; postfix + rmilter &#1084;&#1085;&#1086;&#1081; &#1073;&#1099;&#1083;&#1072; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1072; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1072;&#1103; &#1079;&#1072;&#1084;&#1077;&#1090;&#1082;&#1072;: <a href="http://cebka.pp.ru/blog/2009/02/-nginxpostfixrmilter.html" class="podlinkurl"
+>http://cebka.pp.ru/blog/2009/02/-nginxpostfixrmilter.html</a> &#1044;&#1083;&#1103; MTA exim &#1084;&#1086;&#1078;&#1085;&#1086; &#1074;&#1086;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1092;&#1072;&#1081;&#1083;&#1086;&#1084; local_scan.c &#1074; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075;&#1077; contrib/exim.
+&#1048;&#1085;&#1089;&#1090;&#1088;&#1091;&#1082;&#1094;&#1080;&#1080; &#1087;&#1086; &#1077;&#1075;&#1086; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1077; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085;&#1099; &#1074; &#1089;&#1072;&#1084;&#1086;&#1084; &#1092;&#1072;&#1081;&#1083;&#1077;,
+&#1086;&#1076;&#1085;&#1072;&#1082;&#1086;,
+&#1101;&#1090;&#1086; &#1090;&#1088;&#1077;&#1073;&#1091;&#1077;&#1090; &#1087;&#1077;&#1088;&#1077;&#1089;&#1073;&#1086;&#1088;&#1082;&#1080; MTA.
+&#1058;&#1072;&#1082;&#1078;&#1077; rspamd &#34;&#1087;&#1086;&#1085;&#1080;&#1084;&#1072;&#1077;&#1090;&#34; &#1087;&#1088;&#1086;&#1090;&#1086;&#1082;&#1086;&#1083; SA,
+&#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091; &#1076;&#1083;&#1103; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1080;&#1103; rspamd &#1084;&#1086;&#1078;&#1085;&#1086; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1090;&#1077; &#1078;&#1077; &#1089;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1072;,
+&#1095;&#1090;&#1086; &#1080; &#1076;&#1083;&#1103; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1080;&#1103; &#1082; MTA SA.</p>
+
+<p>&#1055;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1077;&#1077; &#1086; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1072;&#1093; rspamc &#1080; &#1087;&#1088;&#1086;&#1090;&#1086;&#1082;&#1086;&#1083;&#1077; rspamc &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1086; &#1086;&#1087;&#1103;&#1090;&#1100; &#1078;&#1077; &#1074; &#1076;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;&#1090;&#1072;&#1094;&#1080;&#1080;.</p>
+
+<h2><a class='u' href='#___top' title='click to go to top of document'
+name="5._(1054)(1073)(1091)(1095)(1077)(1085)(1080)(1077)_rspamd"
+>5.
+&#1054;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1077; rspamd</a></h2>
+
+<p>&#1055;&#1088;&#1086;&#1094;&#1077;&#1089;&#1089; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1103; &#1074;&#1072;&#1078;&#1077;&#1085; &#1076;&#1083;&#1103; &#1082;&#1086;&#1088;&#1088;&#1077;&#1082;&#1090;&#1085;&#1086;&#1081; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080;.
+&#1044;&#1083;&#1103; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103; &#1082;&#1086;&#1084;&#1072;&#1085;&#1076;&#1072; rspamc learn.
+&#1044;&#1083;&#1103; &#1091;&#1082;&#1072;&#1079;&#1072;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072; (&#1082;&#1083;&#1072;&#1089;&#1089;&#1072;) &#1087;&#1080;&#1089;&#1100;&#1084;&#1072; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103; &#1082;&#1083;&#1102;&#1095; -s.
+&#1055;&#1088;&#1080;&#1084;&#1077;&#1088; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103;:</p>
+
+<pre>
+~> rspamc -s WINNOW_HAM learn /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Do rspamc command learn
+Sending 4950 bytes...
+Learn succeed. Sum weight: 128.48
+</pre>
+
+
+<p>&#1042; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074; &#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1082;&#1072;&#1079;&#1099;&#1074;&#1072;&#1090;&#1100; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;,
+&#1094;&#1077;&#1083;&#1099;&#1077; &#1082;&#1072;&#1090;&#1072;&#1083;&#1086;&#1075;&#1080;,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; imap &#1087;&#1072;&#1087;&#1082;&#1080;:</p>
+
+<pre>
+~> rspamc -s WINNOW_SPAM learn imaps:user:cebka:password::host:somehost.rambler.ru:mbox:abuse.spam
+Processing imaps:user:cebka:password::host:mailsupport.rambler.ru:mbox:abuse.spam
+Enter IMAP password:
+Process imap: host: somehost.rambler.ru, mbox: abuse.spam
+Do rspamc command learn
+Sending 382650 bytes...
+Learn succeed. Sum weight: 1850.24
+<skipped>
+</pre>
+
+
+<p>&#1055;&#1088;&#1080; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1080; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086; &#1091;&#1095;&#1080;&#1090;&#1099;&#1074;&#1072;&#1090;&#1100;,
+&#1095;&#1090;&#1086;&#1073;&#1099; &#1082;&#1086;&#1083;&#1080;&#1095;&#1077;&#1089;&#1090;&#1074;&#1086; spam &#1080; ham &#1087;&#1080;&#1089;&#1077;&#1084; &#1073;&#1099;&#1083;&#1086; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1085;&#1086; &#1088;&#1072;&#1074;&#1085;&#1099;&#1084;.
+&#1042;&#1077;&#1089; &#1087;&#1086;&#1082;&#1072;&#1079;&#1099;&#1074;&#1072;&#1077;&#1090; &#1089;&#1091;&#1084;&#1084;&#1072;&#1088;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089; &#1089;&#1083;&#1086;&#1074;&#1086;&#1089;&#1086;&#1095;&#1077;&#1090;&#1072;&#1085;&#1080;&#1081; &#1090;&#1077;&#1082;&#1089;&#1090;&#1072;,
+&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1073;&#1099;&#1083; &#1076;&#1086; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1103; &#1076;&#1072;&#1085;&#1085;&#1099;&#1084; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086;&#1084; (&#1090;&#1086; &#1077;&#1089;&#1090;&#1100;,
+&#1090;&#1086;,
+&#1085;&#1072;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1074;&#1077;&#1083;&#1080;&#1082;&#1072; &#1074;&#1077;&#1088;&#1086;&#1103;&#1090;&#1085;&#1086;&#1089;&#1090;&#1100; &#1087;&#1088;&#1080;&#1085;&#1072;&#1076;&#1083;&#1077;&#1078;&#1085;&#1086;&#1089;&#1090;&#1080; &#1076;&#1072;&#1085;&#1085;&#1086;&#1075;&#1086; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072; &#1082; &#1101;&#1090;&#1086;&#1084;&#1091; &#1082;&#1083;&#1072;&#1089;&#1089;&#1091;).
+&#1055;&#1088;&#1080; &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1077;&#1085;&#1080;&#1080; &#1085;&#1077;&#1074;&#1077;&#1088;&#1085;&#1099;&#1093; &#1089;&#1088;&#1072;&#1073;&#1072;&#1090;&#1099;&#1074;&#1072;&#1085;&#1080;&#1081; &#1089;&#1090;&#1072;&#1090;&#1080;&#1089;&#1090;&#1080;&#1082;&#1080; &#1084;&#1086;&#1078;&#1085;&#1086; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1088;&#1072;&#1079; &#1087;&#1088;&#1080;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; learn &#1082; &#1079;&#1072;&#1076;&#1072;&#1085;&#1085;&#1086;&#1084;&#1091; &#1087;&#1080;&#1089;&#1100;&#1084;&#1091;,
+&#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1103;&#1103; &#1077;&#1075;&#1086; &#1089;&#1091;&#1084;&#1084;&#1072;&#1088;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;.</p>
+
+<h2><a class='u' href='#___top' title='click to go to top of document'
+name="6._(1055)(1086)(1076)(1076)(1077)(1088)(1078)(1082)(1072)_(1080)_(1076)(1072)(1083)(1100)(1085)(1077)(1081)(1096)(1080)(1077)_(1076)(1077)(1081)(1089)(1090)(1074)(1080)(1103)"
+>6.
+&#1055;&#1086;&#1076;&#1076;&#1077;&#1088;&#1078;&#1082;&#1072; &#1080; &#1076;&#1072;&#1083;&#1100;&#1085;&#1077;&#1081;&#1096;&#1080;&#1077; &#1076;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1103;</a></h2>
+
+<p>&#1045;&#1089;&#1083;&#1080; &#1074;&#1099; &#1088;&#1077;&#1096;&#1080;&#1083;&#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; rspamd &#1076;&#1083;&#1103; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1080; &#1074;&#1072;&#1096;&#1077;&#1081; &#1087;&#1086;&#1095;&#1090;&#1099;,
+&#1090;&#1086; &#1083;&#1091;&#1095;&#1096;&#1080;&#1084; &#1080;&#1089;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082;&#1086;&#1084; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1080; &#1073;&#1091;&#1076;&#1077;&#1090; &#1103;&#1074;&#1083;&#1103;&#1090;&#1100;&#1089;&#1103; &#1076;&#1086;&#1082;&#1091;&#1084;&#1077;&#1085;&#1090;&#1072;&#1094;&#1080;&#1103; &#1082; rspamd,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1099; lua &#1087;&#1083;&#1072;&#1075;&#1080;&#1085;&#1086;&#1074;: etc/plugins/lua.
+&#1062;&#1077;&#1083;&#1100;&#1102; &#1078;&#1077; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1089;&#1090;&#1072;&#1090;&#1100;&#1080; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1089;&#1103; &#1086;&#1079;&#1085;&#1072;&#1082;&#1086;&#1084;&#1083;&#1077;&#1085;&#1080;&#1077; &#1089; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1099;&#1084;&#1080; &#1087;&#1088;&#1080;&#1077;&#1084;&#1072;&#1084;&#1080; &#1087;&#1086; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1077;,
+&#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1102; &#1080; &#1086;&#1073;&#1091;&#1095;&#1077;&#1085;&#1080;&#1102; rspamd,
+&#1072; &#1090;&#1072;&#1082;&#1078;&#1077; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077; &#1087;&#1088;&#1077;&#1080;&#1084;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074; rspamd &#1087;&#1086; &#1089;&#1088;&#1072;&#1074;&#1085;&#1077;&#1085;&#1080;&#1102; &#1089; SA.
+&#1045;&#1089;&#1083;&#1080; &#1085;&#1072; &#1083;&#1102;&#1073;&#1086;&#1084; &#1101;&#1090;&#1072;&#1087;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089; rspamd &#1091; &#1074;&#1072;&#1089; &#1074;&#1086;&#1079;&#1085;&#1080;&#1082;&#1072;&#1077;&#1090; &#1087;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084;&#1072;,
+&#1090;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1086; &#1085;&#1077;&#1081; &#1089;&#1086;&#1086;&#1073;&#1097;&#1080;&#1090;&#1100; &#1084;&#1085;&#1077;: <b>vsevolod@highsecure.ru</b> &#1080;&#1083;&#1080; &#1078;&#1077; &#1074; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1088;&#1072;&#1089;&#1089;&#1099;&#1083;&#1082;&#1080; rspamd &#1085;&#1072; sourceforge (&#1072;&#1085;&#1075;&#1083;&#1086;&#1075;&#1086;&#1074;&#1086;&#1088;&#1103;&#1097;&#1080;&#1081;): <b>rspamd-devel@lists.sourceforge.net</b>.
+&#1057;&#1072;&#1084;&#1072; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072; rspamd &#1085;&#1072;&#1093;&#1086;&#1076;&#1080;&#1090;&#1089;&#1103; &#1074; &#1089;&#1086;&#1089;&#1090;&#1086;&#1103;&#1085;&#1080;&#1080; &#1073;&#1077;&#1090;&#1072;-&#1074;&#1077;&#1088;&#1089;&#1080;&#1080;,
+&#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091; &#1074;&#1072;&#1096;&#1072; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100; &#1074; &#1090;&#1077;&#1089;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1080; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1099; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1086;&#1085;&#1072;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1080; &#1073;&#1091;&#1076;&#1091;&#1090; &#1085;&#1077;&#1086;&#1094;&#1077;&#1085;&#1080;&#1084;&#1099; &#1074; &#1088;&#1072;&#1079;&#1074;&#1080;&#1090;&#1080;&#1080; rspamd.</p>
+
+<!-- end doc -->
+
+</body></html>
diff --git a/doc/why-rspamd.pod b/doc/why-rspamd.pod
new file mode 100644
index 000000000..0b2c71cb8
--- /dev/null
+++ b/doc/why-rspamd.pod
@@ -0,0 +1,333 @@
+=encoding utf8
+
+=head1 Фильтрация спама при помощи системы rspamd.
+
+=head2 1. История и предпосылки создания.
+
+Мы долгое время использовали для фильтрации спама spamassassin, однако, при
+наших объемах почтового трафика (9-10 миллионов писем в сутки) spamassassin
+не обеспечивал достаточной производительности. После анализа исходного кода и
+принципов работы было выявлены следующие "врожденные" проблемы SA:
+
+=over
+
+=item *
+обработка письма осуществляется набором регулярных выражений, однако,
+количество этих выражений слишком велико и является ключевым моментом
+задумчивости SA (например, для извлечения received заголовков письма, SA
+проверяет оные на соответствие всем ему известным MTA, очевидно, что такое
+действие не является оптимальным);
+
+=item *
+нет возможности явно получить ip адрес, с которого нам отправили письмо (в SA
+это делается парсом received заголовков, что я лично не считаю правильным, а тем
+более оптимальным способом, так как MTA всегда знает, откуда ему пришло данное
+письмо)
+
+=item *
+нет возможности передачи спам фильтру данных SMTP диалога
+
+=item *
+MIME парсинг писем очень медленный, так как опять же сделан на базе регулярных
+выражений
+
+=back
+
+В итоге можно сказать, что основная проблема SA - это излишняя увлеченность
+авторов регулярными выражениями и отсутствие оптимизации. В итоге, в качестве
+базовых принципов создания rspamd были принципы оптимизации времени обработки
+писем, в числе которых:
+
+=over
+
+=item *
+полностью асинхронная работа с сетью (на базе libevent), в том числе DNS запросы
+и работа с http
+
+=item *
+быстрые механизмы выделения памяти
+
+=item *
+компиляция всех регулярных выражений и вызов только тех из них, которые наиболее
+возможны (то есть, имеется механизм ведения статистики срабатывания различных
+правил, и при обработке следующего письма учитывается обработка предыдущих, что
+позволяет максимально быстро провести основные тесты)
+
+=item *
+расширяемая архитектура: возможность написания плагинов на си, lua, возможность
+добавления новых типов фильтров, расширений протокола rspamc, возможность
+добавления новых типов статистических алгоритмов, алгоритмов нормализации и
+парсинга текстов
+
+=item *
+возможность динамической загрузки различных настроек, списков ip адресов и
+прочей информации через HTTP протокол с поддержкой даты модификации таких
+списков
+
+=item *
+использование везде, где возможно, специализированных конечных автоматов для
+разбора и анализа текстов
+
+=item *
+использование быстрого mime парсера gmime
+
+=back
+
+В результате перехода с SA на rspamd последний показал в среднем в 10 раз более
+быструю обработку сообщений. В данный момент rspamd имеет статус бета версии, но
+вполне пригоден для работы.
+
+=head2 2. Установка и настройка rspamd
+
+Для сборки rspamd вам потребуются:
+
+=over
+
+=item * libevent
+L<http://www.monkey.org/~provos/libevent/> - библиотека для асинхронной
+обработки событий
+
+=item * glib
+L<http://library.gnome.org/devel/glib/> - библиотека общего назначения,
+содержащая многие вещи, о которых разработчики libc, увы, забыли (glib не
+является графической библиотекой, хотя и используется, например, gtk)
+
+=item * gmime
+L<http://spruce.sourceforge.net/gmime/> - MIME парсер на базе библиотеки glib
+
+=item * lua
+L<http://www.lua.org/> - встраиваемый скриптовый язык (в принципе, наличие lua
+необязательно, но без lua многий функционал rspamd останется нереализованным)
+
+=item * perl
+L<http://www.perl.org/> - на перле написан, например, консольный клиент rspamc,
+распознаватель редиректов в URL'ях, поэтому наличие перла в системе крайне
+желательно
+
+=item * cmake
+L<http://www.cmake.org/> - система сборки, которая позволяет rspamd собираться
+(по крайней мере, в теории) на всех Posix совместимых системах. Использовать
+стандартные в данной ситуации autotools я не стал, так как считаю их самой
+неудобной в использовании системой сборки исходников, которую можно только
+придумать.
+
+=item * mercurial
+L<http://mercurial.selenic.com/> - система управления версиями (SCM),
+используемая для разработки rspamd. Так как в настоящее время rspamd находится в
+состоянии бета-версии, то релизы выходят нечасто и зачастую являются менее
+стабильными, чем текущая версия в репозитории, поэтому для установки rspamd
+лучше использовать версию непосредственно из репозитория.
+
+=back
+
+После установки всех требуемых программ и библиотек можно приступить
+непосредственно к установке rspamd.
+
+=over
+
+=item 1
+скачиваем текущее состояние репозитория: $ hg clone http://rspamd.hg.sourceforge.net:8000/hgroot/rspamd/rspamd
+
+=item 2
+конфигурируем rspamd: $ cd rspamd && cmake .
+(при необходимости изменить параметры можно вначале воспользоваться командой
+ccmake .)
+
+=item 3
+собираем: $ make
+
+=item 4
+устанавливаем: # make install
+
+=back
+
+=head3 Конфигурирование
+
+В процессе установки ставятся конфигурационные файлы по умолчанию в каталог
+{PREFIX}/etc. При этом, в каталог etc/rspamd устанавливаются правила по
+умолчанию (headers, html, drugs, loto и.т.п.), а в каталог
+etc/rspamd.conf.sample устанавливается конфигурационный файл по умолчанию. Его
+можно скопировать в файл etc/rspamd.conf и отредактировать в соответствии с
+собственными предпочтениями. Конфигурационный файл по умолчанию снабжен
+комментариями к каждой директиве, а также подробно описан в документации к
+rspamd, находящейся в каталоге исходников doc/rspamd.pdf. В данном же
+руководстве подробно изложен принцип работы rspamd и настройки всех модулей
+системы. Для базовой работы достаточно исправить пути к файлам логов, пидфайлу,
+а также обратить внимание на разделы factors и classifiers. Остановлюсь на этом
+несколько подробнее.
+
+Все директивы rspamd имеют формат param = value; где символ ';' является
+признаком окончания директивы. Также файл разбит на секции, каждая секция имеет
+имя (например worker {}) и внутренние директвы внутри фигурных скобок. После
+каждой секции также обязателен символ ';'. Также каждый модуль имеет особый
+формат секции:
+
+=begin html
+
+<pre>
+.module 'name' {
+ param = value;
+};
+</pre>
+
+=end html
+
+Все это может показаться сложным на первый взгляд, но это позволяет лучше
+структурировать файл и облегчает расширяемость rspamd. Для первоначальной
+настройки достаточно обратить внимание на раздел factors, который описывает веса
+различных правил, раздел metric, который описывает максимальный вес, чтобы
+письмо считалось спамом, а также на раздел classifiers. Раздел classifiers
+обеспечивает работу статистических алгоритмов. В rspamd в настоящее время
+реализован алгоритм winnow, который работает следующим образом:
+
+=over
+
+=item 1
+текст разбивается на слова, также выделяется окно в пять слов
+
+=item 2
+окно перемещается по словам, при этом выделяются словосочетания по определенному
+алгоритму и вычисляется их хеш
+
+=item 3
+каждый полученный таким образом хеш проверяется в файле статистики, в котором
+хранятся хеши и их веса, если хеш найден, то его вес добавляется к суммарному
+весу данного файла
+
+=item 4
+файл, набравший в сумме больше веса считается классом письма
+
+=back
+
+Основная идея такого подхода в определении по словосочетаниям, к какому классу
+принадлежит данное письмо. В SA для этой цели используется вероятностный
+алгоритм bayes, который достаточно похож на вышеописанный, но считает не веса, а
+вероятности. Эффективность каждого из алгоритмов примерно одинакова и зависит в
+основном от эффективности обучения. Однако, в отличие от SA, rspamd использует
+не отдельные слова, а словосочетания, что повышает его эффективность. В секции
+classifiers можно установить различные классы писем, а далее в секции factors
+указать их вес (задав, например, для заведомо безвредных писем - ham -
+отрицательный вес). Размер файлов статистики должен быть разумно большим для
+хранения как можно большего числа хешей. Однако, необходимо учитывать, что эти
+файлы целиком загружаются в память (хотя, реализация отображения файла в памяти
+в различных ОС допускает загрузку и выгрузку страниц этого файла в своп системы,
+но эффективность этого довольно низка), поэтому необходимо соизмерять размер
+оперативной памяти и файлов статистики.
+
+=head2 4. Подключение и проверка работоспособности rspamd
+
+Для проверки работы системы rspamd проще всего воспользоваться командой rspamc:
+
+=begin html
+
+<pre>
+hostname:~> rspamc stat
+Do rspamc command stat
+Messages scanned: 1234040
+Messages learned: 59151
+Connections count: 1176623
+Control connections count: 59152
+Pools allocated: 2530714
+Pools freed: 2530699
+Bytes allocated: 66991793394
+Memory chunks allocated: 6453232
+Shared chunks allocated: 3
+Chunks freed: 6453090
+Oversized chunks: 468849
+Statfile: WINNOW_HAM (version 69); length: 100.0 MB; free blocks: 4563488; total blocks: 6553581; free: 69.63%
+Statfile: WINNOW_SPAM (version 36383); length: 100.0 MB; free blocks: 760504; total blocks: 6553581; free: 11.60%
+</pre>
+
+=end html
+
+В данном случае выводится общая статистика. Такого же эффекта можно достигнуть
+командой telnet на порт процесса controller (он описан в конфигурационном файле
+в секции worker, type у которого controller). По умолчанию это порт 11334 на
+адресе 127.0.0.1. Работу правил и статистики можно также проверить по команде
+rspamc:
+
+=begin html
+
+<pre>
+~> rspamc symbols /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Sending 4950 bytes...
+RSPAMD/1.1 0 OK
+Metric: default; False; -3.35 / 10.00 / 0.00
+Symbol: WINNOW_HAM; 5.00
+Symbol: RECEIVED_RBL; pbl.spamhaus.org,insecure-bl.rambler.ru
+Urls:
+</pre>
+
+=end html
+
+В данном случае показываются баллы, набранные письмом, а также дополнительная
+информация. Подробнее о протоколе rspamc в документации (doc/rspamd.pdf). Для
+подключения rspamd к MTA лучше всего использовать milter, если ваш MTA postfix
+или sendmail. В качестве milter'а можно использовать, например, rmilter:
+L<https://www.milter.org/milter/71/>. О настройке postfix + rmilter мной была
+написана следующая заметка: L<http://cebka.pp.ru/blog/2009/02/-nginxpostfixrmilter.html>
+Для MTA exim можно воспользоваться файлом local_scan.c в каталоге contrib/exim.
+Инструкции по его установке описаны в самом файле, однако, это требует
+пересборки MTA. Также rspamd "понимает" протокол SA, поэтому для подключения
+rspamd можно использовать те же средства, что и для подключения к MTA SA.
+
+Подробнее о командах rspamc и протоколе rspamc написано опять же в документации.
+
+=head2 5. Обучение rspamd
+
+Процесс обучения важен для корректной работы статистики. Для обучения
+используется команда rspamc learn. Для указания файла (класса) письма
+используется ключ -s. Пример использования:
+
+=begin html
+
+<pre>
+~> rspamc -s WINNOW_HAM learn /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Do rspamc command learn
+Sending 4950 bytes...
+Learn succeed. Sum weight: 128.48
+</pre>
+
+=end html
+
+В качестве параметров можно указывать несколько файлов, целые каталоги, а также
+imap папки:
+
+=begin html
+
+<pre>
+~> rspamc -s WINNOW_SPAM learn imaps:user:cebka:password::host:somehost.rambler.ru:mbox:abuse.spam
+Processing imaps:user:cebka:password::host:mailsupport.rambler.ru:mbox:abuse.spam
+Enter IMAP password:
+Process imap: host: somehost.rambler.ru, mbox: abuse.spam
+Do rspamc command learn
+Sending 382650 bytes...
+Learn succeed. Sum weight: 1850.24
+<skipped>
+</pre>
+
+=end html
+
+При обучении необходимо учитывать, чтобы количество spam и ham писем было
+примерно равным. Вес показывает суммарный вес словосочетаний текста, который был
+до обучения данным письмом (то есть, то, насколько велика вероятность
+принадлежности данного письма к этому классу). При обнаружении неверных
+срабатываний статистики можно несколько раз применить learn к заданному письму,
+проверяя его суммарный вес.
+
+=head2 6. Поддержка и дальнейшие действия
+
+Если вы решили использовать rspamd для обработки вашей почты, то лучшим
+источником информации будет являться документация к rspamd, а также примеры lua
+плагинов: etc/plugins/lua. Целью же данной статьи является ознакомление с
+основными приемами по установке, конфигурированию и обучению rspamd, а также
+описание преимуществ rspamd по сравнению с SA. Если на любом этапе работы с
+rspamd у вас возникает проблема, то можно о ней сообщить мне:
+B<vsevolod@highsecure.ru> или же в список рассылки rspamd на sourceforge
+(англоговорящий): B<rspamd-devel@lists.sourceforge.net>. Сама система
+rspamd находится в состоянии бета-версии, поэтому ваша помощь в тестировании и
+запросы функциональности будут неоценимы в развитии rspamd.
diff --git a/doc/why-rspamd.txt b/doc/why-rspamd.txt
new file mode 100644
index 000000000..dd0b09637
--- /dev/null
+++ b/doc/why-rspamd.txt
@@ -0,0 +1,240 @@
+Фильтрация спама при помощи системы rspamd.
+ 1. История и предпосылки создания.
+ Мы долгое время использовали для фильтрации спама spamassassin, однако, при
+ наших объемах почтового трафика (9-10 миллионов писем в сутки) spamassassin
+ не обеспечивал достаточной производительности. После анализа исходного кода
+ и принципов работы было выявлены следующие "врожденные" проблемы SA:
+
+ * обработка письма осуществляется набором регулярных выражений, однако,
+ количество этих выражений слишком велико и является ключевым моментом
+ задумчивости SA (например, для извлечения received заголовков письма, SA
+ проверяет оные на соответствие всем ему известным MTA, очевидно, что
+ такое действие не является оптимальным);
+
+ * нет возможности явно получить ip адрес, с которого нам отправили письмо
+ (в SA это делается парсом received заголовков, что я лично не считаю
+ правильным, а тем более оптимальным способом, так как MTA всегда знает,
+ откуда ему пришло данное письмо)
+
+ * нет возможности передачи спам фильтру данных SMTP диалога
+
+ * MIME парсинг писем очень медленный, так как опять же сделан на базе
+ регулярных выражений
+
+ В итоге можно сказать, что основная проблема SA - это излишняя увлеченность
+ авторов регулярными выражениями и отсутствие оптимизации. В итоге, в
+ качестве базовых принципов создания rspamd были принципы оптимизации времени
+ обработки писем, в числе которых:
+
+ * полностью асинхронная работа с сетью (на базе libevent), в том числе DNS
+ запросы и работа с http
+
+ * быстрые механизмы выделения памяти
+
+ * компиляция всех регулярных выражений и вызов только тех из них, которые
+ наиболее возможны (то есть, имеется механизм ведения статистики
+ срабатывания различных правил, и при обработке следующего письма
+ учитывается обработка предыдущих, что позволяет максимально быстро
+ провести основные тесты)
+
+ * расширяемая архитектура: возможность написания плагинов на си, lua,
+ возможность добавления новых типов фильтров, расширений протокола
+ rspamc, возможность добавления новых типов статистических алгоритмов,
+ алгоритмов нормализации и парсинга текстов
+
+ * возможность динамической загрузки различных настроек, списков ip адресов
+ и прочей информации через HTTP протокол с поддержкой даты модификации
+ таких списков
+
+ * использование везде, где возможно, специализированных конечных автоматов
+ для разбора и анализа текстов
+
+ * использование быстрого mime парсера gmime
+
+ В результате перехода с SA на rspamd последний показал в среднем в 10 раз
+ более быструю обработку сообщений. В данный момент rspamd имеет статус бета
+ версии, но вполне пригоден для работы.
+
+ 2. Установка и настройка rspamd
+ Для сборки rspamd вам потребуются:
+
+ libevent <http://www.monkey.org/~provos/libevent/> - библиотека для
+ асинхронной обработки событий
+ glib <http://library.gnome.org/devel/glib/> - библиотека общего назначения,
+ содержащая многие вещи, о которых разработчики libc, увы, забыли (glib не
+ является графической библиотекой, хотя и используется, например, gtk)
+ gmime <http://spruce.sourceforge.net/gmime/> - MIME парсер на базе
+ библиотеки glib
+ lua <http://www.lua.org/> - встраиваемый скриптовый язык (в принципе,
+ наличие lua необязательно, но без lua многий функционал rspamd останется
+ нереализованным)
+ perl <http://www.perl.org/> - на перле написан, например, консольный клиент
+ rspamc, распознаватель редиректов в URL'ях, поэтому наличие перла в системе
+ крайне желательно
+ cmake <http://www.cmake.org/> - система сборки, которая позволяет rspamd
+ собираться (по крайней мере, в теории) на всех Posix совместимых системах.
+ Использовать стандартные в данной ситуации autotools я не стал, так как
+ считаю их самой неудобной в использовании системой сборки исходников,
+ которую можно только придумать.
+ mercurial <http://mercurial.selenic.com/> - система управления версиями
+ (SCM), используемая для разработки rspamd. Так как в настоящее время rspamd
+ находится в состоянии бета-версии, то релизы выходят нечасто и зачастую
+ являются менее стабильными, чем текущая версия в репозитории, поэтому для
+ установки rspamd лучше использовать версию непосредственно из репозитория.
+
+ После установки всех требуемых программ и библиотек можно приступить
+ непосредственно к установке rspamd.
+
+ 1) скачиваем текущее состояние репозитория: $ hg clone
+ http://rspamd.hg.sourceforge.net:8000/hgroot/rspamd/rspamd
+ 2) конфигурируем rspamd: $ cd rspamd && cmake . (при необходимости изменить
+ параметры можно вначале воспользоваться командой ccmake .)
+ 3) собираем: $ make
+ 4) устанавливаем: # make install
+
+ Конфигурирование
+ В процессе установки ставятся конфигурационные файлы по умолчанию в каталог
+ {PREFIX}/etc. При этом, в каталог etc/rspamd устанавливаются правила по
+ умолчанию (headers, html, drugs, loto и.т.п.), а в каталог
+ etc/rspamd.conf.sample устанавливается конфигурационный файл по умолчанию.
+ Его можно скопировать в файл etc/rspamd.conf и отредактировать в
+ соответствии с собственными предпочтениями. Конфигурационный файл по
+ умолчанию снабжен комментариями к каждой директиве, а также подробно описан
+ в документации к rspamd, находящейся в каталоге исходников doc/rspamd.pdf. В
+ данном же руководстве подробно изложен принцип работы rspamd и настройки
+ всех модулей системы. Для базовой работы достаточно исправить пути к файлам
+ логов, пидфайлу, а также обратить внимание на разделы factors и classifiers.
+ Остановлюсь на этом несколько подробнее.
+
+ Все директивы rspamd имеют формат param = value; где символ ';' является
+ признаком окончания директивы. Также файл разбит на секции, каждая секция
+ имеет имя (например worker {}) и внутренние директвы внутри фигурных скобок.
+ После каждой секции также обязателен символ ';'. Также каждый модуль имеет
+ особый формат секции:
+
+.module 'name' {
+ param = value;
+};
+ Все это может показаться сложным на первый взгляд, но это позволяет лучше
+ структурировать файл и облегчает расширяемость rspamd. Для первоначальной
+ настройки достаточно обратить внимание на раздел factors, который описывает
+ веса различных правил, раздел metric, который описывает максимальный вес,
+ чтобы письмо считалось спамом, а также на раздел classifiers. Раздел
+ classifiers обеспечивает работу статистических алгоритмов. В rspamd в
+ настоящее время реализован алгоритм winnow, который работает следующим
+ образом:
+
+ 1) текст разбивается на слова, также выделяется окно в пять слов
+ 2) окно перемещается по словам, при этом выделяются словосочетания по
+ определенному алгоритму и вычисляется их хеш
+ 3) каждый полученный таким образом хеш проверяется в файле статистики, в
+ котором хранятся хеши и их веса, если хеш найден, то его вес добавляется к
+ суммарному весу данного файла
+ 4) файл, набравший в сумме больше веса считается классом письма
+
+ Основная идея такого подхода в определении по словосочетаниям, к какому
+ классу принадлежит данное письмо. В SA для этой цели используется
+ вероятностный алгоритм bayes, который достаточно похож на вышеописанный, но
+ считает не веса, а вероятности. Эффективность каждого из алгоритмов примерно
+ одинакова и зависит в основном от эффективности обучения. Однако, в отличие
+ от SA, rspamd использует не отдельные слова, а словосочетания, что повышает
+ его эффективность. В секции classifiers можно установить различные классы
+ писем, а далее в секции factors указать их вес (задав, например, для
+ заведомо безвредных писем - ham - отрицательный вес). Размер файлов
+ статистики должен быть разумно большим для хранения как можно большего числа
+ хешей. Однако, необходимо учитывать, что эти файлы целиком загружаются в
+ память (хотя, реализация отображения файла в памяти в различных ОС допускает
+ загрузку и выгрузку страниц этого файла в своп системы, но эффективность
+ этого довольно низка), поэтому необходимо соизмерять размер оперативной
+ памяти и файлов статистики.
+
+ 4. Подключение и проверка работоспособности rspamd
+ Для проверки работы системы rspamd проще всего воспользоваться командой
+ rspamc:
+
+hostname:~> rspamc stat
+Do rspamc command stat
+Messages scanned: 1234040
+Messages learned: 59151
+Connections count: 1176623
+Control connections count: 59152
+Pools allocated: 2530714
+Pools freed: 2530699
+Bytes allocated: 66991793394
+Memory chunks allocated: 6453232
+Shared chunks allocated: 3
+Chunks freed: 6453090
+Oversized chunks: 468849
+Statfile: WINNOW_HAM (version 69); length: 100.0 MB; free blocks: 4563488; total blocks: 6553581; free: 69.63%
+Statfile: WINNOW_SPAM (version 36383); length: 100.0 MB; free blocks: 760504; total blocks: 6553581; free: 11.60%
+ В данном случае выводится общая статистика. Такого же эффекта можно
+ достигнуть командой telnet на порт процесса controller (он описан в
+ конфигурационном файле в секции worker, type у которого controller). По
+ умолчанию это порт 11334 на адресе 127.0.0.1. Работу правил и статистики
+ можно также проверить по команде rspamc:
+
+~> rspamc symbols /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Sending 4950 bytes...
+RSPAMD/1.1 0 OK
+Metric: default; False; -3.35 / 10.00 / 0.00
+Symbol: WINNOW_HAM; 5.00
+Symbol: RECEIVED_RBL; pbl.spamhaus.org,insecure-bl.rambler.ru
+Urls:
+ В данном случае показываются баллы, набранные письмом, а также
+ дополнительная информация. Подробнее о протоколе rspamc в документации
+ (doc/rspamd.pdf). Для подключения rspamd к MTA лучше всего использовать
+ milter, если ваш MTA postfix или sendmail. В качестве milter'а можно
+ использовать, например, rmilter: <https://www.milter.org/milter/71/>. О
+ настройке postfix + rmilter мной была написана следующая заметка:
+ <http://cebka.pp.ru/blog/2009/02/-nginxpostfixrmilter.html> Для MTA exim
+ можно воспользоваться файлом local_scan.c в каталоге contrib/exim.
+ Инструкции по его установке описаны в самом файле, однако, это требует
+ пересборки MTA. Также rspamd "понимает" протокол SA, поэтому для подключения
+ rspamd можно использовать те же средства, что и для подключения к MTA SA.
+
+ Подробнее о командах rspamc и протоколе rspamc написано опять же в
+ документации.
+
+ 5. Обучение rspamd
+ Процесс обучения важен для корректной работы статистики. Для обучения
+ используется команда rspamc learn. Для указания файла (класса) письма
+ используется ключ -s. Пример использования:
+
+~> rspamc -s WINNOW_HAM learn /tmp/mailman.eml
+Processing /tmp/mailman.eml
+Process file: /tmp/mailman.eml
+Do rspamc command learn
+Sending 4950 bytes...
+Learn succeed. Sum weight: 128.48
+ В качестве параметров можно указывать несколько файлов, целые каталоги, а
+ также imap папки:
+
+~> rspamc -s WINNOW_SPAM learn imaps:user:cebka:password::host:somehost.rambler.ru:mbox:abuse.spam
+Processing imaps:user:cebka:password::host:mailsupport.rambler.ru:mbox:abuse.spam
+Enter IMAP password:
+Process imap: host: somehost.rambler.ru, mbox: abuse.spam
+Do rspamc command learn
+Sending 382650 bytes...
+Learn succeed. Sum weight: 1850.24
+<skipped>
+ При обучении необходимо учитывать, чтобы количество spam и ham писем было
+ примерно равным. Вес показывает суммарный вес словосочетаний текста, который
+ был до обучения данным письмом (то есть, то, насколько велика вероятность
+ принадлежности данного письма к этому классу). При обнаружении неверных
+ срабатываний статистики можно несколько раз применить learn к заданному
+ письму, проверяя его суммарный вес.
+
+ 6. Поддержка и дальнейшие действия
+ Если вы решили использовать rspamd для обработки вашей почты, то лучшим
+ источником информации будет являться документация к rspamd, а также примеры
+ lua плагинов: etc/plugins/lua. Целью же данной статьи является ознакомление
+ с основными приемами по установке, конфигурированию и обучению rspamd, а
+ также описание преимуществ rspamd по сравнению с SA. Если на любом этапе
+ работы с rspamd у вас возникает проблема, то можно о ней сообщить мне:
+ <mailto:vsevolod@highsecure.ru> или же в список рассылки rspamd на
+ sourceforge (англоговорящий): <mailto:rspamd-devel@lists.sourceforge.net>.
+ Сама система rspamd находится в состоянии бета-версии, поэтому ваша помощь в
+ тестировании и запросы функциональности будут неоценимы в развитии rspamd.
+