ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Четверг, 12 декабря, 2024

Как установить и настроить почтовый сервер в Ubuntu 24.04

В этом руководстве мы продемонстрируем, как установить и настроить почтовый сервер в Ubuntu 24.04, поскольку крупные и средние компании могут значительно выиграть от наличия частного почтового сервера. Используя почтовый сервер, становится возможным внимательно отслеживать весь трафик электронной почты. Кроме того, гибкость настройки параметров позволяет создать четкую и организованную службу электронной почты. Хотя существуют различные варианты настройки почтового сервера Linux, мы специально сосредоточимся на Postfix и Dovecot.

 

Необходимые требования для почтового сервера в Ubuntu 24.04

 

Соглашения

# – данные команды должны выполняться с правами root либо непосредственно как пользователь root, либо с помощью команды sudo
$ – данные команды должны выполняться как обычный пользователь

 

Шаг 1. Установите имя хоста

Имя хоста — это метка, используемая для идентификации компьютера и помогающая отличить ваши серверы от других. Вам потребуется создать запись DNS A для вашего имени хоста, потому что имя хоста сервера должно быть полным доменным именем. Например, мы будем использовать ubuntu.yourdomain.ru в качестве имени хоста сервера в этом руководстве. Впоследствии выполните следующую команду:

$ sudo hostnamectl set-имя хоста ubuntu.yourdomain.ru

 

Обязательно замените ubuntu.yourdomain.ru установите свой собственный поддомен, указывающий на IP-адрес вашего сервера

 

Шаг 2. Установите зависимости

На этом шаге мы установим веб-сервер Apache, PHP с его расширениями и MariaDB в качестве сервера базы данных. Давайте выполним эту команду ниже.

$ sudo apt install apache2 git mariadb-сервер php-{xml, pear, imap, intl, common, json, curl, mbstring, mysql, gd, imagick, zip, opcache, sqlite3} libapache2-mod-php

 

Шаг 3. Создайте системного пользователя

На этом шаге мы создадим нового системного пользователя для хранения электронных писем на сервере. Давайте вызовем приведенную ниже команду.

$ sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual Mail User" vmail
$ sudo mkdir -p /var/vmail
$ sudo chmod -R 770 /var/vmail
$ sudo chown -R vmail:mail /var/vmail

 

Шаг 4. Создайте базу данных

Далее давайте создадим базу данных. По умолчанию вы можете войти в MySQL shell без пароля.

$ sudo mysql

 

После входа в систему давайте выполним эти команды.

MariaDB [(none)]> CREATE DATABASE postfixadmin;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'M0d1fyth15';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

 

Шаг 5. Установите Postfix.

Установите почтовый сервер Postfix из репозитория Ubuntu по умолчанию с помощью этой команды:

$ sudo apt install postfix-mysql

 

Данные, связанные с почтовым сервером, будут храниться в базе данных MySQL. После завершения установки пакета postfix-mysql нам нужно создать несколько конфигурационных файлов, чтобы Postfix мог взаимодействовать с базой данных.

$ sudo mkdir -p /etc/postfix/sql

 

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

$ sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
$ sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
$ sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
$ sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
$ sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
$ sudo nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
$ sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin
password = M0d1fyth15
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

 


Теперь мы можем выполнить приведенные ниже команды для редактирования файла postfix main.cf.

$ sudo postconf -e "myhostname = $(hostname -f)"
$ sudo postconf -e "mydestination = localhost"
$ sudo postconf -e "mynetworks = 127.0.0.0/8"
$ sudo postconf -e "inet_protocols = ipv4"
$ sudo postconf -e "inet_interfaces = all"
$ sudo postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem"
$ sudo postconf -e "smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key"
$ sudo postconf -e "smtpd_use_tls = yes"
$ sudo postconf -e "smtpd_tls_auth_only = yes"
$ sudo postconf -e "smtpd_sasl_type = dovecot"
$ sudo postconf -e "smtpd_sasl_path = private/auth"
$ sudo postconf -e "smtpd_sasl_auth_enable = yes"
$ sudo postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination"
$ sudo postconf -e "virtual_transport = lmtp:unix:private/lmtp"
$ sudo postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
$ sudo postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
$ sudo postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"

После завершения мы можем продолжить и отредактировать файл /etc/postfix /master.cf:

$ sudo nano /etc/postfix/master.cf

 

Измените или добавьте в файл следующие строки.

smtp      inet  n       -       y       -       -       smtpd
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
# Choose one: enable submission for loopback clients only, or for any client.
#127.0.0.1:submission inet n -   y       -       -       smtpd
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_tls_auth_only=yes
#  -o local_header_rewrite_clients=static:all
#  -o smtpd_reject_unlisted_recipient=no
#     Instead of specifying complex smtpd_<xxx>_restrictions here,
#     specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
#     here, and specify mua_<xxx>_restrictions in main.cf (where
#     "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
#  -o smtpd_client_restrictions=
#  -o smtpd_helo_restrictions=
#  -o smtpd_sender_restrictions=
#  -o smtpd_relay_restrictions=
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

 

Шаг 6. Установите Dovecot

Запустите эту команду, чтобы установить Dovecot.

$ sudo apt install dovecot-mysql dovecot-imapd dovecot-pop3d

 

После установки Dovecot мы можем приступить к следующим шагам и отредактировать некоторые файлы конфигурации.

Откройте файл /etc/dovecot/conf.d/10-auth.conf

$ sudo nano /etc/dovecot/conf.d/10-auth.conf

 

Затем найдите эту строку

auth_mechanisms = plain

 

и замените строку на эту:

auth_mechanisms = plain login

 

Затем нам нужно прокомментировать !включите auth-system.conf.ext и раскомментируйте строку !include auth-sql.conf.ext

Это должно выглядеть примерно так:

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

 

По-прежнему в файле 10-auth.conf мы включаем auth-sql.conf.ext. Итак, давайте отредактируем файл, чтобы он выполнялся.

$ sudo nano /etc/dovecot/dovecot-sql.conf.ext

 

Вставьте в файл следующие строки:

driver = mysql
connect = host=localhost dbname=postfixadmin user=postfixadmin password=M0d1fyth15
default_pass_scheme = BLF-CRYPT
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/var/vmail/%d/%u' as home, 'maildir:/var/vmail/%d/%u' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'

 

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

Затем откройте файл /etc/dovecot/conf.d/10-mail.conf и измените следующие значения:

$ sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%n
mail_uid = vmail
mail_gid = mail
mail_privileged_group = mail
first_valid_uid = 150
last_valid_uid = 150

 

Сохраните файл, затем выйдите. Теперь давайте приступим к редактированию других файлов конфигурации dovecot.

$ sudo nano /etc/dovecot/conf.d/10-master.conf

 

В этот файл необходимо внести несколько изменений.

Найдите раздел service lmtp и измените его на следующий:

service lmtp {
    unix_listener /var/spool/postfix/private/lmtp {
    mode = 0600
    user = postfix
    group = postfix
    }
}

 

Найдите раздел авторизации в сервисе и измените его на:

service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

unix_listener auth-userdb {
mode = 0600
user = vmail

}
user = dovecot
}

 

Измените раздел service auth-worker на следующий:

service auth-worker {
user = vmail
}

 

Не забудьте сохранить файл и затем выйти. А теперь пришло время исправить разрешения.

$ sudo chown -R vmail:dovecot /etc/dovecot
$ sudo chmod -R o-rwx /etc/dovecot

 

Шаг 7. Установите PostfixAdmin

На этом шаге мы загрузим PostfixAdmin с Github и сохраним его в каталоге /opt.

$ sudo cd /opt
$ sudo git clone https://github.com/postfixadmin/postfixadmin.git
$ sudo cd /opt/postfixadmin
$ sudo bash install.sh

 

Давайте исправим разрешение.

$ sudo chown -R www-data: /opt/postfixadmin

 

Добавьте /etc/apache2/conf с поддержкой/postfixadmin.conf

$ sudo nano /etc/apache2/conf-enabled/postfixadmin.conf

 

Вставьте эти строки в этот файл.

Alias /postfixadmin /opt/postfixadmin/public

<Directory "/opt/postfixadmin/public">
        AllowOverride All
        Options +FollowSymLinks
        Require all granted
</Directory>

 

Затем нам нужно перезагрузить Apache.

$ sudo systemctl reload apache2

 

Далее давайте создадим config.local.php

$ sudo nano /opt/postfixadmin/config.local.php

 

и вставьте следующие строки

<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'M0d1fyth15';
$CONF['database_name'] = 'postfixadmin';
$CONF['configured'] = true;
?>

 

Сохраните файл, затем выйдите из редактора.

Перейдите по ссылке http://YOUR_IP_ADDRESS/postfixadmin/setup.php и создайте установочный пароль. Если у вас уже есть веб-сайт на вашем сервере, вы также можете получить доступ к postfixadmin по адресу http://yourdomain.ru/postfixadmin/setup.php

Как установить и настроить почтовый сервер в Ubuntu 24.04

 

Дважды введите установочный пароль и нажмите на кнопку Сгенерировать хэш setup_password.

Вы увидите строку, содержащую установочный пароль, и вам нужно скопировать его в config.local.php, что-то вроде:

$CONF['setup_password'] = '$2y $10$YpUXiIQAP47pudUDz0n3leljN2ap5xBq/O1ntFmgAtU0WArEXy84y';

 

После добавления строки в файл config.local.php вы можете обновить страницу для входа в систему и создания суперадмина.

Как установить и настроить почтовый сервер в Ubuntu 24.04

 

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

Как установить и настроить почтовый сервер в Ubuntu 24.04

 

Теперь, когда создан суперадмин, вы можете использовать учетные данные для входа в систему http://192.168.53.5/postfixadmin/login.php и добавить домены, адрес электронной почты и т.д.

Как установить и настроить почтовый сервер в Ubuntu 24.04

 

Шаг 8. Установите Webmail

На этом этапе ваш сервер может отправлять электронные письма. Чтобы получать электронные письма, убедитесь, что запись DNS MX вашего домена указывает на этот сервер. Вы можете использовать свой любимый почтовый клиент для отправки электронных писем или вместо этого использовать веб-почту. Давайте установим Roundcube прямо сейчас.

$ sudo apt install roundcube

 

Далее давайте отредактируем файл конфигурации rouncube в /etc/apache2/conf-enabled/roundcube.conf

$ sudo nano /etc/apache2/conf-enabled/roundcube.conf

 

Раскомментируйте эту строку

# Alias /roundcube /var/lib/roundcube/public_html

 

И это должно выглядеть примерно так:

Alias /roundcube /var/lib/roundcube/public_html

 

Сохраните файл, завершите работу и перезапустите apache

$ sudo systemctl restart apache2

 

Следующим шагом будет редактирование другого конфигурационного файла Rouncube, на этот раз по адресу /etc/roundcube/config.inc.php

$ sudo nano /etc/roundcube/config.inc.php

 

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

$config['smtp_host'] = 'localhost: 587';

 

и заменить его этим:

$config['smtp_host'] = 'tls://%n:587';

 

Вы успешно установили почтовый сервер в Ubuntu 24.04

Теперь вы можете перейти на свой http://YOUR_SERVER_IP_ADDRESS/roundcube и войти в систему, используя учетные данные, которые вы создали на предыдущем шаге. После входа в систему вы можете попробовать отправить электронное письмо.

PS. Если вам понравился этот пост, пожалуйста, поделитесь им со своими друзьями в социальных сетях или просто оставьте комментарий внизу в разделе комментариев. Спасибо.

Exit mobile version