Как установить почтовый сервер с поддержкой домена .РФ на операционной системе Debian

Доменное имя в зоне .РФ удобно использовать по двум причинам: его легко запомнить и ввести в поисковую строку в браузере. Кроме того, в зоне .РФ много свободных адресов в отличие от .ru и других популярных сегментов. Можно придумать красивый домен, а затем настроить на нем почтовый сервер и принимать письма с любых почтовых ящиков.

Однако настроить почту с кириллическим доменом на Gmail, Mail.ru и других подобных почтовых сервисах пока не получится: они всё еще не поддерживают почтовые домены на национальных языках. Чтобы принимать и отправлять письма через интернационализированные адреса электронной почты (EAI), а главное, создавать кириллические почтовые ящики с доменом .РФ, вы можете  установить и настроить свой собственный почтовый сервер. Сделать это не так сложно: всего 7 этапов, и вы сможете работать с электронной почтой на своем кириллическом домене.

Расскажем подробнее, как установить почтовый сервер в домене .РФ на ОС Debian. Для настройки мы использовали инструкцию для системных администраторов с вики.поддерживаю.РФ.

Перед настройкой почтового сервера зарегистрируйте домен и настройте его DNS-сервера

Это можно сделать вручную, но проще обратиться в службу поддержки вашего регистратора доменов или провайдера хостинга. Специалисты компании оперативно внесут изменения в DNS-записи, и вы сможете приступить к установке почты.


Вот пример, как выглядят DNS-записи в случае с нашим тестовым доменом

Этап 1. Установка сервера баз данных

В нашем примере мы будем использовать сервер управления базами данных MariaDB.

Для этого понадобится команда:

apt install mariadb-server mariadb-client

Создаем пользователя и базы данных для работы почтовой системы и веб-интерфейса

Для этого перейдите в MariaDB и последовательно выполните несколько команд.

Первая — создайте базы данных:

create database  vexim;
create database roundcube;

Вторая — создайте пользователей под эти базы данных:

CREATE USER 'vexim'@'localhost' IDENTIFIED BY '*************';
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY '*************';

Третья настройте доступы для созданных пользователей:

GRANT ALL PRIVILEGES ON vexim.* TO 'vexim'@'localhost';
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost';
flush privileges;

Обязательно сохраните пароли от vexim и roundcube, потому что они понадобятся для доступа в их веб-интерфейсы.

Этап 2. Установка веб-сервера apache2

Для этого выполните команду:
apt install apache2
Здесь же внесите правки в виртуальный хост для работы roundcube. Для этого сначала изменяем директиву DocumentRoot в несколько шагов.

Первый шаг — создаем папку:

mkdir  /usr/share/roundcube

Второй шаг — меняем права у директории:

chown -R www-data: /usr/share/roundcube

Третий шаг — создаем файл:

sudo nano /etc/apache2/sites-available/roundcube.conf

И в нем прописываем следующий текст:

<VirtualHost *:80>
  ServerName 
  xn--b1aebcsticdxckc1bzg.xn--p1ai
  ServerAdmin 
  xn--e1aybc@xn--b1aebcsticdxckc1bzg.xn--p1ai
  DocumentRoot  /usr/share/roundcube
  ErrorLog  ${APACHE_LOG_DIR}/roundcube-error.log
  CustomLog  ${APACHE_LOG_DIR}/roundcube-access.log combined
</VirtualHost>

При этом вместо xn--b1aebcsticdxckc1bzg.xn--p1ai и xn--e1aybc@xn--b1aebcsticdxckc1bzg.xn--p1ai пропишите ваши данные в формате punycode.

Далее включаем roundcube:

a2ensite roundcube 

Проверяем конфиг:

apachectl  configtest

Если всё настроено верно, вы увидите ответ: Syntax OK

Теперь перезагружаем apache2:

systemctl reload apache2 

После перезагрузки веб-сервер не будет работать, так как мы настроили только интерфейс. Но проверить правильность установки всё равно можно.

Этап 3. Установка roundcube

Подготовительный этап: устанавливаем roundcube и перемещаем его в нужную папку

Для начала скачайте исходный код:

wget  https://github.com/roundcube/roundcubemail/releases/download/1.4.9/roundcubemail-1.4.9-complete.tar.gz

А затем распакуйте архив с исходным кодом:

tar -xvzf roundcubemail-1.4.9-complete.tar.gz

Осталось перенести файлы из архива в другое место и приступить к установке. Это делается в несколько шагов.

Первый шаг — создаем папку:

mkdir  /usr/share/roundcube

Второй шаг — копируем содержимое распакованного архива:

cp -r roundcubemail-1.4.9/* /usr/share/roundcube/

Третий шаг — настраиваем владельца папки:

chown -R www-data:www-data /usr/share/roundcube/

Четвертый шаг — отключаем стандартный сайт apache, чтобы он не мешал в процессе установки:

a2dissite  000-default

Пятый шаг — включаем нужный модуль для roundcube:

a2enmod rewrite

Шестой шаг — перезапускаем веб-сервер и начинаем настраивать непосредственно roundcube:

systemctl restart  apache2 

Основной этап: устанавливаем roundcube

Roundcube настраивается по адресу http://<ip>/installer (входить нужно по IP-адресу сервера, на котором установлен roundcube). Здесь вы увидите три последовательные вкладки: проверки ранее введенной информации, создания конфига, создания базы данных.

На первой вкладке проверьте, чтобы рядом с MySQL был статус OK, и нажмите NEXT.

На второй вкладке введите название базы данных, имя пользователя и пароль для roundcube — они сгенерировались на этапе 1.

Затем спуститесь вниз и нажмите на CREATE CONFIG.

На третьей вкладке нажмите на кнопку Initialize database.

Осталось удалить папку installer:

rm -rf /usr/share/roundcube/installer

Теперь доступ в roundcube работает по адресу http://<ip>.

Этап 4. Установка PHP

Для этого выполните команду:

apt install php php7.4-mbstring php7.4-xml php7.4-mysql php7.4-gd  php7.4-imagick php7.4-zip

А затем еще раз перезапустите apache командой:

systemctl restart  apache2

Этап 5. Установка почтового сервера exim

Выполните команду:

apt install exim4-daemon-heavy

Следующий этап — настройка exim4 по пути Internet Site.

Вот как заполнять каждое новое окно:

  1. System mail name — напишите название вашего домена в формате punycode.
  2. IP-addresses to listen on for incoming SMTP connections — напишите 127.0.0.1 ; ::1 и IP вашего домена. Между 127.0.0.1 ; ::1 и IP вашего домена поставьте точку с запятой «;».
  3. Other destinations for which mail is accepted — добавьте название вашего домена в формате punycode.
  4. Domains to relay mail for — оставьте пустым.
  5. Machines to relay mail for — оставьте пустым.
  6. Keep the number of DNS-queries minimal (Dial-on-Demand) ? — выберите  «нет».
  7. Delivery method for local mail: выберите «Maildir format in home directory».
  8. Split configuration into small files ? — выберите «нет».
  9. Root and postmaster mail recipient — напишите «root».

После настройки перейдите в папку /etc/exim4/update-exim4.conf.conf и добавьте строку

dc_localdelivery=’maildir_home’

Если строка, начинающаяся с dc_localdelivery= уже существует, замените ее на

dc_localdelivery=’maildir_home’

Теперь перезапускаем Exim:

systemctl restart exim

И проверяем отправку писем командой:

echo "my test" | mail -s "test message"
-a "From: xn--e1aybc@xn--b1aebcsticdxckc1bzg.xn--p1ai" существующаяпочта@винтернете.рф

Вместо xn--e1aybc@... указывайте вашу почту, для которой поднимаете почтовый сервер, в формате punycode. Вместо «существующаяпочта@винтернете.рф» укажите интернационализированный email-адрес получателя, к которому у вас есть доступ, для проверки входящих сообщений.

Для того чтобы письма с настроенного почтового сервера принимались другими почтовыми сервисами, поддерживающими получение и отправку с интернационализированных почтовых адресов, например Gmail или Outlook.com, нужно настроить SPF, DMARC и DKIM.

SPF-запись защищает от подделки домена. Без нее письма попадут в спам, потому что этот элемент указывает на используемые сервера и правила обработки писем.

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

DMARC — это набор правил обработки электронных сообщений, которые не прошли авторизацию. Настройка позволяет выбрать порядок работы с такими письмами: либо не делать с ними ничего, либо помещать их в спам, либо просто отклонять.

Подробнее о том, как настроить SPF, DMARC и DKIM, лучше уточнять у вашего провайдера хостинга или регистратора домена — его техническая поддержка даст актуальные настройки под ваш домен.

Для этого выполните команду:

apt-get install courier-imap courier-pop courier-authlib-mysql  courier-authdaemon

Следующий шаг — настройка доступа к серверу баз данных для авторизации.

Открываем файл authmysqlrc:

 vim /etc/courier/authmysqlrc

И изменяем в нем строки:

MYSQL_USERNAME;
MYSQL_DATABASE; 
MYSQL_PASSWORD.

В них прописываем логин, имя базы и пароль, которые мы указывали при создании базы данных для vexim на первом этапе.

Вот что делаем дальше:

Найдите эти строки:

Допишите в них эти слова:

MYSQL_USER_TABLE

users

MYSQL_LOGIN_FIELD

username

MYSQL_HOME_FIELD

pop

MYSQL_NAME_FIELD

realname

Теперь перезапускаем courier командой:

service courier-*  restart

    

Этап 7. Установка веб-интерфейса vexim

Подготовительный этап: загружаем специальный пакет для работы с zip. архивом

apt install unzip 

Теперь копируем исходный код и распаковываем архив:

cd /usr/share/
wget https://github.com/vexim/vexim2/archive/master.zip
unzip master.zip

А затем импортируем схему в ранее созданную базу данных:

mysql vexim < /usr/share/vexim2-master/setup/mysql.sql 

При этом импорте система выдаст нам пароль от пользователя siteadmin. Обязательно сохраните пароль, он понадобится для доступа в панель администрирования.

Основной этап: настраиваем доступ к серверу баз данных

Первый шаг — используем команду:

cd  /usr/share/vexim2-master/vexim/config

Второй шаг — изменяем имя файла:

mv variables.php.example variables.php

Третий шаг — проверяем значения uid и gid. Запомните их, чтобы прописать на следующем шаге:

cat /etc/passwd|  grep exim

Затем в файле variables.php, который открывается командой sudo nano variables.php, находим строки sqluser и sqlpass. Меняем имя пользователя на vexim и добавляем в нее пароль от пользователя vexim:

$sqluser = "vexim";
$sqlpass = "CHANGE”;

Четвертый шаг — находим значения uid и gid и меняем на те, которые узнали ранее. В нашем случае это:

$uid =  "106";
$gid = "113”;

Пятый шаг — создаем файл конфигурации для vexim:

cp /etc/apache2/sites-available/000-default.conf  /etc/apache2/sites-available/vexim.conf

Шестой шаг — открываем файл командой:

sudo nano /etc/apache2/sites-available/vexim.conf

И вставляем туда текст ниже:

<VirtualHost *:8080>
  ServerName domain1.com
  DocumentRoot /usr/share/vexim
  ErrorLog  ${APACHE_LOG_DIR}/vexim-error.log
  CustomLog  ${APACHE_LOG_DIR}/vexim-access.log combined
  <Directory  /usr/share/vexim>
  Options -Indexes
  AllowOverride All
  Order allow,deny
  allow from all
  </Directory>
</VirtualHost>

Седьмой шаг — меняем права:

chown -R www-data: /usr/share/vexim

Восьмой шаг — включаем сайт:

a2ensite vexim

Девятый шаг — проверяем конфиг сайта:

apachectl  configtest

Должен появиться ответ: Syntax OK

И перезагружаем Apache2:

systemctl reload apache2

Десятый шаг — правим файл:

sudo nano /etc/apache2/ports.conf

Для этого после Listen 80 добавляем Listen 8080.

И перезагружаем Apache2:

systemctl reload apache2

После этого можно зайти в интерфейс vexim http://<ip>/vexim. Логином будет siteadmin, а пароль вводим тот, который мы получили при импорте баз данных.

На этом настройка vexim завершена. Теперь ваш почтовый сервер может принимать и отправлять электронные письма на кириллице.

Для создания кириллических адресов электронной почты в вашем домене .РФ необходимо продолжить настройку почтового сервера с помощью официальной документации vexim и roundcube.