Установка iRedMail

Введение

iRedMail - это готовая сборка почтового сервера с открытым исходным кодом. В основе сборки лежит SMTP-сервер Postfix (Mail Transfer Agent, сокращенно MTA). Так же в сборку входят: Dovecot, SpamAssassin, Greylist, ClamAV, SOGo Roundcube, NetData и NGINX.

Dovecot - IMAP/POP3 сервер.

Spamassassin - средство фильтрации спама.

Greylist - средство борьбы со спамом на основе серых списков.

ClamAV - антивирус.

Roundcube и SOGo - веб-клиенты  для работы с электронной почтой.

NetData - программа мониторинга работы сервера в реальном времени.

Nginx - веб-сервер.

Поддерживает операционные системы: CentOS 7, Debian 9, Ubuntu 16.04/18.04, FreeBSD 11/12 и OpenBSD 6.4.

iRedMail имеет платную и бесплатную версии, которые отличаются друг от друга функционалом собственного веб-интерфейса почтовой сборки iRedAdmin. В бесплатной версии можно только создавать домены, почтовые ящики пользователей и администраторов. Если вам необходимо создать алиас, то сделать это в бесплатной версии через iRedAdmin уже не получится. К счастью есть бесплатное решение, которое называется PostfixAdmin, позволяющее это реализовать. PostfixAdmin легко встраивается в iRedMail и прекрасно с ним работает.

Установка

Для установки нам понадобится одна из перечисленных выше операционных систем. Я буду использовать Ubuntu Server 18.04. Так же у вас должно быть купленное доменное имя и настроенная DNS зона. Если вы используете DNS сервера вашего доменного регистратора, то необходимо в разделе управления доменной зоной сделать две записи: A и MX. Так же можно использовать свой собственный DNS, настроив делегирование в личном кабинете регистратора вашего доменного имени.

Настройка доменной зоны при использовании DNS регистратора

Обратите внимание! Время вступления настроек DNS в силу от нескольких часов до одной недели. Пока настройки не  вступят в силу почтовый сервер не будет корректно работать.

Для установки скачиваем с сайта iRedMail актуальную версию. На текущий момент это 0.9.9.

[root@hostname ~] $ wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2

Загрузка актуальной версии iRedMail

Затем распаковываем скачанный архив.

[root@hostname ~] $ tar xjf iRedMail-0.9.9.tar.bz2

Распаковка архива

И переходим в созданную папку.

[root@hostname ~] $ cd iRedMail-0.9.9

Папка с установщиком iRedMail

Проверяем содержимое папки

[root@hostname ~] $ ls

Содержимое папки

И запускаем скрипт установки iRedMail.

[root@hostname ~] $ bash iRedMail.sh

Запустится установка почтовой системы. В процессе установки нужно будет ответить на ряд вопросов. Соглашаемся начать установку.

Начало установки

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

Выбор директории установки

Теперь нужно выбрать веб-сервер. Выбор не велик, поэтому выбираем NGINX.

Выбор веб-сервера

Теперь необходимо выбрать сервер баз данных, который будет установлен и настроен на работу с почтовой системой. Выбираем MariaDB.

Выбор сервера баз данных

Задаем root пароль на базу.

Создание root пароля базы данных

Теперь указываем наш почтовый домен.

Создание почтового домена

Затем создаем пароль на ящик администратора postmaster@домен.ru.

Создание пароля почтового администратора

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

Выбор веб-компонентов

Подтверждаем заданные настройки.

Подтверждение настроек

Установка запущена.

Установка

По окончании установки подтверждаем создание правила iptables для SSH и перезапускаем firewall. iRedMail работает с iptables. В Ubuntu чаще всего используют утилиту управления firewall UFW. Если у вас по той или иной причине возникнет такая необходимость, то установите UFW (apt install ufw) и добавьте правила что бы UFW (пример: ufw allow 'Nginx Full' или ufw allow Postfix) не блокировал работу почтового сервера. Посмотреть список доступных правил можно выполнив команду: ufw app list. Затем включите UFW: ufw enable.

Создание правила iptables

Перезапуск firewall

На этом установка iRedMail завершена. Система вывела нам адреса веб-интерфейсов и учетные данные для входа. Для включения всех компонентов почтовой системы необходимо выполнить перезагрузку сервера.

Окончание установки

Перезагружаемся.

[root@hostname ~] $ reboot

Перезагрузка

Настройка

Для начала нужно убедится, что все работает. Пробуем зайти в панель управления iReadAdmin по адресу https://домен/iredadmin. Логин postmaster@домен.ru, пароль создали при установке. Присутствует русскоязычный интерфейс.

iRedAdmin

Как видим все работает. При входе в iRedAdmin вы скорее всего получили ошибку безопасности, связанную с сертификатом. Это происходит потому, что iRedMail имеет вшитый самоподписной сертификат, на который и ругается браузер. Для устранения это проблемы необходимо установить действующий SSL сертификат. Если у вас есть купленный можете установить его. В примере я буду устанавливать бесплатный SSL от Let’s Encrypt.

Установка SSL сертификата Let’s Encrypt

Устанавливать сертификат мы будем при помощи утилиты certbot. Сначала добавим репозиторий.

[root@hostname ~] $ add-apt-repository ppa:certbot/certbot

Затем установим сам certboot с необходимыми компонентами.

[root@hostname ~] $ apt install python-certbot-nginx

Получаем сертификат.

[root@hostname ~] $ certbot --nginx -d домен.ru

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

Получение сертификата

Как видим сертификат успешно получен и система указала нам пути к самому сертификату и к ключу. Они то нам как раз и нужны. Вообще мы получили 4 файла, которые будут хранится в папке "/etc/letsencrypt/live/домен". Теперь необходимо сообщить веб-серверу о нашем сертификате, то есть заменить вшитый сертификат на тот, который мы только что получили. Для этого нам необходимо отредактировать всего лишь один файл.

[root@hostname ~] $ nano /etc/nginx/templates/ssl.tmpl

И изменяем в нем две последние строчки.

Заменяем SSL сертификат

Меняем пути в файле на пути, которые нам сообщила система при получении сертификата.

Замена SSL сертификата

И перезапускаем NGINX.

[root@hostname ~] $ service nginx restart

Теперь пробуем снова зайти в iRedAdmin.

Проверка SSL сертификата

Ошибки сертификата больше нет. Сертификат действителен. Можно кликнуть на замок и посмотреть его свойства. По окончании срока действия сертификата certboot должен обновить его в автоматическом режиме.

Теперь сообщим о сертификате Dovecot и Postfix. Для этого отредактируем два конфигурационных файла. Выполняем:

[root@hostname ~] $ nano /etc/dovecot/dovecot.conf

Находим блок:

#SSL: Global settings.

И меняем прописанный там сертификат на наш.

Замена сертификата для Dovecot

Так же обратите внимание на строчку "ssl_protocols". Ее значение должно быть "!SSLv3", иначе получите ошибку "Warning: SSLv2 not supported by OpenSSL. Please consider removing it from ssl_protocols" при перезапуске Dovecot.

Далее настроим Postfix:

[root@hostname ~] $ nano /etc/postfix/main.cf

Находим блок:

# SSL key, certificate, CA

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

Замена сертификата для Postfix

На этом установка сертификата закончена. Необходимо перезапустить Dovecot и Postfix, но лучше выполнить перезагрузку сервера.

[root@hostname ~] $ service dovecot restart
[root@hostname ~] $ service postfix restart

Или:

[root@hostname ~] $ reboot

Установка PHPMyAdmin

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

[root@hostname ~] $ apt install phpmyadmin

Установщик спросит на работу с каким веб-сервером настраивать PHPMyAdmin, так как NGINX в этом списке нет, просто нажимаем TAB и идем дальше.

Выбор веб-сервера

Далее соглашаемся и вводим пароль на системную базу данных. Можете придумывать пароль любой сложности, он вам в дальнейшем даже не понадобится.

Установка PHPMyAdmin

После окончания установки для того, что бы phpmyadmin заработал нужно сделать симлинк на директорию с которой по умолчанию работает NGINX.

[root@hostname ~] $ ln -s /usr/share/phpmyadmin /var/www/html

И пробуем зайти на https://домен/phpmyadmin/

PHPMyAdmin

PHPMyAdmin работает. Подключение защищено сертификатом, никаких ошибок нет. Идем дальше. Создадим администратора баз данных MySQL (MariaDB).

[root@hostname ~] $ mysql

И попадаем в консоль управления MariaDB. Далее поочередно делаем команды:

MariaDB > CREATE USER 'admin'@'localhost' IDENTIFIED BY 'пароль';
MariaDB > GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
MariaDB > FLUSH PRIVILEGES;

Создание пользователя MySQL

Пробуем авторизоваться с ним в PHPMyAdmin.

PHPMyAdmin

Все OK, вход выполнен. PHPMyAdmin готов к работе.

Установка PostfixAdmin

В принципе PostfixAdmin, как и PHPMyAdmin можно не устанавливать. Почтовый сервер прекрасно будет работать и без этих компонентов. Но тогда в вы не сможете создавать почтовые алиасы. Если вам этого и не надо, то смело можете пропустить эти разделы. Если же алиасы вам все таки нужны, то варианта у вас два: покупка платной версии iReaAdmin или установка PostfixAdmin. Конечно можно делать это и без дополнительного ПО, прописывая алиасы в базе данных в ручную, но это не всегда удобно и не для всех подходит. Я рекомендую использовать PostfixAdmin, его установку и интеграцию с iRedMail мы сейчас и рассмотрим. Запускаем установку:

[root@hostname ~] $ apt install postfixadmin

Соглашаемся и создаем пароль для системной базы программы.

Установка PostfixAdmin

Установка PostfixAdmin

Делаем симлинк по аналогии с установкой PHPMyAdmin.

[root@hostname ~] $ ln -s /usr/share/postfixadmin /var/www/html

Делаем пользователя, от имени которого запускается веб-сервер владельцем каталога. В нашем случае NGINX запускается от имени пользователя www-data.

[root@hostname ~] $ chown -R www-data /usr/share/postfixadmin

Теперь нам нужно отредактировать конфигурационный файл PostfixAdmin и внести в него информацию о базе данных, которую использует iRedAdmin. По умолчанию эта база называется vmail. Если зайти в PHPMyAdmin то можно ее там увидеть. И так, для того что бы PostfixAdmin мог вносить изменения в базу данных прописываем ее в конфигурации PostfixAdmin.

[root@hostname ~] $ nano /etc/postfixadmin/config.inc.php

Находим строки:

$CONF['database_type'] = $dbtype;
$CONF['database_host'] = $dbserver;
$CONF['database_user'] = $dbuser;
$CONF['database_password'] = $dbpass;
$CONF['database_name'] = $dbname;

И приводим к виду:

$CONF['database_type'] = 'mysqli'; # Тип базы данных
$CONF['database_host'] = 'localhost'; # Хост сервера баз данных
$CONF['database_user'] = 'admin'; # Логин с правами на запись в базу vmail. Можно использовать созданный ранее admin
$CONF['database_password'] = 'пароль'; # Пароль пользователя указанного выше
$CONF['database_name'] = 'vmail'; # Название базы данных iRedMail

Внесение информации о базе данных

Если вы планируете использовать почтовый веб-клиент SOGo, то необходимо сделать еще одно дополнительное действие, а именно поменять шифрование PostfixAdmin в пункте $CONF['encrypt'] с  'md5crypt' на 'dovecot:SHA512-CRYPT'. Если вы это не сделаете, то при попытке авторизации в SOGo пользователем созданным в PostfixAdmin получите ошибку неверный логин или пароль.

Изменение типа шифрования

Теперь, что бы успешно завершить установку и не получить ошибок необходимо выполнить запрос к базе данных. Удобно это сделать через PHPMyAdmin. Выбираем базу vmail и переходим на вкладку SQL. В окне вводим:

DROP INDEX domain on mailbox;
DROP INDEX domain on alias;
ALTER TABLE alias ADD COLUMN `goto` text NOT NULL;

Запрос к базе данных

И нажимаем "Вперед". Теперь у нас все готово, можно переходить в веб-интерфейс PostfixAdmin и завершать установку. Для этого в браузере необходимо набрать: https://домен/postfixadmin/setup.php.

Должно появиться следующее:

Установка PostfixAdmin

Если все сделано по инструкции, то ошибок быть не должно. Если все же будут, то их предается устранить, иначе система не даст вам продолжить. Задаем пароль установки и жмем "Generate password hash". Система сгенерирует хеш пароля, который необходимо вставить в параметр $CONF['setup_password'].

Завершение установки PostfixAdmin

Изменение настроек файла конфигурации

Теперь вводим только что созданный пароль и создаем администратора PostfixAdmin. Администратора с логином postmaster лучше не создавать, поскольку могут быть проблемы со входом в панель администрирования iRedAdmin.

Создание администратора PostfixAdmin

Создание администратора PostfixAdmin

Все, администратор создан. Можно выполнять вход.

Обратите внимание, что с точки зрения безопасности файл setup.php в директории postfixadmin лучше переименовать или удалить.

Переходим: https://домен/postfixadmin/ и вводим только что созданные учетные данные. В PostfixAdmin, так же как и в iRedAdmin, доступен русский язык. Его можно выбрать при авторизации.

PostfixAdmin

Пробуем создать почтовый ящик пользователя.

Создание почтового ящика

И авторизоваться в SOGo: https://домен/SOGo/

SOGo

Все получилось. Идем дальше.

Включение/Отключение модулей iRedMail

За управление модулями iRedMail отвечает iRedAPD. Он имеет конфигурационный файл, в котором прописаны работающие модули. Если тот или иной модуль вам не нужен, его можно удалить из файла конфигурации и он перестанет работать. Выполняем:

[root@hostname ~] $ nano /opt/iredapd/settings.py

Находим строчку "plugins" и удаляем из нее не нужные вам компоненты. Я уберу компонент "greylisting". Он конечно достаточно эффективно защищает от спама, по при этом часто не доходят и нужные письма.

Greylist (серый список) - технология автоматической защиты от спама, основанная на анализе поведения сервера отправителя почты. При включенном "greylisting" сервер в первый раз отказывается принять письмо с неизвестного ему адреса, сообщая о временной ошибке. В таком случае сервер отправитель должен повторить отправку позже. Спамерские программы обычно такого не делают. Если письмо отправляется повторно, оно добавляется в список на 30 дней и уже обмен почтой происходит с первого раза. Использовать этот модуль или нет решайте сами.

Включение/Отключение модулей почты

Включение/Отключение модулей почты

После внесения изменений необходимо перезапустить iRedAPD.

[root@hostname ~] $ service iredapd restart

Тестирование почтового сервера

На этом настройка почтового сервера iRedMail закончена. Можно приступать к завершающему этапу - тестированию. Создадим два почтовых ящика. Для проверки один через iRedAdmin, второй через PostfixAdmin и отправим письмо с одного ящика на другой и наоборот. В iRedAdmin создадим ящик user1@домен.ru. В PostfixAdmin - user2@домен.ru

Создание пользователя в iRedAdmin

Создание пользователя в PostfixAdmin

Проверяем что пользователи создались.

iRedAdmin

PostfixAdmin

Если вы обратить внимание на графу "Кому" в перечне ящиков PostfixAdmin, то можно заметить разницу между ящиками созданными в iRedAdmin и PostfixAdmin. Ящики созданные в iRedAdmin отмечены как "Forward only", а созданные в PostfixAdmin как - "Mailbox". Я сначала долго не мог понять почему так происходит и какая между ними разница, и наконец заметил одну вещь. Ящики в iRedAdmin создаются без алиасов, а ящики в PostfixAdmin с алиасом на самого себя.

Алиасы

И если эти алиасы удалить, то ящики станут отображаться как и созданные в iRedAdmin "Forward only".

Удаление алиасов

Алиасы удалены. Проверяем PostfixAdmin.

PostfixAdmin

Как видим все ящики стали "Forward only". Точно так же если создать в ящике созданном в iRedAdmin алиас сам на себя, то он станет "Mailbox". В принципе, на работоспособность почты это никак не влияет. Единственное вы не сможете создать алиас на ящике созданном в PostfixAdmin. Вместо создания алиаса, нужно будет отредактировать уже имеющийся. Кстати об алиасах, в новой версии iRedMail необходимо внести изменение в одну из карт Postfix, которая отвечает за алиасы. И если вы этого не сделаете, то созданные алиасы не будут работать. Для этого необходимо в файле /etc/postfix/mysql/virtual_alias_maps.cf исправить:

query = SELECT forwardings.forwarding FROM forwardings,domain WHERE forwardings.address='%s' AND forwardings.domain='%d' AND forwardings.domain=domain.domain AND forwardings.active=1 AND domain.backupmx=0 AND domain.active=1

На:

query = SELECT alias.goto FROM alias,domain WHERE alias.address='%s' AND alias.domain='%d' AND alias.domain=domain.domain AND alias.active=1 AND domain.backupmx=0 AND domain.active=1

Выполняем:

[root@hostname ~] $ nano /etc/postfix/mysql/virtual_alias_maps.cf

И исправляем.

Настройка алиасов

Перезапускаем Postfix:

[root@hostname ~] $ service postfix restart

После этого все должно заработать.

И так, приступим к проверке почты. В ящик user1 мы зайдем через Roundcube, а в ящик user2 - через SOGo и отправим письмо с ящика user1 на user2 и обратно.

Отправка письмо с Roundcube

Получение письма в SOGo

Отправка письма в SOGo

Получение письма в Roundcube

Все работает без каких либо проблем. Доставка письма занимает от двух до пяти секунд. Точно так же письма прекрасно доставляются на сервера яндекса и mail.ru (проверено).

Теперь проверим алиасы. Создадим ящик user3 и сделаем алиас с ящика user1 на ящик user2. И отправим письмо с ящика user3 на ящик user1. При этом письмо должно будет прийти на ящик user2.

Создание алиаса

Отправка письма с ящика user3 на ящик user1

Получение письма на ящике user2

С работой алиасов тоже все в порядке.

Протестируем работу почтового сервера через локальный почтовый клиент. В примере рассмотрим Mozilla Thunderbird. Создадим еще двух пользователей: client1 и client2. Один ящик подключим по IMAP, другой по POP3 и отправим письмо с одного ящика на другой.

Подключение по IMAP

Подключение по POP3

Отправляем письмо с Клиент 1 на Клиент 2.

Отправка с Клиент 1

Получение на Клиент 2

И в обратном порядке.

Отправка с Клиент 2

Получение на Клиент 1

Все работает.

Если перейти по адресу: https://домен/netdata, то можно наблюдать графики состояния системы.

NetData

NetData

NetData

NetData

NetData

Заключение

На этом установка, настройка и тестирование почтовой системы iRedMail закончены. В итоге мы получили полностью бесплатный полноценный почтовый сервер с действующим SSL сертификатом, двумя разными почтовыми веб-клиентами, двумя панелями управления, а так же встроенными в почту антиспамом и антивирусом. По вашему желанию вместо почтовых веб-клиентов можно использовать локальные почтовые клиенты такие как Microsoft Outlook или Mozilla Thunderbird. Если не планируете использовать почтовые веб-клиенты их можно вообще не устанавливать, что бы не нагружать лишним сервер, или установить что-то одно, что вам нравится больше. Мне лично больше нравится SOGo, тем что его интерфейс оптимизирован под мобильные устройства, тем самым очень удобно просматривать электронную почту со смартфона. Тоже самое касается NetData и iRedAdmin, если не планируете пользоваться то лучше не устанавливать. Данная почтовая система не сильно требовательна к ресурсам. Все это работает на VPS сервере с 1024 Мб оперативной памяти и одним виртуальным процессором. Если у вас остались какие-либо вопросы по данной почтовой системе пишите в комментариях.

P.S. В ходе тестирования данного продукта на различных операционных системах с 1 Гб оперативной памяти (Ubuntu, Debian, CentOS) выяснилось, что 1 Гб мало для работы ClamAV. Почти во всех случаях при использовании 1 Гб памяти антивирус ссылался на ошибку связанную с базой данных. При это на операционных системах Debian и Ubuntu антивирус просто не сканировал проходящую через сервер почту, в остальном все работало нормально. На CentOS ситуация была несколько иной. Служба clamd полностью вешала систему, тем самым делая невозможным нормальную работу сервера. При попытке входа в веб-интерфейсы периодически NGINX выдавал 502 и 504 ошибки. Почта отправлялась тоже через раз. При этом если добавить оперативной памяти до 2 Гб, то во всех случаях никаких проблем с работой антивируса и сервера в целом не наблюдалось. ClamAV сканировал проходящую через почтовый сервер почту, о чем писал в логах. При попытке отправить вирус во вложении оправка блокировалась. Потребление памяти составляло примерно 1.2 - 1.7 Гб.

Читайте также:

69
Оставить комментарий

7 Цепочка комментария
62 Ответы по цепочке
3 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
7 Авторы комментариев
новее старее большинство голосов
ftp1101

Статья хорошая, но есть дополнение к ней.
Если вы хотите работать с SOGo, то ОС должна быть с пометкой amd64, а не i386 (в этом случаи при установке iredmail выдаст ошибку с зависиимостями от SOGo, а исправить ее не будет возможности так как часть зависимостей только под эту версию процессора).

Плюс после установки версии 0.9.9 я не могу зайти ни в один из web интерфейсов (502 и 504 ошибка) — пока хз как исправить.

Никита

Не работа. Пишет что mesql сервер не работает. Ошибка 2002

HiJacker

Здравствуйте статья хорошая. Но на этапе ввода запроса DROP INDEX domain on mailbox; DROP INDEX domain on alias; ALTER TABLE alias ADD COLUMN goto text NOT NULL; Выдает ошибку : SQL запрос: DROP INDEX domain on mailbox Ответ MySQL: Документация #1091 — Невозможно удалить (DROP) ‘domain’. Убедитесь что столбец/ключ действительно существует Как следствие postfixadmin пишет Postfix Admin Setup Checker Running software: PHP version 7.2.19-0ubuntu0.18.04.2 Checking for dependencies: Magic Quotes: Disabled — OK Depends on: presence config.inc.php — OK Checking $CONF[‘configured’] — OK Smarty template compile directory is writable — OK Depends on: MySQL 4.1 — OK Testing database connection —… Подробнее »

HiJacker

А при просмотре таблицы domain выдает ошибку Warning in ./libraries/sql.lib.php#613
count(): Parameter must be an array or an object that implements Countable подскажите ПЛЗ. куда смотреть дальше

Юрий

Доброго дня! За статью спасибо, использовал некоторые моменты. Есть пара вопросов: 1. Через пару дней после установки и тестирования перестала работать панель postfixadmin, т.е. можно войти, просмотреть данные, но вот создать новый ящик не получается от слова совсем, хотя пару дней назад все работало! Ошибок в логах не вижу, через iRedAdmin ящики добавляются. 2. С любого веб клиента (использую Roundcube) почта уходит и приходит. С Mozilla не получается отправить, пишет ошибку. На сколько я понимаю проблема в параметре mynetworks = 127.0.0.1 [::1] файла /etc/postfix/main.cf каким образом изменить? Ставить ‘xx.xx.xx.0/24’ приемлемо разве что для локальной сети, а как работать остальным клиентам… Подробнее »

Андрей

Всё установил, открываются: iredadmin, SoGo, Roundcube, NetData, создал пару почтовых ящиков, но при попытке отправить тестовый емаил выскакивает SMTP Error (-1): Connection to server failed.
Так же и ничего не приходит. Как и где настраивать SMTP

alex

При установке postfixadmin выдает ошибку Invalid query: Data truncated for column ‘description’ at row 1
Народ говорит что поменялась структура базы vmail
https://www.linux.org.ru/forum/admin/14024033
но это было в 18 году у Вас статья свежее гораздо но ошибка присутствует. что можете посоветовать?