Menu

Веб-сервер "под ключ" на базе Debian 8 'Jessie'

Описан процесс подготовки сервера Debian Jessie (с Apache2, BIND, Dovecot) для установки ISPConfig 3 и непосредственно установка ISPConfig 3. Это надёжная проверенная статья, но начиная с 2019 года лучше использовать новую версию Debian 9.

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

Будем считать, что необходимо получить веб-окружение на базе Apache.

 

1. Предварительные замечания

В данной статье будем использовать имя хоста server1.drach.pro, IP адрес 192.168.0.100 и шлюз 192.168.0.1. В конкретном случае эти параметры могут отличаться, вам необходимо будет заменить их на свои там, где это требуется.

Перед дальнейшими действиями у Вас должна быть установлена операционная система Debian 8. Предполагается, что была выполнена чистая инсталляция, а не обновление существующей системы.

2 Установка SSH server

Если OpenSSH server не был установлен во время установки системы, введём следующее:

apt-get install ssh openssh-server

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

Этот шаг не является обязательным.

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

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

apt-get install nano vim-nox

Если Вы предпочитаете vi, замените nano на vi в командах редактирования фалов.

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

Имя хоста для сервера должно представлять собой поддомен типа "server1.drach.pro". Не используйте имя домена без поддомена - "drach.pro" в качестве имени хоста, это может вызвать сложности при установки почты. В начале нужно проверить имя хоста в /etc/hosts и при необходимости изменить его. Строка должна быть следующего вида: "IP Address - space - full hostname incl. domain - space - subdomain part". Для имени хоста server1.drach.pro, это будем выглядеть следующим образом:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.100 server1.drach.pro 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

Выходные данные должны выглядеть следующим образом:

# hostname
server1
# hostname -f
server1.drach.pro

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

Для начала убедимся, что /etc/apt/sources.list содержит репозиторий jessie/updates (это значит, что Вы всегда будете получать свежие обновления безопасности) и что вкладываемые и несвободные репозитории разрешены (некоторые пакеты, например, libapache2-mod-fastcgi не находятся в главной репозитории).

nano /etc/apt/sources.list
#deb cdrom:[Debian GNU/Linux 8.0.0 _Jessie_ - Official amd64 NETINST Binary-1 20150425-12:50]/ jessie main
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

Выполним:

apt-get update

Для обновления баз данных пакета apt

apt-get upgrade

и для установки последних обновлений (если они есть).

6 Изменение стандартной оболочки

/bin/sh является символьной ссылкой на /bin/dash, однако нам потребуется /bin/bash, а не /bin/dash. Выполним следующее:

dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)?

Если этого не сделать, далее невозможно будет установить ISPConfig.

7 Синхронизация времени системы

Системное время можно синхронизировать по NTP (network time protocol) через интернет:

apt-get install ntp ntpdate

8 Установка Postfix, Dovecot, MySQL, phpMyAdmin, 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".

Затем потребуется ответить на следующие вопросы:

General type of mail configuration:
System mail name:
New password for the MariaDB "root" user:
Repeat password for the MariaDB "root" user:

Затем откроем 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

Нам необходимо, чтобы MariaDB работал со всеми интерфейсами, а не только с локальным хостом, для этого отредактируем файл /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

Выходные данные должны выглядеть следующим образом:

root@server1:/tmp# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 27371/mysqld

9 Установка Amavisd-new, SpamAssassin и Clamav

Для установки amavisd-new, SpamAssassin и ClamAV, выполним следующее:

Tapt-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

Отредактируем файл настройки Clamd, находящийся по адресу/etc/clamav/clamd.conf

nano /etc/clamav/clamd.conf

и изменим значение and AllowSupplementaryGroups с false на true:

AllowSupplementaryGroups true

Установка ISPConfig 3 использует amavisd, который загружает библиотеку фильтров SpamAssassin, поэтому остановим SpamAssassin, для того, чтобы освободить оперативную память:

service spamassassin stop
systemctl disable spamassassin

10 Установка Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt устанавливаются следующим образом:

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached libapache2-mod-passenger

Далее потребуется ответить на следующие вопросы:

Web server to reconfigure automatically:
Configure database for phpmyadmin with dbconfig-common?
Enter the password of the administrative user?
Enter the phpmyadmin application password?

