Веб-сервер “под ключ” на базе Debian

Описан процесс подготовки сервера Debian Jessie (с Apache2, BIND, Dovecot) для установки ISPConfig 3 и непосредственно установка ISPConfig 3. 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

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

root@server1:/tmp# hostname
server1
root@server1:/tmp# 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 выглядели следующим образом:

[...]<br>
submission inet n - - - - smtpd<br>
 -o syslog_name=postfix/submission<br>
 -o smtpd_tls_security_level=encrypt<br>
 -o smtpd_sasl_auth_enable=yes<br>
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject<br>
# -o smtpd_reject_unlisted_recipient=no<br>
# -o smtpd_client_restrictions=$mua_client_restrictions<br>
# -o smtpd_helo_restrictions=$mua_helo_restrictions<br>
# -o smtpd_sender_restrictions=$mua_sender_restrictions<br>
# -o smtpd_recipient_restrictions=<br>
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject<br>
# -o milter_macro_daemon_name=ORIGINATING<br>
smtps inet n - - - - smtpd<br>
 -o syslog_name=postfix/smtps<br>
 -o smtpd_tls_wrappermode=yes<br>
 -o smtpd_sasl_auth_enable=yes<br>
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject<br>
# -o smtpd_reject_unlisted_recipient=no<br>
# -o smtpd_client_restrictions=$mua_client_restrictions<br>
# -o smtpd_helo_restrictions=$mua_helo_restrictions<br>
# -o smtpd_sender_restrictions=$mua_sender_restrictions<br>
# -o smtpd_recipient_restrictions=<br>
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject<br>
# -o milter_macro_daemon_name=ORIGINATING<br>
[...]

Перезапустим 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]<br>
;Path to logfile<br>
logfile=/var/log/suphp/suphp.log<br>
;Loglevel<br>
loglevel=info<br>
;User Apache is running as<br>
webserver_user=www-data<br>
;Path all scripts have to be in<br>
docroot=/var/www<br>
;Path to chroot() to before executing script<br>
;chroot=/mychroot<br>
; Security options
allow_file_group_writeable=false<br>
allow_file_others_writeable=false<br>
allow_directory_group_writeable=false<br>
allow_directory_others_writeable=false<br>
;Check wheter script is within DOCUMENT_ROOT<br>
check_vhost_docroot=true<br>
;Send minor error messages to browser<br>
errors_to_browser=false<br>
;PATH environment variable<br>
env_path=/bin:/usr/bin<br>
;Umask to set, specify in octal notation<br>
umask=0022<br>
; Minimum UID<br>
min_uid=100<br>
; Minimum GID<br>
min_gid=100<br>
[handlers]<br>
;Handler for php-scripts<br>
x-httpd-suphp="php:/usr/bin/php-cgi"<br>
;Handler for CGI-scripts<br>
x-suphp-cgi=execute:!self<br>
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. listadmin@drach.pro
 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] <br>
enabled  = true<br>
port     = ftp<br>
filter   = pureftpd<br>
logpath  = /var/log/syslog<br>
maxretry = 3<br>
[dovecot-pop3imap] <br>
enabled = true<br>
filter = dovecot-pop3imap<br>
action = iptables-multiport[name=dovecot-pop3imap,<br> port="pop3,pop3s,imap,imaps", protocol=tcp] <br>
logpath = /var/log/mail.log<br>
maxretry = 5<br>
[postfix-sasl] <br>
enabled  = true<br>
port     = smtp<br>
filter   = postfix-sasl<br>
logpath  = /var/log/mail.log<br>
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) <br> 
---------------------------------------------------------<br> 
Main Menu --<br>
1.  Organization Preferences<br> 
2.  Server Settings<br> 
3.  Folder Defaults<br> 
4.  General Options<br> 
5.  Themes<br> 
6.  Address Books<br> 
7.  Message of the Day (MOTD)<br> 
8.  Plugins<br> 
9.  Database<br> 
10. Languages<br> 
D.  Set pre-defined settings for specific IMAP servers<br> 
C   Turn color on<br> 
S   Save data<br> 
Q   Quit<br> 
Command >>  
SquirrelMail Configuration : Read: config.php<br> 
Please select your IMAP server:<br> 
    bincimap    = Binc IMAP server<br> 
    courier     = Courier IMAP server<br> 
    cyrus       = Cyrus IMAP server<br> 
    dovecot     = Dovecot Secure IMAP server<br> 
    exchange    = Microsoft Exchange IMAP server<br> 
    hmailserver = hMailServer<br> 
    macosx      = Mac OS X Mailserver<br> 
    mercury32   = Mercury/32<br> 
    uw          = University of Washington's IMAP server<br> 
    gmail       = IMAP access to Google mail (Gmail) accounts<br> 
    quit        = Do not change anything<br> 
Command >>  
Please select your IMAP server:<br>
    bincimap    = Binc IMAP server<br> 
    courier     = Courier IMAP server<br> 
    cyrus       = Cyrus IMAP serve<br>r 
    dovecot     = Dovecot Secure IMAP server<br> 
    exchange    = Microsoft Exchange IMAP server<br> 
    hmailserver = hMailServer<br> 
    macosx      = Mac OS X Mailserver<br> 
    mercury32   = Mercury/32<br> 
    uw          = University of Washington's IMAP server<br> 
    gmail       = IMAP access to Google mail (Gmail) accounts<br> 
    quit        = Do not change anything<br> 
