Carbonio MTA (Mail Transfer agent) - это ключевой узел инфраструктуры Carbonio, обеспечивающий работу его главной функции - отправки и получения электронной почты. В сердце Carbonio MTA лежит Postfix, который в связке с Amavis, ClamAV и SpamAssassin обеспечивает надежную и безопасную работу с потоками электронной почты, защищая почтовые ящики пользователей от спама и зараженных вирусами писем. В этой статье мы расскажем о том, как грамотно настроить Carbonio MTA и как администратор может взаимодействовать с ним.
Данная статья подходит как для пользователей коммерческой версии Carbonio, так и для пользователей Carbonio Community Edition.
Особенности узла Carbonio MTA
На узле MTA происходит обработка входящего и исходящего SMTP-трафика. В отличие от других почтовых протоколов, таких как IMAP и POP3, SMTP-запросы не проксируются через Carbonio Proxy, а это значит, что сервер MTA должен быть доступен для подключений напрямую из интернета. Для доставки писем внутри системы используется протокол LMTP.
Помимо получения и отправки почты, на узле MTA проходят проверка и фильтрация входящих писем. Их осуществляют входящий в Postfix Postscreen, а также поставляемые вместе с узлом MTA Amavis, ClamAV, SpamAssassin, CBPoilcyD и Milter. Помимо стандартных функций антиспама и антивируса, MTA может осуществлять и блокировку прикрепленных к письмам файлов на основании их расширений.
Несколько Carbonio MTA в одной системе
Как уже отмечалось, обращения по SMTP к узлу Carbonio MTA не проксируются при помощи Carbonio Proxy и поэтому узел должен быть доступен напрямую из интернета. Однако в высоконагруженных почтовых системах может потребоваться установка двух или более MTA. Как в таком случае обеспечить балансирование нагрузки между ними?
В Carbonio балансировка нагрузки между несколькими MTA происходит автоматически для исходящей почты. Для входящей почты требуется балансировка DNS. Для этого достаточно добавить несколько A-записей для одного доменного имени, чтобы все заработало. К примеру:
mail.example.ru A 123.123.123.123
mail.example.ru A 123.123.123.124
Получается, что когда MX-запись домена указывает на A-запись mail.example.ru, обращения будут идти не к одному серверу, а сразу к двум, что позволит задействовать сразу два узла MTA и обеспечить балансировку нагрузки. В случае, если узлов MTA в вашей инфраструктуре больше, чем 2, можно добавить дополнительные A-записи в DNS.
Принцип получения почты
Поскольку в MTA используется Postfix, получение и отправка почты происходит за счет почтовых очередей. Всего их пять:
Входящие - в эту почтовую очередь попадают все входящие письма, отправленные как с внутренних, так и с внешних адресов
Активные - в эту почтовую очередь попадают письма, прошедшие проверку Postscreen и CBPolicyD. Письма из этой очереди направляются в Amavis для проверки на вирусы и спам. После прохождения проверки доставляются или перемещаются в другую очередь.
Отложенные - в эту почтовую очередь попадают письма из очереди “Активные” в силу различных причин не могут быть отправлены в данный момент. Впоследствии Postfix предпринимает попытки повторно отправить эти письма адресату. По умолчанию письма в этой очереди находятся 5 дней, после чего возвращаются отправителю. Настроить этот срок можно изменив значение параметра bounce_queue_lifetime в файле zmlocalconfig.
Удерживаемые - в эту почтовую очередь попадают письма, которые не могут быть корректно обработаны. Сообщения остаются в этой очереди до тех пор, пока администратор их оттуда не удалит или не переместит в другую очередь. В отличие от отложенных писем, Postfix не предпринимает повторных попыток для их отправки
Поврежденные - в эту почтовую очередь попадают письма, которые повредились во время отправки или получения, и стали нечитаемыми.
Просмотреть почтовые очереди можно в командной строке при помощи следующих команд, выполнив вход как пользователь zextras (sudo su - zextras):
sudo /opt/zextras/libexec/zmqstat - покажет количество писем в каждой из почтовых очередей.
/opt/zextras/common/sbin/postqueue -p - покажет подробные описания писем, которые находятся в почтовой очереди. В случае, если очереди пустые, покажет соответствующее уведомление.
Того же эффекта можно добиться при помощи команды mailq.
Просмотреть письмо, находящееся в почтовой очереди, можно при помощи его идентификатора, который предоставляется при выполнении mailq и postqueue. К примеру:
/opt/zextras/common/sbin/postcat -q EC753D0D00
Для удаления конкретного письма из очереди используйте команду
/opt/zextras/common/sbin/postsuper -d EC753D0D00
Для очистки всех очередей воспользуйтесь командой
/opt/zextras/common/sbin/postsuper -d ALL
Для очистки конкретной очереди, добавьте ее название в конце предыдущей команды
/opt/zextras/common/sbin/postsuper -d ALL deferred
Распределение ролей между узлами Carbonio MTA
Допустим и сценарий, при котором несколько MTA в одной системе выполняют разные роли. К примеру, один из двух MTA работает только на входящую почту, а второй - только на исходящую.
Для конфигурирования узла Carbonio MTA, который работает только на получение почты, следует исключить сервис carbonio-mta-sidecar.service из числа запускаемых автоматически:
systemctl mask carbonio-mta-sidecar.service
Также потребуется удалить файл /etc/zextras/service-discover/carbonio-mta.hcl
Чтобы сервер при этом мог получать почту, на него должна указывать валидная MX-запись в DNS.
Для конфигурирования узла Carbonio MTA, который работает только на отправку почты, достаточно просто добавить соответствующий сервер в инфраструктуру Carbonio, но при этом не добавлять ведущих к нему MX-записей. В результате узел Carbonio не будет получать электронные письма, но продолжит их отправлять.
Настройка ClamAV
В свете последних событий, официальный репозиторий с обновлениями баз данных для ClamAV оказался недоступным для пользователей из России. В связи с этим встроенный в Carbonio антивирус не может нормально работать сразу после установки. Решить эту проблему можно указав другой, доступный для пользователей из РФ репозиторий. Делается это при помощи команды carbonio prov modifyConfig zimbraClamAVDatabaseMirror LINK_TO_THE_REPO.
Допускается настройка отдельного репозитория для каждого сервера MTA. Делается это при помощи команды вида carbonio prov modifyServer mta.example.ru zimbraClamAVDatabaseMirror LINK_TO_THE_REPO.
В приведенных примерах замените LINK_TO_THE_REPO ссылкой на доверенный репозиторий, а в случае с серверной командой замените mta.example.ru на доменное имя сервера Carbonio MTA.
Настройка SpamAssassin
SpamAssassin в Carbonio начинает работать автоматически, сразу после установки. Для повышения эффективности фильтрации спама администратор может добавлять в SpamAssassin собственные правила, либо использовать Байесовское обучение, которое работает в случаях, когда пользователи самостоятельно перемещают письма из папки “Входящие” в папку “Спам” или наоборот.
О том, как использовать оба эти метода мы рассказывали ранее в статье про фильтрацию спама.
Настройка Postscreen
Поскольку узел Carbonio MTA обычно доступен из внешнего интернета, очень важно защитить его от внешних угроз, таких как DoS-атаки или мейл-бомбинг. Для этих целей в него встроен сервис Postscreen, который позволяет отсеивать автоматически сгенерированные входящие подключения и реализовывать грейлистинг в рамках почтового сервера.
О том, как настроить Postscreen мы также рассказывали в нашей предыдущей статье.
Настройка CBPolicyD
CBPolicyD - это мощный инструмент для настройки различных почтовых политик на сервере. Он позволяет настроить как квоты, так и различные почтовые политики. К примеру, с помощью CBPolicyD администратор может запретить части пользователей отправлять письма внешним пользователям, ограничить число отправителей, которые могут слать письма на определенный почтовый ящик, ограничить количество писем, которые может получить или отправить конкретный пользователь, и так далее.
Про настройку CBPolicyD мы также рассказывали ранее.
Настройка Milter
Milter (сокращение от Mail Filter) - инструмент, который используется для защиты списков рассылки от нежелательных писем. Опасность этого явления заключается в том, что направленный в адрес списка рассылки спам будет попадать в почтовые ящики сразу нескольких пользователей. Это приводит к повышенному расходу места на жестком диске почтового сервера, а также повышает риски для кибербезопасности предприятия. Milter позволяет ограничить круг пользователей, которые могут отправлять письма в конкретный список рассылки.
Для включения Milter используйте команды:
carbonio prov modifyConfig zimbraMilterServerEnabled TRUE
carbonio prov modifyServer mta.example.ru zimbraMilterServerEnabled TRUE
В случае с серверной командой замените mta.example.ru на доменное имя сервера Carbonio MTA
Для непосредственного ограничения круга отправителей, уполномоченных отправлять письма в списки рассылки, используйте следующие команды:
carbonio prov grr dl distributionlist@example.ru usr user@example.ru sendToDistList
Предоставить права пользователю user@example.ru права на отправку писем в адрес списка рассылки distributionlist@example.ru
carbonio prov grr dl distributionlist@example.ru grp groupdl@example.ru sendToDistList
Предоставить права участникам списка рассылки groupdl@example.ru права на отправку писем в адрес списка рассылки distributionlist@example.ru
carbonio prov grr dl distributionlist@example.ru all sendToDistList
Предоставить права всем учетным записям на сервере права на отправку писем в адрес списка рассылки distributionlist@example.ru
carbonio prov grr dl distributionlist@example.ru dom example.ru sendToDistList
Предоставить права всем учетным записям домена example.ru права на отправку писем в адрес списка рассылки distributionlist@example.ru
carbonio prov grr dl distributionlist@example.ru pub sendToDistList
Предоставить права всем в интернете на отправку писем в адрес списка рассылки distributionlist@example.ru
После присвоения необходимых прав не забудьте перезагрузить MTA-сервер, чтобы изменения вступили в силу. Это делается при помощи команды zmmtactl reload
По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.
vasilisc
Для жителей РФ оптимально обновлять базы Clamav с репозитория
https://packages.microsoft.com/clamav/