Пришло время установить и прикрутить Proxmox Mail Gateway.
Этап 2. Установка и настройка Proxmox Mail Gateway.
ISO-образ скачиваю с официального сайта:
https://www.proxmox.com/en/downloads/category/iso-images-pmg
Интерфейс установщика точно такой же, как у гипервизора Proxmox:
Выбор SSD или HDD диска, на который ставится система:
Затем выбор часового пояса:
Указание пароля суперпользователя:
И настройка сетевых реквизитов системы:
Всё, жму «Install»:
После установки появится привычная линуксовая консоль. Установочный образ Proxmox Mail Gateway представляет из себя обычный Linux Debian с уже всеми предустановленными пакетами Proxmox. А значит к этой машине можно подключиться по SSH и делать всё, что можно в обычном Linux Debian.
У Proxmox есть репозитории для владельцев платной подписки и есть репозитории бесплатные. По умолчанию в системе активен репозиторий платной подписки. Его я отключу и пропишу репозиторий бесплатный. Для этого редактирую файл /etc/apt/sources.list.d/pmg-enterprise.list. Комментирую имеющуюся там строчку:
# deb https://enterprise.proxmox.com/debian/pmg bullseye pmg-enterprise
И добавляю строчку:
deb http://download.proxmox.com/debian/pmg bullseye pmg-no-subscription
Тут стоит обратить внимание на параметр bullseye – это версия ОС Debian. Более ранние дистрибутивы Proxmox работают на более ранних версиях Debian. А значит вместо bullseye (Debian 11) может быть, например, buster (Debian 10), stretch (Debian 9) и т.д.
Итак, после правки репозитория, делаю команды:
apt update
apt upgrade
для установки последних обновлений.
Во время обновления системных пакетов появилось окно с вопросом:
Собственно, Freshclam — это пакет, отвечающий за обновление сигнатур антивирусника Clamav. Обновлятор говорит, что есть новая версия конфигурационного файла (freshclam.conf) для пакета Freshclam. Но уже имеющийся установленный файл freshclam.conf имеет некие изменения, отличающиеся от умолчательных значений. И вопрос в том, что делать с этим файлом freshclam.conf. Я оставлю уже имеющийся файл freshclam.conf (пункт 2), т.к. изменения в нём делали разработчики Proxmox, и лучше их не терять.
То же самое и с файлом clamav.conf — это файл конфигурации уже самого антивирусника Clamav. Оставляю существующий конфиг:
Заодно ставлю Midnight Commander после обновления системных пакетов:
apt install mc
Затем перезагружаю сервер и захожу в вэб-интерфейс Proxmox Mail Gateway:
Сделаю основные настройки сервера. И тут надо сразу оговориться о том, что схема прохождения почты через почтовый шлюз может быть разной. Можно сделать, чтобы через почтовый шлюз проходила только входящая почта, а исходящая будет отправляться напрямую с Microsoft Exchange 2019. Но можно сделать, чтобы через почтовый шлюз проходила и входящая и исходящая почта. Из плюсов второго варианта я для себя вижу следующие моменты: 1. можно заворачивать исходящие письма куда хочется, например делать копии начальнику. Причём делать это избирательно, по всяким гибким параметрам, втайке от пользователей. 2. Proxmox Mail Gateway поддерживает DKIM из коробки, а Microsoft Exchange 2019 — нет. 3. Дополнительная защита от дурака. Мало ли чего там у себя пользователи надобавляют в исключения — на почтовом шлюзе это всё равно можно будет резать.
Поэтому я рассмотрю базовую настройку по второй схеме. Перехожу в меню «Конфигурация» → «Почтовый прокси» → «Ретрансляция» и двойным кликом жму на «Транслятор по умолчанию»:
И вписываю здесь адрес своего Microsoft Exchange 2019 (можно прописать как IP, так и FQDN):
Затем перехожу во вкладку «Домены ретрансляции» и жму «Создать»:
Тут я прописываю свой обслуживаемый домен:
Если бы у меня было несколько доменов, то здесь их все нужно было бы прописать. Вся остальная почта будет резаться как нежелательная.
Далее вкладка «Порты»:
Здесь я ничего не меняю. По-умолчанию, 25-ый порт (External) служит для приема писем снаружи (из Интернета). Порт 26-ой (Internal) является релэем для получения писем от Microsoft Exchange сервера и отправки их затем наружу.
Вкладка «Параметры»:
Здесь я увеличу размер письма до 50мб, включу проверку HELO, отключу greylisting, ибо тема сомнительная и на моей практике доставляла лишь неудобства, а также изменю баннер SMTPD, чтобы, так сказать, врага чуток запутать:
Следующая вкладка «Транспортные агенты»:
Здесь я ничего трогать не буду. Однако, здесь тоже можно было бы прописать адрес Microsoft Exchange сервера, если бы он не был прописан как транслятор (relay) по умолчанию. Данная вкладка предусмотрена на тот случай, если в сети находится несколько Exchange серверов (ну или других почтовых серверов, например Zimbra), которые работают через этот почтовый шлюз.
Вкладка «Сети». Здесь жму кнопку «Создать»:
В разделе «Сети» необходимо указать доверенные сети — сети, с которых будет разрешен прием для пересылки на другие домены. Делается это для того, чтобы письма пересылались наружу только с доверенных SMTP-серверов. Прописываю IP своего Microsoft Exchange (префикс сети указывать обязательно):
Вкладка «TLS». Тут можно включить TLS при отправке и получении сообщений. Это означает, что при включенном TLS, Proxmox будет пытаться отправлять письма наружу с использованием расширения ESMTP - STARTTLS, а так же сможет такие письма принять:
Остальные вкладки трогать пока не буду. По настройке DKIM лучше отдельную заметку написать. Ну а предназначение вкладки «Белого списка» и так понятно.
Все остальные настройки пока тоже оставляю по умолчанию, это всё можно подкрутить позже. Ровно как и правила фильтрации — их тоже оставляю по умолчанию:
Не забываю прописать почтовый шлюз Proxmox в DNS-зоне Active Directory:
Теперь провожу перенастройку сервера Microsoft Exchange 2019 для работы с почтовым шлюзом. Перехожу в меню «Поток обработки почты» → «Соединители отправки» и двойным кликом мыши жму на соединителе, который создал ранее:
Там перехожу во вкладку «доставка» и переключаю крыж на «Перенаправлять почту через промежуточные узлы» и жму на «+»:
Прописываю IP или FQDN своего Proxmox:
И жму «Сохранить»:
Теперь надо перейти в консоль Exchange Management Shell (запуск от администратора):
Там нужно ввести команду для изменения порта соединителя на 26-ой:
Set-SendConnector -Identity "TA connect" -Port 26
где TA connect — название моего соединителя. Затем проверяю, изменился ли порт командой:
Get-SendConnector "ConnectorName" | fl Port
Должно вывести:
Port : 26
Что ж, пробую отправить письма. Отправляю себе на Mail.ru. Письмо дошло, но хочу убедиться, что оно прошло через Proxmox. Открываю заголовки и смотрю что там:
Delivered-To: mymail@list.ru
Return-path: <ivanov@typical-admin.ru>
Authentication-Results: mxs.mail.ru; spf=pass (mx304.i.mail.ru: domain of typical-admin.ru designates 88.86.193.243 as permitted sender) smtp.mailfrom=ivanov@typical-admin.ru smtp.helo=proxmail.local.typical-admin.ru
Received-SPF: pass (mx304.i.mail.ru: domain of typical-admin.ru designates 88.86.193.243 as permitted sender) client-ip=88.86.193.243; envelope-from=ivanov@typical-admin.ru; helo=proxmail.local.typical-admin.ru;
Received: from [88.86.193.243] (port=44256 helo=proxmail.local.typical-admin.ru)
by mx304.i.mail.ru with esmtp (envelope-from <ivanov@typical-admin.ru>)
id 1nrWgy-0005xR-JK
for mymail@list.ru; Thu, 19 May 2022 06:19:12 +0300
Received: from proxmail.local.typical-admin.ru (localhost.localdomain [127.0.0.1])
by proxmail.local.typical-admin.ru (Proxmox) with ESMTP id 28A5B541041
for <mymail@list.ru>; Thu, 19 May 2022 08:19:11 +0500 (+05)
Received: from mail.typical-admin.ru (unknown [192.168.0.210])
by proxmail.local.typical-admin.ru (Proxmox) with ESMTPS id 1958354103E
for <mymail@list.ru>; Thu, 19 May 2022 08:19:11 +0500 (+05)
Received: from exch-serv.local.typical-admin.ru (192.168.0.210) by
exch-serv.local.typical-admin.ru (192.168.0.210) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.595.3;
Thu, 19 May 2022 08:19:05 +0500
Received: from exch-serv.local.typical-admin.ru ([::1]) by
exch-serv.local.typical-admin.ru ([::1]) with mapi id 15.02.0595.003; Thu, 19
May 2022 08:19:04 +0500
From: ivanov <ivanov@typical-admin.ru>
To: "mymail@list.ru" <mymail@list.ru>
Subject: test2
Thread-Topic: test2
Thread-Index: AQHYay8vui6V+Vmfh0Sxk+sG8+RLEg==
Date: Thu, 19 May 2022 03:19:03 +0000
Message-ID: <1970f1040fba4ba08e8816aafbc36e8d@typical-admin.ru>
Accept-Language: ru-RU, en-US
Content-Language: ru-RU
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [192.168.0.200]
Content-Type: multipart/alternative;
boundary="_000_1970f1040fba4ba08e8816aafbc36e8dtypicaladminru_"
MIME-Version: 1.0
С первого взгляда, всё хорошо, письмо дошло, и по заголовкам видно, что оно вышло с Exchange сервера, прошло через Proxmox и прибыло по нужному адресу. Но мне не нравится, что smtp.helo=proxmail.local.typical-admin.ru. Также на этот грех указывает и проверка на сайте https://www.mail-tester.com/
Это надо исправить. Для начала, на локальном DNS-сервере в зоне typical-admin.ru добавлю запись о Proxmox:
Затем на внешнем DNS-сервере делаю аналогичную запись:
Затем подключаюсь по SSH на машину с Proxmox и нахожу файл /etc/hosts. В нём исправляю строчку:
192.168.0.111 proxmail.local.typical-admin.ru proxmail
на:
192.168.0.111 proxmail.typical-admin.ru proxmail
Потом нахожу файл /etc/resolv.conf. В нём исправляю строчку:
search local.typical-admin.ru
на:
search typical-admin.ru
И перезагружаю сервер Proxmox. Почему именно такие изменения сделал? Под капотом Proxmox находится всем известный MTA Postfix, параметрами которого Proxmox и управляет. У Постфикса значение helo формируется из параметра myhostname. А Proxmox в этот параметр подставляет значения hostname + search domain, которые берёт из настроек операционной системы.
Пробую снова mail-tester. Уже лучше:
Что ж, попробую отправить письма с Яндекса и Mail.ru на свой Exchange. Письма дошли, смотрю заголовки одного из них:
Received: from exch-serv.local.typical-admin.ru (192.168.0.210) by
exch-serv.local.typical-admin.ru (192.168.0.210) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.595.3
via Mailbox Transport; Thu, 19 May 2022 09:41:25 +0500
Received: from exch-serv.local.typical-admin.ru (192.168.0.210) by
exch-serv.local.typical-admin.ru (192.168.0.210) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.595.3;
Thu, 19 May 2022 09:41:24 +0500
Received: from proxmail.typical-admin.ru (192.168.0.111) by
exch-serv.local.typical-admin.ru (192.168.0.210) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.595.3
via Frontend Transport; Thu, 19 May 2022 09:41:24 +0500
Received: from proxmail.typical-admin.ru (localhost.localdomain [127.0.0.1])
by proxmail.typical-admin.ru (Proxmox) with ESMTP id 29B60541041
for <ivanov@typical-admin.ru>; Thu, 19 May 2022 09:41:24 +0500 (+05)
Received-SPF: pass (list.ru ... _spf.mail.ru: 45.84.128.194 is authorized to use 'mymail@list.ru' in 'mfrom' identity (mechanism 'ip4:45.84.128.0/23' matched)) receiver=proxmail.typical-admin.ru; identity=mailfrom; envelope-from="mymail@list.ru"; helo=f407.i.mail.ru; client-ip=45.84.128.194
Received: from f407.i.mail.ru (f407.i.mail.ru [45.84.128.194])
by proxmail.typical-admin.ru (Proxmox) with ESMTPS id EDA0454103E
for <ivanov@typical-admin.ru>; Thu, 19 May 2022 09:41:22 +0500 (+05)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=list.ru; s=mail4;
h=References:In-Reply-To:Content-Type:Message-ID:Reply-To:Date:MIME-Version:Subject:To:From:From:Subject:Content-Type:Content-Transfer-Encoding:To:Cc; bh=senfhMq/ydirJH9Echb5UOeUjte5+BLUcbvn3ld0CsU=;
t=1652935282;x=1653540682;
b=pc0xDuUkGhq0isD2tSnQIHBfOApAjahS4RI5Q6G4qhNPSe8AGiVumLsDCB/6ATg1A7zit3hAZW/RWEUnDr6WcG5zsndA/SHVdh7vpMI6TUSREer+HEuWGTXXRB34WYH2aku1C7mGM0Gy2MW2hP86ex1OK102elE4iJxMeiKgP0FyB2ugyGrBZZfx2ffewEo6OaTKuNqHBmONWmyTYf2rdr/tYGJMySdByy/SSigcn/sMHKWWQ8x9NGSBZ3erF49W0abDdfGEgFoyBCPHwobAKvbmCE0lwkxNmIKYBDhINiLHigkE+8gBAzzqubjEBnYf2XIJOldBLJnLBoFh6NPp/Q==;
Received: by f407.i.mail.ru with local (envelope-from <mymail@list.ru>)
id 1nrXy4-0005cN-6b
for ivanov@typical-admin.ru; Thu, 19 May 2022 07:40:56 +0300
Received: by e.mail.ru with HTTP;
Thu, 19 May 2022 07:40:56 +0300
From: =?UTF-8?B?0J3QuNC60L7Qu9Cw0Lk=?= <mymail@list.ru>
To: =?UTF-8?B?aXZhbm92?= <ivanov@typical-admin.ru>
Subject: =?UTF-8?B?UmU6IHRlc3Qy?=
MIME-Version: 1.0
X-Mailer: Mail.Ru Mailer 1.0
X-SenderField-ReMsg: 16529303531286941981
X-SenderField-Remind: 0
Date: Thu, 19 May 2022 07:40:56 +0300
Reply-To: =?UTF-8?B?0J3QuNC60L7Qu9Cw0Lk=?= <mymail@list.ru>
X-Priority: 3 (Normal)
Message-ID: <1652935256.627398306@f407.i.mail.ru>
Content-Type: multipart/alternative;
boundary="--ALT--b4DdCfE67A499E7c9d6B43E0468eB44c1652935256"
In-Reply-To: <1970f1040fba4ba08e8816aafbc36e8d@typical-admin.ru>
References: <1970f1040fba4ba08e8816aafbc36e8d@typical-admin.ru>
Authentication-Results: f407.i.mail.ru; auth=pass smtp.auth=mymail@list.ru smtp.mailfrom=mymail@list.ru
И да, по заголовкам видно, что письмо прошло через Proxmox и потом пришло на Exchange сервер. Задача выполнена.
Донаты принимаются на кошельки:
Yoomoney:
4100118091867315
Карта Т-Банк (бывший Тиньков):
2200 7017 2612 2077
Карта Альфа-Банк:
2200 1539 1357 2013