Command >> dovecot<br> 
              imap_server_type = dovecot<br> 
         default_folder_prefix = <br> 
                  trash_folder = Trash<br> 
                   sent_folder = Sent<br> 
                  draft_folder = Drafts<br> 
            show_prefix_option = false<br> 
          default_sub_of_inbox = false<br> 
show_contain_subfolders_option = false<br> 
            optional_delimiter = detect<br> 
                 delete_folder = false<br> 
Press any key to continue...  
SquirrelMail Configuration : Read: config.php (1.4.0) <br> 
---------------------------------------------------------<br> 
Main Menu --<br>
1.  Organization Preferences<br> 
2.  Server Settings<br> 
3.  Folder Defaults<br> 
4.  General Options<br> 
5.  Themes<br> 
6.  Address Books<br> 
7.  Message of the Day (MOTD) <br> 
8.  Plugins<br> 
9.  Database<br> 
10. Languages<br> 
D.  Set pre-defined settings for specific IMAP servers<br> 
C   Turn color on<br> 
S   Save data<br> 
Q   Quit<br> 
Command >>  
SquirrelMail Configuration : Read: config.php (1.4.0) <br> 
---------------------------------------------------------<br> 
Main Menu --<br> 
1.  Organization Preferences<br> 
2.  Server Settings<br> 
3.  Folder Defaults<br> 
4.  General Options<br> 
5.  Themes<br> 
6.  Address Books<br> 
7.  Message of the Day (MOTD)<br> 
8.  Plugins<br> 
9.  Database<br> 
10. Languages<br> 
D.  Set pre-defined settings for specific IMAP servers<br> 
C   Turn color on<br> 
S   Save data<br> 
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:

[...]<br>
<br>
  Options FollowSymLinks<br>
  <br>
    AddType application/x-httpd-php .php<br>
    php_flag magic_quotes_gpc Off<br>
    php_flag track_vars On<br>
    php_admin_flag allow_url_fopen Off<br>
    php_value include_path .<br>
    php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp<br>
    php_admin_value open_basedir<br> /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname<br>
    php_flag register_globals off<br>
  <br>
  <br>
    DirectoryIndex index.php<br>
  <br>
  # access to configtest is limited by default to prevent information leak<br>
  <br>
    order deny,allow<br>
    deny from all<br>
    allow from 127.0.0.1<br>
  <br>
<br>
[...

Создадим директорию/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<br>
Operating System: Debian or compatible, unknown version.<br>
    Following will be a few questions for primary configuration so be careful.<br>
    Default values are in [brackets] and can be accepted with .<br>
    Tap in "quit" (without the quotes) to stop the installer.<br>
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<br>
.............................................................++<br>
.............................................................++<br>
writing new private key to 'smtpd.key'<br>
-----<br>
You are about to be asked to enter information that will be incorporated<br>
into your certificate request.<br>
What you are about to enter is what is called a Distinguished Name or a DN.<br>
There are quite a few fields but you can leave some blank<br>
For some fields there will be a default value,<br>
If you enter '.', the field will be left blank.<br>
-----<br>
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<br>
Configuring Dovecot<br>
Configuring Spamassassin<br>
Configuring Amavisd<br>
Configuring Getmail<br>
Configuring Pureftpd<br>
Configuring BIND<br>
Configuring Apache<br>
Configuring Vlogger<br>
Configuring Apps vhost<br>
Configuring Bastille Firewall<br>
Configuring Fail2ban<br>
Installing ISPConfig<br>
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<br>
.................................................................................................++<br>
........++<br>
e is 65537 (0x10001)<br>
You are about to be asked to enter information that will be incorporated<br>
into your certificate request.<br>
What you are about to enter is what is called a Distinguished Name or a DN.<br>
There are quite a few fields but you can leave some blank<br>
For some fields there will be a default value,<br>
If you enter '.', the field will be left blank.<br>
-----<br>
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<br>
to be sent with your certificate request<br>
A challenge password []: 
An optional company name []: 
writing RSA key<br>
Configuring DBServer<br>
Installing ISPConfig crontab<br>
no crontab for root<br>
no crontab for getmail<br>
Restarting services ... <br>
Stopping MySQL database server: mysqld.<br>
Starting MySQL database server: mysqld ..<br>
Checking for tables which need an upgrade, are corrupt or were<br>
not closed cleanly..<br>
Stopping Postfix Mail Transport Agent: postfix.<br>
Starting Postfix Mail Transport Agent: postfix.<br>
Stopping amavisd: amavisd-new.<br>
Starting amavisd: amavisd-new.<br>
Stopping ClamAV daemon: clamd.<br>
Starting ClamAV daemon: clamd .<br>
Restarting IMAP/POP3 mail server: dovecot.<br>
[Tue May 07 02:36:22 2013] [warn] NameVirtualHost *:443 has no VirtualHosts<br>
[Tue May 07 02:36:22 2013] [warn] NameVirtualHost *:80 has no VirtualHosts<br>
[Tue May 07 02:36:23 2013] [warn] NameVirtualHost *:443 has no VirtualHosts<br>
[Tue May 07 02:36:23 2013] [warn] NameVirtualHost *:80 has no VirtualHosts<br>
Restarting web server: apache2 ... waiting .<br>
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<br>
Installation completed.<br>
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.

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

21 Дополнительные замечания

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.