<?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>Danil's* &#187; Email</title>
	<atom:link href="http://danil.625.ru/category/it/email/feed/" rel="self" type="application/rss+xml" />
	<link>http://danil.625.ru</link>
	<description>* У Данилы</description>
	<lastBuildDate>Mon, 19 Dec 2011 16:01:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1-beta1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Exim + Exchange: проверка получателей</title>
		<link>http://danil.625.ru/2011/04/19/exim-exchange-verify-recipient/</link>
		<comments>http://danil.625.ru/2011/04/19/exim-exchange-verify-recipient/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 04:59:32 +0000</pubDate>
		<dc:creator>Danil</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[ИТ]]></category>
<category>exchange</category><category>exim</category>
		<guid isPermaLink="false">http://danil.625.ru/?p=117</guid>
		<description><![CDATA[При использовании Exim в качестве внешнего почтового шлюза для Exchange возникает важная задача &#8211; проверять получателей в рамках SMTP-сессии.
При обычной настройке с ручной маршрутизацией Exim принимает всю почту, которая направлена в соответствующий домен, затем переадресует в Exchange, который только после приёма письма (!) генерирует ответное письмо в случае, если пользователь не найден. Не совсем правильное [...]]]></description>
			<content:encoded><![CDATA[<p>При использовании Exim в качестве внешнего почтового шлюза для Exchange возникает важная задача &#8211; проверять получателей в рамках SMTP-сессии.</p>
<p>При обычной настройке с ручной маршрутизацией Exim принимает всю почту, которая направлена в соответствующий домен, затем переадресует в Exchange, который только после приёма письма (!) генерирует ответное письмо в случае, если пользователь не найден. Не совсем правильное решение.</p>
<p>Некоторые советуют обращаться к AD через LDAP из Exim, чтобы проверить получателей. Но лучше, на мой взгляд, решить это средствами SMTP.</p>
<p>1. Необходимо настроить Exim на проверку получателя. Для этого необходимо всего лишь навсего к строчке &#8220;verify=recipient&#8221; добавить надпись &#8220;/callout&#8221;. Тогда Exim будет делать проверку по SMTP. Подробнее о callout <a href="http://www.exim.org/exim-html-current/doc/html/spec_html/ch40.html#SECTcallver" target="_blank">в документации Exim</a>.</p>
<p>2. Неоходимо настроить Exchange, чтобы он, в свою очередь, тоже делал проверку получателей на этапе SMTP-сессии. В версии 2010 это делается путём <a href="http://technet.microsoft.com/en-us/library/bb201691.aspx" target="_blank">активации анти-спам агентов</a>. <a href="http://itband.ru/2010/06/exchange-antispam-antivirus/" target="_blank">Вот здесь</a> объясняется, почему в большинстве случаев по умолчанию анти-спам агенты отключены, а также есть инструкция в картинках по их включению. Для нашей задачи нам нужен пункт &#8220;Фильтрация получателей&#8221;, в свойствах которого необходимо выставить галку &#8220;Блокировать сообщения несуществующим получателям&#8221;.</p>
<p>Хочу предостеречь от неправильного использования анти-спам агентов. Среди них есть &#8220;Репутация отправителя&#8221; и &#8220;Фильтрация содержимого&#8221;.</p>
<p>Первый, если я правильно понимаю, выполняет SMTP-запросы к MX-серверам домена-отправителя. В некоторых случаях такие действия (всё зависит от потока спама в вашу сторону) могут быть расценены не совсем верно, и ваши ip-адреса заблокируют за подозритульную активность.</p>
<p>Второй выполняет проверку содержимого сообщений и может неверно помечать нужные письма как спам.</p>
<p>Я пока что отключил у себя эти две функции.</p>
]]></content:encoded>
			<wfw:commentRss>http://danil.625.ru/2011/04/19/exim-exchange-verify-recipient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Помечаем спам в теме письма. Exiscan.</title>
		<link>http://danil.625.ru/2008/02/11/spam-in-subject/</link>
		<comments>http://danil.625.ru/2008/02/11/spam-in-subject/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 13:24:10 +0000</pubDate>
		<dc:creator>Danil</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[ИТ]]></category>
<category>exim</category><category>spam</category>
		<guid isPermaLink="false">http://danil.625.ru/2008/02/11/spam-in-subject/</guid>
		<description><![CDATA[Я использую Exiscan для проверки электронной почты на спам и вирусы.
В документации по Exiscan есть пример с добавлением строчки *SPAM* в начало темы письма с помощью системных фильтров Exim.
Вот только в русских письмах следует сохранить кодировку (по умолчанию Exim полностью раскодирует строку темы письма), а то начинаются бНОПНи и бТЕОДБы. Поэтому вместо $h_subject лучше использовать $rh_subject (raw).
В [...]]]></description>
			<content:encoded><![CDATA[<p>Я использую Exiscan для проверки электронной почты на спам и вирусы.</p>
<p>В <a target="_blank" href="http://duncanthrax.net/exiscan-acl/exiscan-acl-examples.txt">документации по Exiscan</a> есть пример с добавлением строчки <em>*SPAM*</em> в начало темы письма с помощью системных фильтров Exim.</p>
<p>Вот только в русских письмах следует сохранить кодировку (по умолчанию Exim полностью раскодирует строку темы письма), а то начинаются бНОПНи и бТЕОДБы. Поэтому вместо $h_subject лучше использовать $rh_subject (<em>raw</em>).</p>
<p>В итоге в ACL получается следующее:</p>
<p><code>warn message = X-New-Subject: *SPAM* $rh_subject:<br />
     spam = nobody/defer_ok</code></p>
<p>А в системном фильтре вот так:</p>
<p><code>if "${if def:header_X-New-Subject: {there}}" is there<br />
then<br />
   headers remove Subject<br />
   headers add "Subject: $rh_X-New-Subject:"<br />
   headers remove X-New-Subject<br />
endif</code></p>
<p>Если я что-то упустил или неправильно понял, буду рад услышать замечания.</p>
]]></content:encoded>
			<wfw:commentRss>http://danil.625.ru/2008/02/11/spam-in-subject/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>IMAP и много-много писем</title>
		<link>http://danil.625.ru/2008/02/06/imap-many-messages/</link>
		<comments>http://danil.625.ru/2008/02/06/imap-many-messages/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 06:21:36 +0000</pubDate>
		<dc:creator>Danil</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[ИТ]]></category>
<category>imap</category><category>полезное</category>
		<guid isPermaLink="false">http://danil.625.ru/2008/02/06/imap-i-mnogo-mnogo-pisem/</guid>
		<description><![CDATA[На днях получилось так, что мне поступило несколько десятков тысяч писем (от антивируса). Примерно 60.000, которые нужно было ещё и выборочно удалить (по заголовку).
Ни штатный почтовик Thunderbird, ни The Bat! не смогли с ними справиться. Первый просто надолго зависал и ждать полдня его ответа было, на мой взгляд, бесперспективно, а второй либо тоже зависал, либо [...]]]></description>
			<content:encoded><![CDATA[<p>На днях получилось так, что мне поступило несколько десятков тысяч писем (от антивируса). Примерно 60.000, которые нужно было ещё и выборочно удалить (по заголовку).</p>
<p>Ни штатный почтовик Thunderbird, ни The Bat! не смогли с ними справиться. Первый просто надолго зависал и ждать полдня его ответа было, на мой взгляд, бесперспективно, а второй либо тоже зависал, либо принимал заголовки катастрофически медленно.</p>
<p>Спасла Она. <a target="_blank" href="http://www.opera.com">Opera</a> <img src='http://danil.625.ru/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Система фильтров довольно удобна и позволила удалить (не)нужные письма из разных папок.</p>
]]></content:encoded>
			<wfw:commentRss>http://danil.625.ru/2008/02/06/imap-many-messages/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Спам: автоматический белый список</title>
		<link>http://danil.625.ru/2007/07/30/auto-whitelist/</link>
		<comments>http://danil.625.ru/2007/07/30/auto-whitelist/#comments</comments>
		<pubDate>Mon, 30 Jul 2007 18:48:43 +0000</pubDate>
		<dc:creator>Danil</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[ИТ]]></category>
