Установка и настройка почтового сервер с PostfixAdmin

Установка и настройка почтового сервер с PostfixAdmin

Set up a mail server with PostfixAdmin

21 Декабря 2019 | Ubuntu

Postfix Admin - это веб-интерфейс, который позволяет пользователям настраивать почтовый сервер Postfix и управлять им. С Postfix Admin вы можете создавать и управлять несколькими виртуальными доменами, пользователями и псевдонимами.

Установка и настройка почтового сервер с PostfixAdmin

Это первая публикация. которая описывает создание необходимых записей DNS и объясняет, как установить и настроить Postfix Admin, Nginx с бесплатным сертификатом Let's Encrypt, PHP и MySQL.

Это руководство было написано для Ubuntu 16.04, однако те же шаги с небольшими изменениями должны работать на любой более новой версии Ubuntu .

В качестве предварительных условий, чтобы следовать этой серии, вам потребуется:

  • Сервер Ubuntu 16.04. Cервер должен быть c доменным именем . В этой серии мы будем использовать mail.baks.dev.
  • Пользователь с привилегиями sudo

Для работы вашей почтовой системы необходимо настроить следующие записи DNS:

  • Запись, указывающая полное доменное имя (имя хоста) вашей системы на адрес IPv4 вашего почтового сервера.

mail.baks.dev. 3600 IN A   23.45.67.89

     Полное доменное имя состоит из двух частей: имени хоста и имени домена.
  • MX запись, чтобы указать, какой почтовый сервер отвечает за прием сообщений электронной почты от имени домена получателя. В нашем случае мы хотим, чтобы все электронные письма отправлялись на почтовый сервер `@baks.dev email addresses to be accepted by the mail.baks.dev`.

baks.dev.      3600 IN MX  0 mail.baks.dev.

  • Запись SPF, которая используется для проверки того, какие почтовые серверы одобрены для отправки электронной почты от имени данного домена. В приведенном ниже примере мы утверждаем почтовые серверы домена (mx), и если проверка SPF завершится неудачно, результатом будет мягкий сбой (~ all):

baks.dev.      3600 IN TXT "v=spf1 mx ~all"

     Конечно, вам необходимо заменить имя домена и IP-адрес на ваше реальное имя домена и IP-адрес вашего почтового сервера.

Обратный DNS (PTR) - это сопоставление IP-адреса с именем домена, полная противоположность DNS, которая сопоставляет доменные имена с IP-адресами.

Большинство почтовых серверов выполняют обратный поиск DNS по IP-адресу, который пытается подключиться к ним, и могут не принимать электронные письма от сервера, если не установлена ​​запись PTR.


В большинстве случаев записи PTR можно установить через веб-интерфейс вашего хостинг-провайдера или связавшись со службой поддержки и попросив их настроить правильную запись PTR для вас.

Вы можете использовать команду dig, чтобы узнать обратный DNS данного IP-адреса.

dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.baks.dev.

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

Следующая команда создаст новую группу и имя пользователя vmailи установит для домашнего каталога пользователя значение /var/mail/vmail:

sudo groupadd -g 5000 vmail
sudo useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail


   Все виртуальные почтовые ящики будут храниться в /var/mail/vmail каталоге.

Postfix Admin - это приложение на основе PHP. Чтобы получить доступ к веб-интерфейсу PostfixAdmin, нам нужно установить веб-сервер и PHP.

Выполните следующую команду, чтобы установить Nginx, PHP и все необходимые модули PHP:


sudo apt install nginx mysql-server php7.0-fpm php7.0-cli php7.0-imap php7.0-json php7.0-mysql php7.0-opcache php7.0-mbstring php7.0-readline


Вам будет предложено создать корневой пароль MySQL во время установки.


На момент написания статьи, 3.1 это последняя стабильная версия Postfix Admin.

Загрузите архив Postfix Admin с помощью следующей команды wget :


VERSION=3.1
wget -q https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${VERSION}/postfixadmin-${VERSION}.tar.gz


После завершения загрузки распакуйте архив :

tar xzf postfixadmin-${VERSION}.tar.gz


   Переместите исходные файлы администратора Postfix в /var/www каталог и создайте templates_c каталог (кэш smarty):

sudo mv postfixadmin-${VERSION}/ /var/www/postfixadmin
rm -f postfixadmin-${VERSION}.tar.gz
mkdir /var/www/postfixadmin/templates_c


   И Nginx, и PHP-FPM работают под пользователем, www-data поэтому нам нужно сменить владельца /var/www/postfixadmin этого пользователя:

sudo chown -R www-data: /var/www/postfixadmin 

Postfix Admin будет использовать базу данных MySQL для хранения информации о пользователях, доменах и конфигурации приложения.

Авторизуйтесь на сервере БД MySQL :

mysql -u root -p

Создайте нового пользователя и базу данных MySQL используя следующие команды:


CREATE DATABASE postfixadmin;
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';
FLUSH PRIVILEGES;

Не забудьте сменить пароль ( P4ssvv0rD) на более безопасный.

Вместо того, чтобы редактировать конфигурацию Postfix Admin по умолчанию, мы создадим новый файл с именем, config.local.php который перезапишет настройки приложения по умолчанию:

Откройте файл с вашим текстовым файлом:


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

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

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

<?php
$CONF['configured'] = true;

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'P4ssvv0rD';
$CONF['database_name'] = 'postfixadmin';

$CONF['default_aliases'] = array (
  'abuse'      => 'abuse@baks.dev',
  'hostmaster' => 'hostmaster@baks.dev',
  'postmaster' => 'postmaster@baks.dev',
  'webmaster'  => 'webmaster@baks.dev'
);

$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';

$CONF['quota'] = 'YES';
$CONF['domain_quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';
?>


Сохраните и закройте файл.

В приведенной выше конфигурации мы определяем тип базы данных и учетные данные для входа. Также мы указываем псевдонимы по умолчанию, отключаем fetchmail и включаем квоту.

Затем выполните следующую команду, чтобы создать схему для базы данных Postfix Admin:


sudo -u www-data php /var/www/postfixadmin/upgrade.php


   После того, как база данных заполнена, мы можем продолжить и создать нашего первого пользователя PostfixAdmin superadmin, используя postfixadmin-cli инструмент.

Этот пользователь будет иметь права администратора для изменения любого домена или настройки приложения.

sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add superadmin@baks.dev --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD


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


Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------

The admin superadmin@baks.dev has been added!

---------------------------------------------------------------

Не забудьте изменить пароль ( P4ssvv0rD) для учетной записи superadmin на более безопасный.

Мы собираемся использовать сертификат SSL для доступа к нашей установке Postfix Admin и включить шифрование Dovecot и Postfix SSL / TLS.

У нас есть руководство по установке SSL-сертификата Let's Encrypt . Наиболее важным моментом здесь является создание сертификата SSL для вашего имени хоста сервера (FQDN) в нашем случае mail.baks.dev.

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

/etc/nginx/sites-enabled/mail.baks.dev.conf
server {
    listen 80;
    server_name mail.baks.dev;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name mail.baks.dev;
    root /var/www;

    ssl_certificate /etc/letsencrypt/live/mail.baks.dev/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mail.baks.dev/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mail.baks.dev/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    location / {
       try_files $uri $uri/ /index.php;
    }

    location /postfixadmin {
       index index.php;
       try_files $uri $uri/ /postfixadmin/index.php;
    }

    location ~* \.php$ {
         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
         if (!-f $document_root$fastcgi_script_name) {return 404;}
         fastcgi_pass  unix:/run/php/php7.0-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Перезагрузите службу Nginx, чтобы изменения вступили в силу:

sudo systemctl reload nginx

На этом этапе вы сможете войти в систему установки Postfix Admin по адресу https://mail.baks.dev/postfixadmin, используя пользователя superadmin, созданного ранее в этом руководстве.


В этом руководстве вы установили Postfix Admin. 

    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...