Серверы · 7 min read · Nov 03, 2025

Идеальный сервер - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Этот учебник показывает, как подготовить сервер Debian 9 (с Nginx, BIND, Dovecot) для установки ISPConfig 3.1 и как установить ISPConfig 3.1. ISPConfig 3 - это панель управления веб-хостингом, которая позволяет вам настраивать следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, IMAP/POP3 сервер Courier или Dovecot, MySQL, BIND или MyDNS сервер имен, PureFTPd, SpamAssassin, ClamAV и многие другие. Эта настройка охватывает веб-сервер Nginx, BIND как DNS-сервер и Dovecot как IMAP / POP3 сервер.

1 Предварительная заметка

В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.1.100 и шлюзом 192.168.1.1. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо. Прежде чем продолжить, вам нужно иметь минимальную установку Debian 9. Это может быть минимальный образ Debian от вашего хостинг-провайдера или вы можете использовать учебник по минимальному серверу Debian для настройки базовой системы.

2 Установка SSH-сервера

Если вы не установили сервер OpenSSH во время установки системы, вы можете сделать это сейчас:

apt-get -y install ssh openssh-server

С этого момента вы можете использовать SSH-клиент, такой как PuTTY, и подключаться со своего рабочего места к вашему серверу Debian 9 и следовать оставшимся шагам из этого учебника.

3 Установка текстового редактора оболочки (необязательно)

Я буду использовать текстовый редактор nano в этом учебнике. Некоторые пользователи предпочитают классический редактор vi, поэтому я установлю оба редактора здесь. Программа vi по умолчанию имеет странное поведение на Debian и Ubuntu; чтобы исправить это, мы устанавливаем vim-nox:

apt-get -y install nano vim-nox

(Вам не нужно делать это, если вы используете другой текстовый редактор, такой как joe.)

4 Настройка имени хоста

Имя хоста вашего сервера должно быть поддоменом, например “server1.example.com”. Не используйте имя домена без части поддомена, например “example.com”, в качестве имени хоста, так как это вызовет проблемы позже с вашей почтовой настройкой. Сначала вам следует проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна выглядеть так: “IP-адрес - пробел - полное имя хоста включая домен - пробел - часть поддомена”. Отредактируйте /etc/hosts. Сделайте это:

nano /etc/hosts
127.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.com

5 Обновите вашу установку Debian

Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий stretch/updates (это гарантирует, что вы всегда получаете самые новые обновления для вирусного сканера ClamAV - этот проект публикует релизы очень часто, и иногда старые версии перестают работать), и что репозитории contrib и non-free включены.

nano /etc/apt/sources.list
deb 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

ВАЖНО: Добавьте репозиторий Debian Backports, как показано выше.

Запустите

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 ( n etwork t ime p rotocol) через Интернет. Просто выполните

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

Вам будут заданы следующие вопросы:

Общий тип конфигурации почты: <– Интернет-сайт
Системное имя почты: <– server1.example.com

Чтобы обеспечить безопасность установки MariaDB / MySQL и отключить тестовую базу данных, выполните эту команду:

mysql_secure_installation

Нам не нужно менять пароль root MySQL, так как мы только что установили новый во время установки. Ответьте на вопросы следующим образом:

Изменить пароль 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 следующим образом (оставьте -o milter_macro_daemon_name=ORIGINATING, так как он нам не нужен):

[...]
submission inet n - y - - 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 - y - - 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

Мы хотим, чтобы MariaDB слушала на всех интерфейсах, а не только на 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 и дважды установите пароль MYSQL / MariaDB root в строках, которые начинаются с 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:~# netstat -tap | grep mysql  
tcp6       0      0 [::]:mysql              [::]:*                     LISTEN      4027/mysqld  
root@server1:~#

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 spamassassin

9.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-get install build-essential

и установите пакеты с помощью 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 luarocks
luarocks 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 install

Metronome теперь установлен в /opt/metronome.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.