Собрал способы по созданию и настройке безопасного почтового сервера на операционной системе Linux Debian 11 bullseye. Основное внимание уделил инструментам борьбы со спамом — таким как Greylisting, DNSBL и SpamAssassin.
Рекомендую следующие системные требования:
Процессор: Двухъядерный процессор с тактовой частотой 2.0 ГГц или выше.
Оперативная память (RAM): Минимум 2 ГБ RAM (рекомендуется 4 ГБ и более для большей производительности).
Жесткий диск: 20 ГБ свободного пространства на диске (SSD рекомендуется для повышения производительности).
Сетевой интерфейс: 100 Мбит/с или более для обеспечения стабильного соединения с интернетом.
Доступ в интернет: Постоянный доступ в интернет для обновлений и управления сервером.
Административные права: Полномочия администратора для установки и настройки программного обеспечения.
Статья также пригодится, если используете операционные системы 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:
Перейдите в «Настройки» → «Конфигурация ПО» → выберите «Почтовый сервер» (SMTP/POP3/IMAP) → нажмите «Изменить».
Выберите тип установки Сервер SMTP (MTA) — Exim. При установке Exim в его директорию копируется и настраивается шаблон конфигурации из
/usr/local/mgr5/etc/templates/exim.config
.
Установка Dovecot:
Перейдите в «Настройки» → «Конфигурация ПО» → выберите Dovecot (POP3/IMAP).
Выберите дополнительные пакеты:
Greylisting
OpenDKIM
SpamAssassin
ClamAv
Sieve
RoundCube
Нажмите «Применить изменения» и дождитесь окончания установки.
Задачи, которые решают дополнительные пакеты:
Greylisting — метод борьбы со спамом, который временно откладывает прием электронной почты от незнакомых отправителей. Это снижает объем спама, так как спамеры часто не делают повторных попыток отправки.
OpenDKIM — технология проверки подлинности электронной почты, которая позволяет получателю проверить, что письмо действительно было отправлено с указанного домена и не было изменено в процессе передачи. Это помогает предотвратить фишинг и подмену отправителя.
SpamAssassin — мощный антиспам-фильтр, который анализирует содержимое писем и присваивает им оценку на основе различных критериев. Сообщения с высокой оценкой помечаются как спам, что помогает уменьшить объем нежелательной почты.
ClamAV— антивирус для сканирования входящей и исходящей почты на наличие вредоносного ПО. Он интегрируется с Exim и обеспечивает дополнительный уровень защиты.
Sieve — сортировщик почты, который позволяет создавать правила для обработки входящих писем. Он интегрируется с почтовыми серверами Exim и Dovecot. В ispmanager Sieve используется для автоматической фильтрации и сортировки писем в почтовых ящиках. Например, вы можете настроить правило, чтобы все письма с определенным ключевым словом автоматически помещались в папку «Важные». Это удобно для организации почты и снижает нагрузку на почтовый ящик.
RoundCube — веб-интерфейс для доступа к почте. С помощью RoundCube удобно работать с электронной почтой через браузер — включая функции управления письмами, адресной книгой и настройками почтового ящика.
Создание почтового домена и электронной почты
Рассказываю как создать почтовый домен и электронную почту в ispmanager 6.
Создание почтового домена:
Перейдите к разделу «Почта» и выберите «Почтовые домены».
Заполните поля формы — имя домена, настройки по умолчанию.
Подробнее в документации — создание почтового домена →
Создание почтового ящика:
Перейдите в раздел «Почтовые ящики» и создайте новый ящик.
Заполните поля формы — укажите владельца, пароль и другие параметры.
Подробнее в документации — создание почтового ящика →
Создание почтового домена.Настройка DNS, rDNS записи и smtp_banner
В этой главе мы рассмотрим, почему важны правильные DNS-записи и как настроить A-
, MX-, SPF-, DKIM- и rDNS-записи
для почтового сервера. А еще — как корректно настроить значения smtp_banner
Корректные 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.
ip4
1.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-адреса.
Корректная настройка 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
с использованием системного имени хоста:
Установка системного имени хоста. Сначала установите системное имя хоста на желаемое значение. В этом примере мы используем
mail.unixweb.info
:
sudo echo "mail.unixweb.info" > /etc/hostname && hostname mail.unixweb.info
Эта команда записывает mail.unixweb.info
в файл /etc/hostname
, который используется системой для определения имени хоста при загрузке. Затем она немедленно применяет это имя хоста к текущей сессии с помощью команды hostname.
Настройка 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
.
Настройка 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
Перезапуск Exim. После внесения изменений в конфигурацию Exim, перезапустите службу Exim, чтобы применить изменения:
sudo systemctl restart exim4
Проверка smtp_banner. Чтобы проверить, что smtp_banner отображается правильно, установите соединение с SMTP-сервером на локальном хосте (
127.0.0.1
) через порт25
:
nc 127.0.0.1 25
Эта команда использует утилиту nc
(Netcat) для установления соединения с SMTP-сервером. Вы должны увидеть баннер SMTP, который отображается при установлении соединения.
Важно. Пожалуйста, учтите, что вам потребуются права суперпользователя для выполнения большинства этих команд. Будьте осторожны при работе с системными файлами и всегда делайте резервные копии перед внесением изменений.
Защита от спама
В этом разделе мы рассмотрим, как настроить защиту от спама в ispmanager.
Обсудим:
настройку фильтров для блокировки нежелательных писем,
использование инструментов для анализа и маркировки спама,
методы предотвращения его распространения через ваш почтовый сервер.
Перейти в раздел «Почта» и настроить защиту от почтового спама можно нажав на иконку с тремя точками в правом верхнем углу, как показано на рисунке ниже.
Для настройки защиты почтового сервера в 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)
ALexhha
01.07.2024 11:43+1По отдельности Whitelist/Blacklist/Greylisting очень мало эффективны. И лишь при комплексном использовании будут давать хоть какой то эффект. Но в статье я этого не вижу
unixweb Автор
01.07.2024 11:43В статье наглядно показано то что установлены все компоненты.
ALexhha
01.07.2024 11:43+1В статье наглядно показано то что установлены все компоненты.
но нет какой либо комплексной проверки, поэтому эффективность таких проверок чуть больше чем никакая.
В моей вселенной комплексная проверка выглядит примерно так - смотрим на подключение, проверяем в DNSBL, если адрес там, то награждаем грейлистингом и накидываем балы в SA. Если клиент все равно упорный и прошел грейлистинг, то можем проверить MX - A, A - PTR и вот это вот все, если что то не соответствует - накидываем балы в SA. Затем проверяем всякие SPF/DKIM, опять таки если что то не так - накидываем балы.
Ну и напоследок отправляем в SA, который по сумме всех баллов принимает окончательное решение. В вашей системе вы сразу решаете на основании одного критерия, а это очень плохо.
А exim умеет в такое прямо из коробки, не нужны пляски с бубном как в том же postfix. Поэтому использовать exim в такой конфигурации не очень рационально, учитывая его не очень хорошую историю уязвимостей. Т.е. если и использовать exim, то как минимум "не в стандартной конфигурации", имхо. Это как купить спортивный мотоцикл и тошнить на нем 60 км/ч по городу
unixweb Автор
01.07.2024 11:43Это не финальная статья, к сожалению компания ISPmanager не опубликовала сразу вторую часть статьи, там все это есть о чем вы пишите и даже более того..
ALexhha
01.07.2024 11:43Это не финальная статья, к сожалению компания ISPmanager не опубликовала сразу вторую часть статьи, там все это есть о чем вы пишите и даже более того..
...
В следующей статье расскажу о тестировании настроек почтового сервера настройке Firewall iptables, Fail2ban, создании профилей AppArmor и обеспечении безопасности RoundCube.
ну как то оно не вяжется, iptables/fail2ban, это совсем про другое, имхо
ISPmanager не поддерживает Postfix.
как то не обратил внимание, что это корпоративный блог
unixweb Автор
01.07.2024 11:43Во второй части статьи мы проведем проверку в сервисе MxToolbox, о котором уже упоминалось ранее. Также будут представлены профили AppArmor для усиления безопасности сервера. Пожалуйста, ожидайте выпуска второй части статьи.
unixweb Автор
01.07.2024 11:43ISPmanager не поддерживает Postfix. Нужно понимать что нельзя вместить все в одну статью когда есть лимит по объему текста, пожалуйста, будьте добры относиться с пониманием.
MesDes
01.07.2024 11:43+1Автор не пишет минимальные сис. требования, чтобы все это барахло крутилось без напряга. Только сама ispmanager берет под себя 1 гиг памяти. А если нужна только почта, то : Дебиан, Nginx + Postfix + Dovecot + Cube, достаточно средней vps с 1 гиг. памяти. И да настройки ручками очень много.
iqhostru
01.07.2024 11:43Важный момент, чтобы спам отправлялся в специальную папочку spam в round cube, а также был прикручен календарик и тп для организации минимального функционала корп почты.
unixweb Автор
01.07.2024 11:43Пдобное решение выходит за рамки настройки стандартного почтового сервера. Как понимаю это уже доработка по требованию заказчика.
infectedtrauma
Шел 2024 год, а почта как настраивалась с болью, так и настраивается. Прям дохрена ручных операций. Я принципиально исключил работу с почтой из своих задач, и в проекты мы больше не тащим, а передаем ответственность за это клиенту. Пусть сами развлекаются
unixweb Автор
Как правило, сложность заключается в поиске IP-адресов для почтовых серверов, которые отсутствуют в спам базах.
itshnick88
Дак можно вытащить же их оттуда, я уже так делал)
unixweb Автор
Можно но я такие задачи не беру.