Postfix Admin — это веб-интерфейс, который позволяет пользователям настраивать и управлять почтовым сервером на основе Postfix. С помощью Postfix Admin вы можете создавать и управлять несколькими виртуальными доменами, пользователями и псевдонимами.
Это первая публикация из серии о настройке и настройке почтового сервера, в которой рассказывается о создании необходимых записей DNS и объясняется, как установить и настроить Postfix Admin, Nginx с бесплатным сертификатом Let’s Encrypt, PHP и MySQL.
Это руководство было написано для Ubuntu 16.04, однако те же шаги с небольшими изменениями должны работать в любой более новой версии Ubuntu .
Содержание
Подготовка
В качестве предварительных условий для выполнения этой серии вам потребуются:
- Сервер Ubuntu 16.04. Имя хоста сервера должно быть полным доменным именем . В этой серии мы будем использовать
mail.linuxize.com
. - Пользователь с привилегиями sudo .
Настройки DNS
Для работы вашей почтовой системы необходимо настроить следующие записи DNS:
- Запись, указывающая полное доменное имя (имя хоста) вашей системы на IPv4-адрес вашего почтового сервера.
mail.linuxize.com. 3600 IN A 23.45.67.89
- Запись MX, чтобы указать, какой почтовый сервер отвечает за прием сообщений электронной почты от имени домена получателя. В нашем случае мы хотим, чтобы все электронные письма, отправленные на
@linuxize.com
электронной почты@linuxize.com
принимались почтовым серверомmail.linuxize.com
.
linuxize.com. 3600 IN MX 0 mail.linuxize.com.
- Запись SPF, которая используется для проверки того, какие почтовые серверы одобрены для отправки электронной почты от имени данного домена. В приведенном ниже примере мы утверждаем почтовые серверы домена (mx), и если проверка SPF не удалась, результатом будет мягкий сбой (~ все):
linuxize.com. 3600 IN TXT "v=spf1 mx ~all"
Обратный DNS (PTR)
Обратный 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.linuxize.com.
Создать системного пользователя
Поскольку мы настраиваем почтовый сервер с виртуальными пользователями, нам нужен один системный пользователь, который будет владельцем всех почтовых ящиков и будет использоваться виртуальными пользователями для доступа к своим сообщениям электронной почты на сервере.
Следующая команда создаст новую группу и пользователя с именем 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
.
Установите Nginx PHP и MySQL
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
Вам будет предложено создать пароль root MySQL во время установки.
Скачайте и настройте Postfix Admin
На момент написания 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 Admin в каталог /var/www
и создайте каталог templates_c
(smarty cache):
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 по умолчанию мы создадим новый файл с именем config.local.php
который перезапишет настройки приложения по умолчанию:
Откройте файл с вашим текстовым файлом:
sudo nano /var/www/postfixadmin/config.local.php
Вставьте следующий код 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' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$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 [email protected] --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
Результат должен выглядеть примерно так:
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
The admin [email protected] has been added!
---------------------------------------------------------------
P4ssvv0rD
) для учетной записи P4ssvv0rD
на более безопасный.Установите бесплатный SSL-сертификат Let’s Encrypt
Мы собираемся использовать сертификат SSL для доступа к нашей установке Postfix Admin и включить шифрование Dovecot и Postfix SSL / TLS.
У нас есть руководство о том, как установить SSL-сертификат Let’s Encrypt . Наиболее важным моментом здесь является создание сертификата SSL для имени хоста вашего сервера (FQDN) в нашем случае mail.linuxize.com
.
После того, как вы сгенерировали сертификат SSL, следуя инструкциям, приведенным выше, отредактируйте блок сервера Nginx следующим образом:
server {
listen 80;
server_name mail.linuxize.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.linuxize.com;
root /var/www;
ssl_certificate /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.linuxize.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mail.linuxize.com/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.linuxize.com/postfixadmin
, используя пользователя суперадмина, созданного ранее в этом руководстве.
Выводы
В этом руководстве вы установили Postfix Admin. В следующей части этой серии мы продолжим установку и настройку Postfix и Dovecot. Оставайтесь в курсе!
Этот пост является частью серии «Установка и настройка почтового сервера». Другие сообщения из этой серии: