Веб-сервер «под ключ» на базе Ubuntu 14 — окончание
Это продолжение статьи о веб-сервере «под ключ» на базе Ubuntu. Читать первую часть.
9. Установка Mailman
Начиная с версии 3.0.4, ISPConfig также позволяет управлять (создавать/редактировать/удалять) список адресатов Mailman. Если вы хотите пользоваться данной возможностью, потребуется установить Mailman следующим образом:
apt-get install mailman
Выберем по крайне мере один язык:
Languages to support: Missing site list
Перед запуском Mailman необходимо создать первый список адресатов под названием mailman:
newlist mailman
root@test:~# 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@test:~#Откроем файл /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:///pipermail находится архив списка адресатов.
Перезапустим Apache:
service apache2 restart
и затем запустим Mailman:
service mailman start
10. Установка 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@test:~# 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@test:~#
Отредактируем /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/test--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/test--vg-swap_1 none swap sw 0 0Для включения quota выполним следующее:
mount -o remount /
quotacheck -avugm quotaon -avug
11. Установка сервера BIND DNS
BIND устанавливается следующим образом:
apt-get install bind9 dnsutils
12. Установка 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
13. Установка Jailkit
Важно: Jailkit может быть установлен только перед установкой ISPConfig – после его уже не получится установить!
Jailkit потребуется, если вы хотите сделать chroot для пользователей SSH. Установка производится следующим образом:
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
Устанавливаем пакет deb следующим образом:
cd .. dpkg -i jailkit_2.17-1_*.deb rm -rf jailkit-2.17*
14. Установка 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
15 Установка 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://10.4.0.10/squirrelmail http://www.drach.pro/squirrelmail
Также получить доступ можно из панели управления виртуального хоста ISPConfig (после установки ISPConfig, установку рассмотрим в следующей главе) следующим образом (никакая настройка ISPConfig не требуется):
http://test.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:// 10.4.0.10/webmail http://www.drach.pro/webmail http://test.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
16. Установка 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, в последней версии не требуется.
root@test:/tmp/ispconfig3_install/install# php -q install.php
>> Initial configuration<br>
Operating System: 14.10 UNKNOWN<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 test.domain.tld [test.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>
-----
You are about to be asked to enter information that will be incorporated
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>
Rather than invoking init scripts through /etc/init.d, use the service(8) <br>
utility, e.g. service mysql restart<br>
Since the script you are attempting to invoke has been converted to an<br>
Upstart job, you may also use the stop(8) and then start(8) utilities,<br>
e.g. stop mysql ; start mysql. The restart(8) utility is also available.<br>
mysql stop/waiting<br>
mysql start/running, process 2817<br>
* Stopping Postfix Mail Transport Agent postfix<br>
/usr/sbin/postconf: warning: /etc/postfix/main.cf: undefined parameter: virtual_mailbox_limit_maps<br>
...done.<br>
* Starting Postfix Mail Transport Agent postfix<br>
...done.<br>
Stopping amavisd: amavisd-new.<br>
Starting amavisd: amavisd-new.<br>
* Stopping ClamAV service clamd<br>
...done.<br>
* Starting ClamAV service clamd<br>
...done.<br>
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service dovecot restart<br>
Since the script you are attempting to invoke has been converted to an<br>
Upstart job, you may also use the stop(8) and then start(8) utilities,<br>
e.g. stop dovecot ; start dovecot. The restart(8) utility is also available.<br>
dovecot stop/waiting<br>
dovecot start/running, process 3962<br>
* Restarting web server apache2<br>
[Mon Aug 06] [warn] NameVirtualHost *:443 has no VirtualHosts<br>
[Mon Aug 06] [warn] NameVirtualHost *:80 has no VirtualHosts<br>
[Mon Aug 06] [warn] NameVirtualHost *:443 has no VirtualHosts<br>
[Mon Aug 06] [warn] NameVirtualHost *:80 has no VirtualHosts<br>
... waiting ...done.<br>
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -A -b -u 1000 -D -H -Y 1 -E -8 UTF-8 -O clf:/var/log/pure-ftpd/transfer.log -B<br>
Installation completed.<br>
root@test:/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)://test.drach.pro:8080/ или http(s)://10.4.0.10:8080/ (зависит от того, что вы выбрали при установке).
Зайти можно введя имя пользователя admin и пароль admin (после первого входа в систему, пароль надо сменить).
Теперь система готова к использованию.
Для работы с ISPConfig 3 рекомендуется прочесть официальное руководство.
17. Дополнительные замечания
Если сервер Ubuntu, который вы только что установили, является 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