Не так давно посчастливилось сменить место работы. Попал в компанию, которая, в принципе, заслуживает отдельной статьи по ряду причин и, возможно, появится здесь позже. Если совсем вкратце о структуре нашего отдела: заниматься чем-то, кроме своей основной деятельности, не возбраняется, так что взор мой упал на наш почтовый сервер, доставляющий много хлопот.

У компании имеются удаленные партнерские филиалы, равномерно распределенные по всей Западной Европе, использующие один почтовый сервер. К сожалению, бюджет IT-отдела не очень большой, а пользователей достаточно много (около 700 почтовых аккаунтов). Использовался, да и сейчас используется для почты Exchange 2010 с последними обновлениями и более-менее настроенными правилами фильтрации спама, а вот с антивирусом как-то не заладилось. Купленное решение отказывалось нормально работать, раздувая очередь входящей корреспонденции до неприличных размеров и вешая намертво всю почту. (Да, я знаю, что все best practice говорят о необходимости и edge-сервера, и отдельно сервера архивации, но что было на тот момент, то и было.)

Берем инициативу в свои руки. К большому своему удивлению, найти развернутый мануал по решению такой проблемы сходу не удалось, так что возникла идея поделиться своими пробами и ошибками в рунете.

Из того, что было в конечном итоге протестировано и опробовано:

Zentyal, ASSP и Xeams.

Подробно описывать их не буду, но пару слов стоит сказать
Начнем по порядку. Zentyal отпал достаточно быстро, потому что цели менять всю инфраструктуру Active Directory и переезжать на open-source решение не стояло, да и вообще, он скорее представляет из себя эдакий комбайн из всего, что только возможно. Как мне кажется, он прекрасно подошел бы SMB до 50 пользователей.

Перейдем ко второму нашему кандидату. Anti-Spam SMTP Proxy. Весь набор для проксирования почтового трафика в нем есть, т.е. и Байесовская фильтрация спама, и пенальти очки, и черные/белые списки, и ClamAV и куча-куча всего еще. Есть единственный недостаток: юзабельность. Т.е. веб-интерфейс ASSP это обернутые в какой-то ад конфиги, которые лично мне проще править через консоль. Штука эта простояла у нас около 2х месяцев в продакшене, а потом какой-то из админов что-то поменял в конфигах и все заверте… В общем, мы поймали пару раза .locky и в последний раз актуального бэкапа не нашлось, потому человек ушел в отпуск, а когда пришел уже было поздно. Это заставило нас пересмотреть нашу политику резервного копирования, но об этом в другой раз. К огромному сожалению, отдельного Linux-администратора у нас нет, т.к. почти вся инфраструктура на Microsoft, поэтому ковырять монструозные награмождения через веб-интерфейс для админов была реальная пытка.


После усиленного гугления и пробы еще нескольких продуктов, я остановил свой выбор на Xeams. Да, к большому сожалению, это не OpenSource, а закрытый продукт, однако, он очень дружелюбен к тем администраторам, у которых нет большого опыта в связках Linux&Dovecot&Postfix&etc. Кроме того, он кросплатформенный, так что не возникнет проблем даже у тех, кто с линкусом на вы.

Работать он может в трех режимах:
Stand alone server — да, xeams умееть быть и просто почтовым сервером. На сколько хорошим не могу сказать, потому что эта функция интересовала меня в последнюю очередь.
Spam firewall — в этом режими xeams только принимает весь почтовый трафик на себя и дальше распределяет на корпоративные почтовые сервера.
Hybrid mode — Гибридный режим. Объединяет два других, рекомендую ставить его, поскольку полноценно фильтровать спам он не сможет без пропуска исходящего трафика через себя.

Так как у нас уже был почтовый сервер, то использовался вариант SMTP-Proxy
Так как у нас уже был почтовый сервер, то использовался вариант SMTP-Proxy

Установка производилась на чистую машину с Ubuntu 14.04. Единственное, что необходимо было доставить, так это Java, на которой, собственно, работает движок Xeams.

sudo apt-get update && upgrade
sudo apt-get install libc6-i386
sudo update-alternatives --config java
sudo apt-get install default-jre
java -version

Xeams использует ClamAV, правда, рекомендует ставить его на отдельную машину, но в процессе использования на одной машине никаких проблем замечено не было. Если необходимо позже переконфигурировать настройки ClamAV, то это тоже можно сделать без проблем.

sudo apt-get install clamav-daemon


Качаем архив с инсталлятором отсюда. Распаковываем, даем права и выполняем.
wget http://www.xeams.com/files/XeamsLinux64.tar
tar -xf ./XeamsLinux64.tar
chmod +x ./Install.sh
./Install.sh


Если все прошло успешно, Web-Interface будет доступен по 5272 порту.

Главная страница содержит отчеты, графики и основные параметры потребления ресурсов. Мы дали машине 8Гб RAM, пиковая нагрузка несколько раз достигала 6, так что такие цифры вполне оправданы.



Переходим к самой настройке. На Firewall весь трафик на 25 порт заворачиваем на IP нашего Xeams на порт 2525. Это сделано потому, что у нас Xeams не только получает, но через него и отправляется почта, так что входящая приходит на 2525й порт, а исходящая на 25й порт.

В целом, настройка Xeams простая и достаточно удобная. На которые моменты все-таки, хотелось бы обратить внимание:

Server Configuration > Server Configuration > Basic


Указываем порт для http/https web-доступа.
DNS, если указан в настройках самой машины, то можно не указывать
И адрес, для ежедневных отчетов.


Server Configuration > Server Configuration > Advanced


На вкладке Advanced необходимо указать HELO (как правило, можно просто скопировать из настроек имеющегося почтового сервера), чтобы самим не попасть в СпамЛисты.


Server Configuration > SMTP Configuration > Relaying


Используйте только Closing relay и пропишите адреса и хосты, с которых можно будет отправлять почту без аутентификации.
Со стороны Exchange это выглядит вот так, где закрашенным прописан адрес smtp-relay




Server Configuration > SMTP Proxy Server Configuration


Здесь все просто, указываем порты, на которые принимается почта, указываем адрес пересылки и порт. В нашем случае, это адрес корпоративного Exchange


Greylisting
Отдельно хотелось бы сказать о <a

href=«ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA»>Грейлистинге
. Настоятельно рекомендую прописать туда все домены публичной почты и белого списка, потому что задержка письма на 10 часов из-за неправильно настройки на стороне отправляющего почтового сервера, увы, не редкость.


Server Configuration > Active Directory Integration


Если у Вас поднят Active Directory, то его без проблем можно интегрировать в Xeams. Зачем? Хотя бы для того, чтобы пользователи не мучали Вас в первое время, что у них не доходит почта. Пользователь без проблем сможет зайти и проверить свой почтовый ящик, просмотреть свой спам и прописать свои black/whitelist:



Кроме этого, это предоставляет возможность использовать SMTP только аутентифицированным пользователям. В общем, удобно.


ClamAV
Если Вы, также, как и я установили ClamAV на тот же сервер, что и Xeams, то страница настройки будет приглядеть примерно вот так:



чуть ниже я расскажу о некоторых нюансах его использования.


Спамфильтры.

У Xeams достаточно большой набор спамфильтров:

Real-time Black-hole servers (RBL). Каждому списку можно выставить свои очки значимости, на основе которых, Xeams определяет благонадежность письма.

Из адаптивных фильтров используется Bayesian Analysis, которая вполне справляется с возложенными на нее функциями. Были опасения, что работать он будет плохо, из-за большого количества языков переписки (русский, немецкий, английский, испанский, итальянский, польский, греческий), однако, процент ложных срабатываний достаточно низок.

Auto Learn Sender. Отличная вещь, именно из-за него мы пропускаем весь исходящий почтовый трафик через Xeams, который анализирует адреса получателей и принимает их во внимание, когда выносит окончательную оценку благонадежности письма.

Остальные фильтры страндартны и я не думаю, что их необходимо описывать в этой статье, которая и так уже получилась раздутой.

Теперь несколько слов хотелось бы уделить не совсем очевидным нюансам:
После нескольких дней использования, мы изменили стандартные настройки фильтров и конфигурацию очков:

Градация писем по очкам

и Bayesian Score подняли до 115.
Самым распрастраненнным ложным срабатыванием являлась проблема правильной кодировки, так как, все-таки, Xeams заточен на английский язык, решилась отключением этой настройки.

По умолчанию, ClamAV НЕ проверяет вложения макросов в документах Ofiice, т.е. новомодный .locky может спокойно пройти,
исправить это можно одной строчкой:

echo 'ScanOLE2 true' >> /etc/clamav/clamd.conf

Если кому интересно, то вот конфиг, который используется у нас сейчас
cat /etc/clamav/clamd.conf                  

#Automatically Generated by clamav-base postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-base
#Please read /usr/share/doc/clamav-base/README.Debian.gz for details
TCPSocket 3310
# TemporaryDirectory is not set to its default /tmp here to make overriding
# the default with environment variables TMPDIR/TMP/TEMP possible
User clamav
AllowSupplementaryGroups true
ScanMail true
ScanArchive true
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog true
LogRotate true
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
SelfCheck 3600
Foreground false
Debug false
ScanPE true
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF true
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
DetectBrokenExecutables false
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 5
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
ScanOnAccess false
AllowAllMatchScan true
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 10
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
StatsEnabled false
StatsPEDisabled true
StatsHostID auto
StatsTimeout 10
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OfficialDatabaseOnly false
CrossFilesystems true
OnAccessMaxFileSize 25M



В целом, через две недели после использования и анализа спама, возможного спама, можно сказать, что 98% спама действительно не проходит.

Буду рад предложениям, комментариям и критике в комментах.
Поделиться с друзьями
-->

Комментарии (23)


  1. gre
    15.07.2016 16:24

    98% процентов спама отсекается. а есть абсолютные цифры — сколько спама прошло? Понятно, что они будут неточными. Но хотя бы порядок.


    1. sergio_deschino
      16.07.2016 01:19

      Скажем так. Ежедневно приходят отчеты о «лидерах» по количеству спама (первое место стабильно удерживает пользователь с 98% отбракованных писем) и жалуется только пользователь из топ-3, присылая по два-пять писем в день.


  1. ZiggiPop
    15.07.2016 17:27

    >он очень дружелюбен к тем администраторам, у которых нет большого опыта в связках Linux&Dovecot&Postfix&etc.

    Вы не смотрели в сторону Roundcube? Устанавливается c зависимостями буквально одним шелл-скриптом install.sh, удобен в администрировании и, вроде, имеет из коробки все необходимое вам. Есть даже такая штука, как Bitnami Roundcube Stack, которая в одном из вариантов представляет собой виртуальную машину с готовым почтовым сервером внутри.


    1. sergio_deschino
      15.07.2016 19:29
      +2

      У нас стоит Exchange и он всем устраивает, кроме проблемы спама, поэтому в данном случае он не особо нужен.


      1. KonstantinSamsonov
        16.07.2016 15:07

        Я решил для себя вопрос давным давно ORF spam filter + Symantec для Exchange


        1. sergio_deschino
          16.07.2016 15:08

          Я специально написал о бюджете, что несколько меняет концепцию.


        1. navion
          21.07.2016 19:35

          ORF сам почти не фильтрует, это просто удобный интерфейс для настройки и подключения сторонних RBL.
          ESA намного эффективней — после базовой настройки даже на info в день приходит всего пара откровенно спамереских писем.


  1. n1nj4p0w3r
    15.07.2016 19:54

    postfix+rspamd+clamav-milter

    Зачем вам imap,pop3,etc. в фильтрующем релее?
    Зачем недостаточно компетентным админам дали доступ шариться в продакшн-системе?
    Причем тут разработка?


    1. merlin-vrn
      15.07.2016 20:05

      Вообще-то rspamd идёт в комплекте с rmilter, который и rspamd и clamav подключает к postfix одним milter-ом. Мне понравилось.


    1. sergio_deschino
      16.07.2016 01:23

      Разработка теперь, к сожалению, включает и банальное администрирование.
      К большому сожалению, мы не живем в идеальном мире, где все админы одинаково хорошо разбираются в чанге и стандартных линуховых продуктах и где бюджеты не всегда выделяются целесообразно.
      imap, pop3, etc, в фильтрующем релее потому очень гетерогенная среда у почтовых клиентов, начиная от outlook и заканчивая клиентом в мфу.


      1. n1nj4p0w3r
        16.07.2016 01:32
        +1

        Если админ не разбирается — он делает виртуалку и изучает незнакомый продукт там и это не «идеальный мир», а вполне разумное решение проблемы отсутствия необходимого опыта.
        Exchange поддерживает pop3 и imap для доступа к ящикам, если вы используете релей еще и как сервер почтовых ящиков, то вы что-то делаете не так и устраиваете зоопарк который в будущем вам аукнется.

        Зачем мфу нужен почтовый ящик для меня загадка.


        1. sergio_deschino
          16.07.2016 02:01

          МФУ умеет факсы и сканировать на почту, собственно для этого именно.
          А где, простите, Вы увидели релей, который дает доступ к почтовым ящикам по pop3 и imap?


          1. merlin-vrn
            16.07.2016 13:33

            Для отправки сканов на почту вообще-то не нужен ни POP3, ни IMAP — то есть, не нужен вообще никакой ящик. Нужен только SMTP-сервер, который будет релеить почтовое сообщение (скорее всего, с аутентификацией). Например, в Xerox 3300MFP вообще даже настроек именно ящика (приёма почты) нет — только настройки SMTP для отправки.

            В технологии e-mail вообще не существует такого понятия, как «ящик отправителя». Есть «адрес отправителя», envelope from, который вполне может быть не ассоциирован ни с каким ящиком (т.е. почта по этому адресу может вообще не приниматься сервером). Например, разнообразные «noreply@domain.com».


            1. sergio_deschino
              16.07.2016 15:10

              Факсы оно умеет не только принимать и отсылать через SMTP, но и наоборот, принимать почту и слать факсы.


              1. n1nj4p0w3r
                22.07.2016 02:07

                Факсы разве не по телефонной линии передают?
                Зачем МФУ принимать почту понятнее не стало.


                1. merlin-vrn
                  22.07.2016 09:00

                  Чтобы отправить её потом по факсу. Видимо, он дозванивается, человеческим голосом говорит той стороне: «примите факс, Зиночка», а потом «стартую». А если не туда попал — извиняется и вешает трубку, а в ответном емейле пишет, что телефон неправильный.

                  Факсы — это такой невменяемый пережиток прошлого, что будь моя воля, законодательно бы запретил их использовать. Ребят, 2016 год на дворе, оглянитесь.


  1. awsswa59
    17.07.2016 12:34

    Сделал гораздо проще — поставил на тужу машину mDaemon — и сменил 25 порт у Exchange.
    Свои клиенты идут на 587 порт сразу на Exchange.
    В Exchange сделал конектор — все отправлять через mDaemon
    В mDaemon завел домены — все для firma.ru пересылать на адрес Exchange
    Никаких настроек — все работает из коробки


    1. sergio_deschino
      17.07.2016 12:36

      У нас была проблема в том, что локальное рещение вешало всю очередь, поэтому пришлось разнести, а на винде ставить что-то не хотелось.


      1. Retifff
        17.07.2016 15:01

        А что за купленное решение вешало всю очередь?


        1. sergio_deschino
          19.07.2016 00:39

          Avast для почтовых серверов.


  1. tweky
    18.07.2016 15:45

    Вы написали:
    «Самым распрастраненнным ложным срабатыванием являлась проблема правильной кодировки, так как, все-таки, Xeams заточен на английский язык, решилась отключением этой настройки»

    Не понял, какой именно?


    1. sergio_deschino
      19.07.2016 00:39

      Если не изменяет память, то Base Encode 64, самый первый фильтр. Завтра посмотрю в конфиге.


      1. tweky
        19.07.2016 09:17

        Удалось ли посмотреть?
        Я полагаю это либо «Base64 Filter» (он же самый первый), либо «UUEncode filter», верно?