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, чтобы начать процесс установки.
Подтвердите путь к хранилищу, нажав Enter, чтобы скрипт продолжил установку.
Выберите Nginx в качестве веб-сервера, поскольку вы будете получать доступ к iRedMail через доменное имя.
В следующем окне выберите сервер базы данных. В данном руководстве будет использоваться MariaDB.
После выбора сервера базы данных введите надежный пароль MySQL root.
В следующем окне необходимо указать имя вашего домена yourdomain.com.
После установки домена необходимо ввести пароль администратора почтового домена.
В следующем окне просто нажмите кнопку Enter, чтобы продолжить установку, поскольку все опции отмечены по умолчанию.
В следующих вопросах просто введите 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, как показано на рисунке ниже:
Настройка 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
Комментарии (0)