Почтовый сервер hMailServer поставляется вместе с веб-интерфейсом для администрирования. Можно подключить его к Apache или IIS и администрировать почтовый сервер удалённо через Интернет.
В документации к hMailServer есть инструкция по установке PHPWebAdmin:
https://www.hmailserver.com/documentation/latest/?page=howto_install_phpwebadmin
Я буду устанавливать PHPWebAdmin на веб-сервер IIS.
Файлы PHPWebAdmin
Переходим в директорию с установленным hMailServer. По умолчанию:
C:\Program Files (x86)\hMailServer
Видим там папку PHPWebAdmin.
Копируем её в наш веб-сервер IIS, не буду подробно на этом останавливаться. Важно, чтобы к папке имел доступ пользователь, под которым работает IIS. Можно и не копировать, просто дать на папку права пользователю IIS.
Подключаем папку к IIS, настраиваем сайт. У меня сайт временный, настроен на 80-й порт локального IP адреса и должен открыться по ссылке:
http://192.168.1.11
Подготовка IIS
Из названия админки понятно, что потребуется установить PHP. У меня есть инструкция для установки PHP 7.3.7:
Включаем на сайте PHP и немного тюним PHP.ini.
hMailServer использует COM, в расширениях PHP подключаем расширение:
extension=php_com_dotnet.dll
Включаем поддержку сессий, IIS должен иметь доступ к директории:
session.save_path=C:\Windows\temp
Конфиурация сайта
В папке сайта делаем копию файла config-dist.php и называем её config.php.
Редактируем файл config.php. Указываем путь к корню сайта:
$hmail_config['rooturl'] = "http://192.168.1.11/";
Указываем язык. Английский по умолчанию:
$hmail_config['defaultlanguage'] = "english";
Если вы русифицировали hMailServer, то можно указать русский:
$hmail_config['defaultlanguage'] = "russian";
Указываем уровень доступа к сайту:
$hmail_config['rule_editing_level'] = 2;
- 2 — только администраторы hMailServer
- 1 — администраторы домена и администратор hMailServer
- 0 — все пользователи
Пробуем открыть сайт.
Получаем ошибку:
Failed to create COM object `hMailServer.Application': Access is denied.
This problem is often caused by DCOM permissions not being set.
Это нормально, настраиваем hMailServer COM API.
Настройка доступа к hMailServer COM API
https://www.hmailserver.com/documentation/latest/?page=howto_dcom_permissions
Запускаем dcomcnfg.exe.
Открывается оснастка Component Services.
Переходим в раздел Component Services → Computers → My Computer → DCOM Config. Находим hMailServer, правой кнопкой Properties.
Во вкладке Security в блоке Launch and Activation Permissions устанавливаем радиокнопку в Customize и нажимаем Edit.
Добавляем пользователя, под которым работает IIS (IIS_IUSRS) и добавляем ему права Local Launch и Local Activation. OK.
Ещё раз открываем сайт.
Работает
Пользователи PHPWebAdmin и их права
Пробуем выполнить вход под администратором hMailServer.
Всё работает. То же самое с русской локализацией.
Конфигурирую сайт для доступа всем пользователям.
$hmail_config['rule_editing_level'] = 0;
Создаю учётную запись admin@internet-lab.ru и пробую войти под ней.
Вход выполнен. Пользователь может управлять своими настройками, в том числе настраивать сбор писем с внешних ящиков.
Меняю пользователю права на администратора домена.
Конфигурирую сайт для доступа всем администраторам доменов.
$hmail_config['rule_editing_level'] = 1;
Пробую войти под admin@internet-lab.ru.
У пользователя появляются права на администрирование всего домена.
Заключение
Если нормально настроить IIS и сайт, прикрутить HTTPS, то можно использовать PHPWebAdmin для удалённого администрирования hMailServer.
Можно назначить администраторов домена и дать им возможность самим управлять учётными записями, псевдонимами и списками рассылки.
Можно предоставить доступ пользователям к управлению своей учётной записью и настройке сборщиков писем.
В 2008 году в PHPWebAdmin (hMailServer 4.x) были найдены уязвимости, которые позволяли удаленному пользователю получить доступ к важным данным и выполнить произвольный PHP сценарий на целевой системе с привилегиями Web сервера. В новой версии уязвимость исправлена.