Стек технологий СПАМОРЕЗ
Программный комплекс защиты электронной почты «СПАМОРЕЗ» построен на высокопроизводительных технологиях, оптимизированных для обработки больших объёмов почтового трафика (до 5 млн писем в час).
Языки программирования
- C — почтовый сервер qmail-spz (ядро системы)
- PHP 8.1+ — веб-панель управления (www-spz)
- JavaScript — фронтенд SPA-приложения
- Perl — утилиты обслуживания: архивирование логов БД, очистка очереди, управление алиасами
- Shell (Bash/sh) — сборка qmail, деплой, скрипты обновления
- SQL — схема базы данных, хранимые процедуры
Почтовая система (qmail-spz)
| Компонент |
Назначение |
| qmail 1.03 | Базовый MTA (patched) |
| qmail-smg | Расширенный SMTP-демон с MySQL, Rspamd, regex |
| qmail-send | Обработка очереди и доставка |
| qmail-remote | Удалённая доставка по SMTP |
| qmail-rspamd | Мост интеграции с Rspamd |
| qmail-queue | Атомарная постановка в очередь |
| OpenSSL / LibSSL | TLS/SSL шифрование |
Базы данных и кэш
- MySQL / MariaDB — основная БД: логи сообщений, пользователи, домены, статистика, чёрные/белые списки
- CDB (Constant Database) — быстрые read-only таблицы для qmail (домены, получатели)
- Memcached — кэш ответов API
Веб-панель (www-spz) — Backend (PHP)
- Custom REST API — собственный роутинг (без фреймворка)
- MySQL — через нативный mysqli
- Memcached — кэширование через PHP-расширение
Веб-панель (www-spz) — Frontend (JavaScript)
| Библиотека |
Версия |
Назначение |
| jQuery | 3.7.1 | DOM, AJAX |
| Bootstrap | 5.3.0 | CSS-фреймворк |
| jsRender | 1.0.16 | Клиентские шаблоны |
| Chart.js | — | Графики и статистика |
| Bootstrap Icons | 1.13.1 | Иконки |
| Font Awesome | 6.4.0 | Иконки |
| Flag Icon CSS | 6.6.6 | Флаги стран |
| SortableJS | — | Drag-and-drop |
Perl-утилиты (зависимости)
- DBI — интерфейс к MySQL
- MIME::Parser, MIME::Base64 — разбор почтовых сообщений
- CDB_File — работа с CDB-базами
- Digest::MD5 — хэширование
- Encode, Time::HiRes — кодировки и тайминги
Инфраструктурные компоненты
| Компонент |
Назначение |
| HAProxy | Балансировщик нагрузки / reverse proxy |
| DNS | Кастомный async-резолвер в qmail (MX, A, PTR, TXT, CNAME) |
| Syslog | Системное логирование qmail |
| MySQL Replication | Master/Slave репликация БД |
Сборка и деплой (qmail-spz)
Внутренние библиотеки qmail (C)
Собственные абстракции, без внешних зависимостей:
- substdio — буферизованный I/O (вместо stdio)
- stralloc — динамические строки
- smid — уникальный ID сообщения для сквозной трассировки
- qregex — POSIX-regex фильтрация
- blocked — блокировка соединений
- dns — DNS-резолвер
- cdb — CDB-база данных
- base64, token822, header — работа с почтой