Как разместить несколько почтовых доменов в 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
Теги: