Как установить и настроить iRedMail на Linux CentOS

Мы предоставляем услуги удаленного администрирования серверов

Как установить и настроить iRedMail на Linux CentOS

Обновлено Обновлено: Опубликовано:

Тематические термины: iRedMailCentOSPostfixDovecotRoundcubePOP3IMAPPTRSPFDKIM

Данная инструкция протестирована на CentOS версий 7 и 8.

Подготовка системы

Задаем имя сервера:

hostnamectl set-hostname relay.admins24.com

* обязательно задать полное (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.3.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/

Откроется страница входа в панель управления. Вводим логин [email protected] и пароль (пароль и домен admins24.com — данные, которые мы вводили при установке iRedMail).

Создадим первого пользователя. Для этого переходим по Add — User:

Заполняем поля и создаем пользователя:

Проверяем работу сервера

Получение

Чтобы проверить получение почты, для домена должна быть настроена MX-запись. Открываем панель администрирования записей для домена и создаем запись типа MX (приоритет может быть любой, он важен, если используется несколько почтовых серверов). Запись должна вести на имя сервера, например:

admins24.com   MX   10 mail.admins24.com

* в данном примере добавлена MX-запись для домена admins24.com. Ее приоритет 10 и она говорит, что отправлять почту для домена нужно на сервер mail.admins24.com.

Чтобы другой сервер понимал, какой адрес у mail.admins24.com, создаем запись типа А. Пример:

mail.admins24.com   A   90.156.242.197

* где mail.admins24.com — имя нашего сервера.

На применение настроек DNS может уйти несколько часов. Ждем и пробуем отправить письма на наш домен.

Отправка почты

Открываем браузер и в адресной строке вводим https://IP-адрес_сервера/mail/

Откроется панель для работы с почтой — вводим логин и пароль от созданного пользователя (логин должен быть с доменом, в нашем примере, [email protected])

Нажимаем Написать сообщение и отправляем тестовое сообщение на один из своих адресов:

Если письма не отправляются, выполняем рекомендации ниже по предотвращению попадания в СПАМ.

Защищаем сообщения от попадания в СПАМ

Чтобы другие почтовые системы не принимали наши письма за СПАМ, выполняем следующие рекомендации:

А-запись в DNS

Для почтового сервера должна быть создана А-запись в DNS. Пример записи:

mail.admins24.com   A   90.156.242.197

* где mail.admins24.com — имя нашего сервера. По идее, данную запись мы создавали выше при проверке входящих сообщений.

Создаем PTR-запись для внешнего IP-адреса

Она должна вести на имя сервера (в данном примере, mail.admins24.com). Чтобы создать такую запись, нужно написать обращение Интернет-провайдеру или хостеру виртуальной машины. Пример записи:

171.23.222.83.in-addr.arpa      name = mail.admins24.com

Добавляем SPF-запись для домена

Эта запись создается в DNS для домена, от которого идет отправка сообщений. Пример:

admins24.com     text = «v=spf1 +a +mx -all»

Прописываем DKIM в DNS

Для начала, смотрим ключ, который был сформирован во время установки iRedMail:

amavisd -c /etc/amavisd/amavisd.conf showkeys

Пример ответа:

dkim._domainkey.admins24.com.     3600 TXT (
  «v=DKIM1; p=»
  «MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+Ief»
  «zcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia»
  «+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHK»
  «d2mdqfW+emSW/paUwQIDAQAB»)

Копируем DKIM и создаем в DNS запись TXT. Пример:

dkim._domainkey.admins24.com     text = «v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+IefzcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHKd2mdqfW+emSW/paUwQIDAQAB»

Создать другую подпись DKIM

Генерируем новый ключ:

amavisd genrsa /var/lib/dkim/admins242.ru.pem 1024

* где admins242.ru — новый домен, для которого мы сгенерируем подпись dkim.
* некоторые системы не работают с ключами более чем 1024 бит.

Задаем права на созданный файл:

chown amavis:amavis /var/lib/dkim/admins242.ru.pem

chmod 0400 /var/lib/dkim/admins242.ru.pem

Открываем конфигурационный файл amavisd:

vi /etc/amavisd/amavisd.conf

* если файла нет или он окажется пустым, vi /etc/amavisd.conf.

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

dkim_key(‘admins24.com’, «dkim», «/var/lib/dkim/admins24.com.pem»);

* напомню, что admins24.com — домен, который мы вводили при установке iRedMail. В каждом случае он будет другим.

И добавляем радом с ней новую. Получится так:

dkim_key(‘admins24.com’, «dkim», «/var/lib/dkim/admins24.com.pem»);
dkim_key(‘admins242.ru’, «dkim», «/var/lib/dkim/admins242.ru.pem»);

Теперь находим строчку:

@dkim_signature_options_bysender_maps = ( {
   …
   «admins24.com» => { d => «admins24.com», a => ‘rsa-sha256’, ttl => 10*24*3600 },

И также после нее добавляем новую. Должно получиться:

@dkim_signature_options_bysender_maps = ( {
   …
   «admins24.com» => { d => «admins24.com», a => ‘rsa-sha256’, ttl => 10*24*3600 },
   «admins242.ru» => { d => «admins242.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },

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

systemctl restart amavisd

Посмотреть DKIM последовательность для нового домена можно командой:

amavisd -c /etc/amavisd/amavisd.conf showkeys

Ящик abuse

По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик [email protected]… На данный ящик могут приходить жалобы на СПАМ. Стоит время от времени просматривать его (или настроить переадресацию), и реагировать на жалобы.

Управление белыми и черными списками

Переходим в каталог с утилитами 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 [email protected] @admins24.com @.admins24.com

python wblist_admin.py —add —blacklist 111.112.113.115 @baddomain.com

* Первая команда добавит в белый список адрес 111.112.113.114, email [email protected] и домен admins24.com со всеми поддоменами. Вторая команда добавит в черный список адрес 111.112.113.115 и домен baddomain.com.

Удалить из списка:

python wblist_admin.py —delete —whitelist 111.112.113.114 [email protected] @admins24.com @.admins24.com

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 [email protected] —webroot-path /usr/share/nginx/html/ -d mail.admins24.com

* обратите внимание, что в данном примере мы получим сертификат для узла mail.admins24.com.

Продолжаем выполнение операции:

(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

И создаем симлинки на полученные:

ln -s /etc/letsencrypt/live/mail.admins24.com/cert.pem /etc/pki/tls/certs/iRedMail.crt

ln -s /etc/letsencrypt/live/mail.admins24.com/privkey.pem /etc/pki/tls/private/iRedMail.key

cert.pem и iRedMail.crt — открытые ключи (public); privkey.pem и iRedMail.key — закрытые (private); mail.admins24.com — узел, для которого был получен сертификат. Обратите внимание, что в нашем примере прописаны пути до сертификатов от 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

Отключение антивируса и антиспама

Отключить защиту для почты может понадобиться при различных обстоятельствах, например:

  1. Для диагностики проблем отправки сообщений.
  2. Экономии ресурсов (антивирус может слишком много потреблять ресурсов).
  3. При отсутствии необходимости.

И так, для отключения 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 [email protected] —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 (‘[email protected]’, ‘admins24.com’, 1);

* в данном примере мы создали группу с почтовым адресом [email protected] для домена admins24.com.

Теперь добавим в нее три адреса:

> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES (‘[email protected]’, ‘[email protected]’, ‘admins24.com’, ‘admins24.com’, 1, 1);

> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES (‘[email protected]’, ‘[email protected]’, ‘admins24.com’, ‘admins24.com’, 1, 1);

> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES (‘[email protected]’, ‘[email protected]’, ‘admins24.com’, ‘gmail.com’, 1, 1);

* в данном примере мы добавили в созданный адрес рассылки [email protected] три адреса — [email protected][email protected][email protected]. Обратите внимание, что последний адрес на бесплатном сервисе от Google.

Дополнительная настройка

Лимит на объем отправляемого сообщения

Задается командой:

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=’[email protected]’;

* в данном примере мы указываем, что пользователь [email protected] должен быть админом (isadmin=1), но не глобальным админом (isglobaladmin=0).

Теперь укажем, для какого домена пользователь должен быть администратором:

> INSERT INTO domain_admins (username, domain) VALUES (‘[email protected]’, ‘test.local’);

* в данном примере мы добавили запись, в которой указали, что пользователь [email protected] является администратором для домена test.local. При необходимости разрешить одному пользователю управлять несколькими доменами, мы должны выполнить несколько аналогичных запросов.

Перенаправление СПАМа на специальный ящик

По умолчанию, письма с отметкой [SPAM] в теме письма приходят на ящики пользователей. Если мы хотим, чтобы наш сервер пересылал все сообщения с подозрением на СПАМ в специальный ящик, выполняем следующее.

Открываем на редактирование файл:

vi /etc/postfix/header_checks

… и добавляем строку:

/^SUBJECT:\s+\[SPAM\]/ REDIRECT [email protected]

* в даной инструкции мы говорим проверять заголовок, и если находим в теме [SPAM], перенаправляем письмо на ящик [email protected].

Проверяем настройку командой:

postmap -q «Subject: [SPAM] test» pcre:/etc/postfix/header_checks

Мы должны увидеть что-то на подобие:

Теперь открываем файл:

vi /etc/postfix/master.cf

Находим в нем все опции no_header_body_checks и удаляем их. Данные опции запрещают проверку заголовков, что помешает нам использовать опцию header_checks в Postfix.

Перезапускаем службу mta:

systemctl restart postfix

Аналоги iRedMail

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

1. iRedMail Pro. Платная версия настроенного в данной инструкции программного обеспечения. Обладает расширенными настройками и возможностями.

2. Ручная сборка компонентов для почтового сервера. Пример данной настройки описан в статье Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим.

3. Microsoft Exchange Server (на Windows). Платный сервер, работает в среде Active Directory.

4. Zimbra (на Linux). Готовая сборка. Есть платная и бесплатная версии. Пример установки и настройки в инструкции Установка и настройка Zimbra на Linux.