Добавьте пользовательские клиенты веб-почты
По умолчанию Plesk для Linux поддерживает клиента веб-почты RoundCube. Чтобы добавить пользовательские клиенты веб-почты, их нужно настроить с помощью Plesk SDK.
Пользовательские клиенты веб-почты добавляются путем их интеграции как модулей веб-почты. После этого пользовательский клиент веб-почты станет доступен как вам, так и пользователям Plesk во всех интерфейсах Plesk: в GUI, CLI и через API.
Хук PleskSDKHookWebmail
Чтобы добавить пользовательский клиент веб-почты, используйте хук Plesk\SDK\Hook\Webmail
. Нужно вернуть анонимный класс, который отнаследован от хука и имплементирует метод getWebmails
.
Этот класс должен находиться в папке /usr/local/psa/admin/plib/modules/custom-webmail/hooks/
.
Пример
/usr/local/psa/admin/plib/modules/custom-webmail/hooks/Webmail.php
<?php
return new class extends \Plesk\SDK\Hook\Webmail
{
public function getWebmails(): array
{
return [
(new \Plesk\SDK\Webmail('custommail', 'Custom Webmail 1.2.5'))
->setLoginLinkTemplate('://webmail./?user=')
->setIsVisibleForDomainCallback(fn (\pm_Domain $domain): bool => $domain->hasPermission('custommail')),
];
}
}
Примечание: Метод должен вернуть массив классов \Plesk\SDK\Webmail
. Первый аргумент конструктора \Plesk\SDK\Webmail
должен быть уникальным внутри вашего модуля, так как неуникальные экземпляры перезаписывают ранее созданные записи.
Настройка шаблона для входа по ссылке
Используя классы \Plesk\SDK\Webmail
. вы можете задать шаблон входа по ссылке. Пользователи будут входить в веб-почту по ссылке, которая открывает веб-почту в отдельном окне браузера. Если в Настройках почты домена выбрана пользовательская веб-почта, ссылка будет отображаться справа от учетной записи электронной почты в Сайты и домены > домен > вкладка «Почта» > Учетные записи почты.
Шаблон ссылки для входа ('://webmail./?user=')
) сделан на основе системы шаблонов Mustache и имеет следующую структуру:
-
protocol
:http
илиhttps
-
domainName
: имя домена символами ASCII. При необходимости оно автоматически конвертируется в Punycode. -
mailName
: локальная часть адреса электронной почты (до символа «@») -
fullMailName
: полный адрес электронной почты, зашифрованный в URL-адресе (локальная и доменная части с символом «@»)
Шаблон автоматически заменяет части действительными значениями для создания ссылки для входа. Например, ссылка для входа john_doe@example.com
, если для домена example.com
включен HTTPS, будет выглядеть так:
https://webmail.example.com/?user=john_doe%40example.com
Удаление пользовательской веб-почты из интерфейса
Вы можете ограничить доступ к пользовательской веб-почте в зависимости от подписки или хостинг-плана. Таким образом, для всех доменов определенной подписки или хостинг плана пользовательский клиент веб-почты не будет отображаться в GUI, CLI и API.
Чтобы удалить пользовательскую веб-почту:
-
Задайте разрешение с помощью хука pm_Hook_Permissions:
class Modules_CustomMail_Permissions extends pm_Hook_Permissions { public function getPermissions(): array { return [ 'access_to_custommail' => [ 'default' => true, 'place' => self::PLACE_ADDITIONAL, 'name' => 'Custom Webmail', 'description' => 'Grants access to Custom Webmail.', ], ]; } }
-
Используйте классы
\Plesk\SDK\Webmail
, чтобы провести обратный вызов, который принимает\pm_Domain
в качестве параметра и возвращает значение типа boolean методуsetIsVisibleForDomainCallback
:<?php return new class extends \Plesk\SDK\Hook\Webmail { public function getWebmails(): array { return [ (new \Plesk\SDK\Webmail('custommail', 'Custom Webmail 1.2.5')) ->setLoginLinkTemplate('://webmail./?user=') ->setIsVisibleForDomainCallback(fn (\pm_Domain $domain): bool => $domain->hasPermission('access_to_custommail')), ]; } }
-
Удаление пользовательской веб-почты для всех доменов определенной подписки или хостинг-плана:
- (Подписка) Перейдите в Подписки > подписка > нажмите «Настроить» в правой панели > на вкладке «Разрешения» отключите разрешение «Пользовательская веб-почта».
- (Хостинг-план) Перейдите в Тарифные планы > хостинг-план > вкладка «Разрешения» и отключите разрешение «Пользовательская веб-почта».
Создание конфигурации веб-почты
Для стабильной работы всех клиентов веб-почты требуется определенная конфигурация веб-сервера. Чтобы настроить веб-почту, используйте методы getWebmailApacheConfig
и getWebmailNginxConfig
класса pm_Hook_WebServer
. Подробнее об этом в этой теме.
Методы getWebmailApacheConfig
и getWebmailNginxConfig
получат объект \pm_Domain
как первый параметр и строку с типом веб-почты как второй параметр. Конфигурацию можно создать на основе полученного типа веб-почты. Например, если он соответствует типу веб-почты, который вы зарегистрировали с помощью хука \Plesk\SDK\Hook\Webmail
:
class Modules_CustomMail_WebServer extends \pm_Hook_WebServer
{
private Configuration $generator;
<...>
public function getWebmailApacheConfig(pm_Domain $domain, string $type): string
{
if ($type === 'custommail') {
return $this->generator->getApacheConfiguration();
}
return '';
}
public function getWebmailNginxConfig(pm_Domain $domain, string $type): string
{
if ($type === 'custommail') {
return $this->generator->getNginxConfiguration();
}
return '';
}
}