Proxmox Mail Gateway установка с Microsoft Exchange

Proxmox Mail Gateway установка

Выставлять в интернет корпоративный почтовый сервер плохая идея с точки зрения безопасности. Оптимальным вариантом является использование почтового шлюза, который будет проверять почту на спам и вирусы и уже пересылать ее внутреннему почтовому серверу. В Microsoft Exchange есть собственный вариант установки такого пограничного сервера, но из коробки, как правило, он не умеет ни проверять вирусы, ни фильтровать нормально спам. Приходится докупать решения сторонних разработчиков (например Касперского), чтобы закрыть почтовый траффик от интернет-угроз. Я же обычно использовал собранный вручную почтовый шлюз на Linux с использованием открытых технологий для фильтрации спама и вирусов. Но вот появилось красивое и бесплатное решение — Proxmox Mail Gateway установка которого с Microsoft Exchange не занимает и получаса.

Установка Proxmox Mail Gateway

Что из себя представляет сам продукт. Это сервер под управлением Debian с установленными и настроенными компонентами, а так же функциональным и удобным web-интерфейсом для настройки всего. До 2018 года продукт был закрытым, но с недавних пор разработчики открыли все компоненты под свободной лицензией и продают только поддержку продукта куда входят подписка на платные репозитории для обновления компонент. Но без подписки он тоже прекрасно работает, только для обновлений следует использовать бесплатные репозитории.

proxmox mail gateway подключение к exchange

Для установки предварительно скачиваем образ установщика на сайте:

https://www.proxmox.com/en/downloads/category/iso-images-pmg

А вот здесь вы можете скачать документацию на PMG.

https://www.proxmox.com/en/downloads/category/documentation-pmg

Открытая версия начинается с 5-го выпуска дистрибутива. Перед установкой убедитесь, что сервер соответствует минимальным системным требованиям. У меня установка завершалась ошибкой при нехватки оперативной памяти. Добавил до 4 Гб, пару ядер процессора и все прошло гладко.

В остальном установка весьма тривиальна:

  1. Грузимся с образа установщика. В моем случае это была виртуальная машина, поэтому я просто подключил iso-образ. Но в случае установки на аппаратный сервер легко делаем загрузочную usb-флэшку;
  2. Указываем диск на который установить. Объем зависит от ваших потребностей. Я выделил под весь шлюз 20 ГБ;
  3. Указываем страну и временную зону, а так же раскладку клавиатуры;
  4. Указываем пароль и e-mail администратора сервера. На этот адрес в дальнейшем будут поступать ежедневные отчеты и прочие сообщения сервера;
  5. Указываем ip адрес сервера, FQDN, прочие параметры IP. Если сетевых карт две, как в моем случае (внутренняя и внешняя), то настраивайте внутреннюю, а внешнюю можно настроить после установки;

После ввода этих данных начнется установка операционной системы.  По окончании вы должны получить возможность войти внутренний ip-адрес сервера по SSH и через веб-браузер по адресу https://ipadres:8006. В качестве логина используется root с паролем, который вы задали во время установки.

Настройка Proxmox Mail Gateway

Сразу после установки мне понадобилось настроить внешний интерфейс для приема почты из интернет. Настроить ip-адрес можно через веб-интерфейс, однако настраивать маршрутизацию все-равно придется редактируя файл описания интерфейсов /etc/network/interfces

настройка сети proxmox mail gateway

Пример отредактированного файла интерфейсов. После внесения всех правок рекомендуется перезагрузить сервер.

auto lo
iface lo inet loopback

auto ens32
iface ens32 inet static
 address 192.168.1.2
 netmask 255.255.255.0
up ip r add 192.168.0.0/16 via 192.168.1.1

auto ens33
iface ens33 inet static
 address X.X.X.X
 netmask 255.255.255.Z
 gateway Y.Y.Y.Y
#internet

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

Следующим шагом необходимо прописать бесплатный репозиторий для обновления компонентов PMG, а так же отключить платный репозиторий, который не будет работать без ключа платной подписки. Для этого необходимо отредактировать файл /etc/apt/sources.list.d/pmg-enterprise.list. Необходимо привести его к следующему виду:

