Стек технологий СПАМОРЕЗ

Программный комплекс защиты электронной почты «СПАМОРЕЗ» построен на высокопроизводительных технологиях, оптимизированных для обработки больших объёмов почтового трафика (до 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 / LibSSLTLS/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)

Библиотека Версия Назначение
jQuery3.7.1DOM, AJAX
Bootstrap5.3.0CSS-фреймворк
jsRender1.0.16Клиентские шаблоны
Chart.jsГрафики и статистика
Bootstrap Icons1.13.1Иконки
Font Awesome6.4.0Иконки
Flag Icon CSS6.6.6Флаги стран
SortableJSDrag-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 ReplicationMaster/Slave репликация БД

Сборка и деплой (qmail-spz)

  • GCC — компилятор C
  • Make + кастомные shell-скрипты (compile, load, makelib)
  • update.sh — система обновлений с https://up.spamorez.ru/updates

Внутренние библиотеки qmail (C)

Собственные абстракции, без внешних зависимостей:

  • substdio — буферизованный I/O (вместо stdio)
  • stralloc — динамические строки
  • smid — уникальный ID сообщения для сквозной трассировки
  • qregex — POSIX-regex фильтрация
  • blocked — блокировка соединений
  • dns — DNS-резолвер
  • cdb — CDB-база данных
  • base64, token822, header — работа с почтой