Установка и настройка Proxmox Mail Gateway
Обновлено:
Опубликовано:
Proxmox Mail Gateway представляет из себя почтовый шлюз с возможностями проверки писем на наличие нежелательного контента. С его помощью можно легко обеспечить надежную маршрутизацию почтовой системы и повысить безопасность работы. Большая часть настроек может быть выполнена из графического веб-интерфейса.
Установка Proxmox Mail Gateway
Настройка входящих
Настройка исходящих
HTTPS и проксирование
Дополнительные настройки
Читайте также
Установка
Есть 2 основных способа установить Proxmox Mail Gateway.
ISO образ
Proxmox Mail Gateway поставляется как готовый образ операционной системы Debian с установленными и преднастроенными пакетами. Для установки системы нам необходимо скачать файл ISO на странице официального сайта, после создаем загрузочную флешку с помощью rufus или WinSetupFromUsb. Если мы устанавливаем Mail Gateway на виртуальную машину, то без создания загрузочной флешки можно монтировать образ iso к самой виртуальной машине.
После загрузки сервера с образа ISO запустится мастер установки. В нем нет сложных нюансов — просто идем по шагам, отвечая на несложные вопросы. Сама установка занимает, в среднем, от 5 до 15 минут.
Установка из пакетов на Debian
Данный способ удобен, если у нас нет возможности развернуть Proxmox из готового образа. Например, мы работаем на хостинге.
В процессе установки Proxmox Mail Gateway будет заменено ядро. Это повлияет на сторонний софт, установленный на Debian. Поэтому данный способ опасно применять не на чистой системе (например, вы уже используете сервер для работы какого либо ПО).
Настраиваем репозиторий:
echo "deb http://download.proxmox.com/debian/pmg $(lsb_release -cs) pmg-no-subscription" > /etc/apt/sources.list.d/pmg-no-sub.list
Загружаем gpg-ключ для проверки подписи пакетов:
curl -so /etc/apt/trusted.gpg.d/proxmox-release.gpg https://enterprise.proxmox.com/debian/proxmox-release-$(lsb_release -cs).gpg
Обновляем кэш репозиториев:
apt update
Устанавливаем Proxmox Mail Gateway:
apt install proxmox-mailgateway
Обязательно перезагружаем сервер, чтобы он загрузился с нового ядра.
Проверка работы после установки
После мы можем перейти в веб-интерфейс для управления по адресу https://<IP-адрес сервера Proxmox>:8006. В качестве логина вводим root и пароль, который указали во время установки системы.
После кликаем по учетной записи в правом верхнем углу и выбираем Language:

Откроется окно с выбором языка. Выбираем тот, с которым нам удобно работать:

Настройка входящих писем
Для настройки маршрутизации входящих писем необходимо:
- Указать IP-адрес внутреннего почтового сервера.
- Добавить домены, на которые должны приходить письма.
Для этого переходим в пункт меню Конфигурация - Почтовый прокси:

На вкладке Ретрансляция в поле «Транслятор по умолчанию» вводим IP-адрес почтового сервера, куда будут перенаправляться письма:

Переходим на вкладку Домены ретрансляции и добавляем обслуживаемые почтовые домены:

Для первых тестов рекомендуется на вкладке Параметры отключить серые списки:

* серые списки позволяют эффективно бороться со СПАМом, но замедляют работы почты. Это сильно будет мешать при первичном тестировании системы.
Также сразу зададим объем почтовых сообщений, которые могут проходить через Proxmox Mail Gateway. Для этого переходим на вкладку Параметры и меняем значение для опции «Размер письма»:

* в данном примере установлено значение 31457280, что равно 30 * 1024 * 1024 или 30 Мб.
Готово.
Настройка исходящих
В рамках данного раздела рассмотрим настройку Proxmox Mail Gateway для его использования как сервера отправки. Мы настроим сам Proxmox для его использования как ретранслятора исходящих сообщений и выполним рекомендации для того, чтобы наши сообщения не попадали в СПАМ.
Отправка сообщений
Снова заходим в Конфигурация - Почтовый прокси:

Во вкладке Сети необходимо указать IP-адреса или подсети, с которых будет разрешена пересылка писем:

* в моем примере для адреса 192.168.0.15 будет разрешена пересылка писем через Proxmox Mail Gateway.
Теперь переходим на вкладку Порты. Тут ничего менять не обязательно — просто смотрим номера:

