Рубрика:
Администрирование /
Электронная почта
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВЛАДИМИР АГАПОВ
Устанавливаем связку Postfix + Exchange
Перед нами нетривиальная задача. Требуется организовать внутрикорпоративный документооборот на базе MS Exchange, оставив пользователям возможность общаться по электронной почте с внешним миром. И при этом не уменьшить уровень внутренней безопасности. Предлагаем вам быстрое и эффективное решение данной задачи
Итак, вы – системный администратор. Большой конторы или маленькой, принципиального значения не имеет. Равно как и то, настроена ли у вас почтовая система или это только предстоит сделать в ближайшее время. Главное другое: однажды вас вызывает к себе начальник и говорит: «хочу». Хочу, чтобы у нас все было как у людей: и книга адресная единая, корпоративная, и планировщик задач, и календарь событий на месяцы и годы, ну, в общем, все, что только он где-то слышал или, не дай бог, видел. Озадаченные этим вопросом, вы возвращаетесь к себе, попутно думая, а что же проще: настроить The Bat на работу с LDAP и найти какие-нибудь утилиты, позволяющие получить данный функционал, или снести The Bat со всех машин, и поставить туда Outlook, закрыв глаза на резко упавшую в этом случае безопасность? Подумав с полчасика, приходим к выводу: придется ставить Outlook, и не только его, что было бы только половиной беды, но и Exchange в качестве почтового сервера. Поскольку начальнику может прийти в голову и еще что-нибудь неприличное, типа внутрикорпоративного документооборота. Вместо MS Exchange можно, конечно, использовать и OpenXchange, Hula, Opengroupware и пр. Но мы остановимся на первом варианте.
Скорее всего, у вас совершенно нет желания вывешивать наружу машину с установленной на ней ОС Windows и Exchange в придачу. Значит, придется разделить функции внешнего и внутреннего почтовых серверов. На внутреннем пусть себе крутится Exchange, а на внешнем поставим UNIX-подобную операционную систему и, например, Postfix в качестве почтового сервера. Вот из этих предпосылок и будем исходить.
Поставить и запустить эти два сервера – задача сама по себе для новичка нетривиальная, но такой вариант нас не устраивает, в нашем случае необходимо, чтобы эти сервера взаимодействовали между собой и прозрачно пропускали почту в мир и обратно.
В результате всех размышлений получается примерно следующий список задач:
- Установка на все рабочие машины Microsoft Office Outlook в качестве почтового клиента.
- Установка на первый сервер (exchange) ОС Windows и Microsoft Exchange (в данном документе будет подразумеваться версия 2003).
- Установка на второй сервер (gate) ОС из семейства UNIX и Postfix (FreeBSD 5.3 и postfix 2.2 соответственно).
- Настройка Exchange для работы с Postfix
- Настройка Postfix для работы с Exchange
- Дополнительное конфигурирование для поддержки alias и прочего.
Пункты с 1-го по 3-й выходят за рамки обсуждения данной статьи, поэтому детально описывать их я не буду, а более подробно остановлюсь на пунктах 4, 5 и 6.
Одно из решений задачи уже было предложено в журнале [1]. Мы же в отличие от него будем использовать вариант проверки Postfix наличия почтового аккаунта в Windows-домене перед приемом почты.
Настраиваем Exchange для работы совместно с Postfix
Для начала определимся, что именно мы хотим получить от Exchange в данной конфигурации:
- Он должен получать почту, которую будет перенаправлять ему Postfix и доставлять ее в соответствующие почтовые ящики пользователей.
- Почта пользователей, отправляемая за пределы домена, должна попадать в Exchange и пересылаться им для дальнейшей обработки на внутренний интерфейс gate для дальнейшей отсылки ее в мир уже Postfix.
- В связи с тем, что название Windows-домена в AD часто не совпадает с почтовым доменом, необходимо включить маскарадинг.
- Во избежание локальных эпидемий внутреннюю почту также необходимо проверять на вирусы.
Приступим к настройке Exchange
Запускаем Exchange System Manager:
- Разворачиваем «Administrative Group company Servers Exchange protocols SMTP». Открываем свойства default. На закладке «Access» выбираем «Relay Restrictions» и записываем туда IP-адрес нашего Postfix-сервера. В некоторых случаях может потребоваться указать подсети целиком. Например, в случае использования приложений, напрямую общающихся с SMTP-сервером.
- Там же, на закладке «Delivery», выбираем «Advanced» и указываем в поле «Smart Host» IP-адрес Postfix-сервера в квадратных скобках.
- Здесь же, в поле «masquerade domain», указываем наш почтовый домен, для того чтобы Exchange отправлял всю почту от имени этого домена.
- Выбор антивирусного сканера под Exchange я оставляю за вами, поскольку почти все крупные производители антивирусных продуктов имеют в своих линейках такие решения.
Этих настроек на данный момент достаточно. Более детальную настройку и конфигурирование оставляю на ваше усмотрение.
Настраиваем Postfix для работы с Exchange
Определимся, что мы ожидаем от Postfix:
- Принимать почту, пересылаемую ему Exchange и отправлять ее дальше в мир.
- Проверять всю входящую и исходящую почту на вирусы.
- Проверять всю входящую почту на наличие спама и выставлять ей соответствующие балы.
- Для экономии трафика необходимо проверять, есть ли получатель входящего письма в нашем домене, и в зависимости от результата либо принимать, либо отвергать письмо.
- Пересылать все прошедшие проверку входящие письма на Exchange.
Прежде всего нам потребуется установить Postfix. Об этом достаточно много имеется информации в Интернете, поэтому остановлюсь лишь на главных моментах. У нас есть два варианта установки:
- просто пересылать всю входящую почту внутрь сети, не задумываясь, есть ли такой почтовый пользователь;
- предварительно проверять наличие пользователя в AD и в случае его отсутствия не принимать почтовое сообщение.
По первому варианту вы можете посмотреть уже упоминавшуюся здесь статью [1]. Однако я предпочел остановиться на втором варианте. Это позволит нам существенно сэкономить трафик и поможет уменьшить количество приходящего спама.
Для начала установим LDAP-client.
# cd /usr/ports/net/openldap22-client/ # make install clean
Далее устанавливаем Postfix с поддержкой LDAP. Если вы собираете его из портов, отметьте соответствующий пункт, в другом случае вам потребуется указать это явно:
# gmake tidy # gmake makefiles CCARGS="-I/usr/local/include -DHAS_LDAP" AUXLIBS="-L/usr/local/lib \ -R/usr/local/lib -lldap -L/usr/local/lib -R/usr/local/lib -llber" # gmake install
Приступаем к конфигурированию Postfix
Для начала установите все минимально необходимые значения. Что именно, можно узнать в документации на Postfix и в Интернете.
- Добавим в значение переменной «mynetworks» IP-адрес Exchange-сервера (например, 192.168.1.2/32).
- В качестве антивирусного сканера я использую ClamAV. Как его подключить к Postfix, можно прочитать в статье [2].
- Как подключить SpamAssassin, можно прочитать там же.
- Для проверки наличия учетной записи будем использовать LDAP-запросы к AD. Именно для этого мы и собирали Postfix с поддержкой LDAP. Внесем следующие записи в main.conf:
# Имя Windows-домена ldapmap_search_base = dc=office, dc=company, dc=ru
# IP-адрес PDC ldapmap_server_host = 192.168.16.1
# LDAP-порт ldapmap_server_port = 3268 ldap_timeout = 60 ldapmap_query_filter = (&(proxyAddresses=smtp:%s)(|(objectClass=user)(objectClass=group)(objectClass=contact))) ldapmap_result_filter = %s ldapmap_result_attribute = canonicalName ldapmap_special_result_attribute = ldapmap_scope = sub ldapmap_bind = yes ldapmap_bind_dn = ldapquery@office.company.ru ldapmap_bind_pw = LdaPassworD ldapmap_cache = no ldapmap_dereference = 0 ldapmap_domain = office.company.ru ldapmap_debuglevel = 0 virtual_mailbox_maps = ldap:ldapmap virtual_mailbox_domains = company.ru
Для того чтобы у Postfix были права на выборку информации о пользователях домена, заведем в домене нового пользователя ldapquery с паролем LdaPassworD.
В результате данной процедуры Postfix будет опрашивать домен на наличие пользователя с заведенным почтовым ящиком типа user@company.ru. В случае положительного ответа письмо будет приниматься для дальнейшей доставки, в случае отрицательного – отвергаться с кодом, указанным в переменной unknown_local_recipient_reject_code.
Чтобы Postfix после всех проверок отправлял письмо Exchange, добавим в main.conf:
virtual_transport = hash:/etc/postfix/virtual_transport transport_maps = hash:/etc/postfix/virtual_transport
и создадим файл /etc/postfix/virtual_transport:
company.ru smtp:[192.168.16.5]
где 192.168.16.5 – IP-адрес Exchange-сервера, а company.ru – домен, всю приходящую для которого почту следует пересылать на другой сервер. Не забываем после создания или редактирования этого файла делать:
postmap /etc/postfix/virtual_transport
Дополнительное конфигурирование
Для полноценной работы нам, возможно, потребуется еще несколько штрихов, а именно:
- Создать группы рассылок на Exchange. Для этого необходимо сделать следующее:
- Создать группу распределения.
- Создать почтовый аккаунт для этой группы.
- Добавить в эту группу всех, кто должен быть подписан на эту рассылку.
- Разобраться, как можно сделать алиасы в Exchange. Для этого можно использовать два варианта:
- Создать в Active Directory дополнительные SMTP-записи для каждого пользователя, которому необходимо прописать alias. Этот вариант проще и предпочтительнее.
- Там же можно создать запись типа CC для тех же целей.
На этом можно считать минимально необходимую настройку для работы данной связки законченной. Все возможные ошибки и проблемы всегда возможно отследить в логах postfix, где все достаточно информативно пишется. Так же для обсуждения этой статьи и всех дополнительных вопросов существует специально созданный топик на форуме [3].
Данный вариант является рабочим, проверен на офисе компании. Но у него есть как минимум один недостаток – он потенциально не защищен от атак типа DoS на AD, в случае большого количества одновременных внешних SMTP-сессий. Чтобы этого избежать, можно либо настроить в Postfix ограничения на количество одновременных сессий, либо скриптом по cron забирать информацию из AD и складывать ее на машине с Postfix. Но это тема уже совсем другой статьи.
- Полянский И. Postfix как шлюз для Exchange. – Журнал «Системный администратор», №5, 2004 г. – 34-37 с (http://samag.ru/archive/article/280).
- Почтовая система на базе Postfix, PostgreSQL, с фильтрацией вирусов и спама на FreeBSD 5.3 – www.deepnet.ru, раздел «Статьи».
- http://forum.deepnet.ru.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|