Серверы · 6 min read · Nov 06, 2025
Идеальный сервер - Debian 9 (Stretch) с Apache, BIND, Dovecot, PureFTPD и ISPConfig 3.1

Этот учебник показывает, как подготовить сервер Debian 9 (с Apache2, BIND, Dovecot) для установки ISPConfig 3.1 и как установить ISPConfig. Веб-хостинг панель управления ISPConfig 3 позволяет настраивать следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, IMAP/POP3 сервер Courier или Dovecot, MySQL, BIND или MyDNS сервер имен, PureFTPd, SpamAssassin, ClamAV и многое другое. Эта настройка охватывает Apache (вместо nginx), BIND и Dovecot.
1 Предварительная заметка
В этом учебнике я буду использовать имя хоста server1.example.com с IP-адресом 192.168.1.100 и шлюзом 192.168.1.1. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их, где это необходимо. Прежде чем продолжить, вам необходимо иметь минимальную установку Debian 9. Это может быть минимальный образ Debian от вашего хостинг-провайдера или вы можете использовать учебник по минимальному серверу Debian для настройки базовой системы.
2 Установите SSH сервер (по желанию)
Если вы не установили сервер OpenSSH во время установки системы, вы можете сделать это сейчас:
apt-get install ssh openssh-serverС этого момента вы можете использовать SSH-клиент, такой как PuTTY, и подключаться со своего рабочего места к вашему серверу Debian 9 и следовать оставшимся шагам из этого учебника.
3 Установите текстовый редактор оболочки (по желанию)
Мы будем использовать текстовый редактор nano в этом учебнике. Некоторые пользователи предпочитают классический редактор vi, поэтому мы установим оба редактора здесь. Программа vi по умолчанию имеет странное поведение на Debian и Ubuntu; чтобы исправить это, мы устанавливаем vim-nox:
apt-get install nano vim-noxЕсли vi - ваш любимый редактор, замените nano на vi в следующих командах для редактирования файлов.
4 Настройте имя хоста
Имя хоста вашего сервера должно быть поддоменом, таким как “server1.example.com”. Не используйте имя домена без части поддомена, такое как “example.com”, в качестве имени хоста, так как это приведет к проблемам позже с вашей почтовой настройкой. Сначала вам следует проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна выглядеть так: “IP-адрес - пробел - полное имя хоста, включая домен - пробел - часть поддомена”. Для нашего имени хоста server1.example.com файл должен выглядеть так:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.1.100 server1.example.com server1
# Следующие строки желательны для хостов, поддерживающих IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersЗатем отредактируйте файл /etc/hostname:
nano /etc/hostnameОн должен содержать только часть поддомена, в нашем случае:
server1Наконец, перезагрузите сервер, чтобы применить изменения:
rebootВойдите снова и проверьте, правильно ли теперь имя хоста с помощью этих команд:
hostname
hostname -fВывод должен выглядеть так:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Обновите вашу установку Debian
Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий stretch/updates (это гарантирует, что вы всегда получаете самые новые обновления безопасности) и что репозитории contrib и non-free включены, так как некоторые необходимые пакеты отсутствуют в основном репозитории.
nano /etc/apt/sources.listdeb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-freeЗапустите:
apt-get updateЧтобы обновить базу данных пакетов apt
apt-get upgradeи установить последние обновления (если они есть).
6 Измените оболочку по умолчанию
/bin/sh является символической ссылкой на /bin/dash, однако нам нужна /bin/bash, а не /bin/dash. Поэтому мы делаем это:
dpkg-reconfigure dashИспользовать dash в качестве оболочки системы по умолчанию (/bin/sh)? <- нет
Если вы этого не сделаете, установка ISPConfig завершится неудачей.
7 Синхронизируйте системные часы
Хорошей идеей является синхронизация системных часов с сервером NTP ( network time protocol) через Интернет. Просто выполните
apt-get install ntpи ваше системное время всегда будет синхронизировано.
8 Установите Postfix, Dovecot, MySQL, rkhunter и Binutils
Мы можем установить Postfix, Dovecot, MySQL, rkhunter и Binutils одной командой:
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoЕсли вы предпочитаете MySQL вместо MariaDB, замените пакеты “mariadb-client mariadb-server” в приведенной выше команде на “mysql-client mysql-server”.
Вам будут заданы следующие вопросы:
Общий тип конфигурации почты: <– Интернет-сайт
Системное имя почты: <– server1.example.com
Чтобы обеспечить безопасность установки MariaDB / MySQL и отключить тестовую базу данных, выполните эту команду:
mysql_secure_installationОтветьте на вопросы следующим образом:
Изменить пароль root? [Y/n] <-- y
Новый пароль: <-- Введите новый пароль root MySQL
Повторите новый пароль: <-- Повторите пароль root MySQL
Удалить анонимных пользователей? [Y/n] <-- y
Запретить удаленный вход root? [Y/n] <-- y
Удалить тестовую базу данных и доступ к ней? [Y/n] <-- y
Перезагрузить таблицы привилегий сейчас? [Y/n] <-- yЗатем откройте порты TLS/SSL и отправки в Postfix:
nano /etc/postfix/master.cfРаскомментируйте разделы отправки и smtps следующим образом и добавьте строки, где это необходимо, чтобы этот раздел файла master.cf выглядел точно так же, как приведенный ниже.
[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]Перезапустите Postfix после этого:
service postfix restartМы хотим, чтобы MySQL слушал на всех интерфейсах, а не только на localhost. Поэтому мы редактируем /etc/mysql/mariadb.conf.d/50-server.cnf и комментируем строку bind-address = 127.0.0.1 и добавляем строку sql-mode=”NO_ENGINE_SUBSTITUTION”:
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Вместо skip-networking по умолчанию теперь слушает только на
# localhost, что более совместимо и не менее безопасно.
#bind-address = 127.0.0.1
sql-mode="NO_ENGINE_SUBSTITUTION"
[...]Установите метод аутентификации пароля в MariaDB на native, чтобы мы могли использовать PHPMyAdmin позже для подключения в качестве пользователя root:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootОтредактируйте файл /etc/mysql/debian.cnf и дважды установите пароль root MYSQL / MariaDB в строках, которые начинаются с password.
nano /etc/mysql/debian.cnfПароль root MySQL, который необходимо добавить, показан в чтении, в этом примере пароль “howtoforge”.
# Автоматически сгенерировано для скриптов Debian. НЕ ТРОГАЙТЕ!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usrЧтобы предотвратить ошибку ‘ Ошибка в accept: Слишком много открытых файлов ‘, мы установим более высокие лимиты открытых файлов для MariaDB сейчас.
Откройте файл /etc/security/limits.conf с помощью редактора:
nano /etc/security/limits.confи добавьте эти строки в конец файла.
mysql soft nofile 65535
mysql hard nofile 65535Затем создайте новый каталог /etc/systemd/system/mysql.service.d/ с помощью команды mkdir.
mkdir -p /etc/systemd/system/mysql.service.d/и добавьте новый файл внутри:
nano /etc/systemd/system/mysql.service.d/limits.confвставьте следующие строки в этот файл:
[Service]
LimitNOFILE=infinityСохраните файл и закройте редактор nano.
Затем мы перезагружаем systemd и перезапускаем MariaDB:
systemctl daemon-reload
service mysql restartТеперь проверьте, что сеть включена. Выполните
netstat -tap | grep mysqlВывод должен выглядеть так:
root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld
root@server1:/home/administrator#9 Установите Amavisd-new, SpamAssassin и ClamAV
Чтобы установить amavisd-new, SpamAssassin и ClamAV, мы выполняем
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgreyНастройка ISPConfig 3 использует amavisd, который загружает библиотеку фильтра SpamAssassin внутренне, поэтому мы можем остановить SpamAssassin, чтобы освободить немного ОЗУ:
service spamassassin stop
systemctl disable spamassassin9.1 Установите сервер Metronome XMPP (по желанию)
Этот шаг устанавливает сервер Metronome XMPP, который предоставляет сервер чата, совместимый с протоколом XMPP. Этот шаг является необязательным, если вам не нужен сервер чата, вы можете пропустить этот шаг. Никакие другие функции ISPConfig не зависят от этого программного обеспечения.
Добавьте репозиторий пакетов Prosody в Debian.
echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -Обновите список пакетов:
apt-get updateи установите пакеты с помощью apt.
apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocksluarocks install lpcДобавьте пользователя оболочки для Metronome.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeСкачайте Metronome в каталог /opt и скомпилируйте его.
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make installMetronome теперь установлен в /opt/metronome.
Get new posts in your inbox
No spam. Unsubscribe anytime.