<category>exim</category><category>php</category><category>spam</category>
		<guid isPermaLink="false">http://danil.625.ru/2007/07/30/auto-whitelist/</guid>
		<description><![CDATA[Несмотря на использование SpamAssassin, человеческий фактор иногда берёт своё: некоторые пишут письма без темы, или же тема странным образом закодирована; некоторые присылают коммерческое предложение, оформленное как спам; иногда нужные рассылки оформлены &#8220;не так&#8221; по мнению SpamAssassin&#8217;а.
Я согласен, что можно до посинения настраивать спам-фильтр, чтобы он всё распознавал правильно, но разве можно учесть всё? И есть ли [...]]]></description>
			<content:encoded><![CDATA[<p>Несмотря на использование SpamAssassin, человеческий фактор иногда берёт своё: некоторые пишут письма без темы, или же тема странным образом закодирована; некоторые присылают коммерческое предложение, оформленное как спам; иногда нужные рассылки оформлены &#8220;не так&#8221; по мнению SpamAssassin&#8217;а.</p>
<blockquote><p>Я согласен, что можно до посинения настраивать спам-фильтр, чтобы он всё распознавал правильно, но разве можно учесть всё? И есть ли хоть один, который даст 0% false-positive? Данный способ можно использовать для того, чтобы почта от определённого адресата не попала в спам.</p></blockquote>
<p>Я для начала выбрал такое решение: адреса, по которым отправляют почту &#8220;свои&#8221; пользователи из внутренней сети, заносятся в белый список. Туда же администратор может внести определённые домены. При этом, если от пользователя исходит подтверждение прочтения спам-письма, то такие письма не берутся во внимание (во всяком случае в Exim у таких bounce-писем поле отправителя пустое, и это служит критерием того, что такого адресата не надо заносить в белый список).</p>
<blockquote><p>Далее я привожу пример с использованием Exim и реализацию auto-whitelist на PHP с PEAR-DB, а также предполагаю, что читатель знает, как настроить Exim на работу с SQL-сервером, и разбирается в его роутерах и транспортах.</p></blockquote>
<p>Итак, вот как это работает:</p>
<p><strong>1.</strong> Таблица базы данных для хранения информации об адресах:</p>
<p><code>CREATE TABLE `whitelist` (<br />
  `id` int(11) NOT NULL auto_increment,<br />
  `sender` varchar(64) NOT NULL,<br />
  `origin` varchar(64) NOT NULL,<br />
  `date_add` datetime NOT NULL,<br />
  `type` tinyint(4) NOT NULL,<br />
  PRIMARY KEY  (`id`),<br />
  UNIQUE KEY `sender` (`sender`)<br />
);</code></p>
<p><em>sender</em> &#8211; собственно, адрес или домен отправителя;<br />
<em>origin</em> &#8211; от кого (изнутри) исходило письмо, из-за которого данный отправитель попал в базу;<br />
<em>type</em> &#8211; если равен 1, то это только домен; если 2 &#8211; полный email;</p>
<p><strong>2.</strong> Списки адресов и доменов в Exim:</p>
<p><code>domainlist white_domains = ${lookup mysql{SELECT sender \<br />
   FROM whitelist \<br />
   WHERE type=1 AND sender='${quote_mysql:$sender_address_domain}'}{$value}fail}<br />
addresslist white_senders = ${lookup mysql{SELECT sender \<br />
   FROM whitelist \<br />
   WHERE type=2 AND sender='${quote_mysql:$sender_address}'}{$value}fail}</code></p>
<p><strong>3.</strong> Роутер, который задействуется перед обработкой исходящей почты:</p>
<p><code>whitener:<br />
  driver = dnslookup<br />
  domains = ! +local_domains<br />
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8<br />
  transport = while_list_parse<br />
  unseen</code></p>
<p><strong>4.</strong> Соответствующий транспорт:</p>
<p><code>while_list_parse:<br />
  driver = pipe<br />
  command = /usr/local/sbin/white_list.php<br />
  user = exim</code></p>
<p><strong>5.</strong> Теперь один из главных моментов: стадия проверки. Перед проверкой на спам в acl_check_content вставляем следующие правила:</p>
<p><code># Accept whitelist domains<br />
accept sender_domains = +white_domains<br />
# Accept whitelist senders<br />
accept senders = +white_senders</code></p>
<p><strong>6.</strong> И окончательный момент &#8211; скрипт white_list.php, который добавляет отправителя в базу данных; расположен по <a href="http://danil.625.ru/wp-content/uploads/2007/07/white_listphp.txt" title="white_listphp.txt">этой ссылке</a>.</p>
<p>Готов выслушать замечания, в том числе идеологического характера <img src='http://danil.625.ru/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://danil.625.ru/2007/07/30/auto-whitelist/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