#deb https://enterprise.proxmox.com/debian/pmg stretch pmg-enterprise
deb http://download.proxmox.com/debian/pmg stretch pmg-no-subscription

Теперь можно обновить систему:

apt update 

apt upgrade

При необходимости перезагрузить сервер.

Установка дополнительных компонент в Proxmox Mail Gateway

Из дополнительного программного обеспечения я установил лишь несколько утилит, к которым я привык и постоянно использую их в своей работе с Linux системами (в основном Ubuntu). Это Midnight Commander (mc), htop и ufw. Все это делается одной командой:

apt install mc ufw htop

Для непосвященных:

  • mc — аналог Norton Comander удобный файловый менеджер;
  • htop — удобный системный монитор показывает все процессы, загрузку процессора и т.п. в консоли;
  • ufw — надстройка к iptables для удобного управления локальным фаерволом.

После установки я включил ufw предварительно добавив в него примерно такие правила:

ufw allow from 192.168.0.0/16 to 192.168.1.2

ufw allow 25/tcp

ufw enable

Все! Снаружи на почтовом шлюзе будет открыт только 25 порт, а из локальной сети вы сможете подключится к серверу по любому порту.

Настройка почтового шлюза Proxmox Mail Gateway

Все остальные настройки делаются через веб интерфейс. Консоль вам понадобится только в случае если нужно будет что-то отладить и оперативно посмотреть логи. Смотреть их можно и в веб-админке, но мне в консоли привычнее.

Первым делом идем в раздел Configuration\Mail proxy. На вкладке Relay domains вбиваем домены на которые мы принимаем почту нашим почтовым шлюзом, т.е. например тот почтовый домен, который прописан у вас в Exchange.

почтовые домены proxmox mail gateway

Следующая интересующая нас вкладка Transport. Здесь мы прописываем соответствие домена и внутреннего адреса почтового сервера, например Exchange, куда почтовый шлюз будет пересылать всю чистую корреспонденцию.

транспорт почты proxmox mail gateway

И последняя вкладка  — это Networks, здесь необходимо прописать внутренние адреса серверов, клиентов, сегментов сети с которых почтовый шлюз будет принимать письма к пересылке. Обратите внимание, что пересылка с этих сетей разрешена только на внутреннем (internal) порту указанному на вкладке Ports. По умолчанию это 26 порт. Иными словами чтобы почта с вашего exchange уходила в интернет через шлюз вы должны прописать его адрес в Networks, а в Exchange указать адрес шлюза и задать ему 26 порт для работы (как это сделать написано ниже).

локальные сети proxmox mail gateway

После этого рекомендую зайти в раздел Spam Detector и Virus Detector и обновить их вручную. Остальные настройки в целом разумны по умолчанию, но вы вольны настраивать их как вам заблагорассудится. Для этого используйте документацию (ссылку я давал вверху).

Настройка коннектора Exchange на работу по нестандартному порту

Ну и напоследок необходимо настроить Send connector в MS Exchange на работу по нестандартному 26-му порту. Создайте коннектор для отправки как обычно, задайте ему осмысленное имя, например по имени хоста почтового шлюза. Затем запустите PowerShell консоль Exchange С помощью команды Get-SendConnector вы можете посмотреть в консоли коннекторы. Скопируйте имя вновь созданного коннектора. После чего введите команду:

Set-SendConnector -Identity "ConnectorName" -Port 26

Посмотреть, что порт изменился можно командой:

Get-SendConnector "ConnectorName"|fl Port

В обеих командах ConnectorName — заменить на имя вашего коннектора! Если все в порядке включайте коннектор и трафик пойдет через новый почтовый шлюз. Не забудьте настроить в DNS mx запись на новый почтовый шлюз, а так же соответствующий ей A и PTR записи.

статистика proxmox mail gateway

Замечания, критика, дополнения, опечатки? Прошу в комментарии!

Дополнительные материалы по PMG

Оцените статью
Добавить комментарий

Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.

  1. Oldman33

    Опечатка в команде.
    apt updaTe

    Ответить
    1. dkplayer автор

      Спасибо, исправил.

      Ответить
  2. qcetr

    Помогите разобраться почему не пересылает.
    May 23 13:47:32 mail postfix/lmtp[2309]: 0B82916095B: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=1.5, delays=0.24/0.01/0.04/1.2, dsn=2.5.0, status=sent (250 2.5.0 OK (1609635B0546C336DB7))
    May 23 13:47:32 mail postfix/qmgr[2053]: 0B82916095B: removed
    May 23 13:47:32 mail postfix/smtp[2314]: 5A5AD1609A1: to=, relay=192.168.34.10[192.168.34.10]:25, delay=0.07, delays=0.05/0.02/0.01/0, dsn=5.4.6, status=bounced (mail for [192.168.34.10]:25 loops back to myself)
    May 23 13:47:32 mail postfix/qmgr[2053]: 5A5AD1609A1: removed

    Ответить
    1. dkplayer автор

      Слишком мало информации. Лог пишет что письмо зациклилось, а почему надо смотреть настройки всего в целом.

      Ответить
  3. qcetr

    Спасибо. Буду смотреть

    Ответить
  4. Виталий

    Спасибо, стоит попробовать !!

    Ответить
  5. Alexey

    «обновить вручную их вручную» — лишнее «вручную» тут.

    А за статью спасибо!

    Ответить
    1. dkplayer автор

      Спасибо, Алексей. Исправил.

      Ответить
  6. Дмитрий

    Я чего то не допонял, как исходя из этой команды «Set-SendConnector -Identity «ConnectorName» -Port 26″ сервер exchange должен понять что слать письма надо через proxmox mail ведь его ip адрес тут не указан.

    Ответить
    1. dkplayer автор

      Читаем внимательно!

      «Создайте коннектор для отправки как обычно, задайте ему осмысленное имя, например по имени хоста почтового шлюза.»

      При создании коннектора вы и укажете хост или ip proxmox

      А команда нужна, чтобы задать хосту в конекторе порт отличный от 25-го.

      Ответить
  7. Алексей

    день добрый! подскажите пожалуйста, в такой ситуации подойдет ли мне данное решение, описанное в Вашей статье? есть 4 разных почтовых домена, все на одном сервере exchange, нужно чтобы с разных доменов письма уходили через разные внешние ip-адреса. ь.е. я делаю на проксмокс 4 сетевые карты, на которые делаю проброс 4 внешних айпишников, далее делаю коннекторы и все должно бы взлететь…

    Ответить
    1. dkplayer автор

      К сожалению, я не великий знаток postfix и такую изощренную конфигурацию никогда не рассматривал. Поэтому из опыта ничего не подскажу.

      Ответить
  8. Денис

    Здравствуйте, поставил в тесте PMG, вопрос вот в чем:
    Сеть у меня с VLAN и попасть в вебморду PMG могу только с того vlan в котором он находится, по ssh попадаю с любого vlan. Перепробовал кучу всего. Есть такая особенность когда пробую зайти в вебмору не с того vlan — pmg на время блокирует к нему доступ для ип с которого пытаюсь зайти.

    Ответить
    1. dkplayer автор

      У меня сеть тоже с vlan и все прекрасно работает. Сервер PMG находится в отдельном сегменте DMZ, компьютеры администраторов и пользователей в другом и все работает. Или вы имеете в виду виланы настроены на интерфейсе PMG?

      Ответить
      1. Денис

        Проблема оказалась в моем ПК, странно но когда он пытается соединиться с PMG связь с ним пропадает. С других ПК все работает.
        Тогда еще вопрос: Использовали ли вы кластер?

        Ответить
        1. dkplayer автор

          Нет, кластер не использовал.

          Ответить
  9. Павел

    Спасибо. Полезно. Доступно.

    Ответить
  10. Hulk

    Так и не понял, зачем менять MX и PTR? ведь ведь у вас шлюз должен быть изначально идти через внешний IP того же почтового сервера, на шлюзе прописываем smtpd banner, иклудим в spf и всё, ведь смысл должен оставаться таким, что 25 порт будет закрыт для внешних подключаемых пользхователей и отправлять клиентов на 587 tls, а 25 остается для общения почтарей, и по идеи у нас только должен во внешку форвардится 25 порт от шлюза, остальное работает на почтовом сервере, IMAPS POPS MAPI, если я где то не прав, подправьте.

    Ответить
    1. dkplayer автор

      Если вы меняете какой-то существующий mta на proxmox, то вы правы, но речь в статье идет об установке с нуля.

      Ответить
  11. Андрей

    Здравствуйте, помогите пожалуйста, не могу нигде найти информацию как сменить отправителя при восстановлении (отправке) письма из спама. По умолчанию стоит: Postmaster@domain

    Ответить
    1. dkplayer автор

      При отправке письма из карантина отправитель не меняется, если только вы не делали какие-то настройки в разделе Mail Filter. Сообщения от postmaster приходят если вы включали отправку копий спам писем на какой-то ящик или уведомлений о спаме.

      Ответить
  12. Ivan

    при настройке второго сетевого интерфейса из Web отвалился доступ к нему по первой сетевой карточке. Где это настраивается? Как поменять привязки web сервера на первый адаптер?

    Ответить
    1. dkplayer автор

      Так ведь я в статье написал как и где настраивается…

      Ответить
  13. testesxi

    Здравствуйте. Установил версию Proxmox Mail Gateway 6.0-4 free в качестве почтового шлюза. Работает, почту пернаправляет, спам ловит. Только не отображает карантин в разделе Spam Quarantine. Хотя в разделе Tracking Center отображаются некоторые письма со статусом moved mail for users@example.org to spam quarantine. Возможно это компонент не включен или он не доступен в бесплатной версии. Можете подсказать как включить чтобы письма в карантине отображались?

    Ответить
    1. dkplayer автор

      Вообще у меня в пятой версии все из коробки заработало без каких-то особых танцев с бубном. В инструкции описан буквально весь процесс, который я проделал. 6-ку я еще не смотрел. Попробуйте заглянуть в разделе Administration (Services) может какие-либо службы связанные со спамом не стартанули, так же настройки в Configuration\Spam Detector. Других предположений у меня пока нет, к сожалению. Надо смотреть по месту.

      Ответить
  14. testesxi

    Добавил доменного пользователя в разделе LDAP
    Теперь можно зайти под каждым доменным пользователем и просматривать его спам.
    Но если зайти под root на proxmox то вкладка Spam Quarantine пуста
    Получается администратор не может просматривать весь спам других пользователей?

    Ответить
  15. testesxi

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

    Ответить
    1. dkplayer автор

      Вы про это?

      Ответить
  16. Дмитрий

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

    Mar 15 01:17:11 avia postfix/smtp[1501]: 08CC563C1B: to=, relay=none, delay=1174, delays=1174/0.02/0.02/0, dsn=4.4.1, status=deferred (connect to мой.домен[внешний ип]:25: Connection refused)
    Mar 15 01:37:02 avia postfix/qmgr[1820]: 08CC563C1B: from=, size=5313, nrcpt=1 (queue active)
    Mar 15 01:37:02 avia postfix/smtp[1989]: 08CC563C1B: to=, relay=none, delay=2365, delays=2365/0.02/0.01/0, dsn=4.4.1, status=deferred (connect to хост внутри сети[внешний ип]:25: Connection refused)

    Ответить
    1. dkplayer автор

      Сложно давать какие-то советы и делать выводы не видя всей картины в целом. Какая конфигурация сети, шлюза, даже весь лог не видно.

      Ответить
  17. Виталий

    Добрый день! А как на нём поменять ответ ehlo чтобы вместо pmg01.mнdomain.tm например выдавал адрес домена отправки?

    Ответить
    1. dkplayer автор

      Это же postfix, поэтому меняется точно так же как и на обычном postfix шлюзе, на сколько я знаю нужно изменить 2 параметра:

      myhostname =
      smtpd_banner =

      Чтобы сделать это правильно нужно использовать шаблоны. В руководстве PMG в разделе 4.3. Service Configuration Templates сказано буквально следующее:
      Скопировать файлы шаблонов из директории /var/lib/pmg/templates/ в /etc/pmg/templates/ отредактировать в соответствие с вашими потребностями и применить команду pmgconfig sync —restart 1

      Ответить