Как разместить несколько почтовых доменов в iRedMail с помощью Nginx


В этом руководстве будет показано, как настроить несколько доменов электронной почты (виртуальный хостинг) с помощью iRedMail, что является простым способом настройки собственного почтового сервера.

Предварительные условия

Чтобы следовать этому руководству, предполагается, что

  • Вы уже настроили сервер iRedMail с одним доменом .
  • Вы используете iRedMail 0.9.8 или выше, который использует Nginx для обслуживания веб-почты. Поддержка веб-сервера Apache удалена в версии 0.9.8.

Что тебе необходимо сделать

Если вы хотите разместить несколько почтовых доменов, вам необходимо

  • Добавьте новый почтовый домен и пользователя в админ-панели iRedMail.
  • Создайте записи MX, A и SPF для нового почтового домена.
  • Настройка подписи DKIM для дополнительных доменов
  • Настройте запись DMARC для нового домена.
  • Настройте RoundCube Webmail, Postfix и Dovecot для нескольких доменов.

Обратная проверка DNS используется для проверки соответствия IP-адреса отправителя имени хоста HELO. Вам не нужно добавлять еще одну запись PTR при добавлении нового почтового домена.

Шаг 1. Добавление дополнительных доменов в панели администратора iRedMail

Войдите в панель администратора iRedMail под учетной записью почтмейстера. ( https://mail.your-domain.com/iredadmin) Затем добавьте домены на Add вкладке.

Шаг 2. Создание записей MX, A и SPF для нового почтового домена.

В диспетчере DNS добавьте запись MX для нового домена, как показано ниже.

Record Type    Name      Value
MX             @         mail.domain2.com

Запись A указывает на IP-адрес вашего почтового сервера.

Record Type    Name     Value
A              mail     IP-address-of-mail-server

Если ваш сервер использует адрес IPv6, обязательно добавьте запись AAAA.

Затем создайте запись SPF, чтобы разрешить хосту MX отправлять электронную почту для нового почтового домена.

Record Type    Name      Value
TXT            @         v=spf1 mx ~all

Шаг 3. Настройка подписи DKIM для нового домена

Вам нужно указать amavisd, чтобы он подписывал каждое исходящее электронное письмо для нового почтового домена. Редактировать /etc/amavis/conf.d/50-user файл.

sudo nano /etc/amavis/conf.d/50-user

Найдите следующую строку,

dkim_key(' domain1.com ', ' dkim', '/var/lib/dkim/domain1.com.pem ');

Добавьте еще одну строку, чтобы указать расположение закрытого ключа второго домена.

dkim_key(' domain2.com ', 'dkim', '/var/lib/dkim/domain2.com .pem ');

В @dkim_signature_options_bysender_maps разделе добавьте следующую строку.

" domain2.com " => { d => " domain2.com ", a => 'rsa-sha256', ttl => 10*24*3600 },

Сохраните и закройте файл. Затем сгенерируйте закрытый ключ для второго домена.

sudo amavisd-new genrsa /var/lib/dkim/domain2.com .pem 2048

Перезапустите amavis.

sudo systemctl restart amavis

Если Amavis не перезапускается, возможно, вам придется сменить владельца ключа и перезапустить его снова.

sudo chown amavis:amavis /var/lib/dkim/ -R

Затем отобразите открытые ключи.

sudo amavisd-new showkeys

Будут отображены все открытые ключи. Нам нужен публичный ключ второго домена, который указан в скобках.

В диспетчере DNS создайте запись TXT для второго домена. Введите dkim._domainkeyв поле Имя. Скопируйте все, что указано в скобках, и вставьте в поле значения. Удалите все двойные кавычки. (Вы можете сначала вставить его в текстовый редактор, удалить все двойные кавычки, а затем скопировать его в свой диспетчер DNS. Ваш диспетчер DNS может потребовать от вас удалить другие недопустимые символы, например возврат каретки.)

После сохранения изменений. Проверьте запись TXT с помощью этой команды.

dig TXT dkim._domainkey.domain2.com

Теперь вы можете запустить следующую команду, чтобы проверить правильность вашей DNS-записи DKIM.

sudo amavisd-new testkeys

Если запись DNS верна, тест будет пройден.

TESTING#1 domain1.com: dkim._domainkey.domain1.com => pass
TESTING#2 domain2.com: dkim._domainkey.domain2.com => pass

Обратите внимание, что вашей записи DKIM может потребоваться некоторое время для распространения в Интернете. В зависимости от используемого вами регистратора домена ваша DNS-запись может распространяться мгновенно или распространение может занять до 24 часов. Вы можете перейти на https://www.dmarcanalyzer.com/dkim/dkim-check/ , ввести его dkimв качестве селектора и ввести имя своего домена, чтобы проверить распространение записей DKIM.

Шаг 4. Настройка записи DMARC для нового домена

Чтобы создать запись DMARC, перейдите в диспетчер DNS и добавьте запись TXT . В поле имени введите _dmarc. В поле значения введите следующее:

v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@your-domain.com

Шаг 5. Настройка RoundCube, Postfix и Dovecot для нескольких доменов
Имеет смысл разрешить пользователям первого домена использовать mail.domain1.com, а пользователям второго домена использовать mail.domain2.comвеб-почту RoundCube.

Измените рабочий каталог на /etc/nginx/.

cd /etc/nginx/

Создайте пустой файл блокировки сервера для второго домена в /etc/nginx/sites-enabled/ каталоге.

sudo touch sites-enabled/mail.domain2.com.conf

Скопируйте конфигурации HTTP-сайта по умолчанию в файл.

cat sites-enabled/00-default.conf | sudo tee -a sites-enabled/mail.domain2.com.conf

Скопируйте конфигурации сайта SSL по умолчанию в файл.

cat sites-enabled/00-default-ssl.conf | sudo tee -a sites-enabled/mail.domain2.com.conf

Отредактируйте файл виртуального хоста.

sudo nano sites-enabled/mail.domain2.com.conf

Найдите следующую строку.

server_name _;

Нам нужно изменить имя_сервера на mail.domain2.com, потому что позже нам нужно будет использовать Certbot для создания нового сертификата tls.

server_name mail.domain2.com;

Есть 2 экземпляра server_name, вам нужно изменить их оба. Сохраните и закройте файл. Затем проверьте конфигурацию Nginx.

sudo nginx -t

Если тест пройден успешно, перезагрузите Nginx, чтобы изменения вступили в силу.

sudo systemctl reload nginx

Теперь используйте плагин веб-корня Certbot для получения сертификата TLS для всех ваших почтовых доменов, так что у вас будет один сертификат TLS с несколькими доменными именами, и почтовые клиенты не будут выдавать предупреждения безопасности.

sudo certbot certonly --webroot --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address -w /var/www/html

Обратите внимание, что в приведенной выше команде мы указали имя сертификата, используя первый почтовый домен, который будет использоваться в пути к файлу, поэтому вам не нужно менять путь к файлу в файле конфигурации Postfix или Dovecot.

Когда вас спросят, хотите ли вы обновить существующий сертификат, включив в него новый домен, ответьте U и нажмите Enter.

Теперь вы должны увидеть следующее сообщение, указывающее на то, что многодоменный сертификат успешно получен.

Если вы столкнулись со следующей ошибкой,

Detail: Invalid response from
https://mail.domain2.com/.well-known/acme-challenge/j3Nd2mNFQ43P9xLJSP4IFAiRytDCb3bemZwuAxDzWQc
[xx.xx.xx.xx]: 404

тогда вам нужно использовать плагин certbot nginx для получения сертификата TLS.

sudo apt install python3-certbot-nginx
sudo certbot certonly -a nginx --agree-tos -d <b>mail.domain1.com,mail.domain2.com</b> --cert-name <b>mail.domain1.com</b> --email <b>your-email-address</b>

После получения сертификата TLS перезагрузите Nginx, чтобы получить новый сертификат.

sudo systemctl reload nginx

Теперь вы сможете использовать разные домены для доступа к веб-почте RoundCube. Также вам необходимо перезагрузить SMTP-сервер Postfix и IMAP-сервер Dovecot, чтобы они могли получить новый сертификат.

sudo systemctl reload postfix dovecot

rDNS для нескольких почтовых доменов?

Обратный DNS (rDNS), также известный как запись PTR, используется для проверки соответствия IP-адреса отправителя имени хоста HELO. Вам не нужно добавлять еще одну запись PTR при добавлении нового почтового домена. В вашем rDNS должно быть установлено только одно имя хоста, то есть имя хоста, указанное в Postfix, которое можно отобразить с помощью следующей команды.

postconf myhostname

rDNS — это запись IP-адресов. Это не запись для доменного имени. Если у вас только один IP-адрес, вам нужна только одна запись rDNS, указывающая на одно имя хоста. Обратная проверка DNS не проверяет, какой From:домен находится в вашей электронной почте, если ваш IP-адрес имеет запись rDNS и имя хоста может разрешаться обратно в тот же IP-адрес, вы можете пройти обратную проверку DNS.

Несколько сертификатов TLS

Если вы управляете почтовыми серверами для большого количества клиентов, возможно, вам не захочется объединять все сертификаты TLS в один файл, поскольку он содержит информацию о ваших клиентах. Если вы предпочитаете создать отдельный сертификат SSL для каждого имени домена, вам не следует копировать конфигурацию SSL по умолчанию в новый файл виртуального хоста. То есть не запускайте следующую команду на шаге 5.

cat sites-enabled/00-default-ssl.conf | sudo tee -a sites-enabled/mail.domain2.com.conf

Вместо использования следующей команды для получения многодоменного сертификата:

sudo certbot certonly --webroot --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com -w /var/www/html

Вы можете использовать следующую команду, чтобы получить отдельный сертификат TLS для второго почтового домена.

sudo certbot -a webroot -i nginx --agree-tos -d mail.domain2.com -w /var/www/html

Далее вам необходимо настроить Postfix и Dovecot.

Несколько сертификатов TLS Postfix

Если вы используете Postfix версии 3.4 или выше, вы можете использовать несколько сертификатов TLS. Отредактируйте main.cfфайл.

sudo nano /etc/postfix/main.cf

Добавьте следующую строку в конец этого файла, чтобы включить несколько сертификатов TLS.

tls_server_sni_maps = hash:/etc/postfix/sni_maps

Сохраните и закройте файл. Затем создайте файл sni_maps.

sudo nano /etc/postfix/sni_maps

В этот файл добавьте каждое имя почтового хоста и его файл сертификата.

mail.domain1.com   /etc/letsencrypt/live/mail.domain1.com/privkey.pem    /etc/letsencrypt/live/mail.domain1.com/fullchain.pem
mail.domain2.com   /etc/letsencrypt/live/mail.domain2.com/privkey.pem     /etc/letsencrypt/live/mail.domain2.com/fullchain.pem

Сохраните и закройте файл. Далее создайте таблицу поиска.

sudo postmap -F /etc/postfix/sni_maps

Перезапустите Постфикс.

sudo systemctl restart postfix

Вы должны использовать -Fопцию в postmap для декодирования base64 каждого значения в карте SNI, иначе Postfix выдаст ошибку неправильного значения BASE64 в /var/log/mail.logфайле. Следующая команда неверна.

sudo postmap /etc/postfix/sni_maps

Несколько сертификатов TLS Dovecot

Если вы используете несколько сертификатов TLS в Postfix, вам также следует включить их в Dovecot. Отредактируйте файл Dovecot 10-ssl.conf.

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Вы можете найти следующие строки.

ssl_cert =</etc/letsencrypt/live/mail.domain1.com/fullchain.pem 
ssl_key =</etc/letsencrypt/live/mail.domain1.com/privkey.pem

Затем добавьте следующие строки.

local_name mail.domain1.com {
ssl_cert =</etc/letsencrypt/live/mail.domain1.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.domain1.com/privkey.pem
}
local_name mail.domain2.com {
ssl_cert =</etc/letsencrypt/live/mail.domain2.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.domain2.com/privkey.pem
}

Сохраните и закройте файл. Затем перезапустите Dovecot.

sudo systemctl restart dovecot

Теги:

Комментарии




В качестве аватарки используется сервис - gravatar.com



IT-событие
Родился Стив Джобс
Родился Стив Джобс