Как установить iRedMail на Ubuntu 22.04

iRedMail – это почтовый сервер с открытым исходным кодом, поддерживающий протоколы SMTP, IMAP и POP3. В этот сценарий установки включены Nginx, Postfix как агент передачи почты, Dovecot как IMAP и POP3 сервер, SpamAssassin как сканер спама и ClamAV как сканер вирусов.

Все работает по такой схеме:

Установка iRedMail на Ubuntu 22.04 проста и может занять до 10 минут. Давайте начнем!

Необходимые условия

  • Сервер с Ubuntu 22.04 в качестве ОС и минимум 4 ГБ оперативной памяти
  • Действительное имя хоста и домен, указывающие на IP-адрес сервера
  • Привилегии пользователя: root или не-root пользователь с привилегиями sudo

Шаг 1. Обновление системы

Обновите системные пакеты до последней доступной версии перед установкой iRedMail на вашу систему.

sudo apt-get update -y && sudo apt-get upgrade -y

Шаг 2. Скачайте iRedmail

Скачайте последний стабильный релиз iRedMail с Github. Чекнуть номер версии можно здесь

cd /root
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.1.tar.gz

После успешной загрузки извлеките файл.

tar -xzvf 1.7.1.tar.gz

Список содержимого корневого каталога для проверки правильности извлечения файла.

ls -al

Вы должны получить следующий результат:

[root@vps ~]# ls
1.7.1.tar.gz  iRedMail-1.6.4

Шаг 3. Установка iRedMail в Linux

Войдите в каталог iRedMail-1.7.1 и сделайте сценарий исполняемым

cd iRedMail-1.7.1/
chmod +x iRedMail.sh

До запуска установки и настройки iRedMail нужно указать правильное название имени сервера в формате FQDN:

hostnamectl set-hostname mail.itshaman.ru

Без этого установщик будет ругаться.

После этого выполните сценарий установки командой ниже:

./iRedMail.sh

В процессе установки вам будет предложено заполнить некоторую информацию. Таким образом, вы сможете установить службу iRedMail.

В первом окне нажмите Yes, чтобы начать процесс установки.

Как установить iRedMail на Ubuntu 22.04

Подтвердите путь к хранилищу, нажав Enter, чтобы скрипт продолжил установку.

Как установить iRedMail на Ubuntu 22.04

Выберите Nginx в качестве веб-сервера, поскольку вы будете получать доступ к iRedMail через доменное имя.

Как установить iRedMail на Ubuntu 22.04

В следующем окне выберите сервер базы данных. В данном руководстве будет использоваться MariaDB.

Как установить iRedMail на Ubuntu 22.04

После выбора сервера базы данных введите надежный пароль MySQL root.

Как установить iRedMail на Ubuntu 22.04

В следующем окне необходимо указать имя вашего домена yourdomain.com.

Как установить iRedMail на Ubuntu 22.04

После установки домена необходимо ввести пароль администратора почтового домена.

Как установить iRedMail на Ubuntu 22.04

В следующем окне просто нажмите кнопку Enter, чтобы продолжить установку, поскольку все опции отмечены по умолчанию.

Как установить iRedMail на Ubuntu 22.04

В следующих вопросах просто введите Y и нажмите Enter, чтобы завершить установку. После завершения установки вы должны получить следующее сообщение.

********************************************************************
* URLs of installed web applications:
*
* - Roundcube webmail: https://mail.yourdomain.com/mail/
* - netdata (monitor): https://mail.yourdomain.comk/netdata/
*
* - Web admin panel (iRedAdmin): https://mail.yourdomain.com/iredadmin/
*
* You can login to above links with below credential:
*
* - Username: postmaster@yourdomain.com
* - Password: YourStrongPasswordHere
*
*
********************************************************************
* Congratulations, mail server setup completed successfully. Please
* read below file for more information:
*
*   - /var/www/html/iRedMail-1.6.2/iRedMail.tips
*
* And it's sent to your mail account postmaster@yourdomain.com
*
********************* WARNING **************************************
*
* Please reboot your system to enable all mail services.
*
********************************************************************

Вам необходимо перезагрузить систему, а затем войти в веб-административную панель iRedMail по адресу https://mail.yourdomain.com/iredadmin/

После входа в систему вы увидите панель администратора iRedMail, как показано на рисунке ниже:

Как установить iRedMail на Ubuntu 22.04

Настройка SSL-сертификата

Установка

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

Давайте «прикрутим» бесплатный сертификат от Let’s Encrypt. Для этого открываем конфиг nginx:

sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf

и добавляем секцию:

server {
    …
    root /var/www/html;
    index index.php index.html;

    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }

    include …
    …
}

Перезапускаем web-сервер nginx:

sudo service nginx restart

Устанавливаем certbot-агент для работы с сертификатами Let’s Encrypt:

 sudo apt install certbot

и запускам процесс получения сертификата:

certbot certonly --webroot --agree-tos --email postmaster@itshaman.ru --webroot-path /usr/share/nginx/html/ -d mail.itshaman.ru

Где mail.itshaman.ru — это ваш домен. Стоит уточнить, что мы получаем сертификат не для домена второго уровня, а для домена третьего уровня — mail.ВАШ_ДОМЕН.ru

Процесс должен завершиться выводом поздравления:

Successfully received certificate.

Далее нам нужно удалить самоподписанные сертификаты, которые были добавлены при установке iRedMail, и поставить ссылки на только что созданные.

Удаляем:

rm -f /etc/ssl/private/iRedMail.key
rm -f /etc/ssl/certs/iRedMail.crt

Новые ссылки:

ln -s /etc/letsencrypt/live/mail.itshaman.ru/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/mail.itshaman.ru/privkey.pem /etc/ssl/private/iRedMail.key

Где mail.itshaman.ru — должен быть указан ваш домен.

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

systemctl reload nginx postfix dovecot

Автоматическое обновление

Так как сертификат выдается всего на 90 дней, его нужно переодически продлевать. Давайте создадим CRON-задачу.

Открываем crontab:

crontab -e

И в конце файла добавляем строку:

0 0 * * 1,4 /usr/bin/certbot renew --noninteractive

Отключение HTTPS

Если сервер iRedMail находиться за обратным прокси, то нужно отключить HTTP и перевести все на HTTP.

iredadmin

Нужно правильно настроить nginx, который на машине с iredmail. В директории /etc/nginx/sites-enabled/ должен быть только один файл «00-default-ssl.conf:

#
# Note: This file must be loaded before other virtual host config files,
#
# HTTPS
server {
    listen 80;
#    listen [::]:443 ssl http2;
    server_name _;
    root /var/www/html;
    index index.php index.html;
    include /etc/nginx/templates/misc.tmpl;
#    include /etc/nginx/templates/ssl.tmpl;
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    include /etc/nginx/templates/netdata.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;
    include /etc/nginx/templates/stub_status.tmpl;
}

roundcube

Откройте файл /opt/www/roundcubemail/config/config.inc.php и поменяйте значение на false:

$config['force_https'] = false;

Отключение IPv6

Неотвратимая победа протокола IPv6 пока не наступила, поэтому стоит его пока отключить, чтобы случайно ваш сервер не начал отправлять почту с него (либо можно указать PTR-запись и ему тоже).

Нужно зайти в конфиг Postfix – /etc/postfix/main.cf и в строке inet_protocols = all заменить на inet_protocols = ipv4.

nano /etc/postfix/main.cf

Далее перечитать параметры Postfix:

systemctl reload postfix

Чтобы ваши письма не попали в спам

A-запись

mail A 90.156.242.199

MX-запись

@ MX mail

SPF-запись

@ text="v=spf1 a mx -all"

DKIM

Смотрим какая DKIM-запись создана при установке почтового сервера:

amavisd showkeys

Получаем вывод:

; key#1 2048 bits, i=dkim, d=itshaman.ru, /var/lib/dkim/itshaman.ru.pem
dkim._domainkey.itshaman.ru.    3600 TXT (
  "v=DKIM1; p="
  "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnlLcUM3rHBDc9zdfl5AJ"
  "atMjNIRJFKQhI9FYccYI2Jpz34u/xWgDO+wuKzNLadCheZQ62zt4O3rDGa2N5v/J"
  "wn8Sr+8oO8kzStbHPnPhPTzuGofVfkv8oRF7AmVQfb6LrvbF0hcZtLZWwgLgNqNx"
  "3Wy46I30aHDNL5qwILl4nIFcMxnByPD3GcgKYOef4YoQA+vQyzNNZDsf+tQWrp1P"
  "V6UzYi7y6gLBWL1YXQpLlQ0vp9LWnOpLHh2WfubdA3HzjTbiMAqOUUk0wKVDjDuO"
  "tovqQJaVme8lw53gCxKARR2+72ZZyGfCZqci9ssOinrErFrhwtXVh6Qp9ged48pV"
  "iwIDAQAB")

Создаем TXT-запись вида:

dkim._domainkey text="v=DKIM1; p=MIIBIjA...iwIDAQAB"

Все кавычки, пробелы и переносы строк удаляем.

DMARC

_dmarc. 3600 IN TXT "v=DMARC1; p=quarantine; sp=none; pct=100; fo=0; rua=mailto:postmaster@itshaman.ru"

Почту указываем ту, которую будит читать системный администратор.

Отладка

Проверяем видятся ли сертификаты

openssl s_client -connect mail.itshaman.ru:993 -showcerts

Вывод должен быть примерно таким:

Connecting to 52.182.27.114
CONNECTED(00000005)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=E5
verify return:1
depth=0 CN=mail.itshaman.ru
verify return:1
---
Certificate chain
 0 s:CN=mail.site2life.ru
   i:C=US, O=Let's Encrypt, CN=E5
   a:PKEY: id-ecPublicKey, 256 (bit); sigalg: ecdsa-with-SHA384
   v:NotBefore: Mar  5 06:28:48 2025 GMT; NotAfter: Jun  3 06:28:47 2025 GMT
...

Подключиться к IMAP и SMTP

Проверить какие версии TLS поддерживает сервер IMAP:

openssl s_client -connect mail.itshaman.ru:993 -starttls imap

Проверить какие версии TLS поддерживает сервер SMTP:

openssl s_client -connect mail.itshaman.ru:587 -starttls smtp

Проверить на каких портах работают службы

Nginx:

Если используете nginx на сервере iRedMail, то проверяем на нем, если есть обратный прокси то на нем.

ss -tlnp | grep nginx

Вывод:

LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:(("nginx",pid=1026693,fd=33),("nginx",pid=1026692,fd=33),("nginx",pid=1026691,fd=33),("nginx",pid=1026690,fd=33),("nginx",pid=1026689,fd=33))
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:(("nginx",pid=1026693,fd=32),("nginx",pid=1026692,fd=32),("nginx",pid=1026691,fd=32),("nginx",pid=1026690,fd=32),("nginx",pid=1026689,fd=32))
LISTEN 0      511          0.0.0.0:587        0.0.0.0:*    users:(("nginx",pid=1026693,fd=35),("nginx",pid=1026692,fd=35),("nginx",pid=1026691,fd=35),("nginx",pid=1026690,fd=35),("nginx",pid=1026689,fd=35))
LISTEN 0      511          0.0.0.0:993        0.0.0.0:*    users:(("nginx",pid=1026693,fd=34),("nginx",pid=1026692,fd=34),("nginx",pid=1026691,fd=34),("nginx",pid=1026690,fd=34),("nginx",pid=1026689,fd=34))

Dovecot:

ss -tlnp | grep dovecot

Вывод:

LISTEN  0  4096 0.0.0.0:143  0.0.0.0:*  users:(("dovecot",pid,fd))
LISTEN  0  4096 0.0.0.0:993  0.0.0.0:*  users:(("dovecot",pid,fd))
LISTEN  0  4096 0.0.0.0:110  0.0.0.0:*  users:(("dovecot",pid,fd))
LISTEN  0  4096 0.0.0.0:995  0.0.0.0:*  users:(("dovecot",pid,fd))

Проверить логи

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

journalctl -u dovecot --no-pager | tail -n 20
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.rosehosting.com

Похожие статьи

Комментарии (0)