Skip to content
pdenispPublic

About

A lightweight dCAPTCHA (DDoS-Guard) verification plugin for SnappyMail webmail.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

dcaptcha — DDoS-Guard CAPTCHA plugin for SnappyMail

dcaptcha — это легковесный и высокопроизводительный плагин для почтового веб-интерфейса SnappyMail, который заменяет стандартную Google reCAPTCHA на отечественный сервис защиты dCAPTCHA от DDoS-Guard. Плагин обеспечивает бесшовную интеграцию со слайдером проверки на фронтенде, защищает порты авторизации почтового бэкенда (Dovecot/Postfix) от распределенного брутфорса, автоматических регистраций и спам-ботов на высоконагруженных enterprise-серверах (до 30 000+ ящиков).

🔥 Особенности и преимущества

  • Stateless-архитектура: Полная совместимость с изолированными пулами PHP-FPM, кэшем APCu/Redis и строгими политиками SELinux на базе AlmaLinux 10 / RHEL 9+.
  • REST API верификация: Финальная проверка токена на стороне бэкенда выполняется строго через JSON-сериализованные POST-запросы к балансировщикам https://ddos-guard.net.
  • Интеллектуальный лимит ошибок: Поддержка отслеживания неудачных попыток входа (Error limit). Капча может выводиться как сразу, так и динамически подгружаться на форму только после нескольких промахов по паролю.
  • Совместимость с CSP: Автоматически адаптирован для строгих заголовков Content-Security-Policy веб-интерфейса, включая поддержку веб-сокетов wss://captcha.ddos-guard.net для поведенческого JS-челленджа.

📦 Структура каталогов плагина

Для корректной инициализации движком SnappyMail, файлы плагина должны быть размещены в следующей иерархии внутри вашей изолированной директории данных /data:

/var/www/html/snappymail/data/_data_/_default_/plugins/
└── dcaptcha/
    ├── index.php         # Бэкенд-логика (перехват хуков, JSON POST-верификация)
    └── js/
        └── dcaptcha.js   # Фронтенд-скрипт (динамическая инициализация window.ddgcaptcha)

🛠️ Установка и развертывание

1. Загрузка исходного кода

Перейдите в каталог плагинов вашего сервера и склонируйте репозиторий (или распакуйте архив):

cd /var/www/html/snappymail/data/_data_/_default_/plugins/
git clone https://github.com/pdenisp/dcaptcha.git

2. Настройка прав доступа и SELinux

В соответствии с enterprise-стандартами безопасности, ограничьте права на чтение кода, выдав их вашему кастомному пользователю пула PHP (например, snappy), и обновите контексты безопасности:

sudo chown -R snappy:snappy /var/www/html/snappymail/data/_data_/_default_/plugins/dcaptcha/
sudo find dcaptcha/ -type d -exec chmod 750 {} \;
sudo find dcaptcha/ -type f -exec chmod 640 {} \;

Восстановление контекстов SELinux для папки данных

sudo restorecon -Rv /var/www/html/snappymail/data/_data_/_default_/plugins/dcaptcha/

3. Разрешение исходящих соединений

Если вы еще не делали этого, разрешите процессам веб-сервера инициировать внешние сокеты в SELinux (критично для связи с API DDoS-Guard):

sudo setsebool -P httpd_can_network_connect on

⚙️ Конфигурация## Шаг 1. Получение ключей в DDoS-Guard

Зайдите в личный кабинет DDoS-Guard Client Area, перейдите в раздел управления капчей и сгенерируйте пару ключей:

  • Ключ сайта (Site Key / Public Key) — для фронтенда.
  • Секретный ключ (Private Key / Client Secret) — для бэкенда.

Шаг 2. Включение в панели администратора SnappyMail

  1. Перейдите в админку вашей почты https://yourdomain.com.
  2. Откройте раздел Plugins (Плагины).
  3. Найдите в списке dcaptcha, поставьте галочку Enable и нажмите на шестеренку настроек.
  4. Вставьте полученные Site Key и Private Key.
  5. Задайте параметр Error limit (например, 2 для показа после двух ошибок или 0 для постоянного отображения на форме входа). Нажмите Save.

Шаг 3. Сброс кэша статики

Чтобы принудительно обновить скомпилированные шаблоны и применить JS-скрипты, выполните сброс из консоли:

sudo -u snappy php /var/www/html/snappymail/index.php --clear-cache
sudo systemctl restart php-fpm

📄 Лицензия

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

Если вам потребуется интегрировать логирование ошибок авторизации капчи в системный журнал syslog вашей AlmaLinux 10, дайте знать. Я могу подготовить пример PHP-кода для записи событий безопасности, чтобы вы могли отслеживать подозрительную активность через SIEM-систему или journalctl.

About

A lightweight dCAPTCHA (DDoS-Guard) verification plugin for SnappyMail webmail.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages