Перейти к основному контенту

Установка iRedMail


Введение

iRedMail - это полностью открытое решение для развёртывания почтового сервера на Linux/BSD с минимальной настройкой. Он устанавливает и настраивает почтовый сервер с веб-интерфейсом, почтовыми протоколами (SMTP, IMAP, POP3), антивирусной проверкой, фильтрацией спама и поддержкой нескольких доменов. В комплекте идут Amavis, ClamAV, SpamAssassin и веб-админка iRedAdmin для управления пользователями и доменами.

Поддерживаемые ОС:

  • Debian
  • Ubuntu
  • CentOS / Rocky Linux / AlmaLinux
  • FreeBSD


Рекомендации по ресурсам сервера:

  • CPU: не менее 4 ядер.
  • RAM: не менее 4 Гб.
  • Диск: 30–50 Гб.

Причина: пакет включает ClamAV и другие компоненты, которые потребляют ресурсы. На слабых машинах возможны проблемы с производительностью.

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

Подготовка сервера

В примерах в инструкции будет использоваться домен mail.tex-lab.ru и IP сервера 62.173.138.27. Обязательно замените их на свои реальные домен и IP при настройке.

1. Измените имя хоста на ваш почтовый домен:

hostnamectl set-hostname mail.tex-lab.ru

Имя хоста должно соответствовать вашему домену, чтобы почта корректно отправлялась и принималась.

2. Добавьте домен в файл hosts:

nano /etc/hosts

Добавьте строку:

127.0.1.1 mail.tex-lab.ru mail

Сохраните Ctrl+O → Enter, затем закройте файл Ctrl+X.

Это необходимо для правильного разрешения имени хоста на сервере.

3. Скачайте пакет iRedMail с официального сайта. Перейдите на сайт iRedMail и скопируйте ссылку на актуальную версию.
Пример для версии 1.7.4:

wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.4.tar.gz

Внимание! Указывайте актуальную версию на момент установки.

4. Распакуйте архив и подготовьте установку:

tar xvf 1.7.4.tar.gz
cd iRedMail-1.7.4
chmod +x iRedMail.sh

Установка

Запустите скрипт установки:

bash iRedMail.sh

Основные шаги установки

1. Приветственное окно - нажмите Enter для начала установки.

install-iredmail-planetahost-001.jpg

2. Путь хранения почты - по умолчанию /var/vmail. Нажмите Enter, если хотите использовать каталог по умолчанию.

install-iredmail-planetahost-002.jpg

Здесь будут храниться все письма пользователей.

3. Выбор веб-сервера — выберите Nginx и нажмите Enter.

install-iredmail-planetahost-003.jpg

Nginx работает быстрее и проще в настройке по сравнению с Apache.

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

install-iredmail-planetahost-004.jpg

MariaDB хранит все учетные записи и домены.

5. Пароль администратора MySQL. Придумайте надежный пароль для root.

install-iredmail-planetahost-005.jpg

6. Первый домен - введите ваш почтовый домен (например, tex-lab.ru).

install-iredmail-planetahost-006.jpg

На этом домене будет работать основная почта сервера.

7. Пароль администратора почты - задайте пароль для учетной записи postmaster.

install-iredmail-planetahost-007.jpg

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

8. Дополнительные компоненты. Выберите нужные (например, Amavis, SpamAssassin, ClamAV) и нажмите Enter.

install-iredmail-planetahost-008.jpg

  • Roundcube - веб-почтовый клиент. Позволяет пользователям заходить в свою почту через браузер, читать письма, отправлять новые, работать с контактами и папками.
  • SOGo - групповой календарь, контакты и веб-почта. Нужен если требуется синхронизация почты, календарей и адресных книг с телефонами и компьютерами (ActiveSync, CalDAV, CardDAV).
  • Netdata - система мониторинга. Показывает в реальном времени загрузку CPU, RAM, дисков, работу сетевых служб и помогает быстро находить проблемы с производительностью сервера.
  • iRedAdmin - веб-панель администратора почтового сервера. Через неё можно добавлять домены, создавать почтовые ящики, управлять квотами, паролями и другими параметрами без консоли.
  • Fail2ban - система защиты от взлома. Блокирует IP-адреса, которые пытаются подобрать пароли к почте, SSH или другим сервисам, тем самым защищает сервер от брутфорса.

9. После всех настроек скрипт покажет все внесенные ваши параметры и задаст вопрос:

< Question > Continue? [y|N]

Вам нужно написать Y и нажать Enter.

10. Во время завершения установки скрипт задаст вопрос:

< Question > File: /etc/nftables.conf, with SSHD ports: 22. [Y|n]

Тут Вам надо также написать Y и нажать Enter.

Для вопроса:

< Question > Restart firewall now (with ssh ports: 22)? [y|N]

написать Y и нажать Enter.

11. После успешной установки Вы увидите вывод с данными вашего почтового сервера.

install-iredmail-planetahost-009.jpg

Настройка DNS

Для корректной работы почты важно настроить правильные DNS-записи.

Примеры ниже для домена tex-lab.ru и IP 62.173.138.27. Замените на свои значения.

1. MX-запись – отвечает за получение почты:

  • Тип: MX
  • Имя: @
  • Приоритет: 10
  • Значение: mail.tex-lab.ru

MX-запись указывает другим почтовым серверам, куда доставлять письма для вашего домена.

2. SPF-запись – указывает, какие серверы имеют право отправлять почту от вашего домена:

  • Тип: TXT
  • Имя: @
  • Значение: "v=spf1 a mx ip4:62.173.138.27 -all"

SPF помогает защититься от подделки отправителя (спуфинга). Замените IP на ваш сервер.

3. DMARC-запись – защита от подделки отправителя и контроль политики обработки писем:

  • Тип: TXT
  • Имя: _dmarc
  • Значение: "v=DMARC1; p=reject; rua=mailto:dmarc@tex-lab.ru; pct=100"

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

4. DKIM-запись – подпись исходящей почты для проверки подлинности:

  • Тип: TXT
  • Имя: dkim._domainkey
  • Значение: сгенерируйте командой на сервере:
amavisd showkeys tex-lab.ru \
  | grep '"' \
  | sed 's/[") ]//g' \
  | tr -d '\n' \
  | sed 's/v=DKIM1;p=/v=DKIM1; p=/' \
; echo

Проверьте ключ командой:

amavisd testkeys

Мы должны получить результат:

TESTING#1 tex-lab.ru: dkim._domainkey.tex-lab.ru => pass

DKIM помогает получателю убедиться, что письмо действительно от вашего домена.

5. A-запись – сопоставляет доменное имя с IP сервера:

  • Тип: A
  • Имя: mail
  • Значение: 62.173.138.27


6. PTR-запись (обратная запись) – проверяет, что IP сервера соответствует домену:

 

Настраивается на стороне хостинг-провайдера.

Важно для прохождения проверки почты как надежной.

Выпуск сертификатов Let's Encrypt

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

1. Создайте файл ssl_gen.sh на сервере, вставьте туда скрипт из документации.

Код скрипта
#!/bin/bash
# ============================================================
#   Скрипт автоматической установки Let's Encrypt для iRedMail
#   Команда ТехЛаб — 2025
#   Домен в примере: mail.tex-lab.ru
# ============================================================

set -euo pipefail

echo
echo -e "\e[36m==============================================================\e[0m"
echo -e "\e[36m  Приветствует автоматический скрипт установки SSL от ТехЛаб \e[0m"
echo -e "\e[36m  Скрипт выпустит Let's Encrypt и пропишет сертификаты для iRedMail \e[0m"
echo -e "\e[36m==============================================================\e[0m"
echo

# ---------------- Параметры ----------------
read -rp "Введите ваш FQDN (пример: mail.tex-lab.ru): " DOMAIN
[ -n "$DOMAIN" ] || { echo "Домен не может быть пустым"; exit 1; }

read -rp "Введите ваш email для Let's Encrypt (пример: admin@tex-lab.ru): " EMAIL
[ -n "$EMAIL" ] || { echo "Email обязателен"; exit 1; }

# ---------------- Установка certbot ----------------
echo "[INFO] Установка certbot..."
apt update
apt install -y certbot

# ---------------- Подготовка каталога для http challenge ----------------
WWW_PATH="/opt/www/well_known"
if [ ! -d "$WWW_PATH/.well-known/acme-challenge" ]; then
  echo "[INFO] Создаю каталог для challenge: $WWW_PATH"
  mkdir -p "$WWW_PATH/.well-known/acme-challenge"
  chown -R www-data:www-data "$WWW_PATH"
fi

# ---------------- Проверочный запуск — dry-run ----------------
echo "[INFO] Проверка certbot --dry-run"
certbot certonly --webroot -w "$WWW_PATH" --dry-run -d "$DOMAIN" -m "$EMAIL" --agree-tos --no-eff-email

# ---------------- Запрос настоящего сертификата ----------------
echo "[INFO] Запрашиваю настоящий сертификат Let's Encrypt"
certbot certonly --webroot -w "$WWW_PATH" -d "$DOMAIN" -m "$EMAIL" --agree-tos --no-eff-email

LEPATH="/etc/letsencrypt/live/$DOMAIN"
if [ ! -f "$LEPATH/fullchain.pem" ] || [ ! -f "$LEPATH/privkey.pem" ]; then
  echo "[ERROR] Сертификаты не найдены после выпуска!"
  exit 1
fi
echo "[INFO] Сертификаты созданы: $LEPATH"

# ---------------- Создание символьных ссылок ----------------
echo "[INFO] Создаю симлинки для iRedMail"
mv /etc/ssl/certs/iRedMail.crt{,.bak} 2>/dev/null || true
mv /etc/ssl/private/iRedMail.key{,.bak} 2>/dev/null || true
ln -sf "$LEPATH/fullchain.pem" /etc/ssl/certs/iRedMail.crt
ln -sf "$LEPATH/privkey.pem" /etc/ssl/private/iRedMail.key

# ---------------- Перезапуск сервисов ----------------
echo "[INFO] Перезапускаю Postfix, Dovecot и веб-сервер"
systemctl restart postfix dovecot

if systemctl is-active --quiet nginx; then
  systemctl restart nginx
elif systemctl is-active --quiet apache2; then
  systemctl restart apache2
else
  echo "[WARN] Не удалось обнаружить активный веб-сервер для перезагрузки"
fi

# ---------------- Настройка автообновления ----------------
echo "[INFO] Настройка cron для автоматического обновления certbot"
CRON_CMD="certbot renew --post-hook \"ln -sf $LEPATH/privkey.pem /etc/ssl/private/iRedMail.key; ln -sf $LEPATH/fullchain.pem /etc/ssl/certs/iRedMail.crt; systemctl restart postfix dovecot; systemctl restart nginx || systemctl restart apache2\""
( crontab -l 2>/dev/null | grep -v "certbot renew" ; echo "1 3 * * * $CRON_CMD" ) | crontab -

echo
echo -e "\e[32m==============================================================\e[0m"
echo -e "\e[32m  Готово! SSL для iRedMail установлен и настроен. \e[0m"
echo -e "\e[32m  Domain: $DOMAIN \e[0m"
echo -e "\e[32m  Симлинк CRT: /etc/ssl/certs/iRedMail.crt \e[0m"
echo -e "\e[32m  Симлинк KEY: /etc/ssl/private/iRedMail.key \e[0m"
echo -e "\e[32m==============================================================\e[0m"
echo


2. Сделайте его исполняемым:

chmod +x ssl_gen.sh

3. Запустите:

bash ssl_gen.sh

Следуйте инструкциям скрипта.

Решение проблем с ClamAV

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

1.  Откройте файл конфигурации:

nano /etc/clamav/freshclam.conf

2. Закомментируйте официальные серверы обновлений и добавьте доступные зеркала:

PrivateMirror https://clamav-mirror.ru/
PrivateMirror https://mirror.truenetwork.ru/clamav/
PrivateMirror http://mirror.truenetwork.ru/clamav/
ScriptedUpdates no

В примере мы использовали зеркала проекта https://clamav-mirror.ru/, но Вы можете использовать любые доступные.

3. Удалите старую базу:

rm /var/lib/clamav/freshclam.dat

4. Запустите обновление базы:

freshclam -vvv

5. Перезагрузите сервер.

Проверка работы

1. Войдите в почтовый клиент по адресу: https://mail.tex-lab.ru/mail/ и авторизуйтесь под postmaster.


2. После этого зайдите на полезный сервис для проверки почты - https://www.mail-tester.com, скопируйте там уникальный почтовый ящик и отправьте на него письмо от почтового сервера с произвольным содержанием.

 

> Ожидаемый результат – близкий к максимальному баллу (10/10). Сервис подскажет, если что-то настроено неправильно.

 


---

Добавление доменов и почтовых ящиков

1. Войдите в iRedAdmin: https://mail.tex-lab.ru/iredadmin


2. Для добавления нового домена нажмите "Add Domain".


3. Для создания почтового ящика выберите домен → "Add Mail Account".


4. Укажите имя, пароль и квоту почтового ящика.