Короткое пояснение для тех, кто не знаком с серыми списками. Белые и черные списки широко используются для фильтрации: в белых списках перечислены отправители и соединения, от которых следует всегда принимать сообщения, в черные списки (или списки блокировки, по терминологии Microsoft) попадают отправители и соединения, от которых пользователь не желает получать сообщения ни при каких обстоятельствах. Серый список занимает промежуточное положение между двумя крайностями: это список отправителей и соединений, от которых, может быть, не следует принимать сообщения.

 

Обработка серых списков выполняется следующим образом. Когда отправитель устанавливает SMTP-соединение с сервером-получателем, на котором используются серые списки, получатель принимает соединение и сообщение. Затем получатель сверяется с серым списком; если имя или IP-адрес отправителя в списке есть, то получатель выдает код ошибки SMTP 4xx. Коды ошибки из диапазона 4xx указывают на временные или переходящие ошибки; в спецификации SMTP они предназначены для того, чтобы отправитель повторил посылку сообщения после периода ожидания. Например, транспортный механизм Exchange Server 2007 выдает ошибку 452 4.3.1 (недостаточно системных ресурсов), если пространство на диске очереди составляет менее 4 Гбайт. Код указывает отправителю, что попытку следует повторить позднее; также действуют сообщения об ошибках, генерируемые фильтрами серых списков. Добросовестный сервер-повторитель реагирует на сообщение об ошибке и повторно ставит сообщение в очередь для доставки в более позднее время, но рассыльщик спама просто отправляет следующую копию сообщения (тем самым помогая фильтру серого списка принять решение о полной блокировке данного IP-адреса).

 

В ответ на сообщение, отправленное в сервер с серым списком, Exchange 2003 получает код 4xx "повторите попытку позже". Вместо того чтобы выждать достаточное время, Exchange повторяет попытку всего через несколько секунд. Обычно эта попытка также бывает неудачной, и дальнейшие попытки прекращаются.

 

Если сообщение не доставлено из-за серого списка, программе Exchange следует повторить попытку позднее. Иногда передающий сервер Exchange генерирует отчет о недоставленном сообщении (NDR) отправителю, указывая на отказ от сообщения (что неверно), а иногда нет. Сообщение не доставлено и его нет ни в одной из очередей. Exchange не пытается доставить его повторно, пока не будет перезапущена SMTP-служба. Сообщение просто исчезает отовсюду, кроме папки "Отправленные" у отправителя. Потому и трудно провести диагностику проблемы.

 

Однако существует способ обойти этот недостаток. При перезапуске SMTP-службы предпринимается новая попытка доставить потерянные сообщения; в группе новостей microsoft.public.exchange.admin newsgroup <http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?query=greylisting&dg=microsoft.public.exchange.admin&cat=en_US_801e3bda-e4db-473e-b4af-67fe7d13cc8c&lang=en&cr=US&pt=&catlist=&dglist=&ptlist=&exp=&sloc=en-us> есть публикации, в которых говорится о перезапусках SMTP-службы по расписанию, чтобы сообщения не застревали постоянно. Этот метод все же лучше, чем ничего, хотя его и нельзя назвать полноценным решением проблемы.

 

Как распознать проблему в сети компании? Возможно, помогут заявления пользователей о сообщениях, которые были отправлены, но так и не дошли до адресата, или подозрительные NDR-отчеты с постоянными ошибками 4xx. В этом случае можно перезапустить SMTP-службу и посмотреть, не появятся ли разблокированные сообщения. Можно также обратиться в службу поддержки Microsoft; это поможет точно определить, насколько проблема распространена. Если причина неполадки в данной ошибке, то компания предоставит помощь бесплатно.

 

Я по-прежнему считаю серые списки эффективным средством против спама и надеюсь, что небольшой недостаток не испортит отношения пользователей к технологии.