LMPD

LMPD (Lightweight Modular Policy Daemon) — это простой и легковесный демон для ведения белых и черных списков в Postfix.

English description

For English documentation on this software, please refer to the README file or project's GitHub page.

Принципы работы, особенности и ограничения

При использовании LMPD все письма, поступающие в Postfix, проверяются в соответствии со списками LMPD:

  • Если отправитель письма находится в белом списке, письмо помещается во входящие.
  • Если отправитель письма находится в чёрном списке, письмо помещается в спам.
  • Если отправитель отсутствует в обоих списках, письмо может передаваться на дальнейшую обработку в DSPAM.

Возможности:

  • Для хранения политик и других служебных данных (а также, опционально, учётных записей пользователей) используется БД в MySQL.
  • Белый список автоматически пополняется адресатами исходящих писем.
  • Поддерживаются алиасы (псевдонимы) учётных записей пользователей.
  • Поддерживается интеграция с IMAP-сервером Dovecot для обучения распознавания нежелетальной почты с помощью модифицированного плагина защиты от спама через DSPAM (dovecot-antispam plugin). Обучение производится пользователями путём переноса нежелательных писем в каталог со спамом.

Разработка первой версии LMPD была профинансирована Андреем Путиным из компании «Маттино».

Общие сведения

  • Язык программирования: Python. (В планах проекта переписать основной код на C++ для повышения производительности.)
  • Другие используемые технологии: СУБД MySQL для хранения данных, формат YAML для конфигурационного файла.
  • Лицензия: GNU GPLv2.
  • Автор оригинальной версии: Николай Богданов.
  • Исходный код: GitHub. Примечание: ранее проект LMPD назывался policyd, поэтому в исходниках возможно использование старого названия.
  • Анонс проекта в новостях «Фланта»: flant.ru/news/20.

Инструкция по установке и использованию

Установка

Для дистрибутивов на основе Debian (в т.ч. Ubuntu Server) на apt.flant.ru доступны готовые пакеты (lmpd и dovecot-antispam). Пользователи остальных систем могут собрать проект самостоятельно из исходников:

git clone git://github.com/flant/LMPD.git lmpd/

Установка в систему осуществляется выполнением команды "make install" в каталоге с исходниками. Обратите внимание, что основной пакет зависит от нескольких модулей для Python:

  • PySQLPool
  • MySQLdb
  • PyYaml

Параметры запуска lmpd:

usage: lmpd [-h] [-c CONFIG] [-p PID] [-d]

SMTP policy whitelisting daemon.

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Path to the config file
  -p PID, --pid PID     Path to the PID file
  -d                    Become a daemon

В состав LMPD входит init-скрипт (в архиве с исходниками он находится в lmpd/debian/init.d), поддерживающий команды start, status, stop и restart.

Настройка

Основной конфигурационный файл LMPD хранится в формате YAML. В архиве с исходниками он находится в lmpd/config/lmpd.yaml, а в системе устанавливается в /etc/postfix/lmpd.yaml. Его содержимое:

mysql: # Настройки подключения к СУБД
  host: 127.0.0.1
  port: 3306
  user: postfix
  password: secret
  dbname: mail
  pool: 10 # Лимит подключений к серверу

system: # Системный пользователь и группа,
# под которыми будет осуществляться работа user: postfix group: postfix network: # Настройки сети type: tcp # Тип сети (unix или tcp) #socket: /tmp/policyd.sock # Путь до сокета (если выбран type: unix) address: 127.0.0.1 # IP-адрес, на котором прослушиваются
# подключения от Postfix и Dovecot (если выбран type: tcp) port: 7000 # Порт для входящих подключений (если выбран type: tcp) filters: keep: True # Сохранять правила без владельцев? exclude: # Не хранить правила для foo@bar.com. Ответом на любое
# действие для foo@bar.com и перечисленных далее пользователей
# будет ответ по умолчанию (см. ниже) - foo@bar.com order: # Список политик. В таком порядке письмо проходит проверку: - AddressPolicy - DomainPolicy - UserPolicy - UserPolicyLDAP default: DUNNO # Ответ по умолчанию (если он не найден в политиках) debug: False # Режим отладки log: /var/log/lmpd/lmpd.log # Путь до файла с журналом

Настройка dovecot-antispam осуществляется в соответствии с мануалом (man dovecot-antispam). Опции, добавленные в dovecot-antispam в патче для LMPD:

       plugin {
           # Выбираем модифицированный движок
           antispam_backend = tfdspam

           # Тип подключения к LMPD (unix или tcp)
           antispam_policyd_socket_type = tcp
           # Путь к UNIX-сокету (если тип подключения — unix)
           #antispam_socket_name = /tmp/policyd.sock
# IP-адрес LMPD antispam_policyd_address = 127.0.0.1
 # Порт LMPD antispam_policyd_port = 7000 # Использовать ли LMPD? (По умолчанию = 0) antispam_policyd_enable = 1 ...

Остальные опции dovecot-antispam наследует от своей оригинальной версии и движка DSPAM.