Главная » Почтовые серверы » Установка iRedMail на Debian и Ubuntu: почтовый сервер за час

Установка iRedMail на Debian и Ubuntu: почтовый сервер за час

iRedMail — бесплатный скрипт-установщик. Он превращает чистый сервер Debian или Ubuntu в готовый почтовый сервер: Postfix, Dovecot, Nginx, антиспам, антивирус, веб-почта и веб-админка. Сама установка занимает 10–20 минут. Остальное время уходит на DNS, сертификат и проверку доставки. Поэтому «почтовый сервер за час» реален, если PTR-запись уже настроена у хостера.

Самые частые причины неудачи — не сам iRedMail. Скрипт запускают поверх сервера с сайтом и ломают его. Не задают FQDN в /etc/hosts. Забывают про PTR и закрытый исходящий порт 25. Или не публикуют DKIM-ключ, который iRedMail уже сгенерировал.

Ниже — установка актуальной версии 1.8.8 на Debian 12, Debian 13 и Ubuntu 24.04, замена сертификата на Let’s Encrypt, DKIM, первые ящики, проверки, обновление и бэкапы. Как выбрать между iRedMail и другими сборками, разобрано в обзоре как выбрать собственный почтовый сервер.

Что такое iRedMail

iRedMail — набор shell-скриптов под лицензией GPLv3. Он ставит пакеты из официальных репозиториев ОС и пишет для них согласованные конфиги. Отдельного «ядра» нет: после установки у вас обычные Postfix и Dovecot, которые настраиваются и обновляются как обычно.

Состав

  • Postfix — SMTP: порт 25 для приёма, 587 и 465 для отправки с авторизацией. На порту 25 включён postscreen.
  • Dovecot — IMAP, POP3, LMTP, Sieve, квоты и SASL-авторизация для Postfix.
  • Хранилище учётных записей — OpenLDAP, MariaDB или PostgreSQL на выбор.
  • Amavisd + SpamAssassin + ClamAV — проверка на спам и вирусы, DKIM-подпись исходящих писем.
  • iRedAPD — policy-сервер для Postfix: greylisting, ограничения скорости отправки, запрет отправки от чужого адреса (reject_sender_login_mismatch).
  • Nginx + PHP-FPM — для веб-приложений.
  • Roundcube — веб-почта. SOGo — веб-почта, календари, контакты и ActiveSync. Можно поставить оба.
  • iRedAdmin — веб-админка. Также Fail2ban, netdata (мониторинг) и mlmmj (списки рассылки).

Postfix, Dovecot, Amavisd и базы данных приходят из репозиториев Debian и Ubuntu. Roundcube, iRedAdmin и iRedAPD скачиваются с сайтов проектов и лежат в /opt/www и /opt. SOGo ставится из nightly-репозитория packages.sogo.nu.

В ветке 1.8.x антиспам — Amavisd и SpamAssassin, Rspamd в iRedMail нет. DKIM подписывает Amavisd, отдельный OpenDKIM не нужен. Если нужен именно Rspamd, смотрите установку Mailcow dockerized.

Бесплатный iRedAdmin и платный iRedAdmin-Pro

Установщик и все компоненты бесплатны. Платная только расширенная админка iRedAdmin-Pro. Ещё есть коммерческая iRedMail Enterprise Edition с другой схемой установки, её здесь не рассматриваем. Сравнение по таблице на сайте iRedMail:

ВозможностьiRedAdmin (бесплатный)iRedAdmin-Pro
Домены и ящики без ограничений числа, квота ящикадада
Глобальные администраторы, смена паролей, включение и отключение ящиковдада
Алиасы и списки рассылкинетда
Администраторы отдельных доменовнетда
Карантин спама, белые и чёрные списки, greylisting, лимиты отправкинетда
Самообслуживание пользователей, поиск, журнал действий админовнетда
REST API, интеграция с Fail2ban, время последнего входанетда

На практике бесплатной админки хватает, чтобы заводить домены и ящики. Алиасы, пересылки и whitelist без Pro делают SQL-запросами или правкой LDAP по документации iRedMail.

Требования и поддерживаемые ОС

Актуальный релиз на октябрь 2026 года — iRedMail 1.8.8 от 8 сентября 2026. Версия 1.8.0 добавила Debian 13 и Ubuntu 26.04 и убрала Ubuntu 22.04: установщик 1.8.x на ней не запустится. Что ставится на целевых системах:

ОССтатус в 1.8.8PostfixDovecotPHP
Debian 12 (bookworm)поддерживается3.72.38.2
Debian 13 (trixie)с 1.8.03.102.48.4
Ubuntu 24.04 (noble)рекомендуется проектом3.82.38.3

Также поддерживаются Ubuntu 26.04 (пока без SOGo и netdata), Rocky, Alma и CentOS Stream 9/10, FreeBSD 14 и OpenBSD 7.8. Актуальный список — на странице загрузки.

Dovecot 2.4 на Debian 13. Формат конфигурации 2.4 несовместим с 2.3. iRedMail сам выбирает нужный шаблон dovecot.conf, поэтому установка проходит одинаково. Но все инструкции и форумные советы для iRedMail, где правят Dovecot, написаны под 2.3. На Debian 13 переводите их на синтаксис 2.4, иначе Dovecot не стартует.

Минимальные требования:

  • RAM — от 4 ГБ, так требует документация iRedMail для небольшого сервера с проверкой на спам и вирусы. ClamAV один занимает больше 1 ГБ.
  • Диск — система плюс почта плюс 90 дней ежедневных бэкапов баз. Для 20–30 ящиков разумно начинать от 40–50 ГБ.
  • Архитектура — для SOGo только x86_64.
  • UID и GID 2000, 2001, 2002 не заняты.
  • Исходящий порт 25 открыт у хостера, статический IP и возможность задать PTR.

Только чистый сервер

iRedMail рассчитан на свежую систему без Nginx, Apache, MySQL, MariaDB, PostgreSQL, OpenLDAP, Postfix, Dovecot и Amavisd. Мастер прямо предупреждает: на занятом сервере он перезапишет конфиги без вопросов. Что ломается при установке поверх веб-сервера:

  • Nginx получает новые sites-enabled, виртуальный хост по умолчанию с редиректом на HTTPS и свои шаблоны. Существующие сайты перестают открываться или открываются не те.
  • В MariaDB задаётся новый пароль root, подменяется my.cnf.
  • Пул PHP-FPM перенастраивается под Roundcube.
  • Правила фаервола iRedMail начинаются с flush ruleset: все ваши правила nftables, включая правила Docker, исчезнут.

Есть и причина помимо поломок: взлом сайта на том же сервере даёт доступ к ящикам и DKIM-ключу. Отдельная VPS дешевле, чем разбор такого инцидента.

Перед запуском убедитесь, что сервер действительно пустой:

# слушающих портов, кроме sshd, быть не должно
ss -lntp
# никаких веб-серверов, СУБД и MTA
dpkg -l | grep -E 'nginx|apache2|mariadb|mysql|postgresql|slapd|postfix|exim4|dovecot'

Подготовка

Имя хоста (FQDN)

Postfix берёт myhostname из имени сервера, и это имя уходит в HELO. Оно должно совпадать с A-записью и PTR. Возьмём mail.example.com. Почтовый домен (example.com) не может совпадать с именем хоста: установщик это проверяет.

Файл /etc/hostname — короткое имя:

mail

Файл /etc/hosts — FQDN первым в строке. Старую строку 127.0.1.1 с прежним именем удалите:

127.0.0.1   mail.example.com mail localhost localhost.localdomain

Применение и проверка:

hostnamectl set-hostname mail
hostname -f
# должно вывести: mail.example.com

Если hostname -f выводит старое имя, перезагрузите сервер. На облачных VPS cloud-init может вернуть имя и /etc/hosts при перезагрузке. Проверьте preserve_hostname: true и manage_etc_hosts в /etc/cloud/cloud.cfg.

DNS-записи до установки

До запуска мастера заведите A, MX и PTR. SPF, DKIM и DMARC — после установки, когда будет ключ.

ЗаписьЗначениеГде задаётся
Amail.example.com → 203.0.113.11DNS-зона домена
MXexample.com MX 10 mail.example.comDNS-зона домена
PTR203.0.113.11 → mail.example.comУ владельца IP: панель хостера или тикет
dig +short A mail.example.com
dig +short MX example.com
dig +short -x 203.0.113.11
# ожидаем: 203.0.113.11, 10 mail.example.com., mail.example.com.

IPv6. Если у сервера есть IPv6-адрес, iRedMail включит Postfix на IPv4 и IPv6. Тогда Gmail получит письма по IPv6 и потребует для этого адреса PTR и SPF. Либо настройте AAAA, PTR и SPF для IPv6, либо после установки ограничьте Postfix протоколом IPv4: postconf -e inet_protocols=ipv4 и systemctl restart postfix.

Исходящий порт 25

Проверьте до установки, иначе узнаете о блокировке по растущей очереди:

nc -vz -w 5 gmail-smtp-in.l.google.com 25
# succeeded / open — порт открыт; timed out — закрыт у хостера

Обновление системы и пакеты для установщика

apt update && apt full-upgrade -y
apt install -y gzip dialog wget ca-certificates
reboot

Нужны официальные репозитории Debian или Ubuntu. PPA и сторонние репозитории с PHP или MariaDB отключите.

Установка: скачивание и мастер iRedMail.sh

Номер актуальной версии смотрите на iredmail.org/download.html. Архив релиза лежит на GitHub:

cd /root
wget -O iRedMail-1.8.8.tar.gz https://github.com/iredmail/iRedMail/archive/refs/tags/1.8.8.tar.gz
tar xzf iRedMail-1.8.8.tar.gz
cd iRedMail-1.8.8
bash iRedMail.sh

Запускайте в screen или tmux: при обрыве SSH установка не прервётся.

Ответы мастера

  1. Welcome — предупреждение о чистом сервере. Yes.
  2. Default mail storage path — каталог почты, по умолчанию /var/vmail. Ящики лягут в /var/vmail/vmail1, бэкапы баз — в /var/vmail/backup. Если почта будет на отдельном диске, смонтируйте его в /var/vmail до установки. Нельзя указывать /var/mail и /root.
  3. Preferred web server — Nginx. Вариант «No web server» оставит сервер без Roundcube, SOGo и iRedAdmin.
  4. Backend — OpenLDAP, MariaDB или PostgreSQL. Как выбрать — ниже.
  5. Для OpenLDAP — LDAP suffix, например dc=example,dc=com.
  6. Пароль администратора СУБД (root в MariaDB или postgres в PostgreSQL). Не используйте кавычки, $, # и пробелы: установщик подставляет пароль в shell-скрипты.
  7. Your first mail domain name — example.com, не имя хоста.
  8. Пароль postmaster@example.com. Это и первый ящик, и администратор iRedAdmin. Делайте длинный пароль без $ и пробелов.
  9. Optional components — iRedAdmin, Roundcubemail, SOGo, netdata, Fail2ban. DKIM-подпись и проверка SPF включены всегда.
  10. Мастер покажет сводку. Ответьте y.

После установки пакетов будет ещё три вопроса в консоли:

  • «Would you like to use firewall rules provided by iRedMail?» — iRedMail запишет свой /etc/nftables.conf. В нём открыты 22 (или ваш порт SSH из sshd_config), 80, 443, 25, 587, 465, 110, 995, 143, 993, остальное отбрасывается. Проверьте, что в вопросе указан ваш реальный порт SSH, иначе потеряете доступ.
  • «Restart firewall now?» — отвечайте «да», только если уверены в порте SSH и есть консоль хостера на случай ошибки.
  • «Use MySQL configuration file shipped within iRedMail?» — для MariaDB, можно согласиться.

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

OpenLDAP, MariaDB или PostgreSQL

Документация iRedMail говорит прямо: большой разницы в возможностях нет, берите то, что умеете сопровождать. Roundcube и iRedAdmin одинаковые для всех трёх. Различия в эксплуатации:

ХранилищеКогда выбиратьУчтите
MariaDBВыбор по умолчанию для небольшой компании. Больше всего примеров в документации и на форумеАлиасы без Pro — SQL-запросами в базу vmail
PostgreSQLВ компании уже есть PostgreSQL и опыт его сопровожденияТе же таблицы, что в MariaDB. Пароль администратора без $, #, @ и пробелов
OpenLDAPНужна общая адресная книга по LDAP или интеграция с LDAP-приложениямиMariaDB ставится всё равно — для Roundcube, Amavisd и iRedAPD. Управление сложнее: LDIF, ldapmodify

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

Roundcube, SOGo или оба

Roundcube — лёгкая веб-почта и фильтры Sieve. SOGo добавляет календари (CalDAV), контакты (CardDAV) и ActiveSync для телефонов и Outlook, но требует больше памяти. Много ActiveSync-клиентов заметно нагружают сервер. Ставить оба можно, но фильтры Sieve из Roundcube и SOGo несовместимы. По умолчанию iRedMail оставляет управление фильтрами в Roundcube. Пользователям нужно договориться, где их править.

Файл iRedMail.tips: что в нём и что сохранить

После установки в каталоге установщика появятся два файла с секретами:

  • /root/iRedMail-1.8.8/iRedMail.tips — адреса веб-интерфейсов, логин и пароль postmaster, пароли служебных пользователей баз (vmail, vmailadmin, amavisd, iredapd, iredadmin, roundcube, sogo), пути к конфигам, DNS-запись DKIM.
  • /root/iRedMail-1.8.8/config — все ответы мастера и сгенерированные пароли открытым текстом. Мастер прямо пишет: перенесите его в безопасное место.

Копию iRedMail.tips установщик отправляет письмом в ящик postmaster@example.com. Пароль root MariaDB также лежит в /root/.my.cnf: так mysql под root работает без пароля.

Что сделать сразу после первого входа:

  1. Перенесите пароли из iRedMail.tips и config в менеджер паролей.
  2. Скопируйте весь каталог /root/iRedMail-1.8.8 в защищённое хранилище вне сервера. Он пригодится при обновлениях и обращении в поддержку.
  3. Удалите config с сервера или оставьте права 0400 для root.
  4. Удалите письмо с паролями из ящика postmaster или смените пароль postmaster.

Сертификат Let’s Encrypt вместо самоподписанного

Установщик создаёт самоподписанный сертификат /etc/ssl/certs/iRedMail.crt и ключ /etc/ssl/private/iRedMail.key. Postfix, Dovecot и Nginx смотрят именно на эти пути. Документация iRedMail предлагает не менять конфиги, а заменить файлы символическими ссылками на сертификат Let’s Encrypt.

Nginx в iRedMail уже отдаёт /.well-known/acme-challenge/ по HTTP из каталога /opt/www/well_known, без редиректа на HTTPS. Поэтому подходит метод webroot:

apt install -y certbot
# пробный запрос
certbot certonly --webroot --dry-run -w /opt/www/well_known -d mail.example.com
# настоящий запрос
certbot certonly --webroot -w /opt/www/well_known -d mail.example.com

Подмена файлов на ссылки и перезапуск служб:

mv /etc/ssl/certs/iRedMail.crt{,.bak}
mv /etc/ssl/private/iRedMail.key{,.bak}
ln -s /etc/letsencrypt/live/mail.example.com/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/mail.example.com/privkey.pem /etc/ssl/private/iRedMail.key
systemctl restart postfix dovecot nginx

Пакет certbot в Debian и Ubuntu сам продлевает сертификаты по таймеру certbot.timer. Ссылки в live/ после продления указывают на новые файлы, остаётся перезапустить службы. Для этого создайте deploy-хук /etc/letsencrypt/renewal-hooks/deploy/iredmail.sh:

#!/bin/sh
# перечитать новый сертификат после продления
systemctl restart postfix dovecot nginx
chmod +x /etc/letsencrypt/renewal-hooks/deploy/iredmail.sh
certbot renew --dry-run

В документации iRedMail вместо хука приведена строка cron с certbot renew --post-hook. Результат тот же; не делайте оба варианта сразу.

Проверка, что службы отдают новый сертификат:

openssl s_client -connect mail.example.com:993 -servername mail.example.com -brief < /dev/null
openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com -brief < /dev/null
# ожидаем Verification: OK и CN=mail.example.com

Если хотите прописать пути прямо в Dovecot, синтаксис зависит от версии. В /etc/dovecot/dovecot.conf для Dovecot 2.3 (Debian 12, Ubuntu 24.04) путь начинается с <:

ssl_cert = </etc/ssl/certs/iRedMail.crt
ssl_key = </etc/ssl/private/iRedMail.key

В Dovecot 2.4 (Debian 13) параметры переименованы, и < не нужен:

ssl_server_cert_file = /etc/ssl/certs/iRedMail.crt
ssl_server_key_file = /etc/ssl/private/iRedMail.key

Вариант со ссылками этого не требует и одинаково работает на обеих версиях.

DKIM, SPF и DMARC

DKIM-ключ для первого домена iRedMail генерирует при установке: RSA 2048 бит, файл /var/lib/dkim/example.com.pem, селектор dkim. Подписывает Amavisd. Конфиг Amavisd в Debian и Ubuntu — /etc/amavis/conf.d/50-user. Ключ сгенерирован, но в DNS его нет: запись нужно опубликовать вручную.

Показать запись для DNS (на Debian 12/13 и Ubuntu 24.04 команда amavisd, на старых системах — amavisd-new):

amavisd showkeys

Вывод примерно такой:

; key#1 2048 bits, s=dkim, d=example.com, /var/lib/dkim/example.com.pem
dkim._domainkey.example.com.    3600 TXT (
  "v=DKIM1; p="
  "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3...")

Склейте строки в скобках без кавычек и опубликуйте TXT-запись на имени dkim._domainkey.example.com: v=DKIM1; p=MIIBIjANBgkqh…. Если панель DNS ограничивает длину строки, разбейте значение на части по 255 символов. Через 10–30 минут проверьте:

amavisd testkeys
# примерно так: TESTING#1 example.com: dkim._domainkey.example.com => pass

Ещё две записи для домена:

ИмяТипЗначение
example.comTXTv=spf1 mx -all
_dmarc.example.comTXTv=DMARC1; p=none; rua=mailto:dmarc@example.com

В документации iRedMail пример DMARC сразу с p=reject. Для нового сервера безопаснее начать с p=none, две–четыре недели читать отчёты и только потом ужесточать политику. Если с домена отправляют ещё CRM, сайт или сервис рассылок, их нужно добавить в SPF. Подробно, с подводными камнями — в статье настройка SPF, DKIM и DMARC для своего домена.

DKIM для второго домена

Тонкость конфига iRedMail: в @dkim_signature_options_bysender_maps есть правило '.'. Оно подписывает письма всех доменов ключом первого домена с d=example.com. Для второго домена (пусть example.org) такая подпись не выровнена с From, и DMARC не пройдёт. iRedAdmin добавляет домен, но ключ не создаёт. Сделайте это вручную:

amavisd genrsa /var/lib/dkim/example.org.pem 2048
chown amavis:amavis /var/lib/dkim/example.org.pem
chmod 0400 /var/lib/dkim/example.org.pem

В /etc/amavis/conf.d/50-user рядом с существующей строкой dkim_key добавьте ключ. Внутри @dkim_signature_options_bysender_maps, выше правила '.', добавьте правило для домена:

dkim_key('example.org', 'dkim', '/var/lib/dkim/example.org.pem');

# внутри @dkim_signature_options_bysender_maps = ({ ... });
"example.org" => { d => "example.org", a => 'rsa-sha256', ttl => 10*24*3600 },
systemctl restart amavis
amavisd showkeys

Опубликуйте запись dkim._domainkey.example.org, SPF и DMARC для нового домена и проверьте amavisd testkeys.

Первые ящики и подключение клиентов

Веб-интерфейсы после установки:

  • iRedAdmin — https://mail.example.com/iredadmin/
  • Roundcube — https://mail.example.com/mail/
  • SOGo — https://mail.example.com/SOGo/
  • netdata — https://mail.example.com/netdata/

Логин везде — полный адрес postmaster@example.com и пароль из мастера. Создание ящика:

  1. Войдите в iRedAdmin.
  2. Add → User, выберите домен.
  3. Укажите адрес, отображаемое имя, пароль и квоту ящика.
  4. Сохраните и войдите новым пользователем в Roundcube или SOGo.

Для десятков ящиков есть скрипты в каталоге установщика: tools/create_mail_user_SQL.sh для MariaDB и PostgreSQL и tools/create_mail_user_OpenLDAP.py для LDAP.

Thunderbird, Outlook и телефон по IMAP

Логин — полный адрес почты, пароль — пароль ящика, тип аутентификации — обычный пароль.

ПротоколСерверПортЗащита
IMAPmail.example.com993SSL/TLS
IMAPmail.example.com143STARTTLS
POP3mail.example.com995 / 110SSL/TLS / STARTTLS
SMTP (отправка)mail.example.com587STARTTLS
SMTP (отправка)mail.example.com465SSL/TLS

Порт 25 — только для приёма от других серверов, авторизация на нём выключена. На 587 Postfix требует TLS, а Dovecot не принимает пароль без шифрования. Поэтому клиент с «Без защиты» не подключится, и это правильно. iRedAPD запрещает отправку от адреса, не совпадающего с логином. Попытка отправить от чужого имени получит отказ Sender is not same as SMTP authenticate username.

Календари, контакты и ActiveSync через SOGo

  • ActiveSync (iOS, Android, Outlook): тип учётной записи Exchange, сервер mail.example.com, логин — полный адрес. Сервер должен отвечать валидным сертификатом.
  • CalDAV: https://mail.example.com/SOGo/dav/user@example.com/Calendar/personal/
  • CardDAV: https://mail.example.com/SOGo/dav/user@example.com/Contacts/personal/

Проверки

1. Службы и порты. Наружу слушают только почтовые и веб-порты, базы и Amavisd — на 127.0.0.1:

ss -lntp | grep -E ':(25|465|587|993|995|143|110|80|443)\s'
ss -lntp | grep -E ':(3306|5432|389|10024|7777|20000)\s'

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

swaks --to someone@gmail.com --from test@example.net --server mail.example.com --port 25

Ответ на RCPT должен быть отказом вида 454 4.7.1 <someone@gmail.com>: Relay access denied или другим 4xx/5xx. Ответ 250 на чужой домен означает открытый релей: остановите Postfix и ищите, что поменяли в mynetworks или ограничениях.

3. Отправка наружу с авторизацией. Пароль swaks спросит сам:

swaks --to your-test@gmail.com --from postmaster@example.com \
  --server mail.example.com --port 587 --tls \
  --auth LOGIN --auth-user postmaster@example.com \
  --header "Subject: iRedMail test"
grep 'status=sent' /var/log/mail.log | tail -n 5

Письмо проходит Postfix дважды: сначала уходит в Amavisd (relay=127.0.0.1[127.0.0.1]:10026), затем к получателю. Нужна строка с внешним relay, примерно так: to=<your-test@gmail.com>, relay=gmail-smtp-in.l.google.com[…]:25, … status=sent (250 2.0.0 OK …).

4. Authentication-Results. В Gmail откройте письмо, затем «Показать оригинал». Нужны dkim=pass с header.s=dkim и header.i=@example.com, spf=pass и dmarc=pass. Если dkim=neutral или fail — запись DKIM не опубликована или обрезана; проверьте amavisd testkeys.

5. mail-tester. Отправьте письмо из Roundcube на адрес с mail-tester.com. Цель — 9–10 из 10. Типичные минусы на новом iRedMail: нет DMARC, PTR не совпадает с HELO, IP в списках.

6. Входящие. Отправьте письмо с внешнего ящика на postmaster@example.com. Первое письмо от нового отправителя может прийти с задержкой в несколько минут: в iRedAPD включён greylisting. Это нормально.

Если письма всё равно попадают в спам, разбор по шагам — в статье почему письма попадают в спам: диагностика.

Обновление iRedMail и резервные копии

Два уровня обновлений

Пакеты ОС — Postfix, Dovecot, Amavisd, ClamAV, MariaDB, Nginx, PHP — обновляются обычным apt upgrade. Так закрываются уязвимости в основных компонентах.

Сам iRedMail — конфиги и компоненты из /opt: Roundcube, iRedAdmin, iRedAPD, mlmmjadmin, netdata. Через apt они не обновляются. Для каждого релиза есть инструкция на странице iRedMail release notes and upgrade tutorials. Правила:

  • Установщик повторно не запускают: обновление — это шаги из инструкции.
  • Релизы не пропускают. Документация поддерживает обновление только на следующую версию: с 1.8.5 на 1.8.8 идут через 1.8.6 и 1.8.7.
  • Текущая версия записана в /etc/iredmail-release. После каждого шага обновляйте её.
  • Большая часть релизов 1.8.x — исправления уязвимостей Roundcube. Их не откладывайте.

Типичный шаг — обновление Roundcube из релиза 1.8.8 (номер версии берите из инструкции):

