В Exchange Server 2003, особенно теперь, после выхода Exchange 2003 Service Pack 2, входит несколько фильтров соединений. Поэтому я решил, что было бы неплохо написать статью о порядке применения этих фильтров во время SMTP-сессий между внешним SMTP-сервером и сервером Exchange 2003, имеющем выход в Интернет.
В Exchange 2003 с Service Pack 2 входят следующие фильтры соединений:
Все эти фильтры (за исключением первого) можно просмотреть на странице Properties (Свойства) объекта Message Delivery (Доставка сообщения) в консоли управления Exchange System Manager (Рисунок 1). Первый фильтр находится на странице Property (Свойства) виртуального сервера SMTP.
Рисунок 1: Страница Property (Свойства) объекта Message Delivery (Доставка сообщения) в консоли System Manager
Возможно, вы уже знаете о назначении каждого из фильтров соединений, и даже, скорее всего, используете некоторые из них в работе с сообщениями. Но интересовались ли вы когда-нибудь порядком, в котором применяются эти фильтры во время SMTP-сессии? Вероятно, да, особенно в проблемных ситуациях, когда входящие сообщения от одной или нескольких сторонних организаций не доходили до одного или нескольких получателей в вашей организации.
Когда внешний SMTP-сервер пытается соединиться с вашим SMTP-шлюзом сервера Exchange 2003 (точнее с виртуальным SMTP-сервером), который обычно смотрит напрямую в Интернет, первое, что делает сервер, это проверяет IP-адрес внешнего SMTP-сервера (доставляющего сообщение в вашу организацию с помощью анонимной SMTP-сессии) на присутствие его в списке IP-адресов в фильтре контроля соединения виртуального SMTP-сервера (Рисунок 2).
Рисунок 2: Блокируемые виртуальным SMTP-сервером IP-адреса
Если IP-адрес соединяющегося сервера указан, SMTP-сессия обрывается, если нет, то соединения принимается и соединяющийся сервер запускает команду EHLO или HELO (в зависимости от типа, версии и настроек сервера). Ответ на команду EHLO показан на Рисунке 3.
Рисунок 3: Команда EHLO
После команды EHLO (или HELO) соединяющийся сервер посылает команду MAIL FROM: sender@domain.com. Теперь IP-адрес SMTP-сервера проверяется на наличие его в списке Global Accept list (Глобальный список разрешенных адресов), расположенном на вкладке Connection Filtering (Фильтр соединения) (Рисунки 4 и 5).
Рисунок 4: Вкладка Connection Filtering (Фильтр соединения)
Рисунок 5: Список разрешенных IP-адресов
Если IP-адрес SMTP-сервера находится в списке, сообщение принимается и отправляется на фильтр идентификатора отправителя. Если IP-адреса в списке нет, он проверяется на наличие в списке Global deny list (Глобальный список запрещенных адресов), который находится там же, где и список разрешенных адресов (Рисунок 4).
Если IP-адрес SMTP-сервера находится в списке запрещенных адресов, соединение тот час же обрывается. Если нет, сообщение отправляется на следующий фильтр: фильтр отправителя.
Фильтр отправителя проверяет адрес электронной почты, указанный в команде MAIL FROM:, о которой мы уже говорили ранее. Эти адреса проверяются на наличие их в списке заблокированных отправителей (Рисунок 6).
Рисунок 6: Фильтр отправителей
Если адрес, указанный в команде MAIL FROM: находится в списке, соединение либо прекращается (при включенной опции Drop connection if address matches filter (Обрывать соединение, если адрес совпадает с адресом, указанном в фильтре)), либо принимается (если включена опция Accept messages without notifying sender of filtering (Принимать сообщение без предупреждения отправителя о фильтрации)). Если соединение принимается, сессия продолжается, но сообщение будет отослано в папку BadMail, а не предполагаемому получателю. Если адреса сообщения нет в списке, виртуальный SMTP-сервер посылает команду OK (Рисунок 7).
Рисунок 7: 250 2.1.0 Sender OK
Теперь соединяющийся SMTP-сервер посылает команду RCPT TO: (Рисунок 8).
Рисунок 8: 250 2.1.5
После отсылки команды RCPT TO: IP-адрес соединяющегося SMTP-сервера проверяется на наличие в любом списке службы блокирования, указанном на вкладке Connection Filtering (Фильтр соединения) (Рисунок 9).
Рисунок 9: Списки службы блокирования
Если IP-адрес соединяющегося SMTP-сервера находится в глобальном списке разрешенных адресов, сессия игнорирует данный шаг. Сессия продолжается и в случае, если IP-адрес не находится в списках службы блокирования, но если IP-адрес занесен в один из списков, сервер отсылает код и сообщение об ошибке отправителю.
Далее фильтр соединения проверяет, находится ли отправитель / адрес электронной почты в списке исключений фильтра соединений (Рисунок 10).
Рисунок 10: Список исключений фильтра соединения
Если отправитель / адрес электронной почты находится в списке, сообщение принимается и выполняется команда DATA, если нет, то происходит проверка в списке получателей фильтра получателей (Рисунок 11).
Рисунок 11: Запрещенные получатели на вкладке Recipient Filtering (Фильтр получателей)
Если получатель сообщения находится в списке, виртуальный SMTP-сервер возвращает ошибку о неверном получателе серверу отправителя. Если нет, сессия продолжается.
Если получателя нет в списке, производится проверка на существование получателя в Active Directory. Если получателя нет в Active Directory, виртуальный SMTP-сервер возвращает ошибку о неверном получателе. Если получатель присутствует в Active Directory, сессия продолжается.
Соединяющийся SMTP-сервер посылает команду DATA:, подобную представленной ниже.
From: henrik@exchange-faq.dk
Теперь фильтр отправителя проверяет исходящий адрес для того, чтобы убедиться, что он не находится в списке заблокированных отправителей. Если отправитель, указанный в команде DATA заблокирован, соединение либо прерывается (возвращается ошибка 5.1.0 “Sender denied”), либо сообщение принимается, но отправляется в папку BadMail, а не предполагаемому получателю. Если отправитель не заблокирован, сообщение принимается и ставится в очередь на доставку.
В зависимости от того, включены ли у вас фильтры идентификатора пользователи и/или настраиваемый фильтр сообщений, сессия может и не завершаться на данном этапе. Если у вас включен фильтр идентификатора отправителя, проверяется существование записи SPF для домена отправителя, и, в зависимости от трех возможных вариантов действия (Рисунок 12), сообщение принимается (с присоединением статуса идентификатора отправителя), удаляется (принимается и удаляется без отсылки отправителю сообщения NDR) или отклоняется (не принимается).
Рисунок 12: Фильтр идентификатора отправителя
Есть и другие параметры, от которых зависит фильтр идентификатора отправителя. Для подробной информации рекомендую прочитать эту статью на сайте MSExchange.org.
Если сообщение проходит фильтр идентификатора отправителя, оно проверяется настраиваемым фильтром сообщений (Intelligent Message Filter – IMF). И здесь, в зависимости от настроек фильтра, сообщение либо принимается, либо воспринимается как спам. Если сообщение воспринимается как спам, оно, в зависимости от того, что выбрано в поле When blocking messages (Действие при блокировке сообщения), принимается, удаляется или отправляется в архив.
Рисунок 13: Настраиваемый фильтр сообщений
Вот и все на сегодня. Надеюсь, из моей статьи вы узнали что-то новое. Увидимся!
Источник http://www.msexchange.org