Развернул я тут у себя в production почтовый сервачок под названием "Xeams" в качестве антиспам-фильтра. Это бесплатная закрытая Javaписная софтина, которая умеет работать в различных режимах. В числе прочего — как SMTP proxy и Antispam Firewall. Она умеет быть и MTA/MDA в том числе, но конкретно мне прямо здесь и сейчас это не нужно.
Я установил Xeams как ещё один SMTP-релей перед моим штатным корпоративным веб-сервером в надежде, что первый будет более эффективно фильтровать потоки спама. Локальных пользователей я на Xeams-е не заводил. После примерно суток эксплуатации могу поделиться первыми впечатлениями от программного продукта.
Достоинства (сильные стороны)
- Официально бесплатен, в том числе и для коммерческого применения. Никаких ограничений ни по срокам использования, ни по функционалу.
- Низкий порог вхождения. Требуется совсем немного времени, чтобы разобраться как его запустить и сделать первоначальную установку.
- Инсталлируется и заводится с пол-пинка на чём угодно (Windows, Linux, MAC).
- Всё настраивается и управляется через веб-интерфейс. "И не нужно ничего знать, только кнопочки нажимать" ©. Иногда это бывает удобно.
- Разумное потребление вычислительных мощностей и системных ресурсов (если сравнивать с MS Exchange).
- Развесистый, разухабистый и фичастый функционал отстреливания спама. И Байес, и RBL, и добавление доверенных респондентов по исходящим письмам. Короче, всё что нужно и даже больше. Достаточно внятные механизмы обучения фильтров.
- И всё это работает прямо "из коробки".
- Возможность быстрой и тонкой настройки форвардинга (пересылки) почтовых писем, начиная от доменов и заканчивая отдельными адресами. То есть, можно адресованные на vasya@mycompany.com письма пересылать через сервер smtp1.mycompany.com, а письма на vova@mycompany.com отправлять на smtp2.mycompany.com с копией на security@fsb.org.
- Сервер временно (по умолчанию 1 месяц) хранит у себя в базе данных все прошедшие через него письма в любую сторону (входящие, исходящие, транзитные). Очень удобно делать по этой базе поиск в случае каких-то проблем с не-доставкой.
- Сервер умеет строить гламурные графики и присылать красивые отчётики по результатам своей работы.
Недостатки (слабые стороны)
- Это всё-таки Java со всеми вытекающими. Долго стартует, долго перезапускается. А уж подсунуть ей SSL-сертификат — это вообще отдельная песня. По сравнению с другими *nix-почтарями, написанными на C/C++, память кушает яки корова веники.
- Закрытый исходный код. Что там внутри и как оно работает — а фиг его знает.
- Как следстие, принципиальная неотключаемость некоторых фич, даже если они не нужны. Мне, например, очень сильно мешает проверка валидности HELO-приветствия. Очень мало кто пишет там реальное корректное FQDN-имя хоста, к тому же подобное явное требование отсутствует в RFC. Но Xeams всё равно будет его анализировать.
- Огромная прорва недочётов по Usability с точки зрения интерфейса сисадмина. Например, тебе говорят, что у письма было некорректное HELO-приветствие. А чтобы посмотреть что же именно там было указано, надо лезть совсем в другое место админки и проводить там полнотекстовый поиск по "сырым" логам SMTP-сессий. Или, например, нет простой возможности понять, просмотрел ли ты уже такую-то пачку писем в поисках ложноположительных срабатываний на спам или нет, так как в общем списке не фигурирует ни дата, ни флаги "читано / не-читано".
- Имеется некоторое количество логических багов и явных недоделок. Например, сервер в админке иногда "рисует" неверные ссылки на просмотр исходников письма, он не дружит с линуксовым systemd и тому подобное.
- Отдельные недочёты в функциональности. Например, можно заbindить тот или иной сервис либо на все IP / интерфейсы сразу, либо только на какой-то один из них. Это жутко неудобно на multihome-машине, когда хочется выбрать под "привязку" два-три адреса из пяти возможных. Или, скажем, нельзя указывать WildCard-символы в WhiteList-ах для IP-адресов доверенных хостов. Ещё там нельзя посмотреть "в одном месте" факт доставки / не_доставки каждого конкретного сообщения в разрезе SMTP. Это, опять-же, надо разгребать сырые логи SMTP-соединений в поисках интересующих писем, где к тому же отсутствют внутренние идентификаторы сообщений (р-р-р-р, и кто это придумал?).
- Идеологически сервер построен так, что принимает извне вообще всё подряд, но далеко не всё доставляет до получателей. Это плохо тем, что в случае отсеивания "легального" письма, отправитель об этом никогда не узнает. Ведь Xeams во входящей SMTP-сессии отчитается о том, что "всё хорошо, прекрасная Маркиза".
- Не переваривает вложения жирнее 25 мегабайт. Принципиально. Потому что Java. Рушится. Памяти ему не хватает, гыгыгы.
- Допускает наличие только одного SuperUser-а. Неудобно, если админов в организации больше одного.
Вердикт
В целом, продукт весьма интересный, хоть и с большим количеством недочётов. Которые вряд ли когда-либо будут исправлены по причине закрытости кода и коммерческой направленности разработки. Может успешно применяться в небольших компаниях уровня SOHO, а также там, где не могут позволить себе нанять дорогого грамотного сисадмина или купить нормальный "полноценный" почтарь. Прогрессивные идеи и широкий функционал нивелируются большим количеством багов и недоработок, в том числе и касательно Usability. Спам отсеивает даже чересчур хорошо, из-за чего сервер требует постоянного внимания и отслеживания ложноположительных срабатываний на регулярной основе.
Если бы Xeams продавался за деньги, то лично я бы его ни за что не купил. Но на халяву, как говорится, даже хлорка — творожок. Поэтому покамест попользую его в качестве антиспам-фильтра, а через какое-то время выкину и заменю на Exim.