Затем нам потребуется включить модули Apache suexec, rewrite, ssl, actions и include (дополнительно dav, dav_fs, and auth_digest, если вам требуется WebDAV):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi

и разрешим работу moduley, выполнив:

service apache2 restart

11 Установка SuPHP

Уточнение!
Необязательно, не рекомендуется.

SuPHP больше недоступен для Debian Jessie. Режим suphp больше не должен использоваться в ISPConfig, так как существуют лучшие режимы PHP, такие как:php-fpm и php-fcgi. Если Вы хотите использовать suphp, необходимо выполнить следующее вручную:

apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutils
cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz
wget -O suphp.patch
https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log
make
make install

Создадим директорию настройки suphp и файл suphp.conf:

mkdir /var/log/suphp
mkdir /etc/suphp
nano /etc/suphp/suphp.conf
[global]
;Path to logfile
logfile=/var/log/suphp/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=www-data
;Path all scripts have to be in
docroot=/var/www
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0022
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi=execute:!self
umask=0022

Далее добавим файл config для загрузки модуля suphp в apache:

echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.load

Затем откроем /etc/apache2/mods-available/suphp.conf...

nano /etc/apache2/mods-available/suphp.conf

... и добавим следующее:


AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp

suPHP_Engine on

# By default, disable suPHP for debian packaged web applications as files
# are owned by root and cannot be executed by suPHP because of min_uid.

suPHP_Engine off

# # Use a specific php config file (a dir which contains a php.ini file)
# suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type .
# suPHP_RemoveHandler

Включим модуль suphp в apache:

a2enmod suphp

И перезапустим Apache:

service apache2 restart

12 XCache и PHP-FPM

Xcache представляет собой бесплатный PHP opcode кэшер, предназначенный для кэширования и оптимизации промежуточного кода PHP. Он схож с другими opcode кэшерами, например, eAccelerator или APC. Настоятельно рекомендуется установить один из этих кэшеров, если вы хотите ускорить страницу PHP.

Xcache устанавливается следующим образом:

apt-get install php5-xcache

Перезапустим Apache:

service apache2 restart

12.2 PHP-FPM

Начиная с ISPConfig 3.0.5, дополнительным режим PHP, который можно выбрать для использования совместно с Apache: PHP-FPM.

Для использования PHP-FPM совместно Apache, нам потребуется mode_fastcgi модуля Apache(не путать с mod_fcgid). Установим PHP-FPM и mode_fastcgi следующим образом:

apt-get install libapache2-mod-fastcgi php5-fpm

Убедимся, что модуль включен и перезапустим Apache:

a2enmod actions fastcgi alias
service apache2 restart

13 Install Mailman

Начиная с версии 3.0.4, ISPConfig также позволяет управлять (создавать/редактировать/удалять) список адресатов Mailman. Если вы хотите пользоваться данной возможностью, потребуется установить Mailman следующим образом:

apt-get install mailman

Выберем по крайне мере один язык:

Languages to support: 
Missing site list

Перед запуском Mailman необходимо создать первый список адресатов под названием mailman:

newlist mailman
root@server1:~# newlist mailman
Enter the email of the person running the list: <-
- admin email address, e.g. Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Initial mailman password: To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner... root@server1:~#

Откроем файл /etc/aliases

nano /etc/aliases

... и добавим следующие строки:

[...]
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe
mailman"

Далее запустим:

newaliases

и затем перезапустим Postfix:

service postfix restart

В конце активируем конфигурацию Mailman Apache:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf

Определим alias /cgi-bin/mailman/ для всех виртуальных хостов Apache, это означает, что мы может получить доступ к интерфейсу администратора Mailman по адресу http:///cgi-bin/mailman/admin/, а адрес для пользователей из списка адресатов будет выглядеть следующим образом: http:///cgi-bin/mailman/listinfo/.

В http://server1.drach.pro/pipermail находится архив списка адресатов.

Перезапустим Apache:

service apache2 restart

и затем запустим Mailman:

service mailman start

14 УстановкаPureFTPd и Quota

PureFTPd и quota устанавливаются следующим образом:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Затем отредактируем файл /etc/default/pure-ftpd-common...

nano /etc/default/pure-ftpd-common

... и убедимся, что режимом запуска установлена автономная установка и значение VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Теперь настроим PureFTPd, для того, чтобы разрешить сессии FTP и TLS. FTP является очень ненадёжным протоколом, потому что все пароли и данные передаются в виде текста. При использовании TLS, вся коммуникации зашифрована, что делает FTP гораздо более защищённым.

Для разрешения сессий FTP иTLS введём следующее:

echo 1 > /etc/pure-ftpd/conf/TLS

Для использования TLS необходимо создать сертификат SSL. Создадим директорию /etc/ssl/private/, в которой будет находится данный сертификат:

mkdir -p /etc/ssl/private/

Далее сгенерируем сертификат SSL следующим образом:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: 
State or Province Name (full name) [Some-State]: 
Locality Name (eg, city) []: <--Ввести название города.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []:

Изменим права доступа сертификата SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Затем перезапустим PureFTPd:

service pure-ftpd-mysql restart
root@server1:~# service pure-ftpd-mysql restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -8 UTF-8 -u 1000 -E -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -B root@server1:~#

Отредактируем /etc/fstab. Добавим строку usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# /boot was on /dev/sda1 during installation
UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2
/dev/mapper/server1--vg-swap_1 none swap sw 0 0

Для включения quota выполним следующее:

mount -o remount /
quotacheck -avugm
quotaon -avug

15. Установка сервера BIND DNS

BIND устанавливается следующим образом:

apt-get install bind9 dnsutils

16 Установка Vlogger, Webalizer и AWStats

Vlogger, Webalizer и AWStats устанавливаются следующим образом:

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Откроем /etc/cron.d/awstats...

nano /etc/cron.d/awstats

... и превратим в комментарий всё в этом файле:

#MAILTO=root
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] &&
/usr/share/awstats/tools/buildstatic.sh

17 Установка Jailkit

Jailkit потребуется, если вы хотите сделать chroot для пользователей SSH. Установка производится следующим образом: (важно: Jailkit может быть установлен только перед установкой ISPConfig –после его уже не получится установить!):

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./debian/rules binary

Устанавливаем пакетYou Jailkit. deb следующим образом:

cd ..
dpkg -i jailkit_2.17-1_*.deb
rm -rf jailkit-2.17*

18 Установка fail2ban

Установка fail2ban необязательна, но рекомендована, так как монитор ISPConfig попытается показать запись событий:

apt-get install fail2ban

Для создания монитора fail2ban PureFTPd и Dovecot, создадим файл /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pureftpd] 
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap,
port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
[postfix-sasl]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
maxretry = 3

Затем создадим 2 файла фильтра:

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition] 
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.* ignoreregex =

Добавим строку ignoreregex в файл postfix-sasl:

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf

Далее перезапустим fail2ban:

service fail2ban restart

19 Установка squirrelmail

Для установки почтового клиента SquirrelMail выполним следующее:

apt-get install squirrelmail

Затем настроим SquirrelMail:

squirrelmail-configure

В SquirrelMail важно указать, что мы используем Dovecot-IMAP/-POP3:

SquirrelMail Configuration : Read: config.php (1.4.0) 
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> SquirrelMail Configuration : Read: config.php
Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington's IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Do not change anything
Command >> Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP serve
r dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington's IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Do not change anything
Command >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Press any key to continue... SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit Command >>

Теперь настроим SquirrelMail для того, чтобы использовать его внутри нашего сайта (созданного с помощью ISPConfig), для этого используем /squirrelmail или /webmail. Например, если адрес сайта www.drach.pro, то для доступа к SquirrelMail необходимо будет перейти по адресу www.drach.pro/squirrelmail или www.drach.pro/webmail.

Apache конфигурация SquirrelMail находится в /etc/squirrelmail/apache.conf, но этот файл не загружен Apache, потому что он не находится в директории /etc/apache2/conf.d/. Создадим символьную ссылку под названием squirrelmail.conf в директории /etc/apache2/conf.d/, которая указывает на /etc/squirrelmail/apache.conf и перезагрузим Apache:

cd /etc/apache2/conf-available/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
service apache2 reload

Далее откроем /etc/apache2/conf.d/squirrelmail.conf...

nano /etc/apache2/conf-available/squirrelmail.conf

... и добавим следующие строки в содержимое, для того, чтобы mod_php использовался для доступа к SquirrelMail, не смотря на то, какой режим PHP выбран на нашем сайте в ISPConfig:

[...]

Options FollowSymLinks

AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
php_admin_value open_basedir
/usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
php_flag register_globals off


DirectoryIndex index.php

# access to configtest is limited by default to prevent information leak

order deny,allow
deny from all
allow from 127.0.0.1


[...

Создадим директорию/var/lib/squirrelmail/tmp...

mkdir /var/lib/squirrelmail/tmp

... и сделаем владельцем пользователя www-data:

chown www-data /var/lib/squirrelmail/tmp

Далее необходимо, чтобы squirrelmail работал с apache2.

a2enconf squirrelmail

Снова перезапускаем Apache:

service apache2 reload

Теперь /etc/apache2/conf.d/squirrelmail.conf определяется alias /squirrelmail, который определит, что установка SquirrelMail будет произведена в /usr/share/squirrelmail.

Получить доступ к SquirrelMail через веб-сайт можно следующим образом:

http://192.168.0.100/squirrelmail
http://www.drach.pro/squirrelmail

Также получить доступ можно из панели управления виртуального хоста ISPConfig (после установки ISPConfig, установку рассмотрим в следующей главе) следующим образом (никакая настройка ISPConfig не требуется):

http://server1.drach.pro:8080/squirrelmail

Если вы хотите использовать alias /webmail вместо/squirrelmail, необходимо будет открыть файлs /etc/apache2/conf.d/squirrelmail.conf...

nano /etc/apache2/conf-available/squirrelmail.conf

... и добавить в строку Alias /webmail /usr/share/squirrelmail:

Alias /squirrelmail /usr/share/squirrelmail
Alias /webmail /usr/share/squirrelmail [...

Затем перезагрузим Apache:

service apache2 reload

Теперь мы можем получить доступ к Squirrelmail, делается это следующим образом:

http:// 192.168.0.100/webmail
http://www.drach.pro/webmail
http://server1.drach.pro:8080/webmail (после установки ISPConfig, установку рассмотрим в следующей главе)

Если вы хотите определить виртуальный хост как webmail.drach.pro, где пользователи могут получить доступ к SquirrelMail, необходимо будет добавить конфигурацию виртуального хоста в/etc/apache2/conf.d/squirrelmail.conf:

nano /etc/apache2/conf.d/squirrelmail.conf
[...]

DocumentRoot /usr/share/squirrelmail
ServerName webmail.drach.pro

Также должна существовать запись DNS для webmail.drach.pro, которая направляет на IP адрес, который использовался при настройке виртуального хоста. Также убедимся, что виртуальный хост webmail.drach.pro не существует в ISPConfig (в ином случае оба виртуальных хоста пересекутся друг с другом!).

Теперь перезапустим Apache...

service apache2 reload

SquirrelMail теперь находится по адресу http://webmail.drach.pro

20 Установка ISPConfig 3

Для установки последней версии ISPConfig 3 введём следующее:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Затем запустим

php -q install.php

Появится установщик ISPConfig 3. Установщик настроит все службы, типа Postfix, Dovecot и т.д. ручная настройка, как в ISPConfig 2, в последней версии не требуется.

Внимание: Не обращайте внимание, что установщик ISPConfig 3 определяет Debian Jessie, как неизвестную версию. Это никак не влияет на функциональность и будет исправлено в следующем обновлении.

root@server1:/tmp/ispconfig3_install/install# php -q install.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
>> Initial configuration
Operating System: Debian or compatible, unknown version.
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with .
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]: Installation mode (standard,expert) [standard]: Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.drach.pro]: MySQL server hostname [localhost]: MySQL root username [root]: MySQL root password []: MySQL database to create [dbispconfig]: MySQL charset [utf8]: Generating a 4096 bit RSA private key
.............................................................++
.............................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []: Configuring Jailkit
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring Vlogger
Configuring Apps vhost
Configuring Bastille Firewall
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]: Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: Generating RSA private key, 4096 bit long modulus
.................................................................................................++
........++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []: Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: An optional company name []: writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Restarting IMAP/POP3 mail server: dovecot.
[Tue May 07 02:36:22 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
[Tue May 07 02:36:22 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
[Tue May 07 02:36:23 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
[Tue May 07 02:36:23 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
Restarting web server: apache2 ... waiting .
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -H -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -D -u 1000 -A -E -b -8 UTF-8 -B
Installation completed.
root@server1:/tmp/ispconfig3_install/install#

Установщик автоматически настроит все сервисы.

Теперь можно предоставить установщик возможность самостоятельно создать SSl виртуальный хост для панели управления ISPConfig, который теперь будет доступен по адресу https:// вместо http://. Для этого необходимо нажать “Yes”, когда вы увидите следующий вопрос: Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:

Теперь ISPConfig 3 доступен по адресу http(s)://server1.drach.pro:8080/ или http(s)://192.168.0.100:8080/ (зависит от того, что вы выбрали при установке). Зайти можно введя имя пользователя admin и пароль admin (после первого входа в систему, пароль надо сменить)

Теперь система готова к использованию.

Приложение ISPConfig Monitor для Android

С помощью ISPConfig Monitor можно проверять состояние сервера и запущенные службы. Также можно проверять порты TCP иUDP и пинговать сервера. Приложение можно использоваться для запроса подробностей серверов, на который установлен ISPConfig (минимальная версия ISPConfig 3, которая поддерживается приложением - 3.0.3.3!); вся эти подробности включают в себя всю информацию с модуля мониторинга ISPConfig Control Panel (например службы, почтовые и системные журналы событий, очередь почты, информацию о ЦП и памяти, использование диска, детали ОС, журнал событий RKHunter и т.д.) и так как ISPConfig поддерживает несколько серверов, можно проверить, все ли сервера упраывляются главным сервером ISPConfig.

Для загрузки приложения и прочтения инструкций перейдите на официальный сайт.

Использование OpenVZ

Если сервер на базе Debian, который Вы только что установили, является виртуальной машиной (например, OpenVZ), в хост-системе необходимо прописать следующее:

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE
NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID
SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
vzctl set $VPSID --capability ${CAP}:on --save
done

Предполагается, что ID в OpenVZ это 101 – замените на корректный VPS ID для вашей системы.

24 комментарии

  • Сергей

    написал Сергей

    Четверг, 09 Июль 2015 10:01

    Здравствуйте! Будьте добры подскажите как установить на сервер ionCube Loader

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Четверг, 09 Июль 2015 21:09

    Сергей! К сожалению, ни разу не сталкивался с такой задачей, но как показал беглый взгляд на проблему, тут два пути:
    1) Если речь идёт о коммерческом хостинге, надо обратиться в техподдержку
    2) Если речь идёт о Вашем личном хостинге, то необходимо установить ionCube из пакетов через Yum или Apt-Get.

    Пожаловаться
  • Сергей

    написал Сергей

    Понедельник, 13 Июль 2015 21:46

    Конечно же о своём хостинге, но дело в том что я его ставлю но он не определяется в модулях, хотя на debian7 всё всегда отлично работало

    Пожаловаться
  • Максим

    написал Максим

    Понедельник, 17 Август 2015 00:26

    После того как ICANN запретила провайдерам и прочим лицам заводить доменные имена в частном порядке, эта статья неактуальна.

    Пожаловаться
  • Thai Boy

    написал Thai Boy

    Понедельник, 17 Август 2015 11:20

    Максим, а причем тут это? Статья про установку-настройку, а не про регистрацию доменных имён.

    Пожаловаться
  • Владислав

    написал Владислав

    Четверг, 07 Апрель 2016 18:46

    Добрый ден, подскажите. Открываю fstab а там нет значения /

    Там только
    proc /proc proc defaults 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 none /run/shm tmpfs defaults 0 0

    Куда нужно вставить usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 ?

    Пожаловаться
  • Геннадий

    написал Геннадий

    Среда, 22 Июнь 2016 23:00

    Если вам нужен просто работающий веб-сервер, и вы не готовы глубоко вникать в тему, то лучше обратите свое внимание на Apache, а если же вы готовы потратить некоторое время и силы на изучение и настройку, а также готовы самостоятельно решать возникающие проблемы, то вперёд!

    Пожаловаться
  • find-way

    написал find-way

    Четверг, 28 Июль 2016 04:56

    Директива index указывает индексные файлы, которые будет искать в данном расположении веб-сервер в порядке их перечисления, так если в директории имеются одновременно index.html и index.php - использоваться всегда будет первый. Указанная конструкция универсальна, но на практике лучше указать один тип индексного файла, тот что реально используется.

    Пожаловаться
  • Сергей

    написал Сергей

    Суббота, 20 Август 2016 23:04

    Отличная инструкция. Огромное спасибо!

    Пожаловаться
  • Женя

    написал Женя

    Воскресенье, 23 Октябрь 2016 06:08

    Огромная благодарность за такой чудесный сайт!

    Пожаловаться
  • Игорь

    написал Игорь

    Пятница, 04 Ноябрь 2016 23:50

    Отличнейшая Инструкция. Огромное спасибо.

    Пожаловаться
  • Оля

    написал Оля

    Воскресенье, 27 Ноябрь 2016 00:09

    Вы пишите:
    "Если сервер Debian, который вы только что установили, является OpenVZ ...."
    а где это приблизительно находится (для OpenVZ ) .......хост-система?

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Воскресенье, 27 Ноябрь 2016 00:11

    Имеется ввиду материнская система, на который развёрнуты виртуальные машины.

    Пожаловаться
  • Оля

    написал Оля

    Понедельник, 28 Ноябрь 2016 13:13

    A основной шлюз нужен для OpenVZ ?

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Понедельник, 28 Ноябрь 2016 16:04

    Желательно прописать, конечно.

    Пожаловаться
  • Владимир

    написал Владимир

    Среда, 07 Декабрь 2016 23:05

    Не силен в администрирование. Купил впс, хочу с шаред перенести. Поставил просто nginx, настроил-работает. Но потом решил сделать все по уму, нашел Ваш сайт. Попробовал инструкции на centos,ubuntu и debian, на всех 3х системах постоянно ошибки ( Уже не знаю что делать. Вы на платной основе настройкой занимаетесь?

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Среда, 07 Декабрь 2016 23:29

    Ответил на указанную почту.

    Пожаловаться
  • Максим

    написал Максим

    Среда, 22 Февраль 2017 22:57

    Владимир, здравствуйте. Очень познавательная статья для меня. Вы не упомянули в статье про файл /etc/postfix/main.cf от Postfix. Там что должно быть прописано?

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Воскресенье, 26 Февраль 2017 21:51

    Максим, здравствуйте!
    Спасибо за отзыв. К сожалению, настройка postfix весьма обширна и выходит за рамки данной статьи. В последние пару месяцев у меня назревает отдельная статья по установке и настройке почтового сервера, но не могу гарантировать никаких сроков публикации, к сожалению. Если вкратце, то /etc/postfix/main.cf хранит общие настройки. Из комментариев сразу становится понятно, что и как менять. Единственное узкое место, на мой взгляд, это три переменные, которые начинаются с my. Обычно подходят такие значения:
    myhostname = mail.ваш_домен.ru
    mydomain = ваш_домен.ru
    myorigin = $myhostname

    Пожаловаться
  • Вячеслав

    написал Вячеслав

    Воскресенье, 16 Апрель 2017 11:52

    Добрый день,
    при выполнении команды "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"
    выдает сообщение:
    Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
    или же используете нестабильную версию дистрибутива, где запрошенные вами
    пакеты ещё не созданы или были удалены из Incoming.
    Следующая информация, возможно, поможет вам:

    Пакеты, имеющие неудовлетворённые зависимости:
    mariadb-server : Зависит: mariadb-server-10.0 (>= 10.0.30-0+deb8u1) но он не будет установлен
    E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

    Пожаловаться
  • Андрей

    написал Андрей

    Вторник, 18 Апрель 2017 14:40

    В состав jessie mariadb-server однозначно входит, см. packages.debian. org/jessie/mariadb-server
    Возможно, у Вас что-то с кэшем apt или sources.list разладилось.

    Пожаловаться
  • Олег

    написал Олег

    Четверг, 22 Июнь 2017 17:05

    Спасибо за подробно изложенный материал. Подскажите пожалуйста как настроить HTTPS для сайтов. А то он перенаправляет на Apache2 Debian Default Page. Получается он использует только default-ssl.conf.

    Пожаловаться
  • Олег

    написал Олег

    Пятница, 23 Июнь 2017 01:26

    Спасибо уже решено.

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Пятница, 23 Июнь 2017 21:27

    Рад, что всё решилось!

    Пожаловаться
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top