Установка 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 для начала установки.
2. Путь хранения почты - по умолчанию /var/vmail. Нажмите Enter, если хотите использовать каталог по умолчанию.
Здесь будут храниться все письма пользователей.
3. Выбор веб-сервера — выберите Nginx и нажмите Enter.
Nginx работает быстрее и проще в настройке по сравнению с Apache.
4. Выбор бэкенда для почтовых аккаунтов - используйте стрелку вниз, затем Пробел, выберите MariaDB.
MariaDB хранит все учетные записи и домены.
5. Пароль администратора MySQL. Придумайте надежный пароль для root.
6. Первый домен - введите ваш почтовый домен (например, tex-lab.ru).
На этом домене будет работать основная почта сервера.
7. Пароль администратора почты - задайте пароль для учетной записи postmaster.
Это основной почтовый администратор, который сможет создавать пользователей и управлять почтой.
8. Дополнительные компоненты. Выберите нужные (например, Amavis, SpamAssassin, ClamAV) и нажмите Enter.
- 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. После успешной установки Вы увидите вывод с данными вашего почтового сервера.
Настройка 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,
3. Cкопируйте там уникальный почтовый ящик и отправьте на него письмо от почтового сервера с произвольным содержанием.
Вы должны получить результат близкий к максимальному баллу - 10. Если Вы что-то не сделали или ошиблись, то сервис об этом расскажет.
Добавление доменов и почтовых ящиков
1. Войдите в iRedAdmin: https://mail.tex-lab.ru/iredadmin
2. Для добавления нового домена нажмите "Add Domain".
3. Для создания почтового ящика выберите домен → "Add Mail Account".
4. Укажите имя, пароль и квоту почтового ящика.
















