[exim-conf] поддержка Distributed Checksum Clearinghouses

Victor Ustugov victor на corvax.kiev.ua
Сб Дек 19 18:12:54 EET 2009


приветствую

тут недавно dawnshade сподвиг меня посмотреть на DCC, в том числе 
применительно к работе с ним непосредственно из exim.

как оказалось позже, поддержка DCC в exim реализована таким образом, что 
решение принимается только на основании $dcc_result, при этом 
$dcc_header используется только для добавления полей заголовков.

при этом достаточно большое количество спамовых писем в ходе тестовых 
проверок не было опознано как спам.

после изучения механизма взаимодействия SpamAssassin и dccifd путем 
анализа исходного текста Mail::SpamAssassin::Plugin::DCC стало ясно, что 
принимать решение о том, является ли письмо массовым, имеет смысл только 
путем анализа значений параметров Body, Fuz1 и Fuz2 поля 
X-DCC-URT-Metrics, значение которого exim присваивает переменной 
$dspam_result.

также в ходе тестов стало ясно, что использовать DCC как основной 
контент сканер не имеет смысла, т. к. с помощью технологии проверки 
контрольных сумм писем можно выявить только действительно массированные 
рассылки спамеров.

поэтому можно считать, что поддержка работы с DCC в паровозе реализована 
для пополнения коллекции поддерживаемых контент сканеров.

итак, для включения использовании DCC (а точнее dccifd) нужно внести 
значение DCC в переменную confCONTENT_SCANNING (можно через пробел 
указать это значение после перечисления уже используемых контент сканеров):
define(`confCONTENT_SCANNING', `SPAMASSASSIN KAS3 DCC')

далее следует указать адрес сокета dccifd:
define(`confDCC_ADDRESS', `/usr/local/dcc/dccifd')

по умолчанию в случае временных ошибок dccifd письмо будет принято. если 
в таких случаях нужно возвращать отправителю временную ошибку, нужно 
указать это в переменной confDCC_DEFER_OK:
define(`confDCC_DEFER_OK', `NO')

действие, которое должен предпринять exim в том случае, если DCC 
опознает письмо как массовое, указывается в переменной confDCC_ACTION. 
возможные значения этой переменной такие же, как для других контент 
сканеров, они приведены в m4/conf.default, поэтому приводить их здесь не 
имеет особого смысла.

на этапе тестирования можно использовать значение WARN. оно не 
документировано, позволить проверить письмо, результат проверки будет 
указан в поле X-DCC-Info.

теперь о том, что касается самой процедуры принятия решения о том, 
является ли письмо массовым. пока такое решение принимается в том 
случае, если один из трех выше указанных параметров поля 
X-DCC-URT-Metrics имеет значение many. значение $dcc_result игнорируется 
как бесполезное, ибо в результате достаточно большого количества тестов 
мне не удалось получить значения, отличного от "A", предписывающего 
принять письмо.

если DCC окажется хоть сколько-нибудь эффективным, процедура будет 
усложена путем сравнения значения каждого параметра из поля 
X-DCC-URT-Metrics с максимально допустимым значением. максимально 
допустимые значения полей можно будет указать в site/conf в качестве 
значений переменных confDCC_BODY_MAX, confDCC_FUZ1_MAX, confDCC_FUZ2_MAX.

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694  nic-handle: CRV2-RIPE, CRV-UANIC




Подробная информация о списке рассылки exim-conf