В этом руководстве мы покажем, как установить и настроить почтовый сервер на Ubuntu 24.04 Используя почтовый сервер, можно тщательно контролировать весь почтовый трафик. Кроме того, гибкость настроек позволяет создать четкую и организованную службу электронной почты. Хотя существуют различные варианты настройки почтового сервера Linux, мы остановимся на Postfix и Dovecot. Есть альтернатива уже готового почтового сервера из коробки – iRedMail
Шаг 1. Установите имя хоста
Имя хоста – это метка, используемая для идентификации машины, которая поможет вам отличить ваши серверы от других. Вам нужно будет создать A-запись DNS для имени хоста, потому что имя хоста сервера должно быть FQDN (Fully Qualified Domain Name). Например, в этом руководстве мы будем использовать ubuntu yourdomain.com в качестве имени хоста сервера. Затем выполните следующую команду:
sudo hostnamectl set-hostname ubuntu.yourdomain.com
Убедитесь, что вы заменили ubuntu.yourdomain.com своим собственным поддоменом, указывающим на IP-адрес вашего сервера
Шаг 2. Установка зависимостей
На этом шаге мы установим веб-сервер Apache, PHP с его расширениями и MariaDB в качестве сервера баз данных. Выполним следующую команду.
sudo apt install apache2 git mariadb-server 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 без пароля.
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
Затем нам нужно закомментировать !include 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 и измените его на:
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-enabled/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.com/postfixadmin/setup.php.
Дважды введите свой установочный пароль и нажмите на кнопку Generate setup_password hash.
Вы увидите строку, содержащую пароль настройки, и вам нужно скопировать ее в config.local.php, примерно так:
$CONF['setup_password'] = '$2y$10$YpUXiIQAP47pudUDz0n3leljN2ap5xBq/O1ntFmgAtU0WArEXy84y';
После добавления строки в файл config.local.php вы можете обновить страницу, чтобы войти в систему и создать суперадмина.
Прокрутите страницу вниз, чтобы создать учетную запись суперадмина. Для создания суперадмина требуется пароль настройки, который вы создали ранее. В поле «Администратор» нужно ввести адрес электронной почты, он должен выглядеть следующим образом:
Теперь, когда суперадмин создан, вы можете использовать его учетные данные для входа на сайт http://192.168.53.5/postfixadmin/login.php и добавления доменов, адресов электронной почты и т. д.
Шаг 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 и войти в систему, используя учетные данные, созданные на предыдущем шаге. Войдя в систему, вы можете попробовать отправить письмо.
Комментарии (0)