* в данном примере перед нами порты 25 и 26. Это значит, что Proxmox Mail Gateway принимает входящие на порт 25, а сообщения для отправки на порт 26. Таким образом, наш внутренний почтовый сервер должен для отправки наружу писем через Proxmox использовать адрес ретранслятора и 26-й порт.
Теперь переходим к настройкам почтового сервера. Рассмотрим пример с конфигурированием postfix.
Открываем конфигурационный файл mail.cf:
vi /etc/postfix/main.cf
Находим и редактируем relayhost:
relayhost = [192.168.0.25]:26
* в данном примере отправка идет через хост с адресом 192.168.0.25, который слушает запросы smtp на порту 26.
Перезапускаем postfix, чтобы настройки применились:
systemctl restart postfix
Готово — можно проверить исходящие.
Защита от попадания в СПАМ
Чтобы исходящие письма доходили до адресата, необходимо выполнить ряд действий.
1. Настройка DKIM
Заходим в настройка почтового прокси:

Переходим на вкладку DKIM:

Добавляем наши домены:

Выше на той же вкладке включаем подписывание DKIM:

Кликаем по кнопке Просмотр DNS-записи:

Во всплывающем окне мы увидим запись, которую нужно добавить в DNS. Создаем соответствующую TXT-запись и ждем 15 минут. После проверяем DKIM.
2. Запись SPF
Для валидации каждого домена, от которого будут отправляться письма нужно создать запись SPF в DNS. Пример записи:
domain.ru. IN TXT "v=spf1 ip4:93.93.93.93 include:_spf.mailsystem.net -all"
Подробнее про SPF читайте на странице Что такое SPF-запись.
3. DMARC
Политика DMARC позволяет для каждого домена указать чужой почтовой системе, что делать с письмами, если они не проходят проверку домена по SPF и DKIM.
Пример записи:
v=DMARC1; p=quarantine; sp=none; pct=100; fo=0; rua=mailto:postmaster@dmosk.ru
Подробнее про DMARC читайте на странице Что такое DMARC.
4. PTR
Также антиспам системы используют проверку записи в обратной зоне. Смысл в том, что имя сервера, которым представляется почтовая система должен совпадать со значением записи PTR.
Данную запись должен создать Интернет-провайдер или хостер арендованной виртуальной машины. Подробнее про PTR читайте на странице Что такое PTR-запись.
Сама почтовая система представляется именем, которое указано в опции myhostname конфигурационного файла postfix. По умолчанию, она соответствуем имени сервера. Задать его можно командой:
hostnamectl set-hostname relay.dmosk.ru
Но Proxmox из коробки настроен так, что myhostname определяется автоматически опросом DNS. Проверить, каким именем он представляется можно из командной строки с помощью утилиты telnet:
apt install telnet
telnet 127.0.0.1 25
Мы должны увидеть что-то на подобие:
Connected to 127.0.0.1.
Escape character is '^]'.
220 relay.dmosk.ru ESMTP Proxmox
* в нашем примере почтовая система будет представляться именем сервера relay.dmosk.ru.
Если же Proxmox неправильно определяет имя и нужно его поменять, то создаем каталог:
mkdir /etc/pmg/templates
Копируем в него шаблон main.cf.in:
cp /var/lib/pmg/templates/main.cf.in /etc/pmg/templates/main.cf.in
Открываем его на редактирование:
vi /etc/pmg/templates/main.cf.in
Меняем значения для директив mydomain и myhostname:
mydomain = dmosk.ru
myhostname = relay.dmosk.ru
Применяем настройки:
pmgconfig sync --restart 1
Готово.
NGINX прокси и настройка SSL
Настроим красивый URL для PMG. Для этого будем использовать http-прокси nginx и бесплатный сертификат от Let's Encrypt.
Вам понадобится домен и запись в DNS, каторая по портам 80 и 443 ведет на Proxmox Mail Gateway. Предположим, что наш СПАМ-фильтр будет работать по адресу relay.dmosk.ru.
Выполняем установку nginx и certbot:
apt install nginx certbot
Удаляем конфигурацию по умолчанию:
rm -f /etc/nginx/sites-enabled/default
Создаем новую:
vi /etc/nginx/sites-enabled/proxmox-mail-gateway.conf
server {
listen 80;
server_name relay.dmosk.ru;
location ~ /.well-known/acme-challenge {
root /var/www/html;
allow all;
}
}
Проверяем конфигурацию и перечитываем ее:
nginx -t && nginx -s reload
Выполняем запрос на получение сертификата:
certbot certonly --webroot --agree-tos --email postmaster@dmosk.ru --webroot-path /var/www/html/ -d relay.dmosk.ru
После получения сертификата сразу настроим планировщик для его автопродления:
crontab -e
0 0 * * 1,4 /usr/bin/certbot renew --noninteractive
А также настроим хук для автоперезапуска nginx в случае успешного обновления сертификата:
vi /etc/letsencrypt/cli.ini
Добавляем строку:
...
deploy-hook = systemctl reload nginx
Снова открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/proxmox-mail-gateway.conf
Приводим его к виду:
server {
listen 80;
server_name relay.dmosk.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name relay.dmosk.ru;
ssl_certificate /etc/letsencrypt/live/relay.dmosk.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/relay.dmosk.ru/privkey.pem;
access_log off;
location ~ /.well-known/acme-challenge {
root /var/www/html;
allow all;
}
location / {
proxy_pass https://127.0.0.1:8006;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Снова перечитываем конфигурацию nginx:
nginx -t && nginx -s reload
Готово. Можно пробовать зайти на PMG по адресу https://<ваш_домен>/.
Дополнительные настройки
Рассмотрим некоторые дополнительные настройки, которые упростят работу с Proxmox Mail Gateway.
Репозиторий
Устанавливаем пакет:
apt install lsb-release
По умолчанию система использует корпоративный репозиторий, для работы которого нужна платная подписка. Необходимо его отключить (комментируем все строки):
vi /etc/apt/sources.list.d/pmg-enterprise.list
#deb https://enterprise.proxmox.com/debian/pmg ...
Начиная с версии Proxmox Mail 9 (Debian 13):
vi /etc/apt/sources.list.d/pmg-enterprise.sources
И комментируем все строки.
И добавить репозиторий для бесплатного использования:
echo "deb http://download.proxmox.com/debian/pmg $(lsb_release -cs) pmg-no-subscription" > /etc/apt/sources.list.d/pmg-no-sub.list
После обновляем список пакетов командой:
apt update
И можно обновить дистрибутив:
apt dist-upgrade
Обновление антивируса
В связи с блокировки российских IP-адресов, обновления антивируса ClamAV выполняются с ошибкой. Для решения проблемы подключаемся с серверу по SSH и открываем файл:
vi /etc/clamav/freshclam.conf
Комментируем строки, которые начинаются на DNSDatabaseInfo и DatabaseMirror:
##DatabaseMirror database.clamav.net
...
##DNSDatabaseInfo current.cvd.clamav.net
Добавляем строку:
PrivateMirror https://packages.microsoft.com/clamav/
Останавливаем службу clamav-freshclam:
systemctl stop clamav-freshclam
Удаляем старую информацию об обновлениях:
rm -f /var/lib/clamav/freshclam.dat
Запускаем обновление:
freshclam
Ждем обновления, после запускаем службу clamav-freshclam и перезапускаем clamav-daemon:
systemctl start clamav-freshclam
systemctl restart clamav-daemon
Теперь переходим в веб-интерфейс и заходим в раздел Конфигурация - Детектор вирусов:

Кликаем по вкладке ClamAV и также меняем зеркало базы данных на новое значение (на https://packages.microsoft.com/clamav/):

Планировщик отправки отчетов о СПАМе
Системой предусмотрена отправка отчетов о письмах, которые были отправлены в СПАМ. По умолчанию, это делается один раз в день, в 00:05.
Чтобы это изменить, открываем файл:
vi /lib/systemd/system/pmgspamreport.timer
Редактируем опцию OnCalendar:
OnCalendar=05:00
* в данном примере мы будем выполнять отправку отчета в 5 утра.
Для применения настройки выполняем:
systemctl daemon-reload
Также при желании, мы можем сделать отправку отчета из командной строки:
pmgqm send
Возможные опции можно увидеть командой:
pmgqm help
Убираем предупреждение об отсутствующей подписке
Каждый раз при входе в веб-интерфейс система нас будет предупреждать о том, что мы пользуемся Proxmox без подписки:
You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options
Данное сообщение нельзя убрать, пока мы не купили подписку. Однако, можно подредактировать сценарий, отображающий сообщение.
Это делается командой:
sed -i.bak "s/res.data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
* в данном примере мы находим в файле /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js строку res.data.status.toLowerCase() !== 'active' и меняем ее на false.
Готово. Из-за кэша браузера сообщение будет продолжать отображаться. Чтобы окончательно от него избавиться, нажмите комбинацию CTRL + F5.
Свои файлы конфигурации
Под капотом PMG находится Postfix. Возможно, нам захочется напрямую изменить настройки в конфигурационных файлах main.cf и master.cf. Однако, Proxmox вернет настройки обратно, так как основной источник конфигурации находится в базе данных. Чтобы использовать собственные файлы в PMG предусмотрено использование шаблонов.
Создадим каталог для хранения drop-in файлов (которые будут переопределять настройки из базы):
mkdir /etc/pmg/templates
Ознакомимся с доступными шаблонами:
ls /var/lib/pmg/templates
Предположим, мы хотим использовать master.cf.in — копируем его в созданный каталог:
cp /var/lib/pmg/templates/master.cf.in /etc/pmg/templates/
Редактируем его:
vi /etc/pmg/templates/master.cf.in
Чтобы применить настройки вводим:
pmgconfig sync --restart 1
Читайте также
Дополнительная информацию по работе с почтовыми системами:
1. Полноценный почтовый сервер с iRedMail на Ubuntu или Debian.
3. Большой почтовый сервер на Debian.
4. Полноценный почтовый сервер на Ubuntu Server.
5. Настройка почтового сервера для массовой рассылки сообщений.