Данный репозиторий содержит конфигурационные файлы Exim, Dovecot, RoundCube, Apache2 и Nginx с помощью которых можно настроить полноценный почтовый стек MTA Exim+MDA Dovecot c RoundCube в качестве веб-интерфейса в Ubuntu 20.04 для domain.tld, где вместо domain.tld необходимо использовать желаемое доменное имя.

Веб-интерфейс будет доступен по адресу:

https://webmail.domain.tld

Предварительно для domain.tld должны быть созданы следующие DNS-записи:

mail.domain.tld IN A IP-адрес сервера

domain.tld IN MX mail.domain.tld

webmail.domain.tld IN A IP-адрес сервера

domain.tld IN TXT v=spf1 ip4:IP-адрес сервера -all

_dmarc.domain.tld IN TXT v=DMARC1; p=reject

mail._domainkey.domain.tld IN TXT v=DKIM1; h=sha256; k=rsa; 

В конфигурационных файлах и их названиях необходимо заменить domain.tld на используемое доменное имя.

В файле /roundcube/config/config.inc.php необходимо заменить password_database_roundcubemail на пароль от базы данных roundcubemail.

В файле /etc/dovecot/passwd необходимо заменить password_in_md5 на пароль в формате MD5 hash. В этом же файле осуществляется создание почтовых ящиков, по аналогии с текущим ящиком из файла.

УСТАНОВКА И НАСТРОЙКА

Устанавливаем следующие пакеты:

apt install exim4-daemon-heavy dovecot-core dovecot-imapd dovecot-pop3d apache2 php libapache2-mod-php php-mysql php-mbstring php7.4-gettext php-cli php-gd php7.4-opcache php-bcmath php7.4-dom mysql-server -y

НАСТРОЙКА APACHE2

Заменяем конфигурационные файлы /etc/apache2/ports.conf и /etc/apache2/sites-available/webmail.domain.tld.conf

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

a2ensite webmail.domain.tld.conf

Обновляем конфигурацию Apache2:

systemctl reload apache2

УСТАНОВКА И НАСТРОЙКА NGINX

wget https://nginx.org/keys/nginx_signing.key

apt-key add nginx_signing.key

Добавляем в конец файла /etc/apt/sources.list

deb http://nginx.org/packages/ubuntu/ focal nginx

deb-src http://nginx.org/packages/ubuntu/ focal nginx

apt update -y

apt install nginx -y

mkdir /etc/nginx/snippets

Заменяем конфигурационный файл /etc/nginx/nginx.conf

service nginx restart

Для возможности выпуска SSL-сертификата необходимо установить пакеты certbot, python3-certbot-nginx.

Выпуск осуществляется с помощью команды:

certbot --server https://acme-v02.api.letsencrypt.org/directory -d domain.tld -d *.domain.tld --manual --preferred-challenges dns-01 certonly

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

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Заменяем конфигурационные файлы /etc/nginx/snippets/ssl-params.conf и /etc/nginx/conf.d/webmail.domain.tld.conf

nginx -t

systemctl reload nginx

УСТАНОВКА И НАСТРОЙКА ROUNDCUBE 1

mkdir /var/www/roundcube

cd /var/www/roundcube

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

tar -xzvf roundcubemail-1.4.11-complete.tar.gz

rm roundcubemail-1.4.11-complete.tar.gz

mv roundcubemail-1.4.11/* /var/www/roundcube

rm -Rf roundcubemail-1.4.11

НАСТРОЙКА ПАРОЛЯ ДЛЯ ПОЛЬЗОВАТЕЛЯ ROOT ДЛЯ MYSQL И СОЗДАНИЕ БАЗЫ ДАННЫХ И ПОЛЬЗОВАТЕЛЯ ДЛЯ ROUNDCUBE

mysql_secure_installation

mysql -uroot -p

CREATE DATABASE roundcubemail;

CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password_database_roundcubemail';

GRANT ALL ON *.* TO 'roundcube'@'localhost';

flush privileges;

quit;

УСТАНОВКА И НАСТРОЙКА ROUNDCUBE 2

cd /var/www/roundcube/SQL

mysql -uroundcube -p roundcubemail < mysql.initial.sql

cp /var/www/roundcube/config/config.inc.php.sample /var/www/roundcube/config/config.inc.php

Заменяем конфигурационный файл /var/www/roundcube/config/config.inc.php

НАСТРОЙКА MDA DOVECOT

groupadd -g 150 -r vmail

useradd -g 150 -r -u 150 vmail

mkdir /home/vmail

chown vmail:vmail /home/vmail

chmod u=rwx,g=rx,o= /home/vmail

Заменяем конфигурационные файлы:

/etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/auth-passwdfile.conf.ext /etc/dovecot/passwd /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-master.conf /etc/dovecot/dovecot.conf /etc/dovecot/conf.d/auth-system.conf.ext

service dovecot restart

НАСТРОЙКА MTA EXIM

dpkg-reconfigure exim4-config (На первом шаге указываем internet site, на втором шаге domain.tld, на третьем шаге 0.0.0.0:, на четвертом шаге удаляем всё, дальше нажимаем Enter до конца.)

mkdir /etc/exim4/ssl

cp /etc/letsencrypt/live/domain.tld/fullchain.pem /etc/exim4/ssl/fullchain.pem

chown root:root /etc/exim4/ssl/fullchain.pem

chmod 644 /etc/exim4/ssl/fullchain.pem

cp /etc/letsencrypt/live/domain.tld/privkey.pem /etc/exim4/ssl/privkey.pem

chown Debian-exim:Debian-exim /etc/exim4/ssl/privkey.pem

chmod 644 /etc/exim4/ssl/privkey.pem

echo "domain.tld" > /etc/exim4/local_domains

Заменяем конфигурационный файл /etc/exim4/exim4.conf.template

usermod -aG dovecot Debian-exim

chown root:vmail /var/mail/

УСТАНОВКА OPENDKIM И НАСТРОЙКА DKIM ДЛЯ DOMAIN.TLD

apt install opendkim-tools -y

mkdir /etc/exim4/dkim

opendkim-genkey -D /etc/exim4/dkim/ -d domain.tld -s mail --bits=1024

mv /etc/exim4/dkim/mail.private /etc/exim4/dkim/mail.domain.tld.private

mv /etc/exim4/dkim/mail.txt /etc/exim4/dkim/mail.domain.tld.public

cat /etc/exim4/dkim/mail.domain.tld.public (второе значение в кавычках, котороое начинается как p=* добавляем в TXT запись для mail._domainkey.domain.tld, дополняя текущую TXT-запись)

cd /etc/exim4/dkim

chmod u=rw,g=r,o= *

chown root:Debian-exim *

service exim4 reload