config local php postfixadmin
PostfixAdmin. Установка и настройка
Аренда сервера. Выделенные серверы в Украине и Нидерландах
Аренда сервера

Отмечаем нужные опции:
Пакет postfixadmin установлен и мы переходим к его настройке. В процессе настройки мы позаботимся о безопасности, настроим виртуальный хост для postfixadmin таким образом, чтобы даже в случае взлома злоумышленник не смог причинить практически никакого вреда системе. Итак, поехали.
Для скриптов postfixadmin мы выделим отдельную площадку. Для этих целей создадим пользователя и домашнюю директорию с деревом каталогов под виртуалхост, установим соответствующие права:
В директории /home/postfixadmin/tmp будут размещаться временные файлы, генерируемые PHP скриптом (сессии, к примеру), а в директории /home/postfixadmin/admin.example.com – скрипты postfixadmin. Перенесем их в эту директорию и зададим нужного владельца на дерево каталогов:
Создадим базу данных для posfixadmin:
Создадим файл /home/postfixadmin/admin.example.com/config.local.php и отредактируем его (для совместимости с последующими версиями не рекомендуется редактировать config.inc.php, вместо этого рекомендуется заносить измененные опции в config.local.php):
Теперь переходим к настройке виртуалхоста для postfixadmin. В созданной нами директории для конфигурационных файлов виртуалхостов (/usr/local/etc/apache/vhosts) создаем файл postfixadmin.conf:
ServerName admin.example.com
ServerAdmin [email protected]
DocumentRoot «/home/postfixadmin/admin.example.com»
Установка и настройка PostfixAdmin на CentOS 7
Инструкция рассчитана на тех, у кого уже есть настроенный почтовый сервер и необходимо отдельно установить систему управления для него. Если настроенного почтового сервера нет, лучше перейти к инструкции Настройка полноценного почтового сервера на Postfix, которая уже включает подраздел с установкой и PostfixAdmin, и Dovecot, и систем безопасности.
Настройка веб-сервера и сервера баз данных
PostfixAdmin работает как веб-приложение на веб-сервере. В качестве последнего в данной инструкции будет использоваться httpd (apache) + PHP. Если есть желание настроить систему управления Postfix на NGINX, читайте инструкцию Установка NGINX на CentOS.
В качестве СУБД будем использовать MariaDB.
Httpd + PHP
Для установки httpd на CentOS выполняем следующую команду:
Разрешаем http-порт в брандмауэре:
Разрешаем автозапуск и запускаем сервис httpd:
systemctl enable httpd
systemctl start httpd
Открываем браузер и проверяем работоспособность веб-сервера. Мы должны увидеть что-то подобное:
PHP и дополнительные компоненты
yum install php php-mysql php-mbstring php-imap
* php-mysql — компонент для подключения к базе MySQL (MariaDB), php-mbstring — расширение для работы со строковыми данными; php-imap необходим для взаимодействия с почтовой системой по IMAP.
Для применения настроек перезагружаем httpd:
systemctl restart httpd
MariaDB
yum install mariadb mariadb-server
Включаем автозапуск и запускаем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя mariadb:
Установка и настройка PostfixAdmin
Сначала скачиваем последнюю версию postfixadmin:
* если система вернет ошибку, установите wget — yum install wget.
Распаковываем скачанный архив в директорию с порталом:
* где /var/www/html — каталог по умолчанию для хранения сайтов в Apache.
Переименовываем распакованную папку (убираем указание на версию), чтобы было удобнее вводить URL-адрес:
mv /var/www/html/postfixadmin-3.0.2 /var/www/html/postfixadmin
Задаем права на каталог:
* в данном примере, в качестве веб-сервера используется Apache, который по умолчанию запускается от пользователя apache, поэтому мы и задаем его в качестве владельца.
Создаем базу данных postfix и учетную запись в mariadb:
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* где postfix — имя базы.
GRANT ALL ON postfix.* TO ‘postfix’@’localhost’ IDENTIFIED BY ‘postfix123’;
* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.
Выходим из командной оболочки MariaDB:
Открываем конфигурационный файл postfixadmin:
И редактируем следующее:
$CONF[‘configured’] = true;
$CONF[‘default_language’] = ‘ru’;
$CONF[‘database_password’] = ‘postfix123’;
$CONF[’emailcheck_resolve_domain’]=’NO’;
Запускаем браузер и вводим адрес http:// /postfixadmin/setup.php
Начнется процесс проверки конфигурации и установки портала PostfixAdmin. После ее окончания вводим дважды пароль и генерируем хэш:
После перезагрузки страницы копируем хэш:
Открываем конфигурационный файл и редактируем следующее:
$CONF[‘setup_password’] = ‘7a8e14. c26’;
После, на той же странице, где показан хэш, добавляем суперпользователя PostfixAdmin:
В итоге мы увидим следующее:
И переходим в браузере на страницу http:// /postfixadmin/
Вводим логин и пароль для созданного пользователя.
Установка и настройка почтового сервера postfix с хранением почтовых паролей в БД
Мы уже рассказывали о том, как провести подготовительные работы и настроить почтовый сервер с хранением данных пользователей в файле. Теперь рассмотрим второй вариант и разберёмся, как настраивать почтовый сервер с виртуальными пользователями и хранением информации в базе данных.
Установка веб-сервера и сервера БД
Для Centos:
Запускаем веб-сервер и включаем автозагрузку:
Запускаем сервер БД и включаем автозагрузку:
Для Debian/Ubuntu:
Для Debian 8:
При установке в Debian 8 и Ubuntu 16.04 нужно будет также придумать и указать, какой пароль root будет у БД:

В Ubuntu 18.04 и Debian 9 пароль пользователя root указывается пустой при установке.
Запускаем веб-сервер и включаем автозагрузку:
Запускаем сервер БД и включаем автозагрузку:
Устанавливаем и настраиваем postfixadmin
Postfixadmin — это веб-интерфейс управления почтовым сервером. В нём можно создать почтовые домены и почтовые ящики.
Создаём БД:
В консоли mysql вводим следующие команды:
Centos:
Debian/Ubuntu:
Символическая ссылка должна вести в директорию сайта (укажите путь до своего сайта), если на сервере нет сайтов, то нужно оставить текущую команду:
Создаем локальный файл конфигурации:
И вставляем в него следующий код, предварительно заменив пароль от БД и почтовый домен на свои:
Далее переходим по адресу: http://ВАШ_ПОЧТОВЫЙ_ДОМЕН/postfixadmin/setup.php
После чего откроется страница с проверкой настроек — все параметры должны быть OK.
Если по итогам проверки есть замечания, их нужно устранить. Если замечаний нет, придумайте и введите пароль установки в форме внизу страницы (пароль должен содержать обязательно 2 цифры и быть длиннее 5 символов), нажмите кнопку — « Generate password hash ». Страница обновится и появится хеш, который выделен красным:
Перезагружаем страницу и теперь можем создать учётную запись администратора:
Пишем в первой строке пароль от установки, который вводили ранее, и указываем почтовый ящик root@ВАШ_ПОЧТОВЫЙ_ДОМЕН и пароль к нему, если все сделано правильно, то пользователь будет добавлен:
Создаём почтовый ящик: Обзор — Создать ящик :
Устанавливаем и настраиваем postfix
Устанавливаем postfix на сервер:
Для Centos (обычно в Centos 7 он уже установлен):
Для Debian/Ubuntu:
Далее отобразится окно, где нужно выбрать Internet Site:
И в следующем окне указать ваш домен, с которого будет отправляться почта:
Запускаем и добавляем в автозагрузку службу postfix:
В конец файла /etc/postfix/master.cf добавляем следующие строки:
Для Centos в конец этого же файла нужно добавить:
Для Debian/Ubuntu в конец этого же файла нужно добавить:
Создадим директорию для хранения файлов подключения к mysql :
Создадим файлы конфигурации mysql:
В созданный файл добавляем:
В созданный файл добавляем:
В созданный файл добавляем:
В созданный файл добавляем:
В созданный файл добавляем:
Теперь сгенерируем самоподписанный сертификат, чтобы данные не передавались в открытом виде. При генерации сертификата будут заданы несколько вопросов, на них можно ответить все что угодно, особой роли это не играет.
Вот пример выполнения команды:
Если у вас есть платный сертификат на домен с не истекшим сроком действия, используйте его. Файлы сертификата нужно разместить в директории /etc/postfix/certs/ и заменить имена файлов на свои в конфигурационном файле postfix /etc/postfix/main.cf в следующих строках:
Проверить корректность настроек postfix можно через команду:
Перезапустим службу, чтобы применились настройки:
Устанавливаем и настраиваем dovecot
Centos:
Debian/Ubuntu:
Активируем службу и добавляем в автозапуск:
Создаём локальный файл настроек:
Открываем файл текстовым редактором и указываем в нём следующие настройки:
И внесём в него следующие настройки:
Сертификат используется тот, что генерировали при настройке postfix, если используете свой сертификат, то нужно указать путь до него в следующих строках конфигурационного файла dovecot /etc/dovecot/local.conf :
Перезапускаем службу, чтобы применились настройки:
Установка и настройка почтового сервер с PostfixAdmin
Set up a mail server with PostfixAdmin
Это первая публикация. которая описывает создание необходимых записей DNS и объясняет, как установить и настроить Postfix Admin, Nginx с бесплатным сертификатом Let’s Encrypt, PHP и MySQL.
Прежде чем приступить
В качестве предварительных условий, чтобы следовать этой серии, вам потребуется:
Настройки DNS
Для работы вашей почтовой системы необходимо настроить следующие записи DNS:
Обратный DNS (PTR)
Большинство почтовых серверов выполняют обратный поиск DNS по IP-адресу, который пытается подключиться к ним, и могут не принимать электронные письма от сервера, если не установлена запись PTR.
В большинстве случаев записи PTR можно установить через веб-интерфейс вашего хостинг-провайдера или связавшись со службой поддержки и попросив их настроить правильную запись PTR для вас.
Вы можете использовать команду dig, чтобы узнать обратный DNS данного IP-адреса.
Создать системного пользователя
Поскольку мы настраиваем почтовый сервер с виртуальными пользователями, нам нужен один системный пользователь, который будет владельцем всех почтовых ящиков и будет использоваться виртуальными пользователями для доступа к своим почтовым сообщениям на сервере.
Следующая команда создаст новую группу и имя пользователя vmail и установит для домашнего каталога пользователя значение /var/mail/vmail :
Все виртуальные почтовые ящики будут храниться в /var/mail/vmail каталоге.
Установите Nginx PHP и MySQL
Выполните следующую команду, чтобы установить Nginx, PHP и все необходимые модули PHP:
Вам будет предложено создать корневой пароль MySQL во время установки.
Скачать и настроить Postfix Admin
На момент написания статьи, 3.1 это последняя стабильная версия Postfix Admin.
Загрузите архив Postfix Admin с помощью следующей команды wget :
После завершения загрузки распакуйте архив :
Переместите исходные файлы администратора Postfix в /var/www каталог и создайте templates_c каталог (кэш smarty):
И Nginx, и PHP-FPM работают под пользователем, www-data поэтому нам нужно сменить владельца /var/www/postfixadmin этого пользователя:
Postfix Admin будет использовать базу данных MySQL для хранения информации о пользователях, доменах и конфигурации приложения.
Авторизуйтесь на сервере БД MySQL :
Создайте нового пользователя и базу данных MySQL используя следующие команды:
Вместо того, чтобы редактировать конфигурацию Postfix Admin по умолчанию, мы создадим новый файл с именем, config.local.php который перезапишет настройки приложения по умолчанию:
Откройте файл с вашим текстовым файлом:
Вставьте следующий код php:
В приведенной выше конфигурации мы определяем тип базы данных и учетные данные для входа. Также мы указываем псевдонимы по умолчанию, отключаем fetchmail и включаем квоту.
Затем выполните следующую команду, чтобы создать схему для базы данных Postfix Admin:
После того, как база данных заполнена, мы можем продолжить и создать нашего первого пользователя PostfixAdmin superadmin, используя postfixadmin-cli инструмент.
Этот пользователь будет иметь права администратора для изменения любого домена или настройки приложения.
Вывод должен выглядеть примерно так:
Не забудьте изменить пароль ( P4ssvv0rD ) для учетной записи superadmin на более безопасный.
Установите бесплатный SSL-сертификат Let’s Encrypt
Мы собираемся использовать сертификат SSL для доступа к нашей установке Postfix Admin и включить шифрование Dovecot и Postfix SSL / TLS.
После того, как вы сгенерировали сертификат SSL, следуя приведенному выше учебнику, отредактируйте свой блок сервера Nginx следующим образом:
Перезагрузите службу Nginx, чтобы изменения вступили в силу:
Вывод
В этом руководстве вы установили Postfix Admin.
Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим
В данной инструкции выполнена настройка полноценного почтового сервера. Список всех особенностей и возможностей:
Содержание
1. Преднастройка системы
Напоминаю, данная инструкция написана под систему Linux CentOS версии 7.
Общие настройки
Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа.
hostnamectl set-hostname relay.dmosk.ru
* необходимо указать FQDN-имя, которое будет доступно из глобальной сети. В данном примере указано relay.dmosk.ru.
Устанавливаем служебные пакеты (они понадобятся в процессе настройки сервера):
yum install chrony wget
* chrony для возможности синхронизировать время на сервере; wget — клиент для загрузки файлов.
Задаем временную зону (в данном примере московское время):
timedatectl set-timezone Europe/Moscow
Разрешаем сервис для синхронизации времени и запускаем его:
Настройка безопасности
Заранее открываем порты на брандмауэре с помощью firewalld:
* где мы откроем следующие порты:
В CentOS также может использоваться утилита iptables — в таком случае команды будут следующие:
Отключение SELinux
Для отключения дополнительного компонента безопасности вводим 2 команды:
* первая команда отключит SELinux для текущей загрузки. Вторая оставит его отключенным на постоянной основе.
2. Настройка веб-сервера: NGINX + PHP + MariaDB
Система управления PostfixAdmin работает как веб-приложение, разработанное на PHP, а информацию хранит в базе данных. В нашем примере будет использоваться веб-сервер на NGINX, а база данных — MariaDB.
Установка NGINX
Устанавливаем репозиторий EPEL:
yum install epel-release
Разрешаем автозапуск сервиса и запускаем его:
systemctl enable nginx
systemctl start nginx
Проверяем работоспособность веб-сервера, обратившись к нему в браузере по IP-адресу. Если видим заголовок «Welcome to nginx!», NGINX настроен верно.
PHP + PHP-FPM + NGINX
Устанавливаем php и php-fpm:
yum install php php-fpm
* где /usr/share/nginx/html — каталог для размещения портала управления Postfix.
* здесь мы поменяли строку 127.0.0.1:9000.
systemctl enable php-fpm
systemctl start php-fpm
systemctl restart nginx
* если в процессе перезапуска nginx выскочит ошибка nginx: [emerg] a duplicate default server, необходимо найти настройку виртуального домена, в которой также указана опция default_server — опцию нужно убрать. Или можно самостоятельно настроить другой виртуальный домен.
Для проверки, создаем индексный файл в директории сайта со следующим содержимым:
Открываем сайт в браузере по его IP-адресу. На открывшейся странице мы должны увидеть подробную информацию по php:
MariaDB
Устанавливаем сервер баз данных следующей командой:
yum install mariadb-server
Включаем автозапуск сервиса и запускаем его:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для пользователя sql root:
3. Установка и настройка PostfixAdmin
Устанавливаем дополнительные компоненты для PHP:
yum install php-mysql php-mbstring php-imap
Для применения установленных пакетов, перезапускаем обработчик скриптов:
systemctl restart php-fpm
В директории сайтов nginx создаем каталог для postfixadmin и распаковываем в него архив:
Создаем каталог templates_c внутри папки портала (без него не запустится установка):
Задаем права на каталог:
* несмотря на то, что мы используем веб-сервер nginx, php-fpm по умолчанию, запускается от пользователя apache.
Создаем базу данных postfix и учетную запись в mariadb:
> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* где postfix — имя базы.
> GRANT ALL ON postfix.* TO ‘postfix’@’localhost’ IDENTIFIED BY ‘postfix123’;
* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.
Выходим из командной оболочки MariaDB:
Создаем конфигурационный файл postfixadmin:
* в предыдущих версиях использовался файл config.inc.php. В новых версиях его не рекомендуется править, а использовать config.local.php, который переопределяет настройки.
И добавим следующее:
* где configured говорит приложению, что администратор закончил его конфигурирование; default_language — используемый язык по умолчанию; database_password — пароль для базы данных, который мы задали на предыдущем шаге; emailcheck_resolve_domain — задает необходимость проверки домена при создании ящиков и псевдонимов.
Запускаем браузер и вводим адрес http:// /postfixadmin/public/setup.php
Задаем дважды пароль установки и генерируем хэш, кликнув по Generate setup_password hash:
После перезагрузки страницы копируем хэш:
Открываем конфигурационный файл:
И добавляем строчку:
.
$CONF[‘setup_password’] = ‘$2y$10. BMK’;
* где ‘$2y$10. BMK’ — скопированный хэш.
Загружаем по новой страницу http:// /postfixadmin/public/setup.php — теперь у нас появится форма для ввода нашего пароля, созданного на предыдущем этапе. Вводим его и кликаем по Login with setup_password:
* где Setup password — пароль, который мы ввели на предыдущей странице; Пароль — новый пароль для создаваемой учетной записи.
Будет выполнена установка PostfixAdmin.
Если в процессе установки система выведет ошибки, необходимо самостоятельно с ними разобраться. Как правило, они могут сводиться к отсутствию необходимых пакетов, которых может не оказаться в системе по умолчанию.
После установки в нижней части страницы должна быть форма добавления суперпользователя — вводим данные:
И переходим в браузере на страницу http:// /postfixadmin/public/
Вводим логин и пароль для созданного пользователя.
Однако, конкретно, в моем случае, пользователь не создавался при установке системы и необходимо было создать администратора вручную. Если это потребуется, в консоли сервера подключаемся к СУБД:
Переходим к использованию базы postfix:
Добавляем администратора запросом:
> INSERT INTO admin (`username`, `password`, `superadmin`, `active`) VALUES (‘root@dmosk.ru’, ‘$1$1b7ff416$/KKYqdyAd3viA3.PNu5hh/’, ‘1’, ‘1’);
Выходим из sql-оболочки:
Теперь переходим на страницу http:// /postfixadmin/public/login.php вводим логин root@dmosk.ru и пароль qwe12345 — мы должны оказаться в системе управления почтой.
4. Настройка Postfix
По умолчанию, Postfix уже установлен в CentOS 7. Но если встретится сервер без него, выполним установку простой командой:
yum install postfix
Создаем учетную запись, от которой мы будем работать с каталогом виртуальных почтовых ящиков:
* сначала мы создаем группу vmail и guid 1024, после — пользователя vmail с uid 1024 и домашней директорией /home/mail. Обратите внимание, что в некоторых системах идентификатор группы и пользователя 1024 может быть занят. В таком случае необходимо создать другой, а в данной инструкции ниже заменить все 1024 на альтернативный.
Теперь открываем на редактирование конфигурационный файл почтового сервера:
И редактируем следующие строки:
* данная настройка указывает, какой домен подставлять отправителю, если он не указан в заголовке FROM.
mydestination = localhost.$mydomain, localhost, localhost.localdomain
* указываем, для каких доменов принимаем входящую почту.
* указываем, откуда брать список локальных пользователей.
* разрешаем отправлять сообщения локальному серверу.
* необходимо убедиться, что postfix будет слушать на всех необходимых интерфейсах, в данном случае, на всех (all). Также можно задать варианты loopback-only (127.0.0.1) или конкретный IP-адрес интерфейса.
* данный параметр задаст протокол для работы postfix. В данном примере на всех (all). Также можно задать значения ipv4 или ipv6.
Если имя сервера отличается от имени, по которому сервер будет зарегистрирован в DNS, задаем опцию:
Теперь в конец конфигурационного файла допишем следующее:
virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
Создаем файл с настройками обращения к базе с алиасами:
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address=’%s’ AND active = ‘1’
* где user и password — логин и пароль для подключения к MySQL; hosts — имя сервера баз данных (в нашем случае, локальный сервер); dbname — имя базы данных; query — шаблон запроса к данным.
Создаем файл с инструкцией получения данных по виртуальным доменам:
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain=’%u’
И файл с почтовыми ящиками:
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,’/’,maildir) FROM mailbox WHERE username=’%s’ AND active = ‘1’
Открываем файл master.cf и дописываем в самый конец:
* после команды идут аргументы ее запуска. Они могут переопределять параметры, заданные в main.cf. Каждый аргумент записывается с новой строки и начинается с двух пробелов. В данном примере мы используем слудующие аргументы:
systemctl restart postfix
5. Настройка Dovecot
Устанавливаем Dovecot с компонентом для работы с СУБД:





















