Устанавливаем связку Postfix + Exchange::Журнал СА 7.2005
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 2252
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 2228
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1788
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1311
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1842
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Устанавливаем связку Postfix + Exchange

Архив номеров / 2005 / Выпуск №7 (32) / Устанавливаем связку Postfix + Exchange

Рубрика: Администрирование /  Электронная почта

 ВЛАДИМИР АГАПОВ

Устанавливаем связку Postfix + Exchange

Перед нами нетривиальная задача. Требуется организовать внутрикорпоративный документооборот на базе MS Exchange, оставив пользователям возможность общаться по электронной почте с внешним миром. И при этом не уменьшить уровень внутренней безопасности. Предлагаем вам быстрое и эффективное решение данной задачи

Итак, вы – системный администратор. Большой конторы или маленькой, принципиального значения не имеет. Равно как и то, настроена ли у вас почтовая система или это только предстоит сделать в ближайшее время. Главное другое: однажды вас вызывает к себе начальник и говорит: «хочу». Хочу, чтобы у нас все было как у людей: и книга адресная единая, корпоративная, и планировщик задач, и календарь событий на месяцы и годы, ну, в общем, все, что только он где-то слышал или, не дай бог, видел. Озадаченные этим вопросом, вы возвращаетесь к себе, попутно думая, а что же проще: настроить The Bat на работу с LDAP и найти какие-нибудь утилиты, позволяющие получить данный функционал, или снести The Bat со всех машин, и поставить туда Outlook, закрыв глаза на резко упавшую в этом случае безопасность? Подумав с полчасика, приходим к выводу: придется ставить Outlook, и не только его, что было бы только половиной беды, но и Exchange в качестве почтового сервера. Поскольку начальнику может прийти в голову и еще что-нибудь неприличное, типа внутрикорпоративного документооборота. Вместо MS Exchange можно, конечно, использовать и OpenXchange, Hula, Opengroupware и пр. Но мы остановимся на первом варианте.

Скорее всего, у вас совершенно нет желания вывешивать наружу машину с установленной на ней ОС Windows и Exchange в придачу. Значит, придется разделить функции внешнего и внутреннего почтовых серверов. На внутреннем пусть себе крутится Exchange, а на внешнем поставим UNIX-подобную операционную систему и, например, Postfix в качестве почтового сервера. Вот из этих предпосылок и будем исходить.

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

В результате всех размышлений получается примерно следующий список задач:

  1. Установка на все рабочие машины Microsoft Office Outlook в качестве почтового клиента.
  2. Установка на первый сервер (exchange) ОС Windows и Microsoft Exchange (в данном документе будет подразумеваться версия 2003).
  3. Установка на второй сервер (gate) ОС из семейства UNIX и Postfix (FreeBSD 5.3 и postfix 2.2 соответственно).
  4. Настройка Exchange для работы с Postfix
  5. Настройка Postfix для работы с Exchange
  6. Дополнительное конфигурирование для поддержки 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. Но это тема уже совсем другой статьи.

  1. Полянский И. Postfix как шлюз для Exchange. – Журнал «Системный администратор», №5, 2004  г. – 34-37 с (http://samag.ru/archive/article/280).
  2. Почтовая система на базе Postfix, PostgreSQL, с фильтрацией вирусов и спама на FreeBSD 5.3 – www.deepnet.ru, раздел «Статьи».
  3. http://forum.deepnet.ru.

Комментарии
 
  10.12.2009 - 05:33 |  anonymous

ll

  25.12.2009 - 01:03 |  anonymous

Спасибо !!!
Статья помогла быстрее разобраться
А главное сэкоомила время, которого так нехватает

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru