Exim — Mail Transfer Agent (MTA) с открытым исходным кодом, наиболее распространённый почтовый сервер в Linux-хостинге. Установлен по умолчанию в Debian, Ubuntu и большинстве панелей управления (cPanel, ISPmanager). Гибкая конфигурация через правила ACL (Access Control List) позволяет реализовать сложную маршрутизацию и фильтрацию.
Как работает
Exim принимает письма через SMTP, обрабатывает через цепочку ACL-правил и доставляет локально или пересылает на другой сервер. Обработка письма проходит несколько этапов: acl_smtp_connect → acl_smtp_helo → acl_smtp_mail → acl_smtp_rcpt → acl_smtp_data. На каждом этапе можно применять правила: проверить SPF, отклонить письмо из спам-листа, добавить заголовок.
Базовая конфигурация
# /etc/exim4/exim4.conf или update-exim4.conf
dc_eximconfig_configtype='internet'
dc_other_hostnames='mail.example.com'
dc_local_interfaces='0.0.0.0'
dc_relay_nets=''
dc_minimaldns='false'
# Перегенерировать конфиг Debian
update-exim4.conf
# Перезапуск
systemctl restart exim4
# Просмотр очереди
exim -bp
# Тест доставки
exim -bt user@example.com
История
Exim создан Филипом Хейзелом в Кембриджском университете в 1995 году как замена Sendmail с более понятной конфигурацией. Название — сокращение от EXperimental Internet Mailer. К 2010-м Exim занял лидирующую позицию по числу установок в Linux-хостинге. Уязвимость CVE-2019-10149 (Remote Command Execution) в Exim 4.87-4.91 затронула миллионы серверов — напоминание о важности обновлений почтового ПО.
Интеграция с антиспамом
Exim интегрируется с SpamAssassin через spam = nobody:true в ACL — письма со Score > 5 помечаются или отклоняются. ClamAV подключается через demime и clamd-socket для сканирования вложений. Greylist через SQLite: неизвестные отправители временно отклоняются (код 451), повторная попытка через 5 минут означает легитимный MTA.
DKIM-подпись в Exim через встроенный модуль или OpenDKIM:
# В exim4.conf
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_SELECTOR = mail
DKIM_PRIVATE_KEY = /etc/exim4/dkim/${DKIM_DOMAIN}.private
Мониторинг очереди
Застрявшие письма в очереди — признак проблем с доставкой:
# Размер очереди
exim -bpc
# Детали всех сообщений в очереди
exim -bp
# Принудительная доставка конкретного сообщения
exim -M message-id
# Удалить все сообщения в очереди (осторожно!)
exim -bp | exiqgrep -i | xargs exim -Mrm
Мониторинг через Grafana с exim_exporter: метрики размера очереди, количества доставленных/отклонённых писем.
На что обращать внимание
Exim по умолчанию принимает письма для локальных доменов. Неправильная настройка relay_domains превращает сервер в открытый релей — спамеры используют его для рассылок, IP попадает в блэклисты. Проверка: telnet mail.example.com 25 и попытка отправить письмо на внешний адрес. DMARC отчёты помогают выявить несанкционированную отправку от имени домена.
Exim и ISPmanager
В ISPmanager Exim настраивается через GUI-панель: создание доменов, ящиков, алиасов, форвардов без редактирования конфигов вручную. Изменения применяются через regenerate — ISPmanager перегенерирует exim.conf и перезапускает сервис. Для ручной отладки: exim -d -bt user@domain.ru трассирует маршрут письма с подробным выводом.
Мониторинг Exim в Grafana через exim_exporter (Prometheus-экспортер): метрики queue_size, delivered_messages, rejected_messages. Алерт при queue_size > 100 сигнализирует о проблемах с доставкой.