bf-milter
Описание
Почтовый фильтр для модификации сообщений - добавление текста в начало (далее banner) или конец (далее footer) сообщения. Работает с почтовым сервером по протоколу milter.
Языки
- C96,2%
- CMake3,5%
- Shell0,3%
bf-milter
Почтовый фильтр для модификации сообщений - добавление текста в начало (далее ) или конец (далее ) сообщения.
Работает с почтовым сервером по протоколу .
Текст добавляется в входящее сообщение, когда адресат получает письмо из недоверенного домена.
При получении первого письма от отправителя из недоверенного домена можно указать дополнительный текст.
Текст добавляется в исходящее сообщение, обычно это используется для добавления заявления о конфиденциальности информации.
Фильтры для определения списка отправителей/доменов для добавления , списка доверенных отправителей/доменов
и списка получателей/доменов для добавления указываются в файле настроек.
Базовый файл настроек содержит подробные комментарии - см. директорию проекта .
Сборка
Зависимости от стороннего ПО и библиотек
Для сборки проекта необходимо установить:
- cmake
илиlibmiltersendmail- libpq
- glib
- gmime-3.0
- libconfig
(для ротации лог-файлов во время работы)logrotate
Компиляция и установка
В директории проекта выполнить команды:
- mkdir build
- cmake -B build .
- cmake --build ./build
- cmake --install ./build
Запуск
Программа содержит скрипт автозапуска для систем с . Скрипт устанавливается автоматически в .
| Описание | Команда |
|---|---|
| Запуск через openrc | |
| Остановка через openrc | |
| Обновление конфигурации | |
| Добавление в автозагрузку | |
| Удаление из автозагрузки | |
Запуск из командной строки: .
Программа работает в консольном режиме, для запуска в режиме службы используйте или .
Обновление конфигурации происходит по сигналу , который можно отправить командой .
Использование БД
В качестве БД используется только PostgreSQL. В БД хранится историческая информация о первом входящем письме от отправителя к адресату, чтобы не повторять одноразовые уведомления о том, что письмо получено впервые от недоверенного адресата (домена).
Инструкция описана в директории sql.
Принцип работы
На примере почтового сервера . Необходимо настроить параметр .
Существует два варианта обработки писем.
В один проход
В этом случае обработка входящих и исходящих писем происходит одинаково. Проверяется необходимость добавления
и , после чего могут быть добавлены оба, если это соответствует фильтрам.
У этого варианта есть недостатки:
- если в исходящее письмо будет добавлен
после добавления подписиfooter, то в последствии это приведет к ошибке при проверкеdkimна стороне получателя;dkim - если в входящее письмо будет добавлен
до проверкиbanner, то проверкаdkimбудет провалена;dkim
Эти недостатки можно устранить путем указания нужного порядка в настройках файла , если возможно
разделить обработку писем по их направленности (входящие/исходящие).
В два прохода
В этом случае обработка каждого письма будет разделена на два этапа:
- если определено, что письмо исходящее, тогда будет добавлен
, предполагается, что это должно происходить до добавления подписиfooter; для входящих писем будет добавлен заголовокdkim, чтобы определить второй проход;X-BF-Milter - если в письме присутствует заголовок
, считаем, что это входящее письмо и проверкаX-BF-Milterуже была пройдена, добавляемdkim.banner
В этом варианте параметр может быть указан в настройках файла (будет действовать для входящих и исходящих).
Примерный порядок может быть таким: , , , , .