30 апреля вышла очередная версия почтового сервера Tegu, в которой обновлен протокол Milter. Но прежде несколько простых слов о том, зачем он нужен…
Итак, любой почтовый сервер состоит из двух частей. MTA (Mail Transfer Agent – Агент Передачи) и MDA (Mail Delivery Agent – Агент Доставки). Задача MTA – пересылать (транспортировать) почту между серверами – ориентируясь на доменную часть он сначала находит в DNS список почтовых серверов, упорядочивает их согласно приоритету, и предпринимает попытки отправить сообщение. Иногда ему не удается сделать это с первого раза, в таком случае MTA повторяет попытки по определенному алгоритму. MTA также выполняет ряд процедур по проверке валидности серверов, с которыми он общается. Работа MTA считается выполненной когда удаленный сервер подтвердил прием сообщения, обоснованно отказался принять, либо по тайм-ауту (обычно это несколько дней).
MDA – ничего не пересылает, его задача получить письмо от MTA и положить в ящик пользователя, он также выдает почту пользовательским почтовым программам (MUA, Mail User Agent) по протоколам IMAP/POP. Это его задача организовать систему хранения, идексирования, поиска и выдачи, а также многое другое.
Итак, MTA – это почтовое отделение, а MDA – это почтальон. теперь нам понятно, что работа у каждого из них разная. Поэтому часто бывает, что и сами эти программы тоже разные и написаны разными людьми. К примеру в открытой архитектуре распространены такие MTA, как Postfix и Exim, а в качестве доставщика распространен Dovecot. А все вместе мы называем почтовым сервером.
Tegu – это современный почтовый сервер, который объединяет в себе и MTA, и MDA. Tegu запускает необходимое количество нужных в данный момент асинхронных процессов и контролирует из исполнение. При этом и на стороне MTA, и на стороне MDA могут работать различные правила и фильтры, которые мы предусмотрели.
Но что делать если пользователь хочет реализовать какой то собственный алгоритм обработки, фильтрации или сортировки почты, который не предусмотрен почтовым сервером. Не программировать же сервер под каждый конкретный случай. Вот для этого и необходим механизм Milter.
Milter – это протокол название которого образуется из двух слов Mail и Filter. Это протокол, которому MTA передает сообщение до того, как передаст его на доставку или отправку.
Какими могут быть сервера для Milter-обработки? Чаще всего агенты Milter решают следующие задачи:
- Проверка сообщений электронной почты на спам;
- Проверка сообщение на вирусы;
- Фильтрация нежелательных вложений;
- Интеграция с DLP-системами;
- Архивирование корреспонденции;
- Сбор и сохранение статистики;
- Добавление дисклеймеров;
- Изменение маршрутизации;
- Абсолютно любая ваша функция, которая выходит за рамки штатных возможностей.
На практике вместе с Tegu чаще всего используется Dr.Web Mail Security Suite (для UNIX), который замечательным образом проверяет почту на спам и вирусы.
При этом понятно, что несложно организовать приложение, которое будет выполнять пользовательский алгоритм любой сложности как перед приемом, так и перед отправкой сообщений.
Таким образом, Milter – это крайне полезный протокол, который позволяет сколько угодно сложно разнообразить алгоритмы работы почтового сервера.
Однако случилось так, что в настоящее время существует множество программ, которые одновременно используют протокол версии 2.6 и версии 6. Для поддержки обеих версий и потребовалось обновление, которое вошло в версию Tegu 1.18.10.
Хотите создать собственное приложение Milter? Используйте готовые библиотеки на C или Python https://pymilter.org/
А новые версии Tegu как всегда можно скачать здесь: https://mbk-lab.ru/development/download/