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

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

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

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

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

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

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 копируем ссылку на последнюю версию сборки:

Копируем ссылку на iRedMail

Скачиваем сборку:

wget https://github.com/iredmail/iRedMail/archive/1.2.tar.gz

* где https://github.com/iredmail/iRedMail/archive/1.2.tar.gz — ссылка на скачивание версии, актуальной на момент обновления инструкции.

Распаковываем скачанный архив:

tar zxvf 1.2.tar.gz

Переходим в распакованную папку:

cd iRedMail-*

Запускаем скрипт установки:

bash iRedMail.sh

В открывшемся приветствии отвечаем Yes:

Приветствие iRedMail

Вводим путь для хранения почты или оставляем предложенный по умолчанию:

Задаем путь хранения почты

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

Выбираем веб-сервер

* с версии 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:

Создаем пользователя в iRedMail

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

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

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

Получение

Чтобы проверить получение почты, для домена должна быть настроена 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)

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

Написать сообщение в roundcube

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

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

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

А-запись в 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 +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-new genrsa /var/lib/dkim/dmosk2.ru.pem 1024

* где dmosk2.ru — новый домен, для которого мы сгенерируем подпись dkim.
* некоторые системы не работают с ключами более чем 1024 бит.
* если получим ошибку amavisd-new: command not found, вводим команду 
amavisd genrsa /var/lib/dkim/dmosk2.ru.pem 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:

amavisd-new restart || amavisd restart

Если получаем ошибку Config file "/etc/amavisd.conf" does not exist, создаем следующий симлинк:

ln -s /etc/amavisd/amavisd.conf /etc/amavisd.conf

И снова перезапускаем amavisd:

amavisd-new restart || amavisd restart

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

amavisd 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

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

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

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

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

Настройка почтового клиента

Помимо веб-интерфейса, мы можем работать с нашим сервером iredmail, используя почтовые клиенты, такие как MS Outlook, Mozilla Thunderbird и так далее.

Для подключения клиента используем следующие параметры:

Настройка IMAP POP3 SMTP
Адрес сервера IP-адрес сервера или его имя
Порт 143 110 587
SSL STARTTLS
Имя пользователя Почтовый адрес, к которому выполняем подключение
Пароль Пароль для почтового ящика

Пример настройки в Mozilla Thunderbird:

Пример настройки подключения к iredmail в Mozilla Thunderbird

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

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

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

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. При необходимости разрешить одному пользователю управлять несколькими доменами, мы должны выполнить несколько аналогичных запросов.

Аналоги iRedMail

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

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

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

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

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

# Серверы # Почта # Linux # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет