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.8 | Postfix | Dovecot | PHP |
|---|---|---|---|---|
| Debian 12 (bookworm) | поддерживается | 3.7 | 2.3 | 8.2 |
| Debian 13 (trixie) | с 1.8.0 | 3.10 | 2.4 | 8.4 |
| Ubuntu 24.04 (noble) | рекомендуется проектом | 3.8 | 2.3 | 8.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 — после установки, когда будет ключ.
| Запись | Значение | Где задаётся |
|---|---|---|
| A | mail.example.com → 203.0.113.11 | DNS-зона домена |
| MX | example.com MX 10 mail.example.com | DNS-зона домена |
| PTR | 203.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 установка не прервётся.
Ответы мастера
- Welcome — предупреждение о чистом сервере. Yes.
- Default mail storage path — каталог почты, по умолчанию
/var/vmail. Ящики лягут в/var/vmail/vmail1, бэкапы баз — в/var/vmail/backup. Если почта будет на отдельном диске, смонтируйте его в/var/vmailдо установки. Нельзя указывать/var/mailи/root. - Preferred web server — Nginx. Вариант «No web server» оставит сервер без Roundcube, SOGo и iRedAdmin.
- Backend — OpenLDAP, MariaDB или PostgreSQL. Как выбрать — ниже.
- Для OpenLDAP — LDAP suffix, например
dc=example,dc=com. - Пароль администратора СУБД (root в MariaDB или postgres в PostgreSQL). Не используйте кавычки,
$,#и пробелы: установщик подставляет пароль в shell-скрипты. - Your first mail domain name —
example.com, не имя хоста. - Пароль postmaster@example.com. Это и первый ящик, и администратор iRedAdmin. Делайте длинный пароль без
$и пробелов. - Optional components — iRedAdmin, Roundcubemail, SOGo, netdata, Fail2ban. DKIM-подпись и проверка SPF включены всегда.
- Мастер покажет сводку. Ответьте
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 работает без пароля.
Что сделать сразу после первого входа:
- Перенесите пароли из
iRedMail.tipsиconfigв менеджер паролей. - Скопируйте весь каталог
/root/iRedMail-1.8.8в защищённое хранилище вне сервера. Он пригодится при обновлениях и обращении в поддержку. - Удалите
configс сервера или оставьте права0400для root. - Удалите письмо с паролями из ящика 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.com | TXT | v=spf1 mx -all |
_dmarc.example.com | TXT | v=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 и пароль из мастера. Создание ящика:
- Войдите в iRedAdmin.
- Add → User, выберите домен.
- Укажите адрес, отображаемое имя, пароль и квоту ящика.
- Сохраните и войдите новым пользователем в Roundcube или SOGo.
Для десятков ящиков есть скрипты в каталоге установщика: tools/create_mail_user_SQL.sh для MariaDB и PostgreSQL и tools/create_mail_user_OpenLDAP.py для LDAP.
Thunderbird, Outlook и телефон по IMAP
Логин — полный адрес почты, пароль — пароль ящика, тип аутентификации — обычный пароль.
| Протокол | Сервер | Порт | Защита |
|---|---|---|---|
| IMAP | mail.example.com | 993 | SSL/TLS |
| IMAP | mail.example.com | 143 | STARTTLS |
| POP3 | mail.example.com | 995 / 110 | SSL/TLS / STARTTLS |
| SMTP (отправка) | mail.example.com | 587 | STARTTLS |
| SMTP (отправка) | mail.example.com | 465 | SSL/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 | То же для PostgreSQL | 03:01 |
backup_openldap.sh | Дерево LDAP в LDIF | 03:00 |
backup_sogo.sh | Календари и контакты SOGo | 04: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-FPM | systemctl 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 username | From не совпадает с логином, 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.