(Notes) Notes (2006 год)

Настройка Exchange Server 2003.


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

В сущности Exchange - это небольшая прога в один цикл, более всего напоминающая вот этот мой прокси-сервер. Почтовый сервер не делает почти ничего - устанавливает TCP-коннект (ну например тут это нагляднне видно - как это происходит) и пихает в сокет команды вот эти команды:

HELO Открыть сессию взаимодействия по протоколу SMTP. - доменное имя машины
MAIL FROM: Сообщить адрес отправителя (). Обязательная команда, которую надо выдать перед отправкой сообщения
RCPT TO: Сообщить адрес получателя (forward-path). Обязательная команда, которую выдают после MAIL FROM, но перед DATA
DATA Начать передачу тела почтового сообщения. Тело сообщения должно кончаться точкою(".") в первой позиции строки RSET
SEND FROM: Послать сообщение на терминал пользователя, который определяется командой RCPT
SOML FROM: SEND OR MAIL. Послать в почтовый ящик или на терминал пользователя
SAML FROM: SEND AND MAIL. Послать в почтовый ящик и на терминал пользователя
VRFY Получить информацию о пользователе, имя которого указывается в качестве аргумента команды
EXPN Получить информацию о пользователях зарегистрированных в качестве получателей корреспонденции
HELP Краткая справка по командам протокола
NOOP Нет операции
QUIT Завершить сессию
TURN Поменяться местами серверу и клиенту

Цикл ветвится в зависимости от управляющих флажков и от ответов сокета:

211 System status, or system help reply Статус системы или Help
214 Help message. Краткая справка
220 Service ready SMTP-сервис готов к работе
221 Service closing transmission channel Сервис закрыл канал передачи данных
250 Requested mail action okay, completed Соединение установлено
251 User not local; will forward to Пользователь не местный. Выполнить перенаправление запроса
354 Start mail input; end with . Начать ввод почтового сообщения
421 Service not available, closing transmission channel Сервис отсутствует. Канал передачи данных закрыт
450 Requested mail action not taken: mailbox unavailable Нет возможности записать данные в почтовый ящик
451 Requested action aborted: local error in processing Ошибка при обработке запроса
452 Requested action not taken: insufficient system storage Запрос не выполнен недостаточно памяти на вычислительной установке
500 Syntax error, command unrecognized Синтаксическая ошибка - нет такой команды
501 Syntax error in parameters or arguments Синтаксическая ошибка в аргументах команды
502 Command not implemented Данная команда не может быть выполнена
503 Bad sequence of commands Неправильная последовательность команд
504 Command parameter not implemented Параметр команды не может быть использован в данном контексте
550 Requested action not taken: mailbox unavailable Не найден соответствующий почтовый ящик
551 User not local; please try Пользователь не найден можно попробовать отправить почту по другому адресу
552 Requested mail action aborted: exceeded storage allocation Превышены квоты на использование ресурсов памяти
553 Requested action not taken: mailbox name not allowed Имя почтового ящика неправильное
554 Transaction failed Transaction failed

Собственно, эти же команды можно пихнуть в коннект и самому из командной строки:



Как видите, все довольно просто, но надо продать этот цикл за много-много тисяч долларз. Как это сделать? Только если замутить основную логику управления этим циклом и распихать флажки, управляющие ветвлениями в этом цикле, по многим-многим узлам дерева параметров. Причем если это сделать как можно замудренее, то можно сорвать неплохой куш даже на обучении пользования этим деревом управляющих параметров!


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


Итак, как всегда все начинается с чистой виндузни и DNS. Обратите особое внимание на корректную настройку DNS. 90% всех проблем при подъеме ISA, Exchange, IIS и всех прочих интернет-сервисов - это ошибки настройки DNS. Я об этом писал на своем хомяке уже сто раз. В случае Exchange это может быть не просто неработоспособность, но и автоматическое присвоение каждому отправленному письму пометки SPAM и вечная блокировка вашего почтовика в множестве blacklist'ов.

Для работы Echange DNS должен быть поднят не только внутри локалки, но и внешний. В нем есть две ключевые вещи - прямая и обратная запись. С прямой записью никаких проблем никогда не бывает, она вностится в определении домена и DNS, определяющий домен, будет авторитативным. А вот обратную запись должен вносить DNS, авторитативный для вашего IP-адреса, те DNS провайдера. В случае отсутствия обратной записи все письма автоматически становятся спамом. На этом паразитирует множество провайдеров интернет-услуг, например Starnet, предоставляя обратную запись в DNS только юридическим лицам. Те из-за этой одной строки в DNS вы будете платить за интернет ежемесячно уже не 300 рублей, например, а 20 тысяч! Такая чудо-находка отечественных провайдеров в нашей стране почему-то не считается мошенничеством - я не видел ни одного судебного процесса, где провайдера разорвали бы на клочки за подобные дела. Вписал вместо верхней строки в DNS нижнюю - и продал тот же трафик в то же место, но в 100 раз дороже!


25.21.172.217.in-addr.arpa domain name pointer host25-21-172-217.static.pppoe.starnet.ru.
25.21.172.217.in-addr.arpa domain name pointer mail.asp-net.ru.

Но вернемся от внешнних DNS-настроек непосредственно к нашему почтовику. Для начала чистую виндузню повышаем до контроллера домена (или включаем в уже существующий домен). Имя домена может быть любое - оно ни на что не влияет. Но оно будет писаться во всех-всех логах и будет видно всем клиентам. Поэтому его лучше выбрать благозвучным. Обязательное требование - наличие точки в имени домена (те имя почтовика в журналах будет выглядеть например как MyComputer.MySuperDomain.Local). Без этого суффикса на конце .LOCAL - DNS-ники работают неверно. Сам суффикс может быть любой (например я ставлю везде суффикс .VM).

При этом надо выполнить некоторые вспомогательные вещи - выбрать специальную конфигурацию виндузни, например стандартный виндузовый Pop3 не нужен, SMTP и NNTP - наоборот нужен. Это напомнит мастер. Далее прогоняем расширение Active Directory (чтобы было куда писать Email юзера и прочие характеристики почты) и можно запустить собственно инсталяцию Exchange 2003.

Собственно всех возможных багов при инсталяции я описывать не буду - предполагаем, что инсталяция завершилась.


На сервере хорошо бы выполнить также пару дополнительных настроек - как всегда закрыть SMB-протокол и открыть FTP, чтобы можно было сбрасывать логи и пароли юзеров. Еще надо поставить сервис-паки к Exchange. Для инсталяции нужных сервис-паков к Экченжу есть специальный инструмент Microsoft Exchange Best Practices Analyzer v2.8. Эта чудо-прога с придурью (она даже не создает ярлычки в меню или на рабочем столе, чтобы ее можно было найти), но похоже позволяет получить и проинсталировать обновления Exchange. В остальном ее сервисы для меня непонятны - в частности ту конфигурацию, что я опишу ниже - она воспринимает как отрытый релей - что конечно же не так.


Итак, открываем наконец первый раз наши два основных инструмента - Active Directory Users и Exchange System Manager и приступаем непосредственно к конфигурированию Exchange. Кроме этих двух инструментов в работе постоянно нужны будут две папки, которые вы видите на рисунке. В одной из них хранятся собственно файлики с почтой, а во второй - логи работы почтовика. Оснастка Exchange сделана предельно неудобно - реально в работе кроме этих двух папок ничего и не требуется - гавнасофту лучше было бы сосредоточится на инструментах анализа почтовых логов, чем на непонятных для меня фишках типа неработающего построителя списков почтовых адресов на сервере. Кроме того, оболочка Exchange на практике (если почтовик заспамился - оболочка Echange System Manager просто тупо виснет. А в этих папках эксплорером прямо по диску все-таки можно увидеть что происходит.



Exchange активно взаимодействует с ActiveDirectory и даже сам с собой через запросы на своих сетевых интерфесах. И часто на машине с почтовиком открыты все порты. Это можно аккуратно закрыть с помощью kerio (или подобного программного фаервола) - но я обычно для простоты прикрываю все порты почтовика аппаратным фаерволом.

В Exchange закопано еще много всевозможных галок, позволяющих сконфигурить SMTP-циклы иначе. Например я могу еще десяток вариантов настройки описать сходу - например с помощью SMTP-коннекторов или когда вообще нету локалки, а все интерфейсы почтовика злые - так бывает когда почтовик стоит на хостинге или в DMZ. Но минимально возможную работоспобную конфигурацию я, похоже, уже описал все-таки на этой страничке.


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

Долгая дорога к профессиональному почтовому администратору после запуска этой проги только начнется: установка в Exchange всевозможных антиспамовых и антивирусных фильтров, работа с блеклистами, куда будет попадать ваш почтовик в результате действий ваших юзеров, дефрагментация и бекапирование базы сообщений, восстановление Active Directory (списка ваших юзеров) после завирушивания вашего почтовика и его падения, программирование с использованием MAPI-функций почтовика, всякие автоматизированные загрузки в почтовик больших списков юзеров (я например догружал каждый год списки из нескольких тысяч студентов института и их почтовых адресов), подъем шифрованной почты, открытие почтовика для ваших внешних юзеров, много-много всяких прочих операций, которые и являются основой ежедневной работы почтового администратора.


К сказанному остается только добавить, что на свете существует множесто более продвинутых чем билогейтсовский Exchange и совершенно бесплатных OpenSource почтовых серверов. Некоторые из них также довольно подробно описаны у меня на сайте - Избавляемся от MS Exchage на Window-платформе (hMailServer + ASSP).



Комментарии к этой страничке ( )
ссылка на эту страничку: http://www.vb-net.ru/windows/Exchange/index.htm
<На главную>  <В раздел ASP>  <В раздел NET>  <В раздел SQL>  <В раздел Разное>  <Написать автору>  < Поблагодарить>
Московская хельсинская группа   Радио Свобода  Новая газета   The New Times (Новое время)