Идеальный сервер — Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)
В этом руководстве показано, как подготовить сервер Debian Jessie (с nginx, BIND, Dovecot) для установки ISPConfig 3.1 и как установить ISPConfig 3.1. ISPConfig 3 — это панель управления веб-хостингом, которая позволяет настроить следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, сервер Courier или Dovecot IMAP/POP3, сервер имен MySQL, BIND или MyDNS, PureFTPd, SpamAssassin, ClamAV и многие другие. Эта настройка охватывает nginx (вместо Apache), BIND в качестве DNS-сервера и Dovecot в качестве сервера IMAP/POP3.
1 Предварительное примечание
В этом руководстве я использую имя хоста server1.example.com с IP-адресом 192.168.1.100 и шлюзом 192.168.1.1. Эти настройки могут отличаться для вас, поэтому вам придется заменить их там, где это необходимо. Прежде чем продолжить, вам необходимо иметь минимальную установку Debian 8. Это может быть минимальный образ Debian от вашего хостинг-провайдера, или вы можете использовать руководство по минимальному серверу Debian для настройки базовой системы.
2 Установите SSH-сервер
Если вы не устанавливали сервер OpenSSH во время установки системы, вы можете сделать это сейчас:
apt-get -y install ssh openssh-server
С этого момента вы можете использовать SSH-клиент, например PuTTY, подключаться со своей рабочей станции к серверу Debian 8 и выполнять оставшиеся шаги из этого руководства.
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 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Затем отредактируйте файл /etc/hostname:
nano /etc/hostname
Он должен содержать только субдоменную часть, в нашем случае:
server1
Наконец, перезагрузите сервер, чтобы изменения вступили в силу:
reboot
Войдите снова и проверьте правильность имени хоста с помощью следующих команд:
hostname
hostname -f
Вывод должен быть таким:
:/tmp# hostname -f
server1.example.com
5 Обновите установку Debian
Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий wheezy-updates (это гарантирует, что вы всегда будете получать самые свежие обновления для антивирусного сканера ClamAV — этот проект очень часто публикует релизы, и иногда старые версии перестают работать), и что репозитории contrib и non-free включены (некоторые пакеты, такие как libapache2-mod-fastcgi, отсутствуют в основном репозитории).
nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# Debian backports - Required for Letsencrypt
deb http://ftp.debian.org/debian jessie-backports main
ВАЖНО: добавьте репозиторий Debian Backports, как показано выше.
Бегать
apt-get update
обновить базу данных пакетов apt и
apt-get upgrade
установить последние обновления (если они есть).
6 Изменить оболочку по умолчанию
/bin/sh — это символическая ссылка на /bin/dash, однако нам нужен /bin/bash, а не /bin/dash. Поэтому делаем так:
dpkg-reconfigure dash
Использовать тире в качестве системной оболочки по умолчанию (/bin/sh)? <-- Нет
Если вы этого не сделаете, установка ISPConfig завершится ошибкой.
7 Синхронизируйте системные часы
Рекомендуется синхронизировать системные часы с сервером NTP (nсетевой 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
Вам будут заданы следующие вопросы:
Общий тип конфигурации почты: <-- Интернет-сайт
Системное имя почты: <-- server1.example.com
Новый пароль для \root\ пользователя MariaDB: <-- yourrootsqlpassword
Повторить пароль для пользователя MariaDB \root\: <-- yourrootsqlpassword
Чтобы обезопасить установку MariaDB/MySQL и отключить тестовую базу данных, выполните следующую команду:
mysql_secure_installation
Нам не нужно менять корневой пароль MySQL, так как мы просто устанавливаем новый во время установки. Ответьте на вопросы следующим образом:
Change the root password? [Y/n] <-- n
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
Затем откройте TLS/SSL и порты отправки в Postfix:
nano /etc/postfix/master.cf
Раскомментируйте разделы submit и smtps следующим образом (оставьте -o milter_macro_daemon_name=ORIGINATING, так как он нам не нужен):
[...] 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/my.cnf и закомментируем строку bind-address=127.0.0.1:
nano /etc/mysql/my.cnf
[...] # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]
Затем перезапускаем MySQL:
service mysql restart
Теперь проверьте, включена ли сеть. Бегать
netstat -tap | grep mysql
Вывод должен выглядеть так:
:~#
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 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 jessie 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
Метроном теперь установлен в /opt/metronome.