Pull to refresh
135.93
Nixys
DevOps, DevSecOps, MLOps — IT Solutions Integrator

Почтовый сервер с нуля. Часть первая

Level of difficultyMedium
Reading time17 min
Views31K

Приветствую всех читателей! Перед тем, как мы начнём, советую подписаться на наш блог Хабр, Telegram-канал DevOps FM, интернет-издание VC и YouTube — мы всегда рады новым друзьям :)

Очень часто на этапе стажировки новых сотрудников мы в нашей компании сталкиваемся с типичными простыми ошибками, непониманием работы DNS и почты. При этом обучение новых сотрудников по этой теме — достаточно длительный и сложный процесс, так как сами вопросы требуют построения сложных логических цепочек в голове у начинающего инженера. В один момент мы составили свою вики и схемы для обучения и решили поделиться этим опытом на хабре в виде серии статей, чтобы людям, которые решили связать свою жизнь с IT вообще и администрированием в частности, стало проще. Материалы этой серии предназначены для начинающих администраторов (если вы в сфере более года, работали с DNS и почтой, можете поделиться своим опытом).

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop. Мы используем exim4 из-за широких возможных кастомизаций.

Введение в мир почтовых серверов: Сначала мы пообщаемся о том, как вообще устроена работа почты в интернете. Разберём ключевые моменты и принципы, позволяющие электронным письмам перемещаться по просторам сети.

Основные принципы отправки и получения почты в интернете

Эволюция электронной почты

Электронная почта, или e-mail, стала революцией в обмене сообщениями, упростив и ускорив коммуникацию между людьми. Но каким образом происходит отправка и получение электронных писем в пространстве интернета? Для этого применяется ряд ключевых принципов и технологий, начиная с протокола SMTP.

Протокол SMTP (Simple Mail Transfer Protocol)

SMTP — это протокол, который отвечает за отправку электронных писем. Когда вы отправляете письмо, ваш почтовый клиент (например, Outlook или Gmail) использует протокол SMTP для передачи этого письма на сервер отправителя. Сервер отправки в свою очередь решает, куда направить письмо, опираясь на информацию в адресе получателя.

Порты и маршрутизация

SMTP стандартно использует порт 25 для передачи данных, но для защищенных подключений также может использоваться порт 587. Когда сервер отправителя отправляет письмо на сервер получателя, он обращается к протоколу DNS для поиска MX (Mail Exchange) записей, указывающих, куда следует направить письмо. Этот процесс является ключевым элементом в доставке писем от отправителя к получателю.

Развитие технологий

С течением времени эти принципы претерпели существенные изменения и усовершенствования. Например, для повышения безопасности широко внедряются протоколы, такие как SSL/TLS, обеспечивающие защищённое соединение между серверами и клиентами. Это существенно снижает риск перехвата сообщений злоумышленниками.

Появление POP3 и IMAP

Для получения писем клиенты используют протоколы POP3 (Post Office Protocol 3) и IMAP (Internet Message Access Protocol). POP3 загружает письма на устройство пользователя, удаляя их с сервера, в то время как IMAP оставляет копии писем на сервере, синхронизируя изменения между устройствами.

Современные вызовы и тенденции

С ростом объёма электронной почты возросли и вызовы. Проблемы с памятью, спамом и безопасностью требуют постоянных улучшений в технологиях электронной почты. Развитие протоколов, борьба со спамом и внедрение технологий искусственного интеллекта стали неотъемлемой частью современных почтовых серверов.

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


Разбор основных компонентов почтового сервера: Exim, Dovecot, Postfixadmin и RainLoop

В мире электронной почты существует множество терминов и инструментов, которые становятся ключевыми элементами почтового сервера. Давайте взглянем на несколько из них — Exim, Dovecot, Postfixadmin и RainLoop, — и разберёмся в сути аббревиатур MTA, MUA и MDA.

MTA, MUA, MDA: Расшифровка основных аббревиатур

  1. MTA (Mail Transfer Agent) - Агент передачи почты: MTA отвечает за отправку и маршрутизацию почтовых сообщений между различными почтовыми серверами. Он обрабатывает задачи по отправке электронной почты от отправителя к получателю, используя протоколы, такие как SMTP (Simple Mail Transfer Protocol). Примерами MTA являются Exim и Postfix.

  2. MUA (Mail User Agent) - Почтовый клиент: MUA представляет собой программу, используемую конечным пользователем для чтения, отправки и управления своей электронной почтой. Это может быть веб-интерфейс, как в случае RainLoop, или приложение, например, Outlook. MUA взаимодействует с пользователем и передает сообщения MTA для отправки.

  3. MDA (Mail Delivery Agent) - Агент доставки почты: MDA отвечает за доставку почтовых сообщений в почтовый ящик конечного пользователя. Он может выполнять различные задачи, такие как фильтрация спама, сортировка по папкам и сохранение сообщений в почтовом ящике. Dovecot — это пример MDA.

Компоненты почтового сервера:

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

  2. Dovecot: представляет MDA и обеспечивает доступ пользователя к электронной почте. Он обрабатывает доставку писем в почтовые ящики, а также предоставляет протоколы, такие как IMAP и POP3 для доступа к письмам.

  3. Postfixadmin: это инструмент для управления почтовым сервером. Он предоставляет веб-интерфейс для администрирования, позволяя настраивать важные параметры почтового сервера.

  4. RainLoop: это MUA, предоставляющий веб-интерфейс для взаимодействия конечных пользователей с их почтовыми ящиками. Он позволяет читать, отправлять и организовывать электронную почту через удобный веб-интерфейс.


Процесс отправки почты в упрощенной схеме:

  1. Формирование письма (MUA): Пользовательское приложение для работы с электронной почтой (MUA) создаёт письмо, определяя его содержание, адресата и другие необходимые детали.

  2. Передача письма MTA отправителя (Relay): MUA передаёт письмо на агент передачи почты отправителя (MTA). В случае почтовых программ, это часто осуществляется посредством протокола SMTP Submission, где требуется аутентификация. В веб-интерфейсе MUA может напрямую отправлять письмо без дополнительной аутентификации.

  3. Определение MTA получателя (Mail Exchanger): MTA отправителя (Relay) определяет MTA получателя (Mail Exchanger), используя записи DNS, такие как MX (Mail Exchange) или A (Address) для нахождения IP-адреса сервера получателя.

  4. Передача письма MTA получателя (Mail Exchanger): MTA отправителя (Relay) передаёт письмо MTA получателя (Mail Exchanger) посредством протокола SMTP, обеспечивая безопасную и надёжную передачу данных.

  5. Локальная доставка или перенаправление (MTA получателя): MTA получателя (Mail Exchanger) принимает письмо и решает, следует ли передать его MDA для локальной доставки в почтовый ящик или перенаправить другому MTA в случае, например, установленного перенаправления.

  6. Доставка в почтовый ящик (MDA): MDA (Mail Delivery Agent) берёт на себя ответственность за помещение письма в почтовый ящик получателя, выполняя дополнительные задачи, такие как фильтрация спама и сортировка писем.

  7. Получение письма (MUA получателя): Пользовательское приложение получателя (MUA) получает письмо из почтового ящика, используя протоколы POP3, IMAP4 или веб-интерфейс, обеспечивая конечному пользователю удобный доступ и управление своей электронной почтой.

Схема выглядит следующим образом:


Настройка EXIM4 и обход спам-фильтров

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

Exim4 представляет собой мощный и гибкий почтовый сервер, который широко используется для передачи электронных писем в сетях TCP/IP. Разработанный в духе открытого программного обеспечения, Exim4 стал популярным выбором благодаря своей простоте настройки, надежности и высокой производительности. Он предоставляет разносторонний набор инструментов для управления электронной почтой, обеспечивая эффективную обработку сообщений.

Эта статья рассмотрит ключевые аспекты Exim4, чтобы предоставить читателям глубокое понимание его роли и важности в современных информационных технологиях.


Установка Exim4 на Debian/Ubuntu:

sudo apt-get update
sudo apt-get install exim4

Установка Exim4 на CentOS:

sudo yum install exim

Таким образом, мы подготовим нашу систему к настройке Exim4 и последующей отправке электронных сообщений, уделив внимание успешному прохождению SPAM-фильтров. Следующие шаги позволят нам глубже войти в конфигурацию Exim4 и обеспечить его оптимальную работу в вашей среде.


Конфигурация почтового сервера Exim4

Давайте рассмотрим основные параметры файла /etc/exim4/update-exim4.conf.conf в ОС Debian/Ubuntu с подробным объяснением каждой переменной. На ОС Centos, все параметры находятся в рамках одного файла — /etc/exim/exim.conf. Также данные настройки можно установить через команду sudo dpkg-reconfigure exim4-config:

dc_eximconfig_configtype='internet'
dc_eximconfig_configtype: устанавливает тип конфигурации Exim4. В данном случае 'internet' подразумевает, что сервер будет использоваться для отправки и приёма почты через интернет.

dc_other_hostnames='DOMAIN.RU'
dc_other_hostnames: здесь указываются дополнительные доменные имена, которые может использовать Exim4.

dc_local_interfaces='127.0.0.1 : EXTERNAL_IP'
dc_local_interfaces: определяет интерфейсы, через которые Exim4 прослушивает соединения. 127.0.0.1 обозначает локальный интерфейс, а EXTERNAL_IP - внешний IP-адрес сервера.

dc_readhost=''
dc_readhost: определяет имя хоста, который будет использоваться в сообщениях.

dc_relay_domains=''
dc_relay_domains: если ваш сервер является ретранслятором (рelay), здесь указываются домены, которые он будет ретранслировать.

dc_minimaldns='false'
dc_minimaldns: определяет, использовать ли минимальную конфигурацию DNS. Установка в 'false' подразумевает более широкое использование DNS.

dc_relay_nets='127.0.0.1 : RELAY_FROM_HOST_IPs'
dc_relay_nets: здесь указываются IP-адреса серверов, с которых разрешено ретранслирование.

dc_smarthost=''
dc_smarthost: если у вас есть внешний почтовый сервер (smarthost), вы можете указать его здесь.

CFILEMODE='644'
CFILEMODE: определяет режим доступа к конфигурационным файлам.

dc_use_split_config='false'
dc_use_split_config: определяет, используется ли разделённая конфигурация. Установка в 'false' означает использование одного файла конфигурации.

dc_hide_mailname=''
dc_hide_mailname: определяет, скрывать ли локальное имя почтового сервера.

dc_mailname_in_oh='true'
dc_mailname_in_oh: указывает, включать ли локальное имя хоста в заголовки отправленных сообщений.

dc_localdelivery='mail_spool'
dc_localdelivery: определяет, как будет доставляться локальная почта. 'mail_spool' указывает на использование почтового ящика.

Где:

DOMAIN.RU — доменное имя сервера, прописанное в обратной зоне.
EXTERNAL_IP — внешний IP данного сервера
RELAY_FROM_HOST_IPs — IP-адреса satellit-серверов, если они есть.


При настройке Exim4 в файле /etc/exim4/exim4.conf.template, две ключевые переменные — это primary_hostname и qualify_domain, которые обычно настраиваются в первую очередь.

primary_hostname: этот параметр определяет основное (первичное) имя хоста, используемое Exim4 при формировании различных частей сообщений. Это включает в себя создание имён получателя, имён отправителя и других компонентов сообщений.

qualify_domain: этот параметр определяет домен, который будет добавлен к неквалифицированным именам пользователей. Когда Exim4 обрабатывает письмо, не содержащее полного адреса электронной почты (например, "user" вместо "user@example.com"), он добавляет домен, указанный в qualify_domain.


DNS-записи

Для корректной отправки почты нам потребуется создать записи в DNS-зоне домена, а именно DKIM (публичный ключ), SPF, DMARC. Также потребуется попросить саппорт дата-центра указать PTR-запись в обратной зоне, или сделать это самостоятельно, если функционал вашего ДЦ предусматривает такую функцию.

Прежде чем перейти к созданию DNS-записей для работы с почтой (MX, SPF, DKIM, DMARC, PTR), давайте рассмотрим каждую из них и поясним, как они влияют на работу почтового сервера.

MX (Mail Exchange) — запись MX указывает, какие серверы обрабатывают почту для вашего домена. Это необходимо для корректной маршрутизации почтовых сообщений.

SPF (Sender Policy Framework) — SPF помогает предотвратить поддельные отправители, указывая, какие серверы имеют право отправлять письма от вашего домена.

DKIM (DomainKeys Identified Mail) — DKIM используется для проверки подлинности отправителя посредством электронной подписи. Каждый сервер подписывает и отправляет свое сообщение с использованием ключа DKIM, а затем получатель проверяет подпись.

DMARC (Domain-based Message Authentication, Reporting, and Conformance) — DMARC объединяет SPF и DKIM, а также предоставляет механизм для отчетности о том, как обрабатываются письма, которые не прошли проверку.

PTR (Pointer Record) — PTR-запись используется для создания обратной связи между IP-адресом и доменным именем, что важно для обеспечения доверия в процессе отправки почты.


Для выпуска MX-записи необходимо внести в DNS-зону следующую запись:

DOMAIN.RU. IN MX priority mail_server_domain

Аргументы:

priority: числовое значение, определяющее приоритет сервера. Низкое значение — высший приоритет.
mail_server_domain: доменное имя сервера, обрабатывающего почту.

Проверка записи осуществляется следующим образом:

dig MX DOMAIN_NAME

Для выпуска SPF записи необходимо внести в DNS-зону следующую запись:

DOMAIN.RU. IN TXT "v=spf1 arguments"

Аргументы:

v=spf1: Обязательная часть, указывающая на версию SPF.

Различные аргументы:
+a: Разрешить отправку от всех A-записей (IPv4).
+mx: Разрешить отправку от всех MX-записей (почтовых серверов).
ip4:EXTERNAL_IP: Разрешить отправку от указанного IPv4-адреса.
~all: Мягкий отказ (принимать, но помечать как подозрительное).

Проверка записи осуществляется следующим образом:

dig TXT DOMAIN_NAME

Для выпуска DMARC-записи необходимо внести в DNS-зону следующую запись:

_dmarc.DOMAIN.RU. IN TXT "v=DMARC1; p=policy; pct=percentage; rua=mailto:address; ruf=mailto:address; sp=action; aspf=alignment; fo=flag"

Аргументы:

v=DMARC1: Обязательная часть, указывающая на версию DMARC.
p=policy: Уровень политики DMARC (например, p=reject для отказа).
pct=percentage: Процент сообщений, на которые применяется политика (например, pct=10 для 10%).
rua=mailto:address: Адрес для отправки отчётов (aggregated reports).
ruf=mailto:address: Адрес для отправки детальных отчётов (forensic reports).
sp=action: Уровень политики для поддоменов.
aspf=alignment: Сравнение SPF для выравнивания (r - relaxed, s - strict).
fo=flag: Флаги обработки отчётов (0 - отключено, 1 - включено).

Проверка записи осуществляется следующим образом:

dig +short -ttxt _dmarc.DOMAIN.RU

Для выпуска ключа DKIM нам потребуется установить пакет opendkim-tools, пакет доступен в стандартных репозиториях, для его установки дополнительных действий не требуется.

apt update
apt install opendkim-tools

Далее создадим директорию в exim для хранения всех наших ключей DKIM:

mkdir /etc/exim4/dkim
cd /etc/exim/dkim

Также создаем файл описания расположения DKIM ключей:

touch /etc/exim4/dkim_domain

где прописываем расположение ключей для различных доменов:

DOMAIN.RU.: key=/etc/exim4/dkim/scfh.ru.key selector=DKIM_SELECTOR

Далее генерируем публичный и приватный ключ DKIM:

opendkim-genkey -D /etc/exim4/dkim/ -d DOMAIN.RU -s DKIM_SELECTOR -b 1024

где DKIM_SELECTOR является указателем, для поиска публичной части ключа (как правило, это mail).

В текущей директории будет создано два файла mail.private (приватный ключ) и mail.txt (публичный ключ, который потребуется прописать в DNS зоне домена. Для удобства и дальнейшего применения в конфигурации exim4, переименуем оба файла:

mv /etc/exim4/dkim/mail.private /etc/exim4/dkim/DOMAIN.RU.key
mv /etc/exim4/dkim/mail.txt /etc/exim4/dkim/DOMAIN.RU.txt

В целях безопасности меняем права на части ключа и директорию хранения:

chown -R root:Debian-exim /etc/exim4/dkim
chmod 750 /etc/exim4/dkim
chmod 640 /etc/exim4/dkim/DOMAIN.RU.key
chmod 640 /etc/exim4/dkim/DOMAIN.RU.txt

Теперь, когда у нас созданы ключи, необходимо указать конфигурации exim4 их расположение, для этого добавляем в начало файла /etc/exim4/exim4.conf.template строки:

DKIM_DOMAIN = ${lookup{$sender_address_domain}lsearch*@{/etc/exim4/dkim_domain}{$sender_address_domain}{}}
DKIM_PRIVATE_KEY = ${extract{key}{${lookup{$sender_address_domain}lsearch*@{/etc/exim4/dkim_domain}}}{$value}{}}
DKIM_SELECTOR = ${extract{selector}{${lookup{$sender_address_domain}lsearch*@{/etc/exim4/dkim_domain}}}{$value}{}}

Также добавляем в блок remote_smtp в файле /etc/exim4/exim4.conf.template следующие записи:

remote_smtp:
driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = $DKIM_SELECTOR
dkim_private_key = DKIM_PRIVATE_KEY

где в качестве $DKIM_SELECTOR необходимо подставить selector, заданный при создании ключа. Параметры DKIM_DOMAIN и DKIM_PRIVATE_KEY здесь являются переменными, и имеют точно такой же вид в файле как описаны в статье.

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

После нам потребуется добавить TXT запись в DNS-зону домена, содержимое записи указано в файле DOMAIN.RU.txt. Пример записи:

DKIM_SELECTOR._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWtRUr0hse/k2csH1KtA3YrM2hrSiDxyhRDEV53LvDxjcN8rH5913j0N/5P48kotw0tVKlyaW6x9sJJPs7fjCsuoSQNQUpwjJrPKjH/r7fTBESFMOx6SHMpIC57GadCCmQfGEiI0IHPG0zqakDNUKtLaWBc71BLdRAApsbZ97ooQIDAQAB" ) ; ----- DKIM key DKIM_SELECTOR for DOMAIN.RU

Обновление DNS-записей происходит в течение 72 часов, однако для большинства DNS-серверов запись обычно появляется в течении часа. В качестве теста мы можем проверить наличие записи у DNS-серверов Google:

dig @8.8.8.8 +short -ttxt DKIM_SELECTOR._domainkey.DOMAIN.RU


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

DOMAIN.RU. IN TXT "EXTERNAL IP.in-addr.arpa."

Где DOMAIN.RU это имя домена указанное в primary_hostname текущего сервера exim4, а EXTERNAL IP это внешний IP адрес нашего сервера.

Данную запись можно указать в панели управления ДЦ или, если такая функция не предусматривается, попросить указать запись через саппорт дата центра. Для проверки PTR-записи используется следующая команда Dig:

dig -x DOMAIN_NAME


Чтобы было нагляднее как именно необходимо добавлять DNS-записи, предоставим вам типовую инфраструктуру расположенную в ДЦ TimeWeb.

Домен для примера будет nixysmail.ru
Ip-адрес - 1.2.3.4


Основные понятия Exim4

Маршрутизация сообщений:

Маршрутизация сообщений в Exim4 определяет путь, по которому почтовое сообщение будет передано от отправителя к получателю. Exim4 использует гибкую и настраиваемую систему маршрутизации, которая может быть адаптирована под различные потребности.

Router (Маршрутизатор): Exim4 использует роутеры для определения, куда отправить сообщение. Роутеры могут быть настроены для обработки различных типов сообщений и условий маршрутизации.

Transport (Транспорт): после определения маршрута, транспорт передает сообщение по указанному пути. Это может включать локальную доставку в почтовый ящик, отправку через SMTP или другие методы.

Настройка Router для маршрутизации почты

begin routers // Начало раздела маршрутизаторов
local_user: // Маршрутизатор для локальных пользователей
driver = accept // Тип маршрутизатора: accept - принимает письма
domains = +local_domains // Домены, для которых маршрутизатор принимает письма
check_local_user // Проверка локальности пользователя перед отправкой письма
transport = local_delivery // Транспорт для доставки локальных сообщений

smtp_transport: // Маршрутизатор для отправки сообщений через SMTP
driver = smtp // Использует протокол SMTP для отправки сообщений
hosts_try_auth = * // Попытка аутентификации на удаленных хостах

remote_smtp: // Маршрутизатор для отправки сообщений на удаленные SMTP-серверы
driver = smtp // Использует протокол SMTP для отправки сообщений
dkim_domain = DKIM_DOMAIN // Параметры DKIM: домен отправителя
dkim_selector = $DKIM_SELECTOR // Селектор для DKIM
dkim_private_key = DKIM_PRIVATE_KEY // Приватный ключ для DKIM

Настройка Transport для транспортировки почты

begin transports // Начало раздела транспортов

local_delivery: // Транспорт для локальной доставки
driver = appendfile // Тип транспорта: appendfile - добавление в файл
file = /var/mail/$local_part // Путь к файлу для локальной доставки
delivery_date_add // Добавление даты доставки
envelope_to_add // Добавление оболочки (envelope)
return_path_add // Добавление обратного пути
group = Debian-exim // Группа для доступа к файлу
mode = 660 // Режим доступа к файлу (права доступа)
use_crlf // Использовать CRLF (возврат каретки и перевод строки)

Дополнительные конфигурации:

return_size_limit = 100K // Ограничение размера сообщения для возврата
directory = /var/mail // Директория для хранения почты
create_directory // Создание директории, если её нет
user = Debian-exim // Пользователь для доставки почты
mode_fail_narrower = false // Разрешить уменьшение прав доступа, если установлено
no_mode_fail_narrower // Запрет уменьшения прав доступа

remote_smtp: // Транспорт для отправки на удаленные SMTP-серверы
driver = smtp // Использует протокол SMTP для отправки сообщений
hosts_try_auth = * // Попытка аутентификации на удаленных хостах

Дополнительные конфигурации:

hosts_avoid_tls = * // Исключение использования TLS для указанных хостов
tls_verify_certificates = /etc/ssl/certs/ca-certificates.crt // Путь к файлу сертификатов для проверки TLS


Понимание почтовых доменов и пользователей:

В контексте Exim4, почтовый домен (mail domain) — это домен, для которого Exim4 обрабатывает почтовые сообщения. Пользователи внутри почтового домена связаны с конкретными почтовыми ящиками.

Локальные пользователи: Exim4 управляет локальными пользователями, обрабатывая внутреннюю почту, направляемую к локальным почтовым ящикам на сервере.

Внешние домены: Exim4 маршрутизирует почту для внешних доменов, используя DNS для определения маршрута. Это может включать в себя отправку сообщения напрямую на удаленный почтовый сервер или использование промежуточных ретрансляторов.


Очередь сообщений и её управление:

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

Основные концепции:

  1. Queue Runners: это процессы, отвечающие за выполнение очереди. Они регулярно проверяют, есть ли сообщения для отправки, и обрабатывают их в соответствии с настройками.

  2. Состояния сообщений: сообщения в очереди могут иметь различные состояния, такие как "ждёт отправки", "в процессе отправки", "отправлено успешно" или "произошла ошибка". Эти состояния помогают отслеживать процесс доставки.

  3. Опции управления очередью: администратор может настраивать параметры очереди, такие как интервалы повторной попытки отправки, время хранения сообщений в очереди и др.

Настройка параметров очереди

queue_smtp_domains = ! +local_domains // Домены для очереди SMTP, исключая локальные
queue_run_max = 5 // Максимальное количество процессов очереди
queue_only_load = 4 // Минимальная загрузка системы для активации Exim4
queue_only_load_latch = 2 // Значение, при котором Exim4 перестает активно обрабатывать очередь

Эти конфигурации представляют собой основные настройки для маршрутизации, транспортировки и управления очередью сообщений в Exim4. Адаптируйте их в соответствии с требованиями вашей инфраструктуры.


Безопасность и аутентификация в Exim4

Обеспечение безопасности почтового обмена с использованием TLS/SSL позволяет защитить передаваемую информацию от несанкционированного доступа и обеспечить конфиденциальность пересылаемых данных.

Шаги по включению TLS/SSL в Exim4:

Установка необходимых пакетов:
apt-get install openssl
apt-get install libsasl2-modules

Генерация SSL-сертификата:
openssl req -new -x509 -nodes -days 3650 -out /etc/exim4/exim.crt -keyout /etc/exim4/exim.key

В файле /etc/exim4/exim4.conf.template добавьте следующие строки:
MAIN_TLS_ENABLE = true
MAIN_TLS_CERTIFICATE = /etc/exim4/exim.crt
MAIN_TLS_PRIVATEKEY = /etc/exim4/exim.key

И пересоздайте конфигурацию Exim4:
update-exim4.conf


Шаги по включению аутентификации SMTP в Exim4:

Настройка аутентификации в Exim4:

/etc/exim4/exim4.conf.template:

plain_saslauthd_server: // Настройка SASL-аутентификации для механизма PLAIN
driver = plaintext // Тип механизма: plaintext - простой текст
public_name = PLAIN // Публичное имя механизма: PLAIN
server_condition = ${if saslauthd{{$2}{$3}{auth}}{1}{0}} // Условие сервера для PLAIN
server_set_id = $2 // Установка идентификатора пользователя
server_prompts = : // Серверные подсказки

login_saslauthd_server: // Настройка SASL-аутентификации для механизма LOGIN
driver = plaintext // Тип механизма: plaintext - простой текст
public_name = LOGIN // Публичное имя механизма: LOGIN
server_prompts = "Username:: : Password::" // Серверные подсказки для LOGIN
server_condition = ${if saslauthd{{$1}{$2}{auth}}{1}{0}} // Условие сервера для LOGIN
server_set_id = $1 // Установка идентификатора пользователя


Использование ACL для управления доступом к Exim4

ACL (Access Control Lists) предоставляют механизм для определения, какие действия могут выполнять различные клиенты и какие ограничения на них налагаются.

Пример использования ACL в Exim4:

В файле /etc/exim4/exim4.conf.template добавьте ACL-правила:

acl_smtp_rcpt = acl_check_rcpt

acl_check_rcpt:
accept hosts = :
deny message = Restricted domain
domains = example.com

Это правило разрешает принимать сообщения от всех хостов, за исключением тех, которые отправляют письма для домена example.com.


Заключение

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

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

  • С возрастанием объёмов электронной почты и развитием проекта, Exim4 остаётся масштабируемым решением. Способность эффективно обрабатывать большие объёмы почтового трафика делает его привлекательным выбором для крупных инфраструктур.

  • В условиях постоянной угрозы безопасности важно, чтобы почтовый сервер был защищён от атак. Exim4 активно обновляется и поддерживается, что обеспечивает быстрое реагирование на выявленные уязвимости и обеспечивает надёжность в эксплуатации.

  • С появлением новых технологий и инструментов в DevOps, Exim4 сохраняет свою актуальность. Интеграция с системами мониторинга, средствами аутентификации и сценариями автоматизации продолжает совершенствоваться.

  • Exim4 обладает активным сообществом пользователей и разработчиков, готовых предоставить помощь и обменяться опытом. Это содействует стабильности и развитию проекта в долгосрочной перспективе.

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


В последующих частях мы разберем

  1. Полноценный почтовый сервер с Exim4+Dovecot+PostfixAdmin+RainLoop:  рассмотрим каждый компонент, чтобы обеспечить стабильность, безопасность и удобство работы с электронной почтой.

upd: ссылка на вторую часть

  1. Готовое решение в Docker. В данном случае будут описаны контейнеры docker в docker-compose со связкой Exim4+Dovecot+PostfixAdmin+RainLoop. Для обеспечения работы почты вам потребуется только заполнить переменные, создать DNS-записи и запустить контейнеры, что позволит вам легко адаптировать и внедрить нашу настройку на вашем собственном сервере, сэкономив время и упростив процесс.


Спасибо большое, что уделили время нашей статье. To be continued...

Tags:
Hubs:
Total votes 20: ↑19 and ↓1+18
Comments27

Articles

Information

Website
nixys.io
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Vlada Grishkina-Makareva