Настройка 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 просто тупо виснет. А в этих папках эксплорером прямо по диску все-таки можно увидеть что происходит.
- Для начала пропишем перечень почтовых доменов, которые будет обслуживать наш почтовик. Это делается в странном месте Recipient -> Recipient policy->Default policy -> Property -> Email Address (Policy). Закопано на совесть. Если не знаешь - никогда не найдешь.
Как видите, у меня этот почтовик принимает с почту трех доменов. Юзера одни и те же, ящики те же самые, но почтовых доменов у них доменов - три. Надо быть аккуратным при изменениях почтовых доменов здесь. Exchange переспрашивает подтверждение и может изменить почтовый домен на всех вкладках всех юзеров в Active Directory.
- Теперь создаем юзеров - если виндузня русская, то почты типа Администратор@mail.ru, как вы понимаете, просто не существует. Начнем например с юзера INFO. Это стандартный юзер для приема спама. Почту с этого юзера читать вредно для психики и ее надо сразу отправлять в мусор.
Как видите в результате прогона расширения Active Directory (каталога юзеров) - появились четыре дополнительные вкладки, относящиеся к Exchange. На одной из них - вбиваем почтовый адрес юзера
Собственно все остальные вкладки вам понадобятся крайне редко и начинающему почтовому администратору лучше пока их не трогать. Обычные полезные возможности там - сделать себе копию всех проходящих через почтовик сообщений и всяко-разно ущемить своих юзеров, например уменьшить им дисковый размер почтового ящика.
- Возвращаемся к настройкам движка SMTP. В этом странном месте (Internet message formats -> Global Setting ->Default -> Properties -> Message Formats есть смысл поставить Юникод (ибо мы в России).
А на соседней вкладке надо снять две важнейшие галки - Allow delivery report и Allow non delivery report. Если не убрать эти галки - то например к вам влетает мыло с какого-нибудь домена hren.com. И вы ему сообщаете, что сообщение с него удачно легло в почтовый ящик к вам. Как вы думаете - есть смысл разглашать домену hren.com какие именно ящики у вас есть на сервере? Еще хуже, когда вы начинаете ему сообщать, что такого ящика нету. А hren.com не принимает почту от вас. Очередь зависает. Ваша беспрестанная долбежка в hren.com фиксируется множеством провайдеров и промежуточных серверов. Вы сами того не понимая - становитесь спамером. Поэтому все так важно в настройке почтовика. Начинается все с этих двух галок.
- Следующая такая же ацкая галка, которую на этот раз надо поставить, а не снять - закопана в следующем пункте. Там нету листа дереве у которого propertes, надо сразу жмакать правой в дереве параметров на Message Delivery. Тут тоже много чего можно накрутить (сюда прикручиваются входные фильтры обычно), но самая важная галка на рисунке - не принимать мыло для юзеров, которых нету в Active Directory (списке юзеров). Иначе не будет конца и края очередям на всякие несуществующие ящики.
На этом скрине есть смысл еще занести какие-то адреса в список запрещенных к обработке на вашем почтовике. Например те адреса, с которых ваш сайт рассылает различные уведомления о подтверждении регистрирующихся у вас пользователей своих почтовых адресов. Такой публичный почтовый ящик (например INFO) попадает во все спамерские списки - вы его делаете односторонним имено на этой вкладке.
А вот галка на разрешение применения этого и других фильтров закопана в каждом SMTP-сервере. И закопана на славу. На скрине ниже - как ее найти.
- Теперь переходим на узел Server. Для начала поставим две галки журналирования.
Вторая важная возможность в свойствах сервера - это диагностика. Это вкладка Diagnostic logging. Там находим MTATransport. И ставим максимальную диагностику.
Тeперь почтовик будет писать обширнейшую и конкретную диагностику в журнал системы. Без этой диагностики вообще никак понять невозможно почему ИМЕННО mailbox unavailable, например.
- И вот наконец мы переходим к конфигурированию SMTP-серверов. В принципе это последнее, и самое важное место, которое надо правильно сконфигурить. Я многократно описывал эту свою простую идею у себя на хомяке, например тут. Нам надо будет поднять ДВА SMTP-сервера. Внешний-злой, который ничего и никогда не будет пропускать в RELAY не релеет и внутренний-добрый, который будет релееть все для всех (что позволит нашим внутренним-доверенным юзерам в локалке отправлять все что угодно и куда угодно).
Теперь осталось понять как реализовать эту глобальную идею конкретными галками в оснастке.
- Итак, переходим к внешнему (злому) серверу, который будет принимать почту. Вот главная вкладка моего внешнего SMTP-сервера. Такой адрес тут потому, что я пускаю входной трафик в почтовик предварительно его профильтровав через аппаратный или программный фаервол. Количество коннектов тоже надо ограничить. В критической ситуации это спасает.
- Следующая важнейшая вкладка тут - Access. Аутентифкация тут должна быть анонимная. Это стоит по умолчанию правильно. Коннект на этом узле должне быть разрешен для всех.
- Релей разрешен только в три моих домена. Это супер-важная настройка. Ключ ко всему. Если хоть ненадолго (даже при кратковременных экспериментах) тут будет разрешен релей для всех - меняйте айпишник. Из блек-листов вычиститиь ваш почтовык практически невозможно. Некоторые блеклисты снимают бан только за деньги, некоторые только через месяц, некоторые вообще не снимают, а просто безвозвратно понижают рейтинг этого айпишника.
- На вкладке Messege для получения начальной работоспобности можно ничего не менять. Переходим на более важную вкладку Delivery. OutBound Security в микрософте поставили по умолчанию правильно - анонимно. И там тоже можно ничего не менять. Времена повторов тоже пока можно не менять. А вот глубже закопанавкладка Advanced. Она важна. Здесь вы поставите имя домена, которое увидит ваш внешний партнер-почтовик. Но еще глубже закопана еще более важная галка - используемый этим SMTP-сервером DNS.
- Тут лучше поставить DNS вашего провайдера. Тут есть еще супер-важная галка - Smart Host. Но поскольку этот SMTP-цикл работает только на прием - это поле остается пустым. Но в иных конфигурациях вы можете сюда что-то вписать и весь принятый трафик будет пробрасыватся туда, куда вы впишите здесь. И как это имя разрешится в указанном тут же DNS. Как видите - все самые важные галки, радикально меняющие алгоритм работы всего почтовика, закопаны максимально глубоко. Никогда их там не найдешь - пока не знаешь где искать.
- Галку Prform reverse DNS lookup на скрине выше - тоже имеет смысл поставить. Некторое количество спамеров, которые работают с почтовиков без реверсной SOA будет отбрасыватся.
- Теперь переходим к конфигурированию внутреннего (доброго) сервера. Как видите, этот цикл слушает совсем другой адрес - адрес в локалке. Аутентифкация тут тоже будет анонимная (ее не меняем), а вот коннектится к этому SMTP-серверу можно только из локалки.
- Этот SMTP-сервер - добрейший парень, он позволяет всем кто прошел анонимную аутиентификацию - выполнить релей.
- Лишь бы только анонимы эти приходили из локалки. Это ключ всей описанной настройки.
- Все остальное во внутреннем SMTP-цикле мало имеет значения. Ну разве что цифры коннектов хорошо бы прибить, чтобы снизить производительность почтовика (когда завирусятся клиентские кампы и начнут валить ваш почтовик своей вирусней и спамом). Для начального поднятия работоспособности самого почтовика важна пожалуй лишь та самая глубоко закопанная галка с адресом DNS-ника. Я рекомендую там ставить сразу DNS-провайдера. Хотя я так делаю не всегда. Чаще я поднимаю свой отказоустойчивый DNS, но для начинающих я бы не рекомендовал так делать. В любом случае - малейший сбой в работе DNS - и никакая почта уже никуда не уйдет.
- Нормально настроенный и работающий почтовик не должен иметь огромных зависших очередей, а должен выглядеть как на скрине ниже. За исключением некоторого количества писем, которые собственно хранятся в данный момент в почтовике, но пользователи их еще не забрали. Но количество сообщений, хранимых в почтовике пользователями тоже не должно быть большое. Поэтому я запрещаю обычно протокол IMAP4, позволяющий пользователям читать письма, не забирая их из почтовика (обычно так пытаются работать пользователи TheBat).
Exchange активно взаимодействует с ActiveDirectory и даже сам с собой через запросы на своих сетевых интерфесах. И часто на машине с почтовиком открыты все порты. Это можно аккуратно закрыть с помощью kerio (или подобного программного фаервола) - но я обычно для простоты прикрываю все порты почтовика аппаратным фаерволом.
В Exchange закопано еще много всевозможных галок, позволяющих сконфигурить SMTP-циклы иначе. Например я могу еще десяток вариантов настройки описать сходу - например с помощью SMTP-коннекторов или когда вообще нету локалки, а все интерфейсы почтовика злые - так бывает когда почтовик стоит на хостинге или в DMZ. Но минимально возможную работоспобную конфигурацию я, похоже, уже описал все-таки на этой страничке.
Только не думайте, что это все. Я описал тут только минимально необходимые действия после инсталяции Exchange, чтобы эта прога вообще заработала - это похоже на первичную инсталяцию виндузни на свой кампутер.
Долгая дорога к профессиональному почтовому администратору после запуска этой проги только начнется: установка в Exchange всевозможных антиспамовых и антивирусных фильтров, работа с блеклистами, куда будет попадать ваш почтовик в результате действий ваших юзеров, дефрагментация и бекапирование базы сообщений, восстановление Active Directory (списка ваших юзеров) после завирушивания вашего почтовика и его падения, программирование с использованием MAPI-функций почтовика, всякие автоматизированные загрузки в почтовик больших списков юзеров (я например догружал каждый год списки из нескольких тысяч студентов института и их почтовых адресов), подъем шифрованной почты, открытие почтовика для ваших внешних юзеров, много-много всяких прочих операций, которые и являются основой ежедневной работы почтового администратора.
К сказанному остается только добавить, что на свете существует множесто более продвинутых чем билогейтсовский Exchange и совершенно бесплатных OpenSource почтовых серверов. Некоторые из них также довольно подробно описаны у меня на сайте - Избавляемся от MS Exchange на Window-платформе (hMailServer + ASSP).
|