Установка и настройка 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/releases/download/1.2.1/iRedMail-1.2.1.tar.gz

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

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

tar zxvf iRedMail-*.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 +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

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

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

Группы рассылки

В профессиональной платной версии 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.rutest1@dmosk.ruexample@gmail.com. Обратите внимание, что последний адрес на бесплатном сервисе от 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='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

Аналоги iRedMail

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

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

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

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

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

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

Да            Нет