bf-milter

0

Описание

Почтовый фильтр для модификации сообщений - добавление текста в начало (далее banner) или конец (далее footer) сообщения. Работает с почтовым сервером по протоколу milter.

Языки

  • C96,2%
  • CMake3,5%
  • Shell0,3%
README.md

bf-milter

Почтовый фильтр для модификации сообщений - добавление текста в начало (далее

banner
) или конец (далее
footer
) сообщения. Работает с почтовым сервером по протоколу
milter
.

Текст

banner
добавляется в входящее сообщение, когда адресат получает письмо из недоверенного домена. При получении первого письма от отправителя из недоверенного домена можно указать дополнительный текст.

Текст

footer
добавляется в исходящее сообщение, обычно это используется для добавления заявления о конфиденциальности информации.

Фильтры для определения списка отправителей/доменов для добавления

footer
, списка доверенных отправителей/доменов и списка получателей/доменов для добавления
banner
указываются в файле настроек. Базовый файл настроек содержит подробные комментарии - см. директорию проекта
config
.

Сборка

Зависимости от стороннего ПО и библиотек

Для сборки проекта необходимо установить:

  • cmake
  • libmilter
    или
    sendmail
  • libpq
  • glib
  • gmime-3.0
  • libconfig
  • logrotate
    (для ротации лог-файлов во время работы)

Компиляция и установка

В директории проекта выполнить команды:

  • mkdir build
  • cmake -B build .
  • cmake --build ./build
  • cmake --install ./build

Запуск

Программа содержит скрипт автозапуска для систем с

openrc
. Скрипт устанавливается автоматически в
/etc/init.d/bf-milter
.

ОписаниеКоманда
Запуск через openrc
rc-service bf-milter start
Остановка через openrc
rc-service bf-milter stop
Обновление конфигурации
rc-service bf-milter reload
Добавление в автозагрузку
rc-update add bf-milter default
Удаление из автозагрузки
rc-update del bf-milter default

Запуск из командной строки:

/opt/bf-milter/bf-milter -c /etc/bf-milter.conf
.

Программа работает в консольном режиме, для запуска в режиме службы используйте

supervise-daemon
или
start-stop-daemon
.

Обновление конфигурации происходит по сигналу

USR1
, который можно отправить командой
kill -SIGUSR1 <pid>
.

Использование БД

В качестве БД используется только PostgreSQL. В БД хранится историческая информация о первом входящем письме от отправителя к адресату, чтобы не повторять одноразовые уведомления о том, что письмо получено впервые от недоверенного адресата (домена).

Инструкция описана в директории sql.


Принцип работы

На примере почтового сервера

postfix
. Необходимо настроить параметр
smtpd_milters
. Существует два варианта обработки писем.

В один проход

В этом случае обработка входящих и исходящих писем происходит одинаково. Проверяется необходимость добавления

banner
и
footer
, после чего могут быть добавлены оба, если это соответствует фильтрам. У этого варианта есть недостатки:

  • если в исходящее письмо будет добавлен
    footer
    после добавления подписи
    dkim
    , то в последствии это приведет к ошибке при проверке
    dkim
    на стороне получателя;
  • если в входящее письмо будет добавлен
    banner
    до проверки
    dkim
    , то проверка
    dkim
    будет провалена;

Эти недостатки можно устранить путем указания нужного порядка

smtpd_milters
в настройках файла
master.cf
, если возможно разделить обработку писем по их направленности (входящие/исходящие).

В два прохода

В этом случае обработка каждого письма будет разделена на два этапа:

  • если определено, что письмо исходящее, тогда будет добавлен
    footer
    , предполагается, что это должно происходить до добавления подписи
    dkim
    ; для входящих писем будет добавлен заголовок
    X-BF-Milter
    , чтобы определить второй проход;
  • если в письме присутствует заголовок
    X-BF-Milter
    , считаем, что это входящее письмо и проверка
    dkim
    уже была пройдена, добавляем
    banner
    .

В этом варианте параметр

smtpd_milters
может быть указан в настройках файла
main.cf
(будет действовать для входящих и исходящих). Примерный порядок может быть таким:
bf_milter
,
dkim
,
anti-spam
,
bf_milter
,
anti-virus
.