RU EN ES FR CN

Всё о любом домене или IP-адресе

Домены ХостингХостинг VPS ХостингVPS / VDS SSLСертификаты О компании О компании

VPS / VDS хостинг >  Корпоративный почтовый сервер Linux Ubuntu 20.04 с предварительно настроенными службами

В этом руководстве показано, как настроить почтовый сервер с минимальными удобствами на VPS сервере Linux Ubuntu 20.04. Задача получить готовый корпоративный сервер с возможностью управления через веб интерфейс. Мы установим базовые почтовые службы, инструмент администрирования postfixadmin с помощью которого можно будет добавлять домены, почтовые адреса, а также веб интерфейс roundcube для удобной работы с почтовый через браузер. В данном руководстве приведены выполненные настройки, которые уже выполнены в преднастроенной сборке доступной в заказе.

В данном руководстве мы выполняем установку от пользователя root, если у Вас обычный, используйте команду sudo.

1. Обновите пакеты программного обеспечения
 
#apt update 
#apt upgrade

2. Установим LEMP

Установка LEMP описана в одной из сборок, данная связка нам понадобится для работы веб интерфейса почты, системы администрирования и управления почтовыми ящиками, а также базы данных для хранения настроек.

3. Настроим фаервол для почтовых служб

#iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

Сохраним правила 

#apt install iptables-persistent
#netfilter-persistent save
 
4. Установим и настроим PostfixAdmin
 
Данный пакет позволяет управлять нашим почтовым сервером через веб интерфейс не прибегая к консоли.
 
4.1 Установим сам пакет

#apt install php-mysql php-mbstring php-imap
#systemctl restart php7.4-fpm
#wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
#mkdir /usr/share/nginx/html/postfixadmin
#tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
#mkdir /usr/share/nginx/html/postfixadmin/templates_c
#chown -R www-data:www-data /usr/share/nginx/html/postfixadmin

4.2 Теперь создадим базу данных:

#mysql -u root -p
> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q

4.3 Создадим файл конфигурации

#vi /usr/share/nginx/html/postfixadmin/config.local.php

Следующего содержания:

<?php

$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';

?>


Откроем браузер и вводим адрес http://<IP-vps-сервера>/postfixadmin/public/setup.php

Необходимо придумать пароль после чего нажать на кнопку Generate setup_password hash, чтобы сгенерировать хэш.
Скопируем полностью строку и добавим в файл:

#vi /usr/share/nginx/html/postfixadmin/config.local.php

После сохранения необходимо обновить страницу http://<IP-vps-сервера>/postfixadmin/public/setup.php и войти с заданным паролем.
Выполнится установка PostfixAdmin.

Далее нам необходимо добавить супер пользователя (пользователь с полными правами). В поле Админ необходимо указать пользователя в виде почты root@mail-domain.tld
 
Теперь переходим на страницу http://<IP-vps-сервера>/postfixadmin/public/login.php и вводим данные созданного пользователя:
 
 
 
5. Установим и настроим службу Postfix
 
 
 
#apt install postfix postfix-mysql

В процессе установки появиться окно Postfix Configuration — оставим пункт Internet Site

5.1 Создадим группу и пользователей для работы с папками потовых ящиков

 
#groupadd -g 1024 vmail
 
#useradd -d /home/mail -g 1024 -u 1024 vmail -m
 
#chown vmail:vmail /home/mail
 
#vi /etc/postfix/main.cf

5.2 Внесем правки в конфигурационный файл


mydestination = localhost.$mydomain, localhost, localhost.localdomain
...
inet_protocols = ipv4
...
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key


Далее в конец конфигурационного файла добавляем следующие строки:

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

 
Создадим файл с настройками алиасов для обращения к базе данных
 
#vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

 
Создадим файл с настройками доменов для обращения к базе данных

#vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

 
Создадим файл с настройками почтовых ящиков для обращения к базе данных
 
#vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

 
Откроем основной файл конфигурации и добавим в самый конец строки:

#vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname

smtps   inet  n  -  n  -  -  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

dovecot   unix  -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}


Создадим сертификаты безопасности с помощью команды: 
 
mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"
 
В данном случае мы создали самоподписный сертификат, для того чтобы он работал без предупреждения безопасности нужно купить SSL сертификат.
 
Финальная настройка службы:
 
#systemctl enable postfix
#systemctl restart postfix
 
6. Установим и настроим Dovecot
 
 
#apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 Настройка хранения почты
 
#vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/mail/%d/%u/


6.2 Настройка авторизации

#vi /etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
}

 
Изменим настройки авторизации на базу данных

#vi /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

 
Закомментируем строку по умолчанию и активируем строку со словом sql в тексте.
 
6.3 Настройка SSL сертификатов
 
 
#vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key


Настроим автоматическое создание папок при первой авторизации пользователя в почте.
 
#vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

 
6.4 Настроим подключение к базе данных

#vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

 
6.5 Добавим настройки в файл конфигурации

#vi /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

 
6.6 Настроим интерфейс на котором будет работать служба

#vi /etc/dovecot/dovecot.conf

listen = *


Финальная настройка службы

#systemctl enable dovecot
#systemctl restart dovecot
 
7. Настройка домена и почтовых ящиков
 
Перейдем в веб интерфейс и настроим домен для работы с почтой: http://<IP-VPS-сервера>/postfixadmin/public/.
 
Далее в меню сверху добавим домен:
 

После добавления домена создадим почтовый ящик.
 
 
8. Установим и настроим службу веб почты, Roundcube
 
Скачем последнюю LTS версию пакета и развернем на нашем сервере

#wget https://github.com/roundcube/roundcubemail/releases/download/1.5.3/roundcubemail-1.5.3-complete.tar.gz
#mkdir /usr/share/nginx/html/webmail
#tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
#cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
#chown -R www-data:www-data /usr/share/nginx/html/webmail

Откроем файл конфигурации и отредактируем

#vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;


Найдем также параметр и сделаем его пустым:

$config['smtp_pass'] = '';

 
Добавим в этот файл конфигурации сроки:

$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;


Создадим в MariaDB базу для roundcubemail, указанную в файле конфигурации:

#mysql -uroot -p

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit
 
Импортируем базу данных:

#mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

Установим необходимые php пакеты:

#apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt

В случае если при установке php-mcrypt возникла ошибка, установите его вручную

#apt install php-dev libmcrypt-dev
#pecl channel-update pecl.php.net
#pecl install mcrypt-1.0.5
#vi /etc/php/7.4/fpm/conf.d/99-mcrypt.ini

extension=mcrypt.so

 
Настроим php службу:

#vi /etc/php/7.4/fpm/php.ini

date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M

Лимиты в 50 мегабайт показаны как пример, вы можете установить свои, они позволят прикреплять к письму вложения большего объема.

#systemctl restart php7.4-fpm

Поправим лимиты в самом nginx
 
#vi /etc/nginx/nginx.conf

http {
    ...
    client_max_body_size 50M;
    ...

 
#systemctl restart nginx

Далее продолжим установку в браузере по ссылке http://<IP-VPS сервера>/webmail/installer/

Следуя инструкциям устанавливаем rouncube после чего На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.

Удалим инсталятор и запретим установку в файле конфигурации
 
#rm -rf /usr/share/nginx/html/webmail/installer
#vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['enable_installer'] = false;

 
Переходим по ссылке http://<IP-адрес сервера>/webmail/ и заходим в веб почту используя в качестве логина полный email адрес и пароль.
 
 
9. Завершающий этап настройки
 
Наш VPS сервер настроен для работы с почтой, теперь нам необходимо в настройках доменного имени прописать или заменить MX запись на IP адрес нашего сервера:

В DNS редакторе строки будут выглядеть так:
 
После того как записи будут прописаны необходимо указать обратную зону для IP адреса (PTR)
 
Корпоративный почтовый сервер на Linux Ubuntu 20.04 готов к работе.
 

Личный кабинет

Вход

Напомнить пароль


Регистрация


Проверить почту:

Логин:
Пароль:

VPS Каталог приложений

База знаний

Дополнительные услуги

VPS хостинг

Нас выбрали ведущие медиа компании с большими объемами данных и высокой нагрузкой

Рассчитать тариф

Перенос домена