Веб-сервер “под ключ” на базе 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