Часть 3: PostfixAdmin – Настройка виртуальных почтовых ящиков на почтовом сервере Debian 11/10

В предыдущих материалах мы рассмотрели, как с нуля установить собственный почтовый сервер на Debian. В первых двух частях данной серии мы научились настраивать SMTP сервер Postfix и IMAP сервер Dovecot. Однако до сих пор у нас есть возможность создавать адреса электронной почты лишь для пользователей с локальными учетными записями Unix. В этом руководстве мы подробно расскажем о том, как организовать виртуальные почтовые ящики на почтовом сервере Debian, используя PostfixAdmin — веб-интерфейс с открытым исходным кодом для управления почтовым сервером Postfix, который поддерживает несколько доменов и пользователей.

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

Возможности PostfixAdmin

  • администрирование почтовых ящиков, виртуальных доменов и псевдонимов
  • Уведомления о отпуске или выходе из офиса (по моему мнению, эта функция более эффективно реализована в Roundcube Webmail.)
  • Алиасные домены представляют собой механизм, позволяющий перенаправлять один домен на другой с предварительной проверкой получателя.
  • Пользователи имеют возможность настраивать свои почтовые ящики, включая изменение алиаса, пароля и уведомления о временном отсутствии.
  • поддержка лимитов для отдельных почтовых ящиков и единой квоты для всего домена
  • Интеграция с fetchmail: вы сможете получать письма с вашего старого электронного адреса на новый.
  • Командный интерфейс postfixadmin-cli предназначен для пользователей, которые предпочитают избегать взаимодействия с веб-интерфейсом.

Обратите внимание: по завершении третьей части вы не сможете больше применять локальные учетные записи Unix для адресов электронной почты. Создавать адреса электронной почты нужно будет исключительно через веб-интерфейс PostfixAdmin.

Требования

Предполагаю, что вы уже ознакомились с первой и второй частями этой серии инструкций. Если вы настраивали почтовый сервер, руководствуясь другими ресурсами, советую удалить свои предыдущие конфигурации (используя команду sudo apt purge postfix dovecot-core) и начать заново, следуя моей серии руководств, чтобы избежать путаницы в разных этапах настройки.

После того как будут выполнены перечисленные требования, перейдем к установке и настройке PostfixAdmin.

Произведите установку сервера базы данных MariaDB.

PostfixAdmin разработан на PHP и нуждается в базе данных, такой как MySQL/MariaDB, PostgreSQL или SQLite. В данной статье мы будем использовать MariaDB, которая является альтернативой MySQL. Эта система была создана бывшими участниками команды MySQL, которые выражали беспокойство по поводу возможной коммерциализации MySQL компанией Oracle. Чтобы установить MariaDB на Debian, выполните следующие команды.

sudo apt update sudo apt install mariadb-server mariadb-client

После установки сервера MariaDB он должен запуститься автоматически. Для этого воспользуйтесь командой systemctl.

mariadb.service - Система управления базами данных MariaDB версии 10.5.12 Загружен: активен (/lib/systemd/system/mariadb.service; включен; настройка по умолчанию: включена) Состояние:действуетС пятницы, 29 октября 2021 года, 23:44:59 EDT; 1 минута 12 секунд назад. Документация: man> Процесс: 435322 ExecStartPost=/bin/sh - c systemctl unset-environment _WSREP_START_POSITION (код=выход, статус=0/УСПЕХ) Процесс: 435324 ExecStartPost=/etc/mysql/debian-start (код=выход, статус=0/УСПЕХ) Основной PID: 435310 (mariadbd) Статус: "Сейчас принимаю ваши SQL-запросы." Задачи: 9 (лимит: 1095) Память: 78.7M ЦП: 741ms CGroup: /system. slice/mariadb.service └─435310 /usr/sbin/mariadbd

Если он не функционирует, попробуйте запустить его с помощью следующей команды:

sudo systemctl start mariadb

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

sudo systemctl enable mariadb

Теперь проведите сценарий безопасности после завершения установки.

sudo mysql_secure_installation

При запросе пароля root для MariaDB просто нажмите Enter, так как пароль еще не задан. Ваша учетная запись root уже имеет защиту, поэтому в ответе следует выбрать n, чтобы не устанавливать новый пароль.

безопасная MariaDB на Debian Bullseye

Вы можете нажать Enter, чтобы ответить на все остальные вопросы. Это действие приведет к удалению анонимного пользователя, отключению удаленного входа под учетной записью root и удалению тестовой базы данных. Этот этап является важным требованием для обеспечения безопасности базы данных MariaDB. Учтите, что Y написано с заглавной буквы, что указывает на то, что это стандартный ответ.

Установите MariaDB на Debian Bullseye.

Загрузка PostfixAdmin на сервер Debian

PostfixAdmin доступен в стандартном репозитории Debian, но я не советую его использовать по следующим причинам:

  • При переходе на новую версию системы Ubuntu могут возникнуть проблемы, которые вызовут сбой в процессе обновления.
  • При использовании Nginx пакет postfixadmin способен автоматически установить Apache на вашу систему.
  • Если вы работаете с MySQL, данный пакет способен удалить MySQL с вашего устройства.
  • Периодически стандартный пакет postfixadmin сталкивается с проблемой зацикливания при входе.

В этой связи я расскажу, как установить актуальную версию PostfixAdmin. Для этого посетите страницу PostfixAdmin на GitHub и скачайте последнюю версию. Вы можете воспользоваться утилитой wget для загрузки через командную строку. Ссылка для загрузки всегда представлена в следующем формате. Если будет выпущена новая версия, просто замените 3.3.11 на номер этой версии.

sudo apt install wget wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz

Распакуйте архив в каталог /var/www/ после загрузки и измените его имя на postfixadmin.

sudo mkdir - p /var/www/ sudo tar xvf postfixadmin-3.3.11

bash3.3.11 /var/www/postfixadmin

Конфигурация прав доступа

PostfixAdmin нуждается в директории templates_c, и веб-серверу необходимо иметь права на чтение и запись в эту папку. Поэтому выполните следующие команды.

sudo mkdir /var/www/postfixadmin/templates_c sudo apt install acl sudo setfacl - R - m u:www-data:rwx /var/www/postfixadmin/templates_c/

С версии Dovecot 2.3.11 веб-серверу требуется доступ к сертификату TLS Let’s Encrypt для хэширования паролей. Для этого выполните следующие две команды, чтобы установить необходимые разрешения.

sudo setfacl - R - m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Настройка базы данных и учетной записи пользователя для PostfixAdmin.

Подключитесь к оболочке MySQL/MariaDB в качестве пользователя root, используя следующую команду.

sudo mysql - u root

После входа в систему создайте базу данных для PostfixAdmin, выполнив следующую команду. Я назвал её postfixadmin, но вы можете выбрать любое другое имя. (Не забудьте добавить точку с запятой в конце.)

create database postfixadmin;

Введите следующую команду, чтобы создать базу данных пользователя для PostfixAdmin. Данная команда предоставляет пользователю postfixadmin все права доступа к базе данных. Не забудьте заменить postfixadmin_password на выбранный вами пароль. Учтите, что в пароле не должно быть символа #, иначе у вас возникнут проблемы с входом позже.

grant all privileges on postfixadminpostfixadmin'@'localhost' авторизован с помощью 'postfixadmin_password';

Внесите изменения в таблицу привилегий для их применения, после чего завершите работу с оболочкой MariaDB.

flush privileges; exit;

Конфигурация PostfixAdmin

Базовый конфигурационный файл для PostfixAdmin — это config.inc.php. Необходимо создать данный файл.

Сохраните изменения и закройте файл. Учтите, что для паролей будет применяться схема ARGON2I.

Настройка виртуального хоста Apache или файла конфигурации Nginx для PostfixAdmin.

Apache

При работе с веб-сервером Apache настройте виртуальный хост для PostfixAdmin.

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

Сохраните указанный текст в файл, подставив вместо postfixadmin. example.com ваше актуальное доменное имя. Также убедитесь, что для него настроена DNS A-запись.

ServerName postfixadmin. example.comКорневая директория документа: /var/www/postfixadmin/public
Журнал ошибок: $/postfixadmin_error.log
Журнал доступа: $/postfixadmin_access.log в комбинированном форматеПараметры FollowSymLinks и AllowOverride установлены в значение All. Варианты FollowSymLinks MultiViews РазрешитьOverride Все Порядок разрешить, запретить разрешить для всех

Закройте и сохраните файл. После этого активируйте данный виртуальный хост с командой:

sudo a2ensite postfixadmin.conf

Перезапустите Apache, чтобы применить внесенные изменения.

sudo systemctl reload apache2

Вы должны увидеть веб-установщик PostfixAdmin по следующему адресу: http://postfixadmin.example.com/setup.php.

Nginx

При использовании веб-сервера Nginx настройте виртуальный хост для PostfixAdmin.

sudo nano /etc/nginx/conf.d/postfixadmin.conf

Сохраните указанный текст в файл, подставив вместо postfixadmin. example.com ваше актуальное доменное имя. Также убедитесь, что для него настроена DNS A-запись.

server < listen 80; listen [::]:80; server_name postfixadmin. example.comroot /var/www/postfixadmin/public/;
index index.php index. html;
access_log /var/log/nginx/postfixadmin_access.log;
error_log /var/log/nginx/postfixadmin_error.log;
location /< try_files $uri $uri/ /index.php; >location ~ ^/(.+\.php)$ < try_files $uri =404; fastcgi_pass unix:/run/php/ php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; > >

Обратите внимание: в Debian 11 установлен PHP версии 7.4, в то время как Debian 10 включает PHP 7.3. Если вы работаете с Debian 10, замените php7.4-fpm на php7.3-fpm в упомянутом файле.

Сохраните изменения и закройте документ. После этого проверьте настройки Nginx.

sudo nginx - t

После успешного прохождения теста перезапустите Nginx, чтобы обновления начали действовать.

sudo systemctl reload nginx

Вы должны увидеть веб-установщик PostfixAdmin по следующему адресу: http://postfixadmin.example.com/setup.php.

Инсталляция обязательных и рекомендованных PHP-модулей.

Используйте следующую команду для установки необходимых или рекомендуемых модулей PHP для PostfixAdmin на Debian 11.

sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp

Если у вас установлена Debian 10, введите следующую команду.

sudo apt install php7.3-fpm php7.3-imap php7.3-mbstring php7.3-mysql php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-bz2 php7.3-intl php7.3-gmp

При работе с Apache необходимо установить пакет libapache2-mod-php.

sudo apt install libapache2-mod-php

После этого перезапустите сервер Apache.

sudo systemctl restart apache2

Активация HTTPS

Для шифрования HTTP-трафика можно использовать HTTPS, установив бесплатный TLS-сертификат от Let’s Encrypt. Для этого выполните следующую команду, чтобы установить клиент Let’s Encrypt (certbot) на сервере Debian.

sudo apt install certbot

При использовании Apache рекомендуется установить плагин Certbot для этого веб-сервера.

sudo apt install python3-certbot-apache

Выполните данную команду для получения и установки TLS-сертификата.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email - d postfixadmin. example.com

Если вы работаете с Nginx, обязательно установите плагин Certbot, предназначенный для этой платформы.

sudo apt install python3-certbot-nginx

После этого выполните следующую команду для получения и установки сертификата TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email - d postfixadmin. example.com

  • —nginx : Применить плагин для nginx.
  • —apache : Применять модуль Apache.
  • —согласие-с-условиями: Принять условия предоставления услуг.
  • Принудительный переход на HTTPS с использованием 301 редиректа.
  • —hsts: Включите заголовок Strict-Transport-Security для каждого HTTP-ответа. Это заставляет браузер всегда использовать TLS для данного домена и обеспечивает защиту от атак, связанных с SSL/TLS Stripping.
  • —staple-ocsp: Активирует OCSP Stapling. При этом действительный ответ OCSP прикрепляется к сертификату, который сервер предоставляет в процессе TLS-соединения.

Теперь сертификат должен быть получен и установлен автоматически, что подтверждается следующим сообщением.

Активируйте статистику в Dovecot.

Для корректной работы PostfixAdmin необходимо настроить чтение статистики из Dovecot. Измените конфигурационный файл Dovecot.

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

Вставьте указанные строки в конце данного файла.

service stats < unix_listener stats-reader < user = www-data group = www-data mode = 0660 >unix_listener stats-автор< user = www-data group = www-data mode = 0660 >>

Закройте и сохраните файл, после чего включите веб-сервер в группу dovecot.

sudo gpasswd - a www-data dovecot

sudo systemctl restart dovecot

Дайте пользователю www-data необходимые права.

sudo setfacl - R - m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Завершите процесс установки в браузере.

Откройте страницу postfixadmin. example.com/setup.php, чтобы начать процесс настройки через веб-интерфейс. Сначала необходимо задать пароль для конфигурации PostfixAdmin.

сгенерировать пароль для настройки postfixadmin

После генерации хеша пароля PostfixAdmin выведет строку, аналогичную показанной ниже.

$CONF['setup_password'] = '$2y$10$58fIawuOb5y538RMBol/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2';

Откройте файл config.local.php.

sudo nano /var/www/postfixadmin/config.local.php

В конец файла добавьте строку, отображаемую на странице настроек PostfixAdmin, как показано ниже.

настройка пароля для PostfixAdmin на Debian

После сохранения файла необходимо перезагрузить страницу настроек PostfixAdmin, снова ввести пароль для настройки, а затем создать учетную запись администратора. Не рекомендуется использовать для этого почтовые адреса от Gmail, Yahoo Mail или Microsoft, так как это может привести к проблемам с последующим входом. Рекомендуется использовать почтовый адрес на собственном домене. Позже вы сможете создать почтовый ящик в PostfixAdmin.

создать учетную запись суперадмина в PostfixAdmin

После создания аккаунта суперадминистратора вы сможете войти в PostfixAdmin, перейдя по адресу postfixadmin. example.com/login.php.

страница входа в postfixadmin на debian

Конфигурация Postfix для работы с базой данных MySQL/MariaDB

По умолчанию Postfix пересылает электронные письма исключительно пользователям с локальными учетными записями Unix. Чтобы обеспечить отправку писем виртуальным пользователям, данные о которых хранятся в базе данных, необходимо настроить Postfix для работы с доменами виртуальных почтовых ящиков.

Сначала следует установить пакет postfix-mysql для обеспечения поддержки карт MySQL в Postfix.

sudo apt install postfix-mysql

Далее выполните редактирование главного конфигурационного файла Postfix.

sudo nano /etc/postfix/main.cf

Вставьте указанные строки в конце данного файла.

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf 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 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

  • virtual_mailbox_domains указывает на файл, который позволит Postfix получать данные о домене из базы данных.
  • virtual_mailbox_maps указывает на файлы, которые помогут Postfix определить, как находить электронные адреса в базе данных.
  • Параметр virtual_alias_maps указывает на файлы, которые информируют Postfix о том, как осуществлять поиск псевдонимов в базе данных.

Мы планируем использовать Dovecot для отправки входящих писем в хранилище сообщений виртуальных пользователей, поэтому добавьте следующую строку в конец данного файла.

virtual_transport = lmtp:unix:private/dovecot-lmtp

Configure-Postfix-to-Use-MySQL-MariaDB-Database-ubuntu

Сохраните файл и закройте его. Затем необходимо поочередно создать файлы с расширением.cf. Для этого создайте папку sql.

sudo mkdir /etc/postfix/sql/

Сформируйте файл с названием mysql_virtual_domains_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Включите следующее содержимое. Замените пароль на тот, который вы задали для postfixadmin на этапе 2.

user = postfixadmin password = postfixadmin_password hosts = localhost dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' #query = SELECT domain FROM domain WHERE domain='%s' #опциональный запрос для использования при пересылке для резервного MX #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' #expansion_limit = 100

Сформируйте файл mysql_virtual_mailbox_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Добавьте указанный материал.

user = postfixadmin password = postfixadmin_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' #expansion_limit = 100

Создайте файл с именем mysql_virtual_alias_domain_mailbox_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Добавьте указанный материал.

user = postfixadmin password = postfixadmin_password 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'

Создайте файл с именем mysql_virtual_alias_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf

Добавьте указанный материал.

user = postfixadmin password = postfixadmin_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' #expansion_limit = 100

Создайте файл с именем mysql_virtual_alias_domain_maps.cf.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Добавьте указанный материал.

user = postfixadmin password = postfixadmin_password 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'

Создайте файл с именем mysql_virtual_alias_domain_catchall_maps.

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

<

Параметр mydestination представляет собой перечень доменных имен, которые будут принимать электронные письма, направляемые на локальные учетные записи Unix. В первой части мы включили основное доменное имя (например, linux16.ru) в параметр mydestination. Поскольку мы планируем использовать виртуальный почтовый ящик, необходимо исключить основное доменное имя из этого списка, выполнив следующую команду.

sudo postconf - e "mydestination = \$myhostname, localhost.\$mydomain, localhost"

Теперь откроим основной файл конфигурации Postfix еще раз.

sudo nano /etc/postfix/main.cf

Вставьте указанные строки в конце данного файла.

virtual_mailbox_base = /var/vmail virtual_minimum_uid = 2000 virtual_uid_maps = static:2000 virtual_gid_maps = static:2000

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

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

sudo systemctl restart postfix

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

sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home

Установите основное место для почтовых отправлений.

sudo mkdir /var/vmail/

Сделайте vmail главным.

sudo chown vmail:vmail /var/vmail/ - R

Конфигурация Dovecot для работы с базой данных MySQL/MariaDB.

Необходимо также произвести настройку IMAP сервера Dovecot для получения данных о пользователях из базы данных. Сначала выполните команду, чтобы интегрировать поддержку MySQL в Dovecot.

sudo apt install dovecot-mysql

После этого внесите изменения в файл 10-mail.conf.

sudo nano /etc/dovecot/conf.d/10-mail.conf

В разделе 2 мы применили следующий mail_location. Почтовые сообщения располагаются в директории Maildir, которая находится в домашней папке каждого пользователя.

mail_location = maildir:~/Maildir

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

mail_home = /var/vmail/%d/%n/

виртуальный почтовый ящик домашнего каталога

Сохраните изменения в файле и закройте его. После этого внесите правки в файл 10-auth.conf.

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

Во второй части мы применили следующее значение для auth_username_format.

auth_username_format = %n

%n удалит домен, если он был указан. Поскольку в разделе 2 мы применили локальную учетную запись Unix в качестве имени пользователя для каждого электронного адреса, нам нужно использовать %n, чтобы убрать домен, что позволит пользователям входить, используя полный адрес электронной почты.

Теперь мы применяем домены виртуальных почтовых ящиков, что подразумевает, что имя пользователя для каждого почтового адреса содержит часть домена. Поэтому нам необходимо изменить формат auth_username_format следующим образом: %u не исключит домен. Это дает возможность пользователям входить, используя полный адрес электронной почты.

auth_username_format = %u

После этого перейдите к следующей строке.

#auth_default_realm =

auth_default_realm = example.com

Это требуется для того, чтобы пользователи, которые забыли добавить часть @example.com в своем имени пользователя, могли успешно войти в систему. Dovecot автоматически добавит эту часть, если она отсутствует.

Затем уберите комментарий с последней строки в этом файле, чтобы Dovecot имел возможность получать данные о пользователе из базы данных MySQL/MariaDB.

!include auth-sql.conf.ext

Теперь, скорее всего, вы не хотите, чтобы локальные пользователи Unix отправляли электронные письма без предварительной регистрации адресов в PostfixAdmin. Поэтому рекомендуется закомментировать следующую строку, добавив символ # в начале, чтобы Dovecot не обращался к локальным файлам /etc/passwd или /etc/shadow.

#!include auth-system.conf.ext

Рекомендуется включить в данный файл две строки для отладки проблем с авторизацией. Ошибки при входе будут фиксироваться в файле /var/log/mail.log. (После того как пользователи начнут входить без затруднений, эти две строки можно закомментировать.)

auth_debug = yes auth_debug_passwords = yes

База данных паролей MySQL для Dovecot.

Закройте файл и сохраните изменения.

Измените файл dovecot-sql.conf.ext.

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

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

postfixadmin_password

на пароль, который вы установили для

postfixadmin

на втором этапе.

driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin_password default_pass_scheme = ARGON2I password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' AND active='1' user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1' iterate_query = SELECT username AS user FROM mailbox

sudo systemctl restart dovecot

При попытке авторизации в системе Dovecot применяет алгоритм Argon2 для создания хеша из пароля, введенного пользователем, после чего этот хеш сопоставляется с сохранённым в базе данных хешем пароля. Если значения совпадают, пользователю удаётся войти в систему.

Включите домен и создайте почтовые ящики в PostfixAdmin.

Авторизуйтесь в веб-интерфейсе PostfixAdmin с правами администратора. Перейдите на вкладку «Список доменов» и нажмите «Новый домен», чтобы добавить новый домен. Вы сможете указать количество псевдонимов и почтовых ящиков, разрешенных для этого домена.

добавить домен в postfixadmin на debian

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

Создание новой почтовой ящика в Postfixadmin на Debian.

Затем вы можете запустить свой почтовый клиент на компьютере, например, Mozilla Thunderbird, и настроить почтовый аккаунт.

  • В настройках входящего сервера выберите протокол IMAP, укажите mail.your-domain.com в качестве имени сервера, установите порт 143 и выберите STARTTLS. В качестве метода аутентификации выберите обычный пароль.
  • В настройках исходящего сервера укажите протокол SMTP, в качестве имени сервера введите mail.your-domain.com, установите порт 587 и выберите метод шифрования STARTTLS. В качестве метода аутентификации выберите стандартный пароль.

thunderbird-mail-client-configuration

Имейте в виду, что для IMAP можно применять порт 993 с шифрованием SSL/TLS, а для SMTP — порт 465 с аналогичным шифрованием. Не рекомендуется использовать порт 25 в качестве SMTP-порта в почтовых клиентах для отправки исходящих сообщений.

Теперь у вас должна быть возможность подключиться к своему почтовому серверу и обмениваться электронными письмами через настольный почтовый клиент! Учтите, что для входа нельзя использовать локальные учетные записи Unix. Для авторизации необходимо воспользоваться виртуальным пользователем, который был создан через веб-интерфейс PostfixAdmin.

Рекомендации по диагностике и устранению проблем

В общем, рекомендуется всегда проверять журнал почты (/var/log/mail.log) на вашем почтовом сервере в случае возникновения ошибок. Ниже представлен список конкретных ошибок и рекомендации по их устранению.

Не получается авторизоваться через почтовые клиенты.

Если у вас возникают трудности с доступом к почтовому серверу через настольный почтовый клиент, проверьте, открыты ли порты на вашем почтовом сервере. Учтите, что команду следует выполнять с другого компьютера или сервера, работающего под управлением Linux. Если запустить её на самом почтовом сервере, порты всегда будут отображаться как открытые.

sudo nmap mail.your-domain.com

Проверьте, функционирует ли Dovecot.

systemctl status dovecot

Вы можете также просмотреть журнал почты (/var/log/mail.log), который может предоставить вам полезную информацию. Если Dovecot не запускается, возможно, ошибка не будет зафиксирована в файле /var/log/mail.log. В этом случае вы можете использовать следующую команду, чтобы выяснить, в чем проблема.

sudo journalctl - eu dovecot

Если в журнале почты вы заметили указанную ошибку, это может свидетельствовать о том, что вы неправильно указали пароль в файлах.cf, расположенных в каталоге /etc/postfix/sql/.

postfix/trivial-rewrite[28494]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem postfix/trivial-rewrite[28494]: warning: virtual_alias_domains lookup failure

Если в журнале почты появляется следующая ошибка, это связано с тем, что вы не указали mail_location = maildir:~Настройте Maildir, указав путь к файлу /etc/dovecot/conf.d/10-mail.conf.

open(/var/mail/[email protected]) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) missing +w perm: /var/mail, we're not in group 8(mail), dir owned by 0:8 mode=0775

DNS от Cloudflare

Как упоминалось в первой части, при использовании сервиса DNS от Cloudflare не следует активировать функцию CDN (прокси) при добавлении записей DNS A и AAAA для вашего почтового сервера. Cloudflare не предоставляет поддержку для прокси SMTP или IMAP.

Доступ к реле ограничен.

Если при попытке отправки электронных писем из почтового клиента вы сталкиваетесь с ошибкой «доступ к реле запрещен», это, скорее всего, связано с тем, что вы используете порт 25 в качестве SMTP-порта. Ранее я упоминал, что для отправки исходящих писем в почтовых клиентах (таких как Mozilla Thunderbird, Microsoft Outlook и других) следует использовать порты 587 или 465. Порт 25 предназначен исключительно для обмена данными между SMTP-серверами.

Приложение Почта для iOS

Если вы входите на свой почтовый сервер через приложение Mail на iOS и получаете следующую ошибку.

Сервер электронной почты на iOS не отвечает.

Попробуйте решить эту проблему, принудительно активировав шифрование SSL для протоколов SMTP и IMAP.

ios mail требует обязательного использования шифрования SSL.

Интересный факт: Похоже, что приложение Mail на iOS не справляется с поддержкой STARTTLS на IMAP-порту 143, однако успешно работает с STARTTLS на порту 587 для отправки.

Ошибка поиска во временном диапазоне.

Если ваш почтовый сервер функционировал без сбоев в течение определенного периода, но неожиданно в журнале почты появилась следующая ошибка,

25 авг 20:25:24 mx postfix/trivial-rewrite[3313]: предупреждение: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: проблема поиска таблицы 25 авг 20:25:24 mx postfix/trivial-rewrite[3313]: предупреждение: ошибка поиска virtual_alias_domains 25 авг 20:25:24 mx postfix/submission/smtpd[3464]: NOQUEUE: отклонить: 451 4.3.0 [email protected]>: Временная ошибка поиска; proto=ESMTP 25 авг 20:25:24 mx postfix/submission/smtpd[3464]: Временная ошибка поиска

Вероятно, ваша база данных MariaDB/MySQL приостановила свою работу. Вы можете воспользоваться следующей командой, чтобы выяснить, когда ваш сервер базы данных был остановлен.

sudo journalctl - eu mariadb

sudo journalctl - eu mysql

Одна из основных причин данной проблемы — недостаток оперативной памяти на сервере. Убедитесь, что ваш сервер обладает достаточным объемом памяти.

htop

free - m

Автоматическое очищение папок «Спам» и «Корзина».

Для того чтобы очистить папку «Спам» от электронных писем для всех пользователей, вам следует выполнить следующие действия:

sudo doveadm expunge - A mailbox Junk all

Чтобы избавиться от электронных писем в папке «Корзина», выполните следующие действия:

sudo doveadm expunge - A mailbox Trash all

Я считаю, что более разумно удалять электронные письма, находящиеся в папках «Спам» или «Корзина» дольше двух недель, чем очищать все сообщения сразу.

sudo doveadm expunge - A mailbox Junk savedbefore 2w

Затем настройте задачу cron, чтобы автоматизировать этот процесс.

sudo crontab - e

Включите следующую команду для ежедневной очистки папок «Спам» и «Корзина».

@daily doveadm expunge - A mailbox Junk savedbefore 2w;doveadm expunge - A mailbox Trash savedbefore 2w

Также нужно предоставить пользователю www-data доступ на чтение файлов сертификатов, добавив следующую строку.

@daily setfacl - R - m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Чтобы

У меня возникла проблема с циклом входа в моем PostfixAdmin, но я решил ее, обновив PostfixAdmin до самой свежей версии.

Следующий этап

Надеюсь, данный урок был полезен для установки и настройки PostfixAdmin на Debian с целью создания виртуальных почтовых ящиков. В четвертой части я продемонстрирую, как настроить SPF и DKIM для Postfix, чтобы повысить эффективность доставки электронной почты. В следующем уроке я планирую рассказать о том, как управлять несколькими почтовыми доменами с помощью PostfixAdmin.

Если вы стремитесь получить доступ к электронной почте через веб-браузер, советую обратить внимание на Roundcube. Этот клиент веб-почты с открытым исходным кодом обладает высокой популярностью и множеством функций. Не забывайте подписываться на нашу бесплатную рассылку, если нашли эту статью полезной — так вы сможете получать еще больше советов и рекомендаций.

Читайте также:  Как на Astra Linux установить Canon MF3228?