Собрал способы по созданию и настройке безопасного почтового сервера на операционной системе Linux Debian 11 bullseye. Основное внимание уделил инструментам борьбы со спамом — таким как Greylisting, DNSBL и SpamAssassin.

Рекомендую следующие системные требования:

  1. Процессор: Двухъядерный процессор с тактовой частотой 2.0 ГГц или выше.

  2. Оперативная память (RAM): Минимум 2 ГБ RAM (рекомендуется 4 ГБ и более для большей производительности).

  3. Жесткий диск: 20 ГБ свободного пространства на диске (SSD рекомендуется для повышения производительности).

  4. Сетевой интерфейс: 100 Мбит/с или более для обеспечения стабильного соединения с интернетом.

  5. Доступ в интернет: Постоянный доступ в интернет для обновлений и управления сервером.

  6. Административные права: Полномочия администратора для установки и настройки программного обеспечения.

Статья также пригодится, если используете операционные системы Ubuntu 22.04 LTS (Jammy Jellyfish), Ubuntu 20.04 LTS (Focal Fossa) и Debian 10 (buster). 

В этой статье рассмотрим:

  • Как установить Exim и Dovecot

  • Создание почтового домена и электронной почты

  • Настройка DNS, rDNS записи и smtp_banner

  • Защита от спама

Для создания почтового сервера мы выбрали следующие программные компоненты:

  • Панель управления ispmanager lite.

  • Exim — почтовый сервер (MTA) из-за надежности  возможностей настройки.

  • Dovecot — IMAP/POP3 сервер. Поддерживает различные методы аутентификации и шифрования — это повышает уровень безопасности почтового сервера.

Установка Exim и Dovecot

В этой главе мы рассмотрим процесс установки Exim и Dovecot с использованием ispmanager, что значительно упрощает установку и настройку почтовых сервисов.

Установка Exim:

  1. Перейдите в «Настройки» → «Конфигурация ПО» → выберите «Почтовый сервер» (SMTP/POP3/IMAP) → нажмите «Изменить».

  2. Выберите тип установки Сервер SMTP (MTA) — Exim. При установке Exim в его директорию копируется и настраивается шаблон конфигурации из /usr/local/mgr5/etc/templates/exim.config.

Установка Dovecot:

  1. Перейдите в «Настройки» → «Конфигурация ПО» → выберите Dovecot (POP3/IMAP).

  2. Выберите дополнительные пакеты:

  • Greylisting

  • OpenDKIM

  • SpamAssassin

  • ClamAv

  • Sieve

  • RoundCube

  1. Нажмите «Применить изменения» и дождитесь окончания установки.

Установка почтового сервера
Установка почтового сервера

Задачи, которые решают дополнительные пакеты:

Greylisting — метод борьбы со спамом, который временно откладывает прием электронной почты от незнакомых отправителей. Это снижает объем спама, так как спамеры часто не делают повторных попыток отправки.

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

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

ClamAV— антивирус для сканирования входящей и исходящей почты на наличие вредоносного ПО. Он интегрируется с Exim и обеспечивает дополнительный уровень защиты.

Sieve — сортировщик почты, который позволяет создавать правила для обработки входящих писем. Он интегрируется с почтовыми серверами Exim и Dovecot. В ispmanager Sieve используется для автоматической фильтрации и сортировки писем в почтовых ящиках. Например, вы можете настроить правило, чтобы все письма с определенным ключевым словом автоматически помещались в папку «Важные». Это удобно для организации почты и снижает нагрузку на почтовый ящик.

RoundCube — веб-интерфейс для доступа к почте. С помощью RoundCube удобно работать с электронной почтой через браузер — включая функции управления письмами, адресной книгой и настройками почтового ящика.

Создание почтового домена и электронной почты

Рассказываю как создать почтовый домен и электронную почту в ispmanager 6.

Создание почтового домена:

  1. Перейдите к разделу «Почта» и выберите «Почтовые домены».

  2. Заполните поля формы — имя домена, настройки по умолчанию.

  3. Подробнее в документации — создание почтового домена

Создание почтового домена
Создание почтового домена

Создание почтового ящика:

  1. Перейдите в раздел «Почтовые ящики» и создайте новый ящик.

  2. Заполните поля формы — укажите владельца, пароль и другие параметры.

  3. Подробнее в документации — создание почтового ящика

Создание почтового ящика
Создание почтового ящика

Создание почтового домена.Настройка DNS, rDNS записи и smtp_banner

В этой главе мы рассмотрим, почему важны правильные DNS-записи и как настроить A-, MX-, SPF-, DKIM- и rDNS-записи для почтового сервера. А еще — как корректно настроить значения smtp_banner 

Корректные DNS-записи обеспечивают надежную доставку почты, минимизируют вероятность отклонений и предотвращают попадание писем в спам.

Управление DNS записями домена
Управление DNS записями домена

Настройка A-записи. A-запись (Address Record) — это тип DNS-записи, который сопоставляет доменное имя с IPv4-адресом. Она позволяет клиентам находить серверы по доменному имени и подключаться к ним по соответствующему IP-адресу.

Для домена unixweb.info вы хотите создать три A-записи: mail.unixweb.info, smtp.unixweb.info, imap.unixweb.info и pop.unixweb.info.  Мы не будем рассматривать другие A-записи, так как они не имеют отношения к теме нашей статьи.

Пример конфигурации A-записей. Предположим, что все три поддомена должны указывать на один и тот же IP-адрес: 1.2.3.4.

A-запись указывает на IP-адрес сервера, который будет обрабатывать почтовые сообщения. Обычно используется для настройки общего почтового сервиса:

mail.unixweb.info.  IN  A  1.2.3.4

A-запись указывает на IP-адрес SMTP-сервера, который используется для отправки почты. SMTP (Simple Mail Transfer Protocol) — протокол для передачи электронной почты:

smtp.unixweb.info.  IN  A  1.2.3.4

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

A-запись указывает на IP-адрес IMAP-сервера, который используется для получения почты. IMAP (Internet Message Access Protocol) позволяет клиентам управлять и синхронизировать электронные письма на почтовом сервере, оставляя их там, вместо загрузки на локальный компьютер:

imap.unixweb.info.  IN  A  1.2.3.4

A-запись указывает на IP-адрес POP-сервера, который используется для получения почты. POP3 (Post Office Protocol version 3) позволяет клиентам загружать электронные письма с почтового сервера на локальный компьютер:

pop.unixweb.info.  IN  A  1.2.3.4


Примечания:

  • IP-адрес. Замените 1.2.3.4 на фактический IP-адрес вашего сервера.

  • NS-записи. Убедитесь, что у вас есть соответствующие NS-записи для вашего домена.

  • TTL. Время жизни (TTL) можно настроить в зависимости от ваших требований к кэшированию DNS-записей.

Проверка и тестирование A-записи. После настройки A-записей, вы можете проверить правильность их конфигурации с помощью командной строки:

dig A mail.unixweb.info

Настройка MX-записи. MX-запись (Mail Exchange Record) — это тип DNS-записи, который указывает, какой почтовый сервер принимает электронные письма для вашего домена. Она указывает на имя сервера и его приоритет. 

Приоритет. Сервер с более низким числовым значением MX-записи будет иметь более высокий приоритет для доставки почты.

Для установки высокого приоритета необходимо указать число с меньшим значением — то есть сервер с приоритетом 10 будет использоваться раньше, чем сервер с приоритетом 20.

Пример конфигурации MX-записей. Предположим, что у вас есть один почтовый сервер, установленный на VDS.

  • Имя сервера: mail.unixweb.info

  • Приоритет: 10

unixweb.info.  IN  MX  10 mail.unixweb.info.

В нашем случае мы не настраиваем резервный почтовый сервер для основного почтового сервера — достаточно одной MX-записи.

Примечания:

  • FQDN. В MX-записях указывайте полное доменное имя сервера с точкой в конце (например, mail.unixweb.info.`).

  • A-записи. Убедитесь, что A-записи для почтового сервера mail.unixweb.info правильные и указывают на соответствующие IP-адреса.

  • TTL. Время жизни (TTL) можно настроить в зависимости от ваших требований к кэшированию DNS-записей.

Проверка MX-записи. После настройки MX-записей, вы можете проверить правильность их конфигурации с помощью командной строки:

MX-запись:

dig MX unixweb.info

Настройка SPF-записи. SPF (Sender Policy Framework) — это текстовая запись, которая размещается в TXT-записи DNS домена. Помогает предотвратить спам, разрешая только определенным почтовым серверам отправлять электронные письма от имени вашего домена. SPF-запись указывает список IP-адресов или доменов, которые разрешены для отправки почты от имени вашего домена.

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

  • Почтовый сервер с IP-адресом: 1.2.3.4

  • Сервер с именем: mail.unixweb.info

unixweb.info.   3600    IN  TXT     "v=spf1 ip4:1.2.3.4 a mx ~all" 

Примечания:

  • v=spf1 — версия SPF. В нашем примере используется версия SPF 1.

  • ip41.2.3.4 — разрешено отправлять почту с IP-адреса1.2.3.4.

  • a — разрешено отправлять почту с любого IP-адреса, связанного с A-записями (address records) домена unixweb.info.

  • mx — разрешено отправлять почту с любого IP-адреса, связанного с MX-записями (mail exchange records) домена unixweb.info.

  • -all  — самая строгая политика. Рекомендуется использовать ее, если вы уверены в настройках.

  • ~all  — мягкая политика. Рекомендуется для начальной настройки, чтобы отслеживать и отлаживать отправку почты.

  • +all — разрешает все серверы, не рекомендуется.

  • ?all  — нейтральная политика.

Проверка SPF-записи. После настройки MX-записей, вы можете проверить правильность их конфигурации с помощью командной строки:

SPF-запись:

dig TXT unixweb.info

Настройка DKIM-записи. DKIM (DomainKeys Identified Mail) — это метод аутентификации электронной почты, который позволяет организации принимать ответственность за отправляемые письма, используя криптографическую подпись. Получатели могут использовать DKIM, чтобы проверить, что письмо не изменилось с момента отправки.

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

  • Почтовый сервер с именем: mail.unixweb.info

DNS-запись:

dkim._domainkey   3600  IN TXT   ("v=DKIM1; h=sha256; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwLYjUqrNa5+…")


Примечания:

v=DKIM1. Указывает версию DKIM.

h=sha256. Указывает алгоритм хэширования (SHA-256).

k=rsa. Указывает алгоритм ключа (RSA).

s=email. Указывает службу (email).

p=MIIBIj... Публичный ключ в формате base64, который был сгенерирован OpenDKIM.

Проверка DKIM-записи. После настройки DKIM-записи, вы можете проверить правильность её конфигурации с помощью командной строки:

dig TXT dkim._domainkey.unixweb.info

Настройка rDNS-записи. Обратная DNS-запись (rDNS, reverse DNS) связывает IP-адрес с доменным именем. Она используется для проверки подлинности почтовых серверов и уменьшения количества спама.

Для настройки rDNS-записи вы должны обратиться к своему поставщику услуг интернет (ISP) или хостинг-провайдеру, так как они контролируют PTR-записи для вашего IP-адреса.

Пример настройки rDNS PTR-записи
Пример настройки rDNS PTR-записи


Корректная настройка DNS и rDNS записей обеспечит надежную доставку вашей электронной почты и повысит доверие к вашему домену, предотвращая попадание сообщений в спам.

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

  • Почтовый сервер с IP-адресом: 1.2.3.4

  • Доменное имя: mail.unixweb.info

rDNS-запись:

4.3.2.1.in-addr.arpa. 3600 IN PTR mail.unixweb.info.

Примечания:

in-addr.arpa Доменная зона, используется для обратного разрешения IP-адресов.

PTR Тип записи, указывающий на обратное разрешение IP-адреса.

3600 Время жизни (TTL) записи, измеряется в секундах.

1.2.3.4 IP-адрес, который будет разрешен обратно.

mail.unixweb.info Доменное имя, на которое указывает IP-адрес.

Проверка и тестирование rDNS-записи. После настройки rDNS-записи вы можете проверить правильность её конфигурации с помощью командной строки:

dig -x 1.2.3.4

Настройка smtp_banner. smtp_banner — это параметр в конфигурации Exim, который определяет сообщение, отображаемое при установлении SMTP-соединения. Это сообщение, которое клиенты видят, когда они подключаются к вашему SMTP-серверу.

Вот шаги для настройки smtp_banner с использованием системного имени хоста:

  1. Установка системного имени хоста. Сначала установите системное имя хоста на желаемое значение. В этом примере мы используем mail.unixweb.info:

sudo echo "mail.unixweb.info" > /etc/hostname && hostname mail.unixweb.info

Эта команда записывает mail.unixweb.info в файл /etc/hostname, который используется системой для определения имени хоста при загрузке. Затем она немедленно применяет это имя хоста к текущей сессии с помощью команды hostname.

  1. Настройка smtp_banner в Exim. Затем вы можете настроить smtp_banner в Exim, чтобы он отображал имя хоста и сообщение ESMTP SendMail. Для этого вставьте следующую команду:

sudo sed -i '18i\smtp_banner = "${primary_hostname} ESMTP SendMail"' /etc/exim4/exim4.conf.template

Эта команда вставляет строку smtp_banner = "${primary_hostname} ESMTP SendMail" в 18-ю строку файла /etc/exim4/exim4.conf.template.

  1. Настройка smtp_banner в шаблоне exim ispmanager. Для предотвращения затирания конфигурации Exim шаблоном ispmanager, следует добавить настройки smtp_banner. После этого рекомендуется выполнить следующую команду:

sudo sed -i '14i\smtp_banner = "${primary_hostname} ESMTP SendMail"' /usr/local/mgr5/etc/templates/exim.config
  1. Перезапуск Exim. После внесения изменений в конфигурацию Exim, перезапустите службу Exim, чтобы применить изменения:

sudo systemctl restart exim4
  1. Проверка smtp_banner. Чтобы проверить, что smtp_banner отображается правильно, установите соединение с SMTP-сервером на локальном хосте (127.0.0.1) через порт 25:

nc 127.0.0.1 25

Эта команда использует утилиту nc (Netcat) для установления соединения с SMTP-сервером. Вы должны увидеть баннер SMTP, который отображается при установлении соединения.

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

Защита от спама

В этом разделе мы рассмотрим, как настроить защиту от спама в ispmanager. 

Обсудим:

  • настройку фильтров для блокировки нежелательных писем, 

  • использование инструментов для анализа и маркировки спама, 

  • методы предотвращения его распространения через ваш почтовый сервер.

Перейти в раздел «Почта» и настроить защиту от почтового спама можно нажав на иконку с тремя точками в правом верхнем углу, как показано на рисунке ниже.

Защита от спама: настройка Email
Защита от спама: настройка Email

 

Для настройки защиты почтового сервера в ispmanager используются:

Белый список (Whitelist) — позволяет добавить разрешенных отправителей. Сервер принимает письма только от них.

Добавление в белый список:

  • Перейдите в раздел «Почта» → Нажмите на иконку с тремя точками в правом верхнем углу → «Защита от спама» → «Белый список».

  • Укажите IP-адрес, адрес электронной почты или доменное имя отправителя.

  • Нажмите «Создать».

Белый список хранится в /etc/exim4/whitelist.

Черный список (Blacklist) — запрещает отправителей, и их письма всегда отклоняются.

Добавление в чёрный список:

  • Перейдите в раздел «Почта» → Нажмите на иконку с тремя точками в правом верхнем углу → «Защита от спама» → «Черный список».

  • Укажите IP-адрес, адрес электронной почты или доменное имя отправителя.

  • Нажмите «Создать».

Черный список хранится в /etc/exim4/blacklist.

DNSBL (DNS Blacklist) — это списки доменов и IP-адресов, используемые для борьбы со спамом. Exim проверяет наличие почтового домена отправителя в DNSBL-списках.

Добавление DNSBL-списка:

  • Перейдите Перейдите в раздел «Почта» → Нажмите на иконку с тремя точками в правом верхнем углу → «Защита от спама» → «Фильтрация DNSBL».

  • Укажите адрес черного списка.

  • Нажмите «Создать».

Список DNSBL хранится в /etc/exim4/dnsbllist.

Greylisting — технология, задерживающая принятие писем с помощью временной блокировки. Если письмо приходит с неизвестного сервера, ispmanager просит отправителя повторить отправку через некоторое время.

Добавление отправителя в список разрешённых:

  • Перейдите в «Защита от спама» → «Белый список (Greylisting)».

  • Укажите IP-адрес, адрес электронной почты или доменное имя отправителя.

Белый список для Greylisting хранится в /etc/postgrey/whitelist_clients — для Debian и Ubuntu.

SpamAssassin — использует эвристику для определения спама. Оценивает письма на основе различных факторов, таких как заголовки, текст и ссылки.

Мы выбрали SpamAssassin во время установки почтового сервера, когда проставляли галочки при выборе дополнительных пакетов.

В следующей статье я расскажу о тестировании настроек почтового сервера в сервисе MxToolbox, настройке Firewall iptables и Fail2ban, создании профилей AppArmor, а также об обеспечении безопасности RoundCube.

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

  • iptables — инструмент для управления сетевыми соединениями и фильтрации пакетов, обеспечивает защиту от несанкционированного доступа.

  • Fail2ban — сервис, который автоматически блокирует IP-адреса, совершающие подозрительные или вредоносные действия.

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


  1. infectedtrauma
    01.07.2024 11:43

    Шел 2024 год, а почта как настраивалась с болью, так и настраивается. Прям дохрена ручных операций. Я принципиально исключил работу с почтой из своих задач, и в проекты мы больше не тащим, а передаем ответственность за это клиенту. Пусть сами развлекаются


    1. unixweb Автор
      01.07.2024 11:43
      +1

      Как правило, сложность заключается в поиске IP-адресов для почтовых серверов, которые отсутствуют в спам базах.


      1. itshnick88
        01.07.2024 11:43

        Дак можно вытащить же их оттуда, я уже так делал)


        1. unixweb Автор
          01.07.2024 11:43

          Можно но я такие задачи не беру.


  1. ALexhha
    01.07.2024 11:43
    +1

    По отдельности Whitelist/Blacklist/Greylisting очень мало эффективны. И лишь при комплексном использовании будут давать хоть какой то эффект. Но в статье я этого не вижу


    1. unixweb Автор
      01.07.2024 11:43

      В статье наглядно показано то что установлены все компоненты.


      1. ALexhha
        01.07.2024 11:43
        +1

        В статье наглядно показано то что установлены все компоненты.

        но нет какой либо комплексной проверки, поэтому эффективность таких проверок чуть больше чем никакая.

        В моей вселенной комплексная проверка выглядит примерно так - смотрим на подключение, проверяем в DNSBL, если адрес там, то награждаем грейлистингом и накидываем балы в SA. Если клиент все равно упорный и прошел грейлистинг, то можем проверить MX - A, A - PTR и вот это вот все, если что то не соответствует - накидываем балы в SA. Затем проверяем всякие SPF/DKIM, опять таки если что то не так - накидываем балы.

        Ну и напоследок отправляем в SA, который по сумме всех баллов принимает окончательное решение. В вашей системе вы сразу решаете на основании одного критерия, а это очень плохо.

        А exim умеет в такое прямо из коробки, не нужны пляски с бубном как в том же postfix. Поэтому использовать exim в такой конфигурации не очень рационально, учитывая его не очень хорошую историю уязвимостей. Т.е. если и использовать exim, то как минимум "не в стандартной конфигурации", имхо. Это как купить спортивный мотоцикл и тошнить на нем 60 км/ч по городу


        1. unixweb Автор
          01.07.2024 11:43

          Это не финальная статья, к сожалению компания ISPmanager не опубликовала сразу вторую часть статьи, там все это есть о чем вы пишите и даже более того..


          1. ALexhha
            01.07.2024 11:43

            Это не финальная статья, к сожалению компания ISPmanager не опубликовала сразу вторую часть статьи, там все это есть о чем вы пишите и даже более того..

            ...

            В следующей статье расскажу о тестировании настроек почтового сервера настройке Firewall iptables, Fail2ban, создании профилей AppArmor и обеспечении безопасности RoundCube.

            ну как то оно не вяжется, iptables/fail2ban, это совсем про другое, имхо

            ISPmanager не поддерживает Postfix.

            как то не обратил внимание, что это корпоративный блог


            1. unixweb Автор
              01.07.2024 11:43

              Во второй части статьи мы проведем проверку в сервисе MxToolbox, о котором уже упоминалось ранее. Также будут представлены профили AppArmor для усиления безопасности сервера. Пожалуйста, ожидайте выпуска второй части статьи.


        1. unixweb Автор
          01.07.2024 11:43

          ISPmanager не поддерживает Postfix. Нужно понимать что нельзя вместить все в одну статью когда есть лимит по объему текста, пожалуйста, будьте добры относиться с пониманием.


  1. MesDes
    01.07.2024 11:43
    +1

    Автор не пишет минимальные сис. требования, чтобы все это барахло крутилось без напряга. Только сама ispmanager берет под себя 1 гиг памяти. А если нужна только почта, то : Дебиан, Nginx + Postfix + Dovecot + Cube, достаточно средней vps с 1 гиг. памяти. И да настройки ручками очень много.


    1. unixweb Автор
      01.07.2024 11:43

      Благодарю, поправлю статью.


  1. iqhostru
    01.07.2024 11:43

    Важный момент, чтобы спам отправлялся в специальную папочку spam в round cube, а также был прикручен календарик и тп для организации минимального функционала корп почты.


    1. unixweb Автор
      01.07.2024 11:43

      Пдобное решение выходит за рамки настройки стандартного почтового сервера. Как понимаю это уже доработка по требованию заказчика.