Установка и настройка iRedMail на CentOS


Тематические термины: iRedMail, CentOS, Postfix, Dovecot, Roundcube, POP3, IMAP, PTR, SPF, DKIM
Данная инструкция протестирована на CentOS версий 7 и 8, а также Rocky Linux.
Подготовка системы
Установка iRedMail
Отключение Graylisting
Создание пользователя
Проверка сервера
Защита от попадания в СПАМ
Управление белыми и черными списками
Установка сертификата
Отключение защиты от СПАМа и вирусов
Настройка почтового клиента
Создание групп рассылок
Сброс пароля администратора
Настройки аутентификации
Отключить SSL
Настройка политики паролей
Отключить проверку логина и пароля на SMTP
Дополнительные настройки
Лимит на объем сообщения
Администратор для домена
Пересылка нежелательных писем на специальный ящик
Настройка перенаправления почты
Решение проблем
Аналоги iRedMail
Подготовка системы
Задаем имя сервера:
hostnamectl set-hostname relay.dmosk.ru
* обязательно задать полное (FQDN) имя, в противном случае, когда мы будем запускать установку почтового сервера мы получим ошибку << ERROR >> Please configure a fully qualified domain name (FQDN) in /etc/hosts before we go further.
Устанавливаем wget и tar (нужны для скачивания и распаковки архива iRedMail):
yum install wget tar
В CentOS 8 необходимо включить репозиторий PowerTools:
dnf config-manager --set-enabled PowerTools
В последних версиях iRedMail необходимо использовать веб-сервер NGINX, поэтому останавливаем apache и отключаем его автозапуск:
systemctl stop httpd
systemctl disable httpd
* если в системе не установлен Apache (httpd), мы увидим ошибку или предупреждение.
Установка iRedMail
На странице загрузки iRedMail копируем ссылку на последнюю версию сборки:
Скачиваем сборку:
wget -O iredmail.tar.gz https://github.com/iredmail/iRedMail/archive/1.4.2.tar.gz
* где https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gz — ссылка на скачивание версии, актуальной на момент обновления инструкции.
Распаковываем скачанный архив:
tar zxvf iredmail.tar.gz
Переходим в распакованную папку:
cd iRedMail-*
Запускаем скрипт установки:
bash iRedMail.sh
В открывшемся приветствии отвечаем Yes:
Вводим путь для хранения почты или оставляем предложенный по умолчанию:
Выбираем веб-сервер, на котором будет работать консоли управления и доступа к почте:
* с версии 0.9.8 только nginx.
Выбираем средство хранения данных:
Задаем пароль администратора базы данных:
Вводим наш почтовый домен:
Задаем пароль для администратора почтовыми ящиками:
Выбираем все дополнения для удобства работы с iRedMail:
Подтверждаем введенные настройки (y) и нажимаем Enter. На все последующие вопросы тоже отвечаем y.
Ждем окончания процесса.
Отключение Graylisting
Graylisting является мощным инструментом в борьбе со СПАМом, но при начальном тестировании сервера он создаст много неудобств. На время проверки почтовика Graylisting лучше отключить. Для этого добавляем права на редактирование следующему файлу:
chmod u+w /opt/iredapd/settings.py
Открываем для редактирования следующий файл:
vi /opt/iredapd/settings.py
Находим строчку:
plugins = ["reject_null_sender", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]
И убираем "greylisting".
Возвращаем права:
chmod u-w /opt/iredapd/settings.py
Перезагружаем iredapd:
systemctl restart iredapd
Создание пользователя
Открываем браузер и в адресной строке вводим https://IP-адрес_сервера/iredadmin/
Откроется страница входа в панель управления. Вводим логин postmaster@dmosk.ru и пароль (пароль и домен dmosk.ru — данные, которые мы вводили при установке iRedMail).
Создадим первого пользователя. Для этого переходим по Add - User:
Заполняем поля и создаем пользователя:
Проверяем работу сервера
Получение
Чтобы проверить получение почты, для домена должна быть настроена MX-запись. Открываем панель администрирования записей для домена и создаем запись типа MX (приоритет может быть любой, он важен, если используется несколько почтовых серверов). Запись должна вести на имя сервера, например:
dmosk.ru MX 10 mail.dmosk.ru
* в данном примере добавлена MX-запись для домена dmosk.ru. Ее приоритет 10 и она говорит, что отправлять почту для домена нужно на сервер mail.dmosk.ru.
Чтобы другой сервер понимал, какой адрес у mail.dmosk.ru, создаем запись типа А. Пример:
mail.dmosk.ru A 90.156.242.197
* где mail.dmosk.ru — имя нашего сервера.
На применение настроек DNS может уйти несколько часов. Ждем и пробуем отправить письма на наш домен.
Отправка почты
Открываем браузер и в адресной строке вводим https://IP-адрес_сервера/mail/
Откроется панель для работы с почтой — вводим логин и пароль от созданного пользователя (логин должен быть с доменом, в нашем примере, test1@dmosk.ru)
Нажимаем Написать сообщение и отправляем тестовое сообщение на один из своих адресов:
Если письма не отправляются, выполняем рекомендации ниже по предотвращению попадания в СПАМ.
Защищаем сообщения от попадания в СПАМ
Чтобы другие почтовые системы не принимали наши письма за СПАМ, выполняем следующие рекомендации:
А-запись в DNS
Для почтового сервера должна быть создана А-запись в DNS. Пример записи:
mail.dmosk.ru A 90.156.242.197
* где mail.dmosk.ru — имя нашего сервера. По идее, данную запись мы создавали выше при проверке входящих сообщений.
Создаем PTR-запись для внешнего IP-адреса
Она должна вести на имя сервера (в данном примере, mail.dmosk.ru). Чтобы создать такую запись, нужно написать обращение Интернет-провайдеру или хостеру виртуальной машины. Пример записи:
171.23.222.83.in-addr.arpa name = mail.dmosk.ru
Добавляем SPF-запись для домена
Эта запись создается в DNS для домена, от которого идет отправка сообщений. Пример:
dmosk.ru text = "v=spf1 +a +mx -all"
Прописываем DKIM в DNS
Для начала, смотрим ключ, который был сформирован во время установки iRedMail:
amavisd -c /etc/amavisd/amavisd.conf showkeys
Пример ответа:
dkim._domainkey.dmosk.ru. 3600 TXT (
"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+Ief"
"zcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia"
"+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHK"
"d2mdqfW+emSW/paUwQIDAQAB")
Копируем DKIM и создаем в DNS запись TXT. Пример:
dkim._domainkey.dmosk.ru text = "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+IefzcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHKd2mdqfW+emSW/paUwQIDAQAB"
Создать другую подпись DKIM
Генерируем новый ключ:
amavisd genrsa /var/lib/dkim/dmosk2.ru.pem 1024
* где dmosk2.ru — новый домен, для которого мы сгенерируем подпись dkim.
* некоторые системы не работают с ключами более чем 1024 бит.
Задаем права на созданный файл:
chown amavis:amavis /var/lib/dkim/dmosk2.ru.pem
chmod 0400 /var/lib/dkim/dmosk2.ru.pem
Открываем конфигурационный файл amavisd:
vi /etc/amavisd/amavisd.conf
* если файла нет или он окажется пустым, vi /etc/amavisd.conf.
Находим строчку:
dkim_key('dmosk.ru', "dkim", "/var/lib/dkim/dmosk.ru.pem");
* напомню, что dmosk.ru — домен, который мы вводили при установке iRedMail. В каждом случае он будет другим.
И добавляем радом с ней новую. Получится так:
dkim_key('dmosk.ru', "dkim", "/var/lib/dkim/dmosk.ru.pem");
dkim_key('dmosk2.ru', "dkim", "/var/lib/dkim/dmosk2.ru.pem");
Теперь находим строчку:
@dkim_signature_options_bysender_maps = ( {
...
"dmosk.ru" => { d => "dmosk.ru", a => 'rsa-sha256', ttl => 10*24*3600 },
И также после нее добавляем новую. Должно получиться:
@dkim_signature_options_bysender_maps = ( {
...
"dmosk.ru" => { d => "dmosk.ru", a => 'rsa-sha256', ttl => 10*24*3600 },
"dmosk2.ru" => { d => "dmosk2.ru", a => 'rsa-sha256', ttl => 10*24*3600 },
Перезапускаем amavisd:
systemctl restart amavisd
Посмотреть DKIM последовательность для нового домена можно командой:
amavisd -c /etc/amavisd/amavisd.conf showkeys
Ящик abuse
По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик abuse@... На данный ящик могут приходить жалобы на СПАМ. Стоит время от времени просматривать его (или настроить переадресацию), и реагировать на жалобы.
Управление белыми и черными списками
Переходим в каталог с утилитами iredmail:
cd /opt/iredapd/tools/
Просмотреть содержимое белого и черного списков:
python wblist_admin.py --list --whitelist
python wblist_admin.py --list --blacklist
Добавить в списки:
python wblist_admin.py --add --whitelist 111.112.113.114 info@domain.ru @dmosk.ru @.dmosk.ru
python wblist_admin.py --add --blacklist 111.112.113.115 @baddomain.com
* Первая команда добавит в белый список адрес 111.112.113.114, email info@domain.ru и домен dmosk.ru со всеми поддоменами. Вторая команда добавит в черный список адрес 111.112.113.115 и домен baddomain.com.
Удалить из списка:
python wblist_admin.py --delete --whitelist 111.112.113.114 info@domain.ru @dmosk.ru @.dmosk.ru
python wblist_admin.py --delete --blacklist 111.112.113.115 @baddomain.com
* как видим, процесс удаления аналогичен — просто меняем --add на --delete.
Установка своего сертификата
При установке устанавливается самоподписанный сертификат. Это приведет к лишним сообщениям нарушения безопасности в браузере.
Для начала, получаем сертификат, заверенный доверенным центром сертификации. Его можно купить или получить бесплатно от Let's Encrypt. Мы рассмотрим последнее подробнее.
Открываем файл:
vi /etc/nginx/sites-enabled/00-default-ssl.conf
... и добавим в секцию server:
server {
...
location ~ /.well-known {
root /usr/share/nginx/html;
allow all;
}
...
}
Перечитаем конфиг nginx:
systemctl restart nginx
Устанавливаем утилиту для получения сертификата:
yum install certbot
И получаем сертификат командой:
certbot certonly --webroot --agree-tos --email postmaster@dmosk.ru --webroot-path /usr/share/nginx/html/ -d mail.dmosk.ru
* обратите внимание, что в данном примере мы получим сертификат для узла mail.dmosk.ru.
Продолжаем выполнение операции:
(Y)es/(N)o: Y
Мы должны увидеть подтверждение об успешном получении сертификата:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live...
Удаляем старые сертификаты:
\rm /etc/pki/tls/private/iRedMail.key
\rm /etc/pki/tls/certs/iRedMail.crt
Создаем переменную с нашим именем узла, на который мы получили сертификат (для удобства):
DOMAIN=mail.dmosk.ru
И создаем симлинки на полученные:
ln -s /etc/letsencrypt/live/$DOMAIN/cert.pem /etc/pki/tls/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/pki/tls/private/iRedMail.key
* cert.pem и iRedMail.crt — открытые ключи (public); privkey.pem и iRedMail.key — закрытые (private); mail.dmosk.ru — узел, для которого был получен сертификат (его мы задали в переменной DOMAIN). Обратите внимание, что в нашем примере прописаны пути до сертификатов от Let's Encrypt — если у вас свои сертификаты, пути должны быть соответствующими.
Перезапускаем следующие службы:
systemctl restart iredapd
systemctl restart nginx
Для автоматического продления сертификата создаем в cron задачу:
crontab -e
Добавим:
0 0 * * 1,4 /usr/bin/certbot renew && systemctl restart nginx && systemctl restart iredapd
Отключение антивируса и антиспама
Отключить защиту для почты может понадобиться при различных обстоятельствах, например:
- Для диагностики проблем отправки сообщений.
- Экономии ресурсов (антивирус может слишком много потреблять ресурсов).
- При отсутствии необходимости.
И так, для отключения amavis (clam + spamassassin) открываем файл:
vi /etc/amavisd/amavisd.conf
Приводим к следующему виду настройку:
@bypass_virus_checks_maps = (1);
@bypass_spam_checks_maps = (1);
* в данном примере мы сняли комментарий с данных строк (если они были закомментированы) и задаем для них значение 1. Опция bypass_virus_checks_maps отвечает за включение проверки писем на вирусы; bypass_spam_checks_maps — на СПАМ.
Перезапускаем службу amavisd:
systemctl restart amavisd
После данной настройки письма будут отправляться без проверок. Однако, сервис антивируса будет, по-прежнему, работать.
Останавливаем и отключаем сервис clamd:
systemctl disable clamd@amavisd --now
Настройка почтового клиента
Помимо веб-интерфейса, мы можем работать с нашим сервером iredmail, используя почтовые клиенты, такие как MS Outlook, Mozilla Thunderbird и так далее.
Для подключения клиента используем следующие параметры:
Настройка | IMAP | POP3 | SMTP |
Адрес сервера | IP-адрес сервера или его имя | ||
Порт | 143 | 110 | 587 |
SSL | STARTTLS | ||
Имя пользователя | Почтовый адрес, к которому выполняем подключение | ||
Пароль | Пароль для почтового ящика |
Пример настройки в Mozilla Thunderbird:
Группы рассылки
В профессиональной платной версии iRedMail можно управлять группами рассылки из веб-интерфейса. Данный процесс не вызовет сложностей. Мы же рассмотрим, как создать группу для рассылки через запросы SQL. Данный метод является единственным для бесплатной версии.
Подключаемся к базе данных (в нашем примере, это mariadb):
mysql -uroot -p
Используем нашу базу для почты:
> use vmail
Создадим группу рассылки:
> INSERT INTO alias (address, domain, active) VALUES ('managers@dmosk.ru', 'dmosk.ru', 1);
* в данном примере мы создали группу с почтовым адресом managers@dmosk.ru для домена dmosk.ru.
Теперь добавим в нее три адреса:
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('managers@dmosk.ru', 'postmaster@dmosk.ru', 'dmosk.ru', 'dmosk.ru', 1, 1);
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('managers@dmosk.ru', 'test1@dmosk.ru', 'dmosk.ru', 'dmosk.ru', 1, 1);
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('managers@dmosk.ru', 'example@gmail.com', 'dmosk.ru', 'gmail.com', 1, 1);
* в данном примере мы добавили в созданный адрес рассылки managers@dmosk.ru три адреса — postmaster@dmosk.ru, test1@dmosk.ru, example@gmail.com. Обратите внимание, что последний адрес на бесплатном сервисе от Google.
Сбросить пароль
В бесплатной версии iredmail сброс паролей выполняется напрямую в СУБД или каталоге LDAP. Подробнее процедура описана на официальном сайте. Мы же рассмотрим пример работы с базой MySQL.
Создаем хэш для пароля:
doveadm pw -s 'ssha512'
Система попросит нас ввести дважды пароль — вводим тот, что хотим использовать. В итоге, мы получим хэш, например:
{SSHA512}53iNTXnhUNMXmhKOEARf38tD1I/xbafuQ3HIrQxCnI0Pxj0Ikp87rxnFE2bTEEEQHquU7+w9nwGlmTNqjqIHEqKgJhw=
Подключаемся к базе:
mysql -p
Выбираем базу:
> USE vmail
Смотрим пользователей:
> select username, isadmin, isglobaladmin from mailbox;
Сбрасываем пароль для пользователя с правами администратора, например:
> UPDATE mailbox SET password='{SSHA512}53iNTXnhUNMXmhKOEARf38tD1I/xbafuQ3HIrQxCnI0Pxj0Ikp87rxnFE2bTEEEQHquU7+w9nwGlmTNqjqIHEqKgJhw=' WHERE username='postmaster@dmosk.ru';
* в нашем примере, для postmaster@dmosk.ru.
Настройка аутентификации
В данном разделе рассмотрим некоторые настройки аутентификации на сервисах почтовой системы iRedMail.
Разрешить соединение без STARTTLS
После установки iRedMail, система будет требовать от клиента безопасного соединения по TLS. При необоходимости, можно отключить данную возможность.
Отключение для SMTP
Открываем конфигурационный файл postfix:
vi /etc/postfix/main.cf
Задаем следующие настройки:
...
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
#smtpd_tls_auth_only = yes
...
* где:
- smtpd_sasl_auth_enable разрешает или запрещает аутентификацию;
- smtpd_sasl_security_options — дополнительные опции для аутентификации;
- smtpd_tls_auth_only — разрешает соединение SMTP только по TLS.
В данном примере мы разрешаем аутентификацию, запрещаем анонимные соединения и комментируем опцию, которая требует только безопасного соединения.
Перезапускаем postfix:
systemctl restart postfix
Отключение для IMAP/POP3
Открываем конфигурационный файл dovecot:
vi /etc/dovecot/dovecot.conf
Задаем следующие настройки:
ssl = yes
disable_plaintext_auth = no
* где disable_plaintext_auth запрещает аутентификацию без защиты; ssl задает опцию защиты (в данном примере, разрешить, но не требовать).
Перезапускаем dovecot:
systemctl restart dovecot
Настройка политики паролей
По умолчанию, система требует сложные пароли. Если это нам мешает, мы можем поменять настройку в файле:
vi /opt/www/iredadmin/settings.py
Для длины пароля меняем:
min_passwd_length = 8
max_passwd_length = 0
А также дописываем те опции, которые хотим переопределить:
PASSWORD_HAS_LETTER = False
PASSWORD_HAS_UPPERCASE = False
PASSWORD_HAS_NUMBER = False
PASSWORD_HAS_SPECIAL_CHAR = False
* не рекомендуется отключать все требования. Стоит оставить только те, которые мешают работе.
** где:
- PASSWORD_HAS_LETTER — должен ли пароль содержать буквы алфавита.
- PASSWORD_HAS_UPPERCASE — должен ли содержать буквы в верхнем регистре.
- PASSWORD_HAS_NUMBER — должны ли быть цифры.
- PASSWORD_HAS_SPECIAL_CHAR — требуется ли использовать специальные символы.
Чтобы настройки применились, перезагружаем uwsgi:
systemctl restart uwsgi
Однако, в моем случае настройка не применилась. По ощущениям, из-за кэша. В итоге, помогла полная перезагрузка сервера.
Отключить аутентификацию при отправке почты
Нам может потребоваться отключить необходимость проходить проверку подлинности при отправке почты. Для это открываем файл:
vi /etc/postfix/main.cf
Находим опцию mynetworks и добавляем в нее через пробел сети или адреса компьютеров, с которых мы хотим разрешить отправку почты без проверки подлинности:
mynetworks = 127.0.0.1 [::1] 172.16.10.0/24
* в данном примере мы разрешаем локальному хосту и всех подсети 172.16.10.0/24.
Также нам нужно найти директиву smtpd_recipient_restrictions и сделать так, чтобы правило permit_mynetworks было выше правила check_policy_service inet:127.0.0.1:7777, например:
smtpd_recipient_restrictions =
reject_non_fqdn_recipient
reject_unlisted_recipient
permit_mynetworks
check_policy_service inet:127.0.0.1:7777
permit_sasl_authenticated
reject_unauth_destination
check_policy_service inet:127.0.0.1:12340
Можно перезагружать postfix:
systemctl restart postfix
Дополнительная настройка
Лимит на объем отправляемого сообщения
Задается командой:
postconf -e "message_size_limit = 31457280"
* в данном примере выставлен лимит в 30 мб.
После перезапускаем сервис Postfix:
systemctl restart postfix
Настройка администратора для домена
В бесплатной версии программы из веб-панели можно назначить только глобального администратора. Но если нам нужно задать привилегированного пользователя только для одного домена, необходимо вносить настройки напрямую в базу данных.
Создаем пользователя в iredadmin и подключаемся к SQL-оболочке, в зависимости от того, какая СУБД была установлена. В нашем примере, это mariadb:
mysql -uroot -p
Используем базу vmail:
> use vmail
Изменим настройки для созданного пользователя:
> UPDATE mailbox SET isadmin=1, isglobaladmin=0 WHERE username='postmaster@test.local';
* в данном примере мы указываем, что пользователь postmaster@test.local должен быть админом (isadmin=1), но не глобальным админом (isglobaladmin=0).
Теперь укажем, для какого домена пользователь должен быть администратором:
> INSERT INTO domain_admins (username, domain) VALUES ('postmaster@test.local', 'test.local');
* в данном примере мы добавили запись, в которой указали, что пользователь postmaster@test.local является администратором для домена test.local. При необходимости разрешить одному пользователю управлять несколькими доменами, мы должны выполнить несколько аналогичных запросов.
Перенаправление СПАМа на специальный ящик
По умолчанию, письма с отметкой [SPAM] в теме письма приходят на ящики пользователей. Если мы хотим, чтобы наш сервер пересылал все сообщения с подозрением на СПАМ в специальный ящик, выполняем следующее.
Открываем на редактирование файл:
vi /etc/postfix/header_checks
... и добавляем строку:
/^SUBJECT:\s+\[SPAM\]/ REDIRECT spam@dmosk.ru
* в даной инструкции мы говорим проверять заголовок, и если находим в теме [SPAM], перенаправляем письмо на ящик spam@dmosk.ru.
Проверяем настройку командой:
postmap -q "Subject: [SPAM] test" pcre:/etc/postfix/header_checks
Мы должны увидеть что-то на подобие:
REDIRECT spam@dmosk.ru
Теперь открываем файл:
vi /etc/postfix/master.cf
Находим в нем все опции no_header_body_checks и удаляем их. Данные опции запрещают проверку заголовков, что помешает нам использовать опцию header_checks в Postfix.
Перезапускаем службу mta:
systemctl restart postfix
Перенаправление почты для почтового ящика
Настройка пересылки писем через веб-интерфейс доступна только в Pro версии. В бесплатной это можно сделать с помощью прямых запросов в базу. Рассмотрим одну SQL-команду.
Подключаемся к базе данных:
mysql -uroot -p
Используем нашу базу для почты:
> use vmail
Создадим настройку для пересылки:
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_forwarding, active) VALUES ('iredmail_user@dmosk.ru', 'other_user@example.com', 'dmosk.ru', 'example.com', 1, 1);
* в данном примере мы перенаправим всю почту, которая придет на адрес iredmail_user@dmosk.ru на почтовый ящик other_user@example.com.
Чтобы удалить перенаправление, сначала находим нужную нам строку:
> SELECT * FROM forwardings WHERE address!=forwarding;
Затем просто ее либо удаляем по идентификатору:
> DELETE FROM forwardings WHERE id='10';
* в моем примере нужная нам строка была под идентификатором 10.
... или можно просто отключить перенаправления, не трогая троку:
> UPDATE forwardings SET active='0' WHERE id='10';
Решение проблем
Рассмотрим некоторые проблемы, с которыми столкнулся я.
internal server error
При попытке зайти на веб-интерфейс, мы можем увидеть ошибку internal server error.
Причина: данное сообщение означает о наличии какой-то ошибки в работе сервера, как правило, при попытке интерпретировать страницу. Более точную причину можно узнать только в логе.
Решение: так как сообщение является общим и может означать любую ошибку, необходимо открыть лог сервера:
tail -f /var/log/messages
Еще раз загрузить страницу и получить ошибку. После посмотреть в лог и уже ориентироваться по его тексту.
Например, я увидел сообщение:
ModuleNotFoundError: No module named 'web'
Оно означает, что для интерпретатора python нет нужного модуля. По какой-то причине, он не был установлен. Тогда просто установим его вручную:
pip3 install web.py==0.62
* актуальную версию можно посмотреть на странице pypi.org/project/web.py.
После нужно будет перезагрузить uwsgi:
systemctl restart uwsgi
Отсутствует криптографическая функция
Ошибка появляется при попытке изменить пароль пользователя в Roundcube.
Причина: отсутствует модуль php-mcrypt.
Решение: для установки php-mcrypt на CentOS 7 используем команду:
yum install php-mcrypt
Пакет php-mcrypt был удален из репозиториев начиная с CentOS/Rocky Linux 8, поэтому установка производится немного иначе, чем на более старых версиях.
Устанавливаем EPEL-репозиторий:
dnf install epel-release
Устанавливаем пакеты, необходимые для сборки расширения mcrypt:
dnf install libmcrypt-devel gcc make php-devel
Скачиваем исходники расширения mcrypt:
wget https://pecl.php.net/get/mcrypt-1.0.5.tgz
Распакуем их:
tar -zxf mcrypt-*.tgz
Переходим в директорию исходников и компилируем расширение:
cd mcrypt-*/
phpize
./configure
make
Установите расширение:
make install
Добавим строку extension=mcrypt.so в файл конфигурации PHP (/etc/php.ini):
echo "extension=mcrypt.so" > /etc/php.d/20-mcrypt.ini
Перезапустите php-интерпретатор (в нашем случае это php-fpm) и проверьте, что расширение установлено:
systemctl restart php-fpm
php -m | grep mcrypt
Если выводится строка mcrypt, то расширение успешно установлено.
Аналоги iRedMail
Если есть причины, по которым iRedMail не подходит, можно рассмотреть другие варианты:
1. iRedMail Pro. Платная версия настроенного в данной инструкции программного обеспечения. Обладает расширенными настройками и возможностями.
2. Ручная сборка компонентов для почтового сервера. Пример данной настройки описан в статье Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим.
3. Microsoft Exchange Server (на Windows). Платный сервер, работает в среде Active Directory.
4. Zimbra (на Linux). Готовая сборка. Есть платная и бесплатная версии. Пример установки и настройки в инструкции Установка и настройка Zimbra на Linux.