Перейти к основному содержанию

PHPWebAdmin — веб-админка для hMailServer

hmailserver

Почтовый сервер 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.

mail

Копируем её в наш веб-сервер IIS, не буду подробно на этом останавливаться. Важно, чтобы к папке имел доступ пользователь, под которым работает IIS. Можно и не копировать, просто дать на папку права пользователю IIS.

Подключаем папку к IIS, настраиваем сайт. У меня сайт временный, настроен на 80-й порт локального IP адреса и должен открыться по ссылке:

http://192.168.1.11

hmailserver

Подготовка IIS

Из названия админки понятно, что потребуется установить PHP. У меня есть инструкция для установки PHP 7.3.7:

Установка PHP 7.3.7 на IIS 10

mail

Включаем на сайте PHP и немного тюним PHP.ini.

hMailServer использует COM, в расширениях PHP подключаем расширение:

extension=php_com_dotnet.dll

mail

Включаем поддержку сессий, IIS должен иметь доступ к директории:

session.save_path=C:\Windows\temp

Конфиурация сайта

В папке сайта делаем копию файла config-dist.php и называем её config.php.

mail

Редактируем файл 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 — все пользователи

Пробуем открыть сайт.

mail

Получаем ошибку:

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.

mail

Открывается оснастка Component Services.

mail

Переходим в раздел Component Services → Computers → My Computer → DCOM Config. Находим hMailServer, правой кнопкой Properties.

mail

Во вкладке Security в блоке Launch and Activation Permissions устанавливаем радиокнопку в Customize и нажимаем Edit.

mail

Добавляем пользователя, под которым работает IIS (IIS_IUSRS) и добавляем ему права Local Launch и Local Activation. OK.

Ещё раз открываем сайт.

mail

Работает

Пользователи PHPWebAdmin и их права

Пробуем выполнить вход под администратором hMailServer.

mail

Всё работает. То же самое с русской локализацией.

mail

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

$hmail_config['rule_editing_level'] = 0;

Создаю учётную запись admin@internet-lab.ru и пробую войти под ней.

mail

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

Меняю пользователю права на администратора домена.

mail

Конфигурирую сайт для доступа всем администраторам доменов.

$hmail_config['rule_editing_level'] = 1;

Пробую войти под admin@internet-lab.ru.

mail

У пользователя появляются права на администрирование всего домена.

Заключение

Если нормально настроить IIS и сайт, прикрутить HTTPS, то можно использовать PHPWebAdmin для удалённого администрирования hMailServer.

Можно назначить администраторов домена и дать им возможность самим управлять учётными записями, псевдонимами и списками рассылки.

Можно предоставить доступ пользователям к управлению своей учётной записью и настройке сборщиков писем.

В 2008 году в PHPWebAdmin (hMailServer 4.x) были найдены уязвимости, которые позволяли удаленному пользователю получить доступ к важным данным и выполнить произвольный PHP сценарий на целевой системе с привилегиями Web сервера. В новой версии уязвимость исправлена.

Теги

 

Похожие материалы

Drupal 9 — модуль Ludwig, ручная альтернатива Composer

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

Теги