Тематические термины: iRedMail, CentOS, Postfix, Dovecot, Roundcube, POP3, IMAP, PTR, SPF, DKIM
Данная инструкция протестирована на 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 копируем ссылку на последнюю версию сборки:
Скачиваем сборку:
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 лучше отключить. Для этого добавляем права на редактирование следующему файлу:
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. Пример записи:
* где mail.admins24.com — имя нашего сервера. По идее, данную запись мы создавали выше при проверке входящих сообщений.
Она должна вести на имя сервера (в данном примере, mail.admins24.com). Чтобы создать такую запись, нужно написать обращение Интернет-провайдеру или хостеру виртуальной машины. Пример записи:
171.23.222.83.in-addr.arpa name = mail.admins24.com
Эта запись создается в DNS для домена, от которого идет отправка сообщений. Пример:
admins24.com text = «v=spf1 +a +mx -all»
Для начала, смотрим ключ, который был сформирован во время установки 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»
Генерируем новый ключ:
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 последовательность для нового домена можно командой:
По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик [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 — если у вас свои сертификаты, пути должны быть соответствующими.
Перезапускаем следующие службы:
Для автоматического продления сертификата создаем в cron задачу:
crontab -e
Добавим:
0 0 * * 1,4 /usr/bin/certbot renew && systemctl restart nginx && systemctl restart iredapd
Отключить защиту для почты может понадобиться при различных обстоятельствах, например:
И так, для отключения amavis (clam + spamassassin) открываем файл:
Приводим к следующему виду настройку:
@bypass_virus_checks_maps = (1);@bypass_spam_checks_maps = (1);
* в данном примере мы сняли комментарий с данных строк (если они были закомментированы) и задаем для них значение 1. Опция bypass_virus_checks_maps отвечает за включение проверки писем на вирусы; bypass_spam_checks_maps — на СПАМ.
Перезапускаем службу amavisd:
После данной настройки письма будут отправляться без проверок. Однако, сервис антивируса будет, по-прежнему, работать.
Останавливаем и отключаем сервис clamd:
systemctl disable [email protected] —now
Помимо веб-интерфейса, мы можем работать с нашим сервером iredmail, используя почтовые клиенты, такие как MS Outlook, Mozilla Thunderbird и так далее.
Для подключения клиента используем следующие параметры:
Пример настройки в 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’, ‘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:
Используем базу 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
Мы должны увидеть что-то на подобие:
REDIRECT [email protected]
Теперь открываем файл:
vi /etc/postfix/master.cf
Находим в нем все опции no_header_body_checks и удаляем их. Данные опции запрещают проверку заголовков, что помешает нам использовать опцию header_checks в Postfix.
Перезапускаем службу mta:
Если есть причины, по которым iRedMail не подходит, можно рассмотреть другие варианты:
1. iRedMail Pro. Платная версия настроенного в данной инструкции программного обеспечения. Обладает расширенными настройками и возможностями.
2. Ручная сборка компонентов для почтового сервера. Пример данной настройки описан в статье Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим.
3. Microsoft Exchange Server (на Windows). Платный сервер, работает в среде Active Directory.
4. Zimbra (на Linux). Готовая сборка. Есть платная и бесплатная версии. Пример установки и настройки в инструкции Установка и настройка Zimbra на Linux.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies