<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GQ&#039;s blog &#187; Интернет</title>
	<atom:link href="http://gq.net.ru/tag/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82/feed/" rel="self" type="application/rss+xml" />
	<link>http://gq.net.ru</link>
	<description>Next step is the world domination...</description>
	<lastBuildDate>Tue, 06 Jul 2010 13:57:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Авангард интернет-банкинг vs. Linux</title>
		<link>http://gq.net.ru/2010/05/08/avangard-ru-vs-linux/</link>
		<comments>http://gq.net.ru/2010/05/08/avangard-ru-vs-linux/#comments</comments>
		<pubDate>Fri, 07 May 2010 22:35:25 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Авангард]]></category>
		<category><![CDATA[Банк]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=421</guid>
		<description><![CDATA[Садись, малыш, сегодня я расскажу тебе как пользоваться интернет-банкингом Авангарда в Линуксе. Итак ты являешься клиентом банка Авангард. У тебя должны быть: логин и пароль от интернет-банкинга; карточка с одноразовыми паролями; флэшка с ключом ЭЦП. С первыми двумя пунктами всё просто: логин с паролем позволяют зайти в веб-интерфейс и получить любую информацию. Если требуется выполнить [...]]]></description>
			<content:encoded><![CDATA[<p>Садись, малыш, сегодня я расскажу тебе как пользоваться интернет-банкингом Авангарда в Линуксе.</p>
<p>Итак ты являешься клиентом банка Авангард. У тебя должны быть:</p>
<ul>
<li>логин и пароль от интернет-банкинга;</li>
<li>карточка с одноразовыми паролями;</li>
<li>флэшка с ключом ЭЦП.</li>
</ul>
<p>С первыми двумя пунктами всё просто: логин с паролем позволяют зайти в веб-интерфейс и получить любую информацию. Если требуется выполнить типовой платеж, то раз в сеанс будет запрошен одноразовый пароль с карточки. Самое интересное происходит в ситуации, когда требуется выполнить какое-либо действие, которое по законодательству требует твоей подписи. Например, хочется открыть вклад. Или поменять какой-нибудь лимит для карточки. Или перевести миллионы в другой банк. Казалось бы надо идти в офис и там писать заявление, но не всё так страшно: в нашей самой лучшей на свете стране есть закон об Электронных Цифровых Подписях и Авангард как раз одну такую ЭЦП с православным ГОСТовским криптоключем внутри тебе сгенерировал.</p>
<p>Но тут-то и кроется подстава: софт, конечно же, кривой. Ну как не то чтобы совсем уж, чего обижать авторов, но не без забавностей.</p>
<p>Для того, чтобы проверить работу цифровой подписи можно попробовать изменить какой-нибудь лимит на закладке &#8220;Справочники/Лимиты по картам&#8221;.</p>
<p>Во-первых, для работы ЭЦП требуется java-plugin. Не знаю, как там с icedtea (или как там оно зовется), хотя вроде где-то писали, что и он работает, но я не стал оригинальничать и поставил java-plugin от некогда славной фирмы SUN (пакет sun-java6-plugin).</p>
<p>И ничего не заработало. Честно сказать, я это заметил еще месяца полтора назад, что не работают у меня java-апплеты, но списал это на то, что где-то прописалась какая альтернативная джава из gcj или еще какого проекта, и забил. А тут занялся вопросом серьезно &#8211; сносил, переставлял&#8230; Ничего не помогает. Вместо апплета выдает окошко с надписью &#8220;Error. Click for detail&#8221;, по клику на которое вызывается java-console с текстом о Class not found и прочих эксепшнах, но главное с ключевой строчкой: &#8220;Caused by: java.net.ConnectException: Network is unreachable&#8221;</p>
<p>Небольшое расследование вывело на следующую проблему: <a href=http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560238>#560238</a>. Если коротко, то суть ее состоит в том, что Marco d&#8217;Itri добавил в пакет netbase установку sysctl&#8217;я ломающего некоторый &#8220;кривой&#8221; софт. Не будем сейчас обсуждать Марко и его маму, равно как кривость сановской джавы и информационность RFC 3493. Просто факт остается фактом. Сейчас сановская джава не сможет подключиться к сети при установленном net.ipv6.bindv6only=1</p>
<p>Так что первым нашим шагом будет открытие /etc/sysctl.d/bindv6only.conf и установку там net.ipv6.bindv6only в значение 0. После чего стоит сказать &#8220;/etc/init.d/procps start&#8221; Ну это всё пока что актуально только на Debian Squeeze, остальным повезло. (Пока?)</p>
<p>Теперь апплет-таки запускается и, если тебе особенно повезло, радостно сообщает: &#8220;Обнаружение программы&#8230; Err&#8221; с очень содержательным пояснением: &#8220;Ошибка обнаружения/скачивания программы шифрования: invalid stream header: 0D0A0D0A&#8221;</p>
<p>Тут всё просто и очевидно (да, это сарказм): открываешь настройки IceWeasel/FireFox и разрешаешь там &#8220;Third-party cookies&#8221;. Они там в разных версиях в по разному называются/находятся, так что проще всего открыть &#8220;about:config&#8221; и там поставить значение переменной network.cookie.cookieBehavior в 0. Кстати эта проблема, наверняка должна проявляться и под виндой.</p>
<p>Едем дальше: аппет сообщает &#8220;Ошибка выполнения программы подписи  : Cannot run program &#8220;c:\avn_ib/avn_cc.exe&#8221;: java.io.IOException: error=13, Permission denied&#8221;. Если посмотреть в домашний каталог пользователя (а именно он является текущим для java-приложений, запускаемых из браузера), то мы радостно обнаружим там каталог &#8220;c:\avn_ib&#8221; внутри которого действительно есть неисполняемый файл avn_cc.exe</p>
<p>Как ты уже догадался, гений русских программистов бесконечен. Java-апплет всего-лишь является <s>троян-дроппером</s>загрузчиком для настоящей боевой криптографии. Которая написана, естественно под винду. Ну тут всё просто. Он хочет запускать этот бинарник? Нет проблем! Чтобы работали виндовые программы, ставим wine. Чтобы бинарник можно было запускать напрямую, ставим binfmt-support. (Вообще он рекомендуется вайном, но мало ли, у тебя он не стоит. Ну и в других дистрибутивах пакет может называться иначе, ты уж сам разберись, главное чтобы работал прямой запуск виндовых прог: не только &#8220;wine prog.exe&#8221;, но и просто &#8220;./prog.exe&#8221;) Дальше, понятно, надо сделать бинарник avn_cc.exe исполняемым.</p>
<p>Нет, это еще не всё. Теперь апплет выдает нам не менее экзистенциальное &#8220;Ошибка выполнения программы подписи: ret 2 команда &lt;c:\avn_ib/avn_cc.exe c:\avn_ib/avn_clb_sign.in&gt;&#8221; Надо немного подумать: чтобы бинарник можно было запустить из вайна, он должен быть доступен внутри виндового окружения. А какой путь сейчас у этого бинарника? Правильно Z:\home\user\c:\avn_ib\avn_cc.exe В общем не бывает таких путей в виндовсе. Решаем всё просто:</p>
<pre>mv ~/c:\\avn_ib ~/.wine/drive_c/avn_ib&amp;&amp;ln -s ~/.wine/drive_c/avn_ib ~/c:\\avn_ib</pre>
<p>Пробуем еще раз&#8230; О чудо! Крипто-хрень спрашивает нас где лежит приватный ключик. Ну теперь достаточно воткнуть флэшку с ключом, примонтировать и оно всё само подпишет.</p>
<p>Велик русский Левша. Умеет подковать англицкую джаву.</p>
<p>PS А Авангард и его интернет-банкинг действительно хорош. Ну и MasterCard.Metro у него по самым адекватным тарифам. В общем рекомендую. Кстати, обещают подружиться до конца года(?) с московским наземным транспортом и питерской подземкой.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2010/05/08/avangard-ru-vs-linux/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Сколько стоит информационный шум?</title>
		<link>http://gq.net.ru/2008/12/10/how-much-is-the-fish/</link>
		<comments>http://gq.net.ru/2008/12/10/how-much-is-the-fish/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 20:37:54 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Блоги]]></category>
		<category><![CDATA[Деньги]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Спам]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=259</guid>
		<description><![CDATA[В последнее время появилось огромное количество &#8220;блогов&#8221;, на всякие странные темы. Вроде &#8220;Записки теоретика-культуролога&#8221;, &#8220;Газосварочные работы и не только&#8221;, &#8220;Всё про Анджелину Джоли&#8221;, &#8220;800 блюд из конского щавеля&#8221; и т.п. Туда пишутся малоадекватные никому не интересные простыни, явно спертые из каких-то книжек. А еще появляются в большом количестве комментарии вроде &#8220;Вау, здорово!&#8221;, &#8220;Отличный пост, пиши [...]]]></description>
			<content:encoded><![CDATA[<p>В последнее время появилось огромное количество &#8220;блогов&#8221;, на всякие странные темы. Вроде &#8220;Записки теоретика-культуролога&#8221;, &#8220;Газосварочные работы и не только&#8221;, &#8220;Всё про Анджелину Джоли&#8221;, &#8220;800 блюд из конского щавеля&#8221; и т.п. Туда пишутся малоадекватные никому не интересные простыни, явно спертые из каких-то книжек.</p>
<p>А еще появляются в большом количестве комментарии вроде &#8220;Вау, здорово!&#8221;, &#8220;Отличный пост, пиши еще.&#8221; и так далее.</p>
<p>И не роботы ведь (роботов не считаю, они спецсредствами отсеиваются) &#8211; всякие капчи заполняют, по кнопочкам тыркают&#8230;</p>
<p>Казалось бы что общего? Конечно много: УРЛы из вторых ведут в первые. Ну а на первых сэйп.ру и прочая фигня.</p>
<p>Еще новое веяние &#8211; это не просто посты писать, а пытаться что-то &#8220;по теме&#8221; сказать. Вроде напишешь про какое событие, а тебе в ответ &#8220;Да, я тоже там был, очень понравилось&#8221;, или в техлоблогах очень любят писать &#8220;А у меня не получилось&#8221;.</p>
<p>Ну и самый шик &#8211; это когда на blogs.yandex.ru ищут тематические посты и туда пишут. Тут вот сегодня у Гарика было в жж. Написал он пост с ключевым словом &#8220;ноут&#8221;. Вначале пришла одна девочка, спросила где он ноут покупал. Потом вторая подоспела с предложением, где именно купить. Они так по жж с чувством прошлись, я проверял. <img src='http://gq.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Собственно я чего пишу: мне просто интересно (я по жизни вообще любопытный), сколько за такое платят? Cколько за проплаченные посты в блогах я в курсе, и примерно представляю как зарабатывают авторы. А как оно обстоит у комментаторов?<br />
Господа, не стесняйтесь, рассказывайте. <img src='http://gq.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2008/12/10/how-much-is-the-fish/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>На злобу дня</title>
		<link>http://gq.net.ru/2007/11/01/topic-of-the-day/</link>
		<comments>http://gq.net.ru/2007/11/01/topic-of-the-day/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 10:27:15 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Приватность]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[Yandex]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/11/01/%d0%bd%d0%b0-%d0%b7%d0%bb%d0%be%d0%b1%d1%83-%d0%b4%d0%bd%d1%8f/</guid>
		<description><![CDATA[Только по рунету прокатился &#8220;Выгуглен&#8221; Кори Доктороу, как нам показали всё то же самое тока в реальности. Особенно мило выглядит поиск по автору комментариев. ЗЫ. Я люблю Яндекс. [Ticket#2007110110008341]]]></description>
			<content:encoded><![CDATA[<p>Только по рунету прокатился <a href="http://www.jetstyle.ru/scroogled/">&#8220;Выгуглен&#8221; Кори Доктороу</a>, как нам показали <a href="http://company.yandex.ru/blog/?msg=101763">всё то же самое тока в реальности</a>. Особенно мило выглядит поиск по автору комментариев.</p>
<p>ЗЫ. Я люблю Яндекс.  [Ticket#2007110110008341]</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/11/01/topic-of-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Замечательный mail.ru</title>
		<link>http://gq.net.ru/2007/09/06/wonderful-mailru/</link>
		<comments>http://gq.net.ru/2007/09/06/wonderful-mailru/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 20:54:04 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Идиотизм]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Mail.ru]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/09/06/wonderfull-mailru/</guid>
		<description><![CDATA[Очень я люблю егойных админов. Вот с Яндексом как бывает: заблэклистят тебя &#8211; дернешь их через вебинтерфейс, они оперативно тебя из блэклиста выносят. Но с мейл.ру все намного интересней: Вижу в логах, что меня заблэклистили. Дёргаю вебинтерфейс, через несколько часов приходит ответ: Ваш IP (158.250.17.73) удален из черного списка. Нормальное хождение почты с него на [...]]]></description>
			<content:encoded><![CDATA[<p>Очень я люблю егойных админов. Вот с Яндексом как бывает: заблэклистят тебя &#8211; дернешь их через вебинтерфейс, они оперативно тебя из блэклиста выносят. Но с мейл.ру все намного интересней:</p>
<p>Вижу в логах, что меня заблэклистили. Дёргаю вебинтерфейс, через несколько часов приходит ответ:</p>
<blockquote><p>Ваш IP (158.250.17.73) удален из черного списка. Нормальное хождение почты с него на сервера Mail.Ru возобновится через несколько минут.</p></blockquote>
<p>Через день опять вижу в логах ругань сервера мейл.ру. Опять дёргаю вебинтерфейс, типа что вы там курите? Через час получаю ответ:</p>
<blockquote><p>Ваш IP (158.250.17.73) закрыт за спам и не может быть открыт.</p></blockquote>
<p>Прошу показать спам с заголовками. Через 10 часов получаю ответ:</p>
<blockquote><p>Ваш IP (158.250.17.73) удален из черного списка. Нормальное хождение почты с него на сервера Mail.Ru возобновится через несколько минут.</p></blockquote>
<p>Вот так и живем.</p>
<p>ЗЫ. Кстати, никто не знает, debian-russian@ так на сервера mail.ru не проходит? Или они вынесли-таки murphy из своих блэклистов?</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/09/06/wonderful-mailru/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>For those who still cares about Reply-to munging</title>
		<link>http://gq.net.ru/2007/07/18/for-those-who-still-cares-about-reply-to-munging/</link>
		<comments>http://gq.net.ru/2007/07/18/for-those-who-still-cares-about-reply-to-munging/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 23:39:42 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Reply To]]></category>
		<category><![CDATA[RFC]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/07/18/for-those-who-still-cares-about-reply-to-munging/</guid>
		<description><![CDATA[Должен или нет список рассылки осуществлять reply-to munging (выставление Reply-to на адрес списка рассылки)? Это старый вопрос, но на данный момент он имеет вполне конкретный ответ. Основные правила на intercommunication в распределенной вычислительной системе, называемой &#8220;Internet&#8221; декларируются в документах RFC. Следование этим документам обязательно для любого компонента РВС. В частности существует RFC 2822, которое специфицирует [...]]]></description>
			<content:encoded><![CDATA[<p>Должен или нет список рассылки осуществлять reply-to munging (выставление Reply-to на адрес списка рассылки)? Это старый вопрос, но на данный момент он имеет вполне конкретный ответ.</p>
<p>Основные правила на intercommunication в распределенной вычислительной системе, называемой &#8220;Internet&#8221; декларируются в документах RFC. Следование этим документам обязательно для любого компонента РВС. В частности существует <a href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>, которое специфицирует значения заголовков письма. Так вот: reply-to munging нарушает этот RFC, в частности вот этот пункт:<br />
<code>
<pre>3.6.2. Originator fields
...
   The originator fields also provide the information required when
   replying to a message.  When the "Reply-To:" field is present, it
   indicates the mailbox(es) to which the author of the message suggests
   that replies be sent.</pre>
<p></code></p>
<p>Список рассылки не является &#8220;author of the message&#8221; ни каким боком. Поэтому он не должен добавлять заголовок Retply-to и уж тем более заменять Reply-to выставленный автором письма.</p>
<p>Да, я знаю, что достаточно большое количество списков рассылки, в особенности предназначенных для домохозяек, нарушают этот rfc. Но это исключительно их проблемы.</p>
<p>Но что же тогда делать? Ведь для ответа в список рассылки приходится нажимать Reply-to-all и либо посылать письмо и в список и автору предыдущего письма, либо каждый раз руками удалять адрес автора предыдущего письма. Вовсе нет. Для списков рассылки существует <a href="http://www.ietf.org/rfc/rfc2369.txt">RFC 2369</a>, в котором в частности указано, что для того, чтобы сообщить подписчику на какой адрес посылать письма, адресованные в список рассылки, надо смотреть на заголовок List-Post:</p>
<p><code>
<pre>.4. List-Post

   The List-Post field describes the method for posting to the list.
   This is typically the address of the list, but MAY be a moderator, or
   potentially some other form of submission. For the special case of a
   list that does not allow posting (e.g., an announcements list), the
   List-Post field may contain the special value "NO".

   Examples:

     List-Post: &lt;mailto:list@host.com&gt;
     List-Post: &lt;mailto:moderator@host.com&gt; (Postings are Moderated)
     List-Post: &lt;mailto:moderator@host.com?subject=list%20posting&gt;
     List-Post: NO (posting not allowed on this list)</pre>
<p></code></p>
<p>И достаточно большое количество адекватных почтовых клиентов понимает этот заголовок: mutt, KMail, Sylpheed, Claws Mail, Thunderbird (с дополнительным плагином). У них есть вполне различимые функции ответить автору/ответить в список. Если ваш клиент не обладает такой функциональностью, согласитесь, это проблемы вашего клиента (ну и ваши, наверное), а не списка рассылки и интернет стандартов.</p>
<p>Для тех, кто не только в танке, но и с зохаванным Ктулху мозгом:<br />
- Уа-Уа (*детская истерика*) я не могу жить без reply-to-munging, и не хочу менять свой Аутглюк Экспресс на что-то вменяемое.<br />
- Рецепт: включить моск, прочитать procmail(1), maildrop(1) или чем там пользуется ваш MTA/MDA и сделать reply-to munging самостоятельно. Только если вы потом случайно отправите в список письмо, адресованное кому-то лично, вы сами себе злобные буратины и вините себя сами.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/07/18/for-those-who-still-cares-about-reply-to-munging/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>For those who care about &#8220;Reply-To&#8221; header</title>
		<link>http://gq.net.ru/2007/05/24/for-those-who-care-about-reply-to-header/</link>
		<comments>http://gq.net.ru/2007/05/24/for-those-who-care-about-reply-to-header/#comments</comments>
		<pubDate>Thu, 24 May 2007 07:31:40 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[FAQ]]></category>
		<category><![CDATA[Maillist]]></category>
		<category><![CDATA[Reply To]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/05/24/for-those-who-cares-about-reply-to-header/</guid>
		<description><![CDATA[Собственно ссылка.]]></description>
			<content:encoded><![CDATA[<p>Собственно <a href="http://woozle.org/~neale/papers/reply-to-still-harmful.html">ссылка</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/05/24/for-those-who-care-about-reply-to-header/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Битвы гигантов</title>
		<link>http://gq.net.ru/2007/05/23/war-of-giants/</link>
		<comments>http://gq.net.ru/2007/05/23/war-of-giants/#comments</comments>
		<pubDate>Wed, 23 May 2007 11:37:34 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Yandex]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/05/23/war-of-giants/</guid>
		<description><![CDATA[Интересно, это у меня паранойя, или Яндекс последовал примеру Mail.ru и Рамблера и тоже вышел на рынок Instant Messaging&#8217;а, купив(?) jabber.ru?]]></description>
			<content:encoded><![CDATA[<p>Интересно, это у меня паранойя, или Яндекс последовал примеру Mail.ru и Рамблера и тоже вышел на рынок Instant Messaging&#8217;а, купив(?) jabber.ru?</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/05/23/war-of-giants/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Установка и настройка SpamAssassin</title>
		<link>http://gq.net.ru/2007/02/23/spamassassin-howto/</link>
		<comments>http://gq.net.ru/2007/02/23/spamassassin-howto/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 10:29:59 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Софт]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/02/23/spamassassin-howto/</guid>
		<description><![CDATA[Посмотрел останки своего старого сайта с целью восстановить оттуда что-нить ценное. Понял, что ничего ценного там не было кроме статьи о федерации молодежи за мир во всем мире (которая, похоже окончательно утеряна, но и фиг с ней, муниты и так почти исчезли (из Москвы по крайней мере)) и HOWTO по настройке SpamAssassin. Статью про СпамАссассин [...]]]></description>
			<content:encoded><![CDATA[<p>Посмотрел останки своего старого сайта с целью восстановить оттуда что-нить ценное. Понял, что ничего ценного там не было кроме статьи о <a href="http://forum.cmc-msu.ru/viewtopic.php?t=120" title="Федерация молодежи за мир во всем мире">федерации молодежи за мир во всем мире</a> (которая, похоже окончательно утеряна, но и фиг с ней, муниты и так почти исчезли (из Москвы по крайней мере)) и HOWTO по настройке SpamAssassin.</p>
<p>Статью про СпамАссассин решил восстановить. В несколько сокращенном варианте (сейчас уже только ленивый не знает что это такое и зачем он нужен) и с поправками на мои нынешние настройки.</p>
<p>Итак начнем.</p>
<p>Вначале общие вещи тезисно:</p>
<ul>
<li>Спам надо фильтровать. Для этого следует использовать сочетание всех возможных (доступных) методик. Использование только одной (двух, трех) недостаточно: только анализ содержимого, или только RBL<br />
дают достаточно низкое срабатывание с большим количеством false-positive. Результаты анализа с использованием разных методик должны суммироваться и решение должно приниматься с учетом всех факторов (например письмо с подозрительным содержимым от постоянного корреспондента с положительной историей должны быть пропущены фильтром).</li>
<li>Фильтровать можно в трех точках: SMTP-сессия, сервер-сайд при доставке (но после SMTP) и клиент-сайд.</li>
</ul>
<ul>
<li>SMTP-сессия &#8211; наилучшая точка фильтрации, неугодным можно послать аутлуп прямо в сессии, но есть существенная проблема: не всегда можно фильтровать сообщения прямо во-время приема &#8211; например, может не хватать ресурсов для такой on-line фильтрации, или ресурсов будет хватать, но слишком много времени занимает фильтрация и отправляющая сторона отваливается по таймауту. Хотя с другой стороны на этом этапе вполне можно применять быстрые 100%ные методы (например достаточно надежные RBLи, проверки на соответствие RFC и еще некоторые простые эвристики)</li>
<li>При доставке можно устраивать полноценную фильтрацию. Но и тут существуют два &#8220;но&#8221;. Во-первых, нельзя посылать аутлупы, потому что в 99% случаев они уйдут на фальшивый From. Во-вторых (в принципе это следует из &#8220;во-первых&#8221;), раз мы никак не сообщаем отправителю об ошибке, то вероятность false-positive должна быть максимально низка (у меня это единица на десятки тысяч пришедших не спам писем и то это не очень хорошо (на самом деле может быть даже и более хороший показатель, потому что с причинами false-positive я боролся и в последнее время ничего такого нет:) )).</li>
<li>Client-side фильтрация тоже возможна, то ИМХО только в том случае, если серверная фильтрация невозможна в принципе.</li>
</ul>
<li>SpamAssassin один из наиболее удачных инструментов, сочетающий большое количество методов анализа. Плюс ко всему он достаточно гибко настраивается и хорошо суппортится и развивается.</li>
<p>О моих настройках:</p>
<ul>
<li>В SMTP-сессии проверяются только несколько вменяемых RBL и некоторые встроенные в postfix проверки (существование домена для адреса в поле From и пр.).</li>
<li>In-queue фильтрация при помощи SpamAssassin</li>
<li>По результатам проверки СпамАссассином почта размечается заголовками и всё. Остальное на совести пользователя.</li>
<li>По-ночам происходит автообучение+репорт в сетевые службы (Razor, Pyzor и т.д.) писем из определенной IMAP-папки.</li>
</ul>
<p><strong>Настройки SpamAssassin</strong>.</p>
<p>SpamAssassin установлен из официального репозитория Debian (из Etch).</p>
<p>Ставится командой</p>
<p><strong># aptitude install spamassassin spamc</strong></p>
<p>Те, у кого не Debian &#8211; ССЗБ.</p>
<p>Настройки:</p>
<p><strong># cat /etc/default/spamassassin</strong></p>
<pre><code>#/etc/default/spamassassin
# Duncan Findlay
# WARNING: please read README.spamd before using.
# There may be security risks.

# Change to one to enable spamd
ENABLED=1

# Options
# See man spamd for possible options. The -d option is automatically added.
# SpamAssassin uses a preforking model, so be careful! You need to
# make sure --max-children is not set to anything higher than 5,
# unless you know what you're doing.

OPTIONS="--max-children 5 --allow-tell --nouser-config --sql-config --username=mailfilter --groupname=mailfilter"

# Pid file
# Where should spamd write its PID to file? If you use the -u or
# --username option above, this needs to be writable by that user.
# Otherwise, the init script will not be able to shut spamd down.

PIDFILE="/var/run/spamd.pid"

# Set nice level of spamd
#NICE="--nicelevel 15"</code></pre>
<p>Что здесь указано: во-первых включен spamd (ENABLED=1), во-вторых заданы его опции:</p>
<ul>
<li>&#8211;max-children 5 – запускаем 5 дочерних процессов</li>
<li>&#8211;allow-tell – разрешаем использование обучения из-вне (обязательно читайте spamd(8) про риски)</li>
<li>&#8211;nouser-config &#8211;sql-config – работаем с конфигами из MySQL, не смотрим в домашние каталоги пользователей</li>
<li>&#8211;username=mailfilter &#8211;groupname=mailfilter – работаем из-под пользователя/группы mailfilter (создавать отдельно)</li>
</ul>
<p>Далее, включаем отдельные плагины:<br />
<strong># cat /etc/spamassassin/init.pre</strong></p>
<pre><code># This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# This file contains plugin activation commands for plugins included
# in SpamAssassin 3.0.x releases.  It will not be installed if you
# already have a file in place called "init.pre".
#
###########################################################################
# RelayCountry - add metadata for Bayes learning, marking the countries
# a message was relayed through
#
# Note: This requires the IP::Country::Fast Perl module
#
# loadplugin Mail::SpamAssassin::Plugin::RelayCountry
# URIDNSBL - look up URLs found in the message against several DNS
# blocklists.
#

loadplugin Mail::SpamAssassin::Plugin::URIDNSBL

# Hashcash - perform hashcash verification.
#

loadplugin Mail::SpamAssassin::Plugin::Hashcash

# SPF - perform SPF verification.
#

loadplugin Mail::SpamAssassin::Plugin::SPF</code></pre>
<p><strong># cat /etc/spamassassin/v310.pre</strong></p>
<pre><code># This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# This file was installed during the installation of SpamAssassin 3.1.0,
# and contains plugin loading commands for the new plugins added in that
# release.  It will not be overwritten during future SpamAssassin installs,
# so you can modify it to enable some disabled-by-default plugins below,
# if you so wish.
#
###########################################################################
# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source.  See the DCC
# license for more details.
#

loadplugin Mail::SpamAssassin::Plugin::DCC

# Pyzor - perform Pyzor message checks.
#

loadplugin Mail::SpamAssassin::Plugin::Pyzor

# Razor2 - perform Razor2 message checks.
#

loadplugin Mail::SpamAssassin::Plugin::Razor2

# SpamCop - perform SpamCop message reporting
#

loadplugin Mail::SpamAssassin::Plugin::SpamCop

# AntiVirus - some simple anti-virus checks, this is not a replacement
# for an anti-virus filter like Clam AntiVirus
#

loadplugin Mail::SpamAssassin::Plugin::AntiVirus

# AWL - do auto-whitelist checks
#

loadplugin Mail::SpamAssassin::Plugin::AWL

# AutoLearnThreshold - threshold-based discriminator for Bayes auto-learning
#

loadplugin Mail::SpamAssassin::Plugin::AutoLearnThreshold

# TextCat - language guesser
#

loadplugin Mail::SpamAssassin::Plugin::TextCat

# AccessDB - lookup from-addresses in access database
#
#loadplugin Mail::SpamAssassin::Plugin::AccessDB
# WhitelistSubject - Whitelist/Blacklist certain subject regular expressions
#

loadplugin Mail::SpamAssassin::Plugin::WhiteListSubject

###########################################################################
# experimental plugins
# DomainKeys - perform DomainKeys verification
#
# External modules required for use, see INSTALL for more information.
#
#loadplugin Mail::SpamAssassin::Plugin::DomainKeys
# MIMEHeader - apply regexp rules against MIME headers in the message
#

loadplugin Mail::SpamAssassin::Plugin::MIMEHeader

# ReplaceTags
#

loadplugin Mail::SpamAssassin::Plugin::ReplaceTags</code></pre>
<p><strong># cat /etc/spamassassin/v312.pre</strong></p>
<pre><code># This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# This file was installed during the installation of SpamAssassin 3.1.2,
# and contains plugin loading commands for the new plugins added in that
# release.  It will not be overwritten during future SpamAssassin installs,
# so you can modify it to enable some disabled-by-default plugins below,
# if you so wish.
#
###########################################################################
###########################################################################
# experimental plugins
# DKIM - perform DKIM verification
#
# Mail::DKIM module required for use, see INSTALL for more information.
#
#loadplugin Mail::SpamAssassin::Plugin::DKIM</code></pre>
<p>Тут комментировать нечего.</p>
<p>Теперь непосредственно настройки:</p>
<p><strong># cat /etc/spamassassin/local.cf</strong></p>
<pre><code>#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
#SCORING OPTIONS
required_score 7

#WHITELIST AND BLACKLIST OPTIONS
# Список через пробел ящиков-ловушек
blacklist_to    spam@gq.pp.ru

# Указание использовать SQL для хранения autowhitelist
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList

#BASIC MESSAGE TAGGING OPTIONS
#Выставляем в заголовок оценку и расшифровку по отдельным правилам (с оценками за каждое правило)
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTSSCORES(,)_ autolearn=_AUTOLEARN_ version=_VERSION_

# Не изменять письма, только добавлять заголовки
report_safe 0

#LANGUAGE OPTIONS
# Следующие строчки указывают, на каких языках Вам обычно приходят письма. Если
# проверяемое письмо будет на другом языке, то его Spam-Level повысится.
ok_languages ru en
ok_locales ru en

#NETWORK TEST OPTIONS
# Я использую системы pyzor, razor и dcc
# пакеты pyzor, razor и dcc-client соответственно
#
use_pyzor      1
pyzor_options --homedir /var/lib/spamassassin/pyzor/

use_razor2     1
razor_config    /etc/spamassassin/razor-agent.conf

use_dcc        1
# Каталог в котором создается сокет dcc, череp который работает SpamAssassin
dcc_home       /var/lib/dcc

#BAYES AND LEARNING OPTIONS
use_bayes       1
use_bayes_rules 1

# Так как мы будем использовать статистический bayes анализ то было бы логично
# обучать его в процессе работы.
bayes_auto_learn                      1

# Теперь установим значение при превышении которого письмо будет рассматриваться
# как спам и будет производиться обучение системы анализа.
bayes_auto_learn_threshold_spam         12.0

# То же самое, но наоборот для писем, которые не являются спамом
bayes_auto_learn_threshold_nonspam      0.1

#Для хранения базы байеса используем SQL
bayes_store_module                      Mail::SpamAssassin::BayesStore::SQL

#MISCELLANEOUS OPTIONS
lock_method flock

# Следующие правила изменяют критерии начисления очков.
# В последней версии появились дополнительные проверки и некоторые из них слишком
# нервничают на на кривых русских письмах, поэтому уменьшим значение этих правил:
score SUBJ_ILLEGAL_CHARS        1.0
score FROM_ILLEGAL_CHARS        1.5
score HEAD_ILLEGAL_CHARS        1.5

# Встречается на письмах с Subject:  Re: =?KOI8-R?B?+sHNxc7J1Ng=?= sendmail =?KOI8-R?B?zsE/?=
score SUBJECT_ENCODED_TWICE     0.0

# У меня рассылка "Велосипедизм" с subscribe.ru почему-то попадает.
# Уменьшаем с 2.5 до 1.0
score FUZZY_XPILL               1.0

# Мой хак против спама-картинок
include imagespam.cf</code></pre>
<p><strong># cat /etc/spamassassin/razor-agent.conf</strong></p>
<pre><code># See razor-agent.conf (5)
# Change this to 5 for safer classification of MIME attachments.  This will let more spam through
logic_method = 4

# Uncomment the next line for logging via syslog
# На самом деле не надо раскомментировать, иначе записи самого спамассассина в логах несколько извратятся.
#logfile = sys-syslog
razorhome = /var/lib/spamassassin/razor
debuglevel = 1</code></pre>
<p>Создаем каталоги /var/lib/spamassassin/razor и /var/lib/spamassassin/pyzor, с правами 700 и владельцем mailfilter. Они будут использоваться соответственно службами razor и pyzor.</p>
<p>Настраиваем MySQL хранилище:<br />
<strong># cat /etc/spamassassin/mysql.cf</strong></p>
<pre><code>#Способ ображения к базе байес
bayes_sql_dsn                   DBI:mysql:spamassassin:localhost
bayes_sql_username              spamassassin
bayes_sql_password              password
#Способ обращения к базе AWL
user_awl_dsn                    DBI:mysql:spamassassin:localhost
user_awl_sql_username           spamassassin
user_awl_sql_password           password
#Способ обращения к пользовательским провилам (у меня отключено)
#user_scores_dsn                        DBI:mysql:spamassassin:localhost
#user_scores_sql_username       spamassassin
#user_scores_sql_password       password</code></pre>
<p>Не забываем поставить на этот файлик права 640 (группу задавать не имеет смысла, spamassassin читает этот файл еще до того, как делает chuid).</p>
<p>Создаем БД в MySQL</p>
<pre><code># mysql -u root -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 11061 to server version: 4.0.24_Debian-10sarge2-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql&gt; create database spamassassin;

Query OK, 1 row affected (0.00 sec)

mysql&gt; grant all privileges on spamassassin.* to 'spamassassin'@'localhost' identified by 'password';

Query OK, 0 rows affected (0.06 sec)

mysql&gt; Bye</code></pre>
<p>Создаем необходимые таблицы:</p>
<pre><code>mysql -u spamassassin -p spamassassin &lt; /usr/share/doc/spamassassin/sql/awl_mysql.sql
mysql -u spamassassin -p spamassassin &lt; /usr/share/doc/spamassassin/sql/bayes_mysql.sql
mysql -u spamassassin -p spamassassin &lt; /usr/share/doc/spamassassin/sql/userpref_mysql.sql</code></pre>
<p>У меня это создало вот такие таблицы:</p>
<pre><code>-- MySQL dump 10.11
--
-- Host: localhost    Database: spamassassin
-- ------------------------------------------------------
-- Server version       5.0.32-Debian_3-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `awl`
--
DROP TABLE IF EXISTS `awl`;
CREATE TABLE `awl` (
`username` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(200) collate utf8_unicode_ci NOT NULL default '',
`ip` varchar(10) collate utf8_unicode_ci NOT NULL default '',
`count` int(11) default '0',
`totscore` float default '0',
PRIMARY KEY  (`username`,`email`,`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `bayes_expire`
--
DROP TABLE IF EXISTS `bayes_expire`;
CREATE TABLE `bayes_expire` (
`id` int(11) NOT NULL default '0',
`runtime` int(11) NOT NULL default '0',
KEY `bayes_expire_idx1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `bayes_global_vars`
--
DROP TABLE IF EXISTS `bayes_global_vars`;
CREATE TABLE `bayes_global_vars` (
`variable` varchar(30) collate utf8_unicode_ci NOT NULL default '',
`value` varchar(200) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY  (`variable`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `bayes_seen`
--
DROP TABLE IF EXISTS `bayes_seen`;
CREATE TABLE `bayes_seen` (
`id` int(11) NOT NULL default '0',
`msgid` varchar(200) character set utf8 collate utf8_bin NOT NULL default '',
`flag` char(1) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY  (`id`,`msgid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `bayes_token`
--
DROP TABLE IF EXISTS `bayes_token`;
CREATE TABLE `bayes_token` (
`id` int(11) NOT NULL default '0',
`token` char(5) collate utf8_unicode_ci NOT NULL default '',
`spam_count` int(11) NOT NULL default '0',
`ham_count` int(11) NOT NULL default '0',
`atime` int(11) NOT NULL default '0',
PRIMARY KEY  (`id`,`token`),
KEY `bayes_token_idx1` (`token`),
KEY `bayes_token_idx2` (`id`,`atime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `bayes_vars`
--
DROP TABLE IF EXISTS `bayes_vars`;
CREATE TABLE `bayes_vars` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(200) collate utf8_unicode_ci NOT NULL default '',
`spam_count` int(11) NOT NULL default '0',
`ham_count` int(11) NOT NULL default '0',
`token_count` int(11) NOT NULL default '0',
`last_expire` int(11) NOT NULL default '0',
`last_atime_delta` int(11) NOT NULL default '0',
`last_expire_reduce` int(11) NOT NULL default '0',
`oldest_token_age` int(11) NOT NULL default '2147483647',
`newest_token_age` int(11) NOT NULL default '0',
PRIMARY KEY  (`id`),
UNIQUE KEY `bayes_vars_idx1` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `userpref`
--
DROP TABLE IF EXISTS `userpref`;
CREATE TABLE `userpref` (
`username` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`preference` varchar(50) collate utf8_unicode_ci NOT NULL default '',
`value` varchar(100) collate utf8_unicode_ci NOT NULL default '',
`prefid` int(11) NOT NULL auto_increment,
PRIMARY KEY  (`prefid`),
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2007-02-23  9:05:48</code></pre>
<p>Ну и последнее, что осталось настроить: это мой обещанный хак против спама картинками:</p>
<p><strong># cat /etc/spamassassin/imagespam.cf</strong></p>
<pre><code>full __GQ_OE_HTML_META          /http-equiv=3DContent-Type content=3D/
full __GQ_MIME_SRC_ATT          /src=3D"cid:/
meta GQ_IMAGESPAM               __OE_MUA &amp;&amp; HTML_MESSAGE &amp;&amp; __GQ_OE_HTML_META &amp;&amp; __GQ_MIME_SRC_ATT
describe GQ_IMAGESPAM           GQ: Mail looks like image-spam
score GQ_IMAGESPAM              2.5</code></pre>
<p>С ним стоит быть осторожнее &#8211; возможно он будет срабатывать на письмах из аутглюка-экспресс с html с картинками. У меня по крайней мере таких не бывает среди не спама.</p>
<p>Ура, спамассассин настроен и им можно пользоваться.</p>
<p>Например так:<br />
<strong>Настройки Postfix</strong><br />
В <em>/etc/postfix/main.cf</em></p>
<pre>mailbox_command = maildrop</pre>
<p>maildrop стоит из пакета courier-maildrop.</p>
<p><strong># cat /etc/courier/maildroprc</strong></p>
<pre><code># Global maildrop filter file
DEFAULT="$HOME/Maildir/"
SHELL="/bin/sh"
if ($SIZE &lt; 512000)
{
#Here spamassassin goes
xfilter "spamc"
}</code></pre>
<p>Теперь все письма получают заголовок от SpamAssassin&#8217;а.</p>
<p>Дальше (в общесистемном фильтре или в ~/.mailfilter) можно сделать что-нибудь вроде</p>
<pre><code>if (/^X-Spam-Status: Yes/:h)
{
to "$HOME/Maildir/.Junk"
}</code></pre>
<p>Помимо этого у меня на имап сервер есть папки RealJunk и NotJunk. В первую я вручную перекладываю спам (прорвавшийся в Inbox + весь из папки Junk (вручную проверяю хотя бы Subject и From)), а во вторую false-positive, а точнее те письма, которые не попали в спам, но все же получили высокую оценку от байеса (false-positive у меня вообще не бывает).</p>
<p>Письма из этих папок обрабатываются следующим скриптом:<br />
<strong># cat /etc/cron.daily/sa-learn</strong></p>
<pre><code>#!/bin/bash
USERS=$(ldapsearch -x "(objectClass=mailAccount)" uid| awk '/^uid: [[:alnum:]]*$/ {print $2}')

for USER in $USERS;do

        HOMEDIR=$(ldapsearch -x "(&#038;(objectClass=mailAccount)(uid=$USER))" homeDirectory| awk '/^homeDirectory: [^[:space:]]*$/ {print $2}')
        for i in "$HOMEDIR"/Maildir/.RealJunk/{cur,new}/*;do
                if [[ -f "$i" ]];then
                        spamc -u $USER -L spam -l -s 512000 < "$i" >/dev/null&#038;&#038;\
                        spamc -u $USER -C report -l -s 512000 < "$i" >/dev/null &#038;&#038;\
                        rm "$i" 2>/dev/null
                fi
        done

        for i in "$HOMEDIR"/Maildir/.NotJunk/{cur,new}/*;do
                if [[ -f "$i" ]];then
                        spamc -u $USER -L ham -l -s 512000 < "$i" >/dev/null&#038;&#038;\
                        spamc -u $USER -C revoke -l -s 512000 < "$i" >/dev/null&#038;&#038;\
                        rm "$i" 2>/dev/null
                fi
        done

done</code></pre>
<p>Там присутствует некоторая хитрость в получении Maildir&#8217;ов, для этого берутся homeDir из LDAP, но в остальном вроде все достаточно просто.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/02/23/spamassassin-howto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Апокалиптическое</title>
		<link>http://gq.net.ru/2007/02/11/apocaliptic/</link>
		<comments>http://gq.net.ru/2007/02/11/apocaliptic/#comments</comments>
		<pubDate>Sun, 11 Feb 2007 18:55:16 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Грустное]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Рекомендую]]></category>
		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/02/11/apocaliptic/</guid>
		<description><![CDATA[Я не пользуюсь гмейлом, а ты?]]></description>
			<content:encoded><![CDATA[<p>Я не пользуюсь гмейлом, <a href="http://masterplanthemovie.com/">а ты?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/02/11/apocaliptic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web2.0</title>
		<link>http://gq.net.ru/2007/02/06/web20/</link>
		<comments>http://gq.net.ru/2007/02/06/web20/#comments</comments>
		<pubDate>Tue, 06 Feb 2007 11:33:40 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Рекомендую]]></category>
		<category><![CDATA[Софт]]></category>
		<category><![CDATA[Удивительное]]></category>
		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/02/06/web20/</guid>
		<description><![CDATA[Нашел новую (для меня) веб-два-ноль-игрушку: http://moikrug.ru. Если что &#8211; я там http://gq.moikrug.ru &#8211; можете френдить приглашать в первый круг.]]></description>
			<content:encoded><![CDATA[<p>Нашел новую (для меня) веб-два-ноль-игрушку: <a href="http://moikrug.ru">http://moikrug.ru</a>.<br />
Если что &#8211; я там <a href="http://gq.moikrug.ru">http://gq.moikrug.ru</a>  &#8211; можете <strike>френдить</strike> приглашать в первый круг.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/02/06/web20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Циско нетворкинг академи</title>
		<link>http://gq.net.ru/2007/01/26/cisco-networking-academy/</link>
		<comments>http://gq.net.ru/2007/01/26/cisco-networking-academy/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 16:50:09 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Мысли вслух]]></category>
		<category><![CDATA[Цитаты]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/01/26/cisco-networking-academy/</guid>
		<description><![CDATA[Решил тут пройти курс в Cisco Networking Academy (кстати для всех студентов факультета эта возможность предоставляется у нас бесплатно). Читаю красивую презентацию&#8230; ПлАчу&#8230; Modems may be installed internally or attached externally to the computer using a phone line. Мозг плавится от 3д моделей сетевых карт, которые можно приближать/удалять/вращать&#8230;]]></description>
			<content:encoded><![CDATA[<p>Решил тут пройти курс в Cisco Networking Academy (кстати для всех студентов факультета эта возможность предоставляется у нас бесплатно). Читаю красивую презентацию&#8230; ПлАчу&#8230;</p>
<blockquote><p>Modems may be installed internally or attached externally to the computer using a phone line.</p></blockquote>
<p>Мозг плавится от 3д моделей сетевых карт, которые можно приближать/удалять/вращать&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/01/26/cisco-networking-academy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>delicious</title>
		<link>http://gq.net.ru/2007/01/11/delicious/</link>
		<comments>http://gq.net.ru/2007/01/11/delicious/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 15:39:47 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Рекомендую]]></category>
		<category><![CDATA[Софт]]></category>
		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/01/11/delicious/</guid>
		<description><![CDATA[Наконец-таки смог проникнуться этой новой модной штукой. Сама по себе &#8211; так себе игрушка. Но в комплекте с del.icio.us Bookmarks для Firefox начинает серьезно жечь. В общем на del.icio.us меня зовут gq.ru, если кому-то вдруг интересно. PS Добавил к каждой заметке тагометр &#8211; забавно. Upd: отключил тагомер, так как тормозит загрузку слишком не симпатично.]]></description>
			<content:encoded><![CDATA[<p>Наконец-таки смог проникнуться этой <a href="http://del.icio.us">новой модной штукой</a>. Сама по себе &#8211; так себе игрушка. Но в комплекте с  <a href="https://addons.mozilla.org/firefox/3615/">del.icio.us Bookmarks</a> для Firefox начинает серьезно жечь.</p>
<p>В общем <span class="delicious-network-username">на </span><span class="delicious-network-username" /><a href="http://del.icio.us/">del.icio.us</a> меня зовут<span class="delicious-network-username"> <a href="http://del.icio.us/gq.ru">gq.ru</a>, если кому-то вдруг интересно.</span></p>
<p>PS Добавил к каждой заметке <a title="Тагометр" href="http://blog.del.icio.us/blog/2006/12/the_new_and_tag.html">тагометр</a> &#8211; забавно.</p>
<p><strong>Upd</strong>: отключил тагомер, так как тормозит загрузку слишком не симпатично.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/01/11/delicious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дождались</title>
		<link>http://gq.net.ru/2007/01/10/livejournal-crossposting/</link>
		<comments>http://gq.net.ru/2007/01/10/livejournal-crossposting/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 21:43:47 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[Интернет]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2007/01/10/livejournal-crossposting/</guid>
		<description><![CDATA[Включил трансляцию своего блога в ЖЖ. Для белокурых поклонниц. PS. Для трансляции использую LivejournalCrossPoster и LivejournalComments. PPS. Надо не забыть поправить (поменять) шаблон отображения в ЖЖ, а то он похабное слово &#8220;link&#8221; выводит.]]></description>
			<content:encoded><![CDATA[<p>Включил  трансляцию своего блога в <a title="Трансляция в ЖЖ" target="_blank" href="http://livejournal.com/~_gq_">ЖЖ</a>.</p>
<p>Для белокурых поклонниц.</p>
<p>PS. Для трансляции использую LivejournalCrossPoster и LivejournalComments.</p>
<p>PPS. Надо не забыть поправить (поменять) шаблон отображения в ЖЖ, а то он похабное слово &#8220;link&#8221; выводит.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2007/01/10/livejournal-crossposting/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Маленькие открытия</title>
		<link>http://gq.net.ru/2006/12/25/small-discoveries/</link>
		<comments>http://gq.net.ru/2006/12/25/small-discoveries/#comments</comments>
		<pubDate>Mon, 25 Dec 2006 10:55:51 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Рекомендую]]></category>
		<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2006/12/25/small-discoveries/</guid>
		<description><![CDATA[Открыл для себя Google Reader. Собственно буквально перед этим понял, что РСС-агрегация в сильфиде глючная. А akregator че-та тоже не понравится (хотя еще его попробую, наверное). У того же гугла неплохая вещица под названием &#8220;Инструменты для веб-мастеров&#8220;. Понял почему мой блог долгое время отсутствовал в индексе Гугла и Яндекса: из-за бага в одном из плагинов [...]]]></description>
			<content:encoded><![CDATA[<p>Открыл для себя <a title="Google Reader" href="http://www.google.com/reader/view/">Google Reader</a>. Собственно буквально перед этим понял, что РСС-агрегация в сильфиде глючная. А akregator че-та тоже не понравится (хотя еще его попробую, наверное).</p>
<p>У того же гугла неплохая вещица под названием &#8220;<a href="https://www.google.com/webmasters/tools/">Инструменты для веб-мастеров</a>&#8220;.</p>
<p>Понял почему мой блог долгое время отсутствовал в индексе Гугла и Яндекса: из-за бага в одном из плагинов роботы получали 200 с абсолютно пустым телом на любой свой запрос.</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/12/25/small-discoveries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Прописная или строчная&#8230;</title>
		<link>http://gq.net.ru/2006/12/11/to-caps-or-not-to-caps/</link>
		<comments>http://gq.net.ru/2006/12/11/to-caps-or-not-to-caps/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 16:04:39 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Правописание]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2006/12/11/to-caps-or-not-to-caps/</guid>
		<description><![CDATA[Столкнулся с тем, что во всех документах в Википедии употребляется написание &#8220;вы&#8221; со строчной буквы. Крайне удивился. Полазил по &#8220;проектным&#8221; страницам и нашел там остатки каких-то дискуссий 2004го года со ссылками на Розенталя (так и хочется поставить ® или &#8482;). Всё это меня как-то обескуражило, потому что теплились какие-то воспоминания, что в письмах и официальных [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с тем, что во всех документах в Википедии употребляется написание &#8220;вы&#8221; со строчной буквы. Крайне удивился. Полазил по &#8220;проектным&#8221; страницам и нашел там остатки каких-то дискуссий 2004го года со ссылками на Розенталя (так и хочется поставить ® или &#8482;). Всё это меня как-то обескуражило, потому что теплились какие-то воспоминания, что в письмах и официальных документах (а официальные документы там имеются) следует использовать именно уважительную форму обращения.</p>
<p>Погуглив, <a href="http://spravka.gramota.ru/blang.html?id=171">обнаружил</a>, что в чем-то они правы, действительно в рунете достаточно часто ошибочно используют прописную букву, когда следует ограничиться строчной. Но в &#8220;политиках конфиденциальности&#8221;, &#8220;правилах пользования&#8221; и прочих <strong>документах</strong>, где обращение адресовано конкретному <em>актору</em>, все же стоит употреблять написание с заглавной буквы.</p>
<p>см.также &#8220;<a href="http://spravka.gramota.ru/blang.html?id=171">КАК НАПИСАТЬ <em>ВЫ</em> &#8211; С ПРОПИСНОЙ ИЛИ СО СТРОЧНОЙ БУКВЫ?&#8221;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/12/11/to-caps-or-not-to-caps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мадонна жжет</title>
		<link>http://gq.net.ru/2006/11/24/madonna-burns/</link>
		<comments>http://gq.net.ru/2006/11/24/madonna-burns/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 10:40:30 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Смешное]]></category>
		<category><![CDATA[Цитаты]]></category>

		<guid isPermaLink="false">http://gq.homelinux.org/2006/11/24/madonna-burns/</guid>
		<description><![CDATA[А Мадонна-то, еще огого: Спасибо 50.000 ecstatic русских вентиляторов присутствовали на моих исповедях показывают в moscow! Выставкой был взрыв! Я нахожусь на дороге back to гостиница теперь и я как раз хотел препятствую вам знать что все одобрено. Штат обеспеченностью сделал чудесную работу делать уверенной выставка был безопасен! Спасибо Россия! И еще чуть раньше: My [...]]]></description>
			<content:encoded><![CDATA[<p>А Мадонна-то, еще огого:</p>
<blockquote><p><em>Спасибо 50.000 ecstatic русских вентиляторов присутствовали на моих исповедях показывают в moscow! Выставкой был взрыв! Я нахожусь на дороге back to гостиница теперь и я как раз хотел препятствую вам знать что все одобрено. Штат обеспеченностью сделал чудесную работу делать уверенной выставка был безопасен! Спасибо Россия!</em></p></blockquote>
<p>И еще чуть раньше:</p>
<blockquote><p><span style="font-family: verdana">My security staff has been warned about an extreme sect of Russian Christians. They became popular for breaking up a Moscow gay parade this year. At that time the gay parade was cancelled.</span><br />
<span style="font-family: verdana">They don&#8217;t want me to perform in Moscow. They think I&#8217;m a totally evil pop star.</span><br />
<span style="font-family: verdana">They wear black clothing which is a wild mix of German Nazi military clothes with some Russian military elements and a lot of Christian symbols. Can you believe they pulled a Sinead O&#8217;Connor on my photo? They look like video game characters. I better hire some extra security!</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/11/24/madonna-burns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>В восхищении&#8230;</title>
		<link>http://gq.net.ru/2006/10/31/amasing-its-so-amasing/</link>
		<comments>http://gq.net.ru/2006/10/31/amasing-its-so-amasing/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 15:18:28 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Железки]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Инфолайн]]></category>
		<category><![CDATA[Удивительное]]></category>

		<guid isPermaLink="false">http://gq.homelinux.org/2006/10/31/amasing-its-so-amasing/</guid>
		<description><![CDATA[Оказывается ADSL у меня так хреново работал&#8230;. потому что он работал на одной жиле =\ вторая из клемы выскочила. Современные технологии восхищают. PS Да здравствует полтора мегабита вверх!]]></description>
			<content:encoded><![CDATA[<p>Оказывается ADSL у меня так <a href="http://gq.net.ru/2006/10/11/some-bits-about-infoline" title="Про Инфолайн...">хреново работал</a>&#8230;. потому что он работал на одной жиле =\ вторая из клемы выскочила. Современные технологии восхищают.</p>
<p>PS Да здравствует полтора мегабита вверх!</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/10/31/amasing-its-so-amasing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Из логов&#8230;</title>
		<link>http://gq.net.ru/2006/10/16/from-logs/</link>
		<comments>http://gq.net.ru/2006/10/16/from-logs/#comments</comments>
		<pubDate>Mon, 16 Oct 2006 16:02:17 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Цитаты]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.homelinux.org/2006/10/16/from-logs/</guid>
		<description><![CDATA[Oct 11 18:47:14 eol postfix/smtpd[9729]: NOQUEUE: reject: RCPT from cmail.yandex.ru[213.180.193.1]: 554 5.7.1 &#60;relay-robot@yandex-team.ru&#62;: Relay access denied; from=&#60;nobody&#62; to=&#60;relay-robot@yandex-team.ru&#62; proto=SMTP helo=&#60;cmail.yandex.ru&#62; Яндекс, цуко, хитрый&#8230;]]></description>
			<content:encoded><![CDATA[<blockquote><p>Oct 11 18:47:14 eol postfix/smtpd[9729]: NOQUEUE: reject: RCPT from cmail.yandex.ru[213.180.193.1]: 554 5.7.1 &lt;relay-robot@yandex-team.ru&gt;: Relay access denied; from=&lt;nobody&gt; to=&lt;relay-robot@yandex-team.ru&gt; proto=SMTP helo=&lt;cmail.yandex.ru&gt;</p></blockquote>
<p>Яндекс, цуко, хитрый&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/10/16/from-logs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Будни экзаменаторов</title>
		<link>http://gq.net.ru/2006/09/17/examiners-weekdays/</link>
		<comments>http://gq.net.ru/2006/09/17/examiners-weekdays/#comments</comments>
		<pubDate>Sun, 17 Sep 2006 09:10:53 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Грустное]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Смешное]]></category>
		<category><![CDATA[Цитаты]]></category>

		<guid isPermaLink="false">http://gq.homelinux.org/2006/09/17/examiners-weekdays/</guid>
		<description><![CDATA[FTP &#8211; это Fax Transfer Protocol ARP &#8211; это протокол, использовавшийся в ARPAnet]]></description>
			<content:encoded><![CDATA[<blockquote><p>FTP &#8211; это Fax Transfer Protocol</p></blockquote>
<blockquote><p>ARP &#8211; это протокол, использовавшийся в ARPAnet</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/09/17/examiners-weekdays/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Выбирая проститутку&#8230;</title>
		<link>http://gq.net.ru/2006/08/18/choosin-the-moll/</link>
		<comments>http://gq.net.ru/2006/08/18/choosin-the-moll/#comments</comments>
		<pubDate>Fri, 18 Aug 2006 06:40:58 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Смешное]]></category>

		<guid isPermaLink="false">http://gq.homelinux.org/2006/08/18/%d0%b2%d1%8b%d0%b1%d0%b8%d1%80%d0%b0%d1%8f-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%b8%d1%82%d1%83%d1%82%d0%ba%d1%83/</guid>
		<description><![CDATA[Выбирая проститутку, воспользуйтесь функцией сравнения, чтобы вывести на одной странице одну или несколько выбранных вами проституток. Это заговор, они все хотят моей смерти&#8230;]]></description>
			<content:encoded><![CDATA[<blockquote><p>Выбирая <strong>проститутку</strong>, воспользуйтесь функцией сравнения, чтобы вывести на одной странице одну или несколько выбранных вами <strong>проституток</strong>.</p></blockquote>
<p>Это заговор, они все хотят моей смерти&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2006/08/18/choosin-the-moll/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