cd /root
wget https://github.com/roundcube/roundcubemail/releases/download/1.7.4/roundcubemail-1.7.4-complete.tar.gz
tar xzf roundcubemail-1.7.4-complete.tar.gz
cd roundcubemail-1.7.4
./bin/installto.sh /opt/www/roundcubemail
systemctl restart nginx

Обновление Debian 12 до 13 на сервере с iRedMail — отдельная процедура. Конфиг Dovecot 2.3 нужно заменить шаблоном 2.4 и перенести пароли и пути к сертификатам. Также нужно перенести пул PHP-FPM с 8.2 на 8.4, исправить http2 в Nginx и переустановить iRedAPD, mlmmjadmin и iRedAdmin. Следуйте документу iRedMail «Fixes you need after upgrading Debian from 12 to 13». Перед этим сделайте снимок виртуальной машины.

Встроенные скрипты бэкапа

Установщик кладёт скрипты в /var/vmail/backup/ и добавляет задания в crontab root (crontab -l -u root):

СкриптЧто сохраняетКогда
backup_mysql.shБазы MariaDB: vmail, roundcubemail, amavisd, iredadmin, iredapd, sogo и др.03:30
backup_pgsql.shТо же для PostgreSQL03:01
backup_openldap.shДерево LDAP в LDIF03:00
backup_sogo.shКалендари и контакты SOGo04:01

Архивы сжимаются bzip2 и раскладываются по годам и месяцам в /var/vmail/backup. Хранятся 90 дней (KEEP_DAYS в начале скрипта).

Чего эти скрипты не сохраняют:

  • сами письма — /var/vmail/vmail1;
  • DKIM-ключи — /var/lib/dkim;
  • конфиги — /etc/postfix, /etc/dovecot, /etc/amavis, /etc/nginx, /opt/iredapd/settings.py, /opt/www/iredadmin/settings.py, конфиг Roundcube;
  • /etc/letsencrypt и каталог установщика с iRedMail.tips.

И главное: бэкапы баз лежат на том же диске. Копируйте всё на другой сервер, например rsync по cron. Скрипт /root/bin/mail-offsite.sh, сервер backup.example.com — пример:

#!/bin/sh
# ежедневная копия почты, ключей и конфигов на внешний сервер
rsync -a --delete -e ssh \
  /var/vmail /var/lib/dkim /etc/postfix /etc/dovecot /etc/amavis /etc/nginx /etc/letsencrypt \
  /opt/iredapd/settings.py /opt/www/iredadmin/settings.py /root/iRedMail-1.8.8 \
  backup@backup.example.com:/srv/backup/mail.example.com/

При восстановлении на новый сервер iRedMail базу mysql из бэкапа не восстанавливают: в ней служебные учётные записи старого сервера. Восстанавливают базы vmail, amavisd, roundcubemail, iredadmin, iredapd и sogo, затем копируют почту и DKIM-ключи. Восстановление проверяйте хотя бы раз заранее, на тестовой машине.

Типичные проблемы

СимптомПричинаЧто делать
Исходящие висят в очереди, в логе connect to …:25: Connection timed outХостер блокирует исходящий порт 25Тикет на открытие порта или смена хостинга. Временно — отправка через внешний relay по инструкции iRedMail «Setup relayhost»
502 Bad Gateway на /iredadmin/Не запущена служба iredadmin (uwsgi на 127.0.0.1:7791)systemctl status iredadmin, journalctl -u iredadmin. После обновления ОС — переустановить iRedAdmin по инструкции
502 на /SOGo/Упал sogo (127.0.0.1:20000) или memcached, часто из-за нехватки памятиsystemctl restart memcached sogo, проверить OOM в dmesg
502 на /mail/Не работает PHP-FPMsystemctl status php8.2-fpm (8.4 на Debian 13, 8.3 на Ubuntu 24.04)
Письма уходят в спамНет PTR, DKIM не опубликован, IPv6 без PTR, IP в спискахdig -x, amavisd testkeys, Authentication-Results, mail-tester
Второй домен не проходит DMARCПисьма подписаны ключом первого домена (правило '.')Отдельный DKIM-ключ для домена, см. выше
452 4.3.1 Insufficient system storage, падает MariaDBКончилось место на дискеСм. ниже
Клиент не отправляет: Sender is not same as SMTP authenticate usernameFrom не совпадает с логином, iRedAPD блокируетОтправлять от своего адреса. Исключения — по документации iRedMail «Allow certain users to send email as another user»

502 в веб-интерфейсе: порядок диагностики

# какой upstream не отвечает
tail -n 20 /var/log/nginx/error.log
# connect() failed (111: Connection refused) ... upstream: "uwsgi://127.0.0.1:7791" — iRedAdmin
# ... upstream: "http://127.0.0.1:20000/SOGo/..." — SOGo
ss -lntp | grep -E ':7791|:20000'
systemctl status iredadmin sogo memcached --no-pager
# не убивал ли ядро процессы из-за памяти
dmesg -T | grep -i 'killed process'

Если OOM убивает clamd, amavisd или sogo, серверу не хватает памяти: добавьте RAM или swap. 4 ГБ — это минимум, а не комфортный объём для SOGo с ActiveSync.

Переполнение диска

Postfix перестаёт принимать почту, если свободного места меньше полутора message_size_limit. MariaDB на полном диске может повредить таблицы. Где искать место:

df -h
du -sh /var/vmail/vmail1/* /var/vmail/backup /var/lib/mysql /var/log 2>/dev/null | sort -h
# самые большие ящики домена
du -sh /var/vmail/vmail1/example.com/*/*/*/* 2>/dev/null | sort -h | tail

Обычные виновники: ящики без квоты, 90 дней бэкапов баз, разросшиеся логи и база amavisd. Задайте квоты в iRedAdmin, уменьшите KEEP_DAYS и выносите бэкапы с сервера. Поставьте мониторинг свободного места: netdata из комплекта умеет оповещать о нём.

Не хочу сопровождать сам

Установить iRedMail можно за час. Дальше начинается сопровождение: инструкции к каждому релизу, переход Debian 12 → 13 с переписыванием конфига Dovecot, бэкапы и проверка восстановления, взломанные ящики, разбор недоставленных писем. Если в компании нет администратора на это, рассмотрите готовый корпоративный почтовый сервер с администрированием. Сервер выделяется под компанию, а обновления, DNS и доставляемость остаются на стороне провайдера.

Частые вопросы

Можно ли поставить iRedMail на сервер, где уже работает сайт?

Не стоит. Установщик перезапишет конфиги Nginx, PHP-FPM и MariaDB, задаст новый пароль root базы и может заменить правила фаервола. Сайт перестанет работать, а откат займёт больше времени, чем новая VPS. Ставьте iRedMail на отдельный чистый сервер, сайт оставьте на старом.

Почему в iRedMail нет Rspamd?

В ветке 1.8.x антиспам построен на Amavisd и SpamAssassin, DKIM подписывает тоже Amavisd. Встроенного переключения на Rspamd нет, а ручная замена ломает совместимость с инструкциями обновления. Если нужен Rspamd, берите Mailcow или собирайте сервер сами по статье Postfix и Dovecot вручную.

Как добавить второй почтовый домен?

Добавьте домен в iRedAdmin, затем сгенерируйте для него DKIM-ключ командой amavisd genrsa и пропишите его в /etc/amavis/conf.d/50-user. Перезапустите amavis и опубликуйте MX, SPF, DKIM и DMARC для нового домена. Без отдельного ключа письма будут подписаны доменом первого, и DMARC для второго домена не пройдёт.

Можно ли сменить MariaDB на OpenLDAP или PostgreSQL после установки?

Штатного способа нет. Хранилище выбирается один раз в мастере, от него зависят конфиги Postfix, Dovecot, iRedAPD и Roundcube. Смена — это новый сервер iRedMail с нужным хранилищем, перенос учётных записей и копирование почты из /var/vmail/vmail1.

Где найти пароли, если файл iRedMail.tips потерян?

Пароль root MariaDB лежит в /root/.my.cnf. Пароли служебных пользователей баз есть в конфигах: Postfix — в /etc/postfix/mysql/, /etc/postfix/pgsql/ или /etc/postfix/ldap/, iRedAPD — в /opt/iredapd/settings.py, iRedAdmin — в /opt/www/iredadmin/settings.py. Пароль postmaster можно задать заново через другого глобального администратора iRedAdmin или SQL-запросом по инструкции Reset user password.