Автор — Falko Timme on HowtoForge.com

Мы можем установить Postfix, Courier, Saslauthd, MySQL, rkhunter и binutils одной командой:

(Если нужно, добавьте перед каждой командой sudo).

aptitude install postfix postfix-mysql 
postfix-doc mysql-client mysql-server courier-authdaemon 
courier-authlib-mysql courier-pop courier-pop-ssl 
courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules 
libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 
rkhunter binutils

Вам зададут следующие вопросы:

  1. Новый пароль для пользователя «root» MySQL
  1. Повторите пароль для пользователя «root» MySQL
  1. Создать директории для администрирования по сети?
  2. Введите: No
  1. Основной тип конфигурации почты:
  2. Введите: Internet Site
  1. Имя почтовой системы:
  2. Введите: server1.example.com (подставьте адрес своего сайта)
  1. Требуется ли SSL-сертификат
  2. Введите: OK

Далее установим maildrop как показано ниже:

update-alternatives --remove-all maildir.5

update-alternatives --remove-all maildirquota.7

aptitude install maildrop

Вы спросите себя: «Почему мы не установили maildrop вместе с другими пакетами»? Причина этому ошибка в пакете courier-base — если вы установите maildrop вместе с courier-pop, courier-pop-ssl, courier-imap и courier-imap-ssl, то получите такую ошибку:

update-alternatives: error: 
alternative link /usr/share/man/man5/maildir.5.gz 
is already managed by maildir.5.gz.

Мы хотим, чтобы MySQL прослушивала все интерфейсы, а не только localhost. Поэтому отредактируем /etc/mysql/my.cnf и закомментируем строку bind-address = 127.0.0.1:

vi /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:

/etc/init.d/mysql restart

Проверим, что сеть включена. Выполните:

netstat -tap | grep mysql

Вывод должен быть похож на:

root@server1:~# netstat -tap | grep mysql

tcp 0 0 *:mysql *:* LISTEN 6267/mysqld

root@server1:~#

В ходе установки сертифи-каты SSL для IMAP-SSL и POP3-SSL были созданы для хоста localhost. Чтобы изменить его на корректный хост (server1.example.com в этом руководстве), удалите сертификаты…

cd /etc/courier

rm -f /etc/courier/imapd.pem

rm -f /etc/courier/pop3d.pem

и отредактируйте следующие два файла, заменяя 'CN=localhost' на 'CN=server1.example.com' (а также, при необходимости, изменяя другие значения):

vi /etc/courier/imapd.cnf

[...]
CN=server1.example.com
[...]

vi /etc/courier/pop3d.cnf

[...]
CN=server1.example.com
[...]

Теперь создадим сертификаты снова:

mkimapdcert

mkpop3dcert

и перезапустите Courier-IMAP-SSL и Courier-POP3-SSL:

/etc/init.d/courier-imap-ssl restart

/etc/init.d/courier-pop-ssl restart

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

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

aptitude install amavisd-new spamassassin clamav clamav-daemon
 zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-dap-perl
 libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl
 libnet-ident-perl zip libnet-dns-perl

SinglWolf: На данный момент версия ClamAV - 0.97, а в репозиториях lucid - 0.95. Я это заметил только после полной установки сервера, так что вот изыскал, на мой взгляд, самое простое решение.

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

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt можно установить так:

aptitude 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 libapache2-mod-suphp

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

  1. Веб-сервер для автоматической перенастройки:
  2. Введите: apache2
  3. Настроить базу данных для работы phpmyadmin с dbconfig-common?
  4. Введите: No

Затем наберите следующую команду, чтобы включить модули Apache suexec, rewrite, ssl, actions и include:

a2enmod suexec rewrite ssl actions include

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

/etc/init.d/apache2 restart

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

PureFTPd и quota могут быть установлены следующей командой:

aptitude install pure-ftpd-common 
pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common:

vi /etc/default/pure-ftpd-common

и убедитесь, что установлены способ запуска standalone и VIRTUALCHROOT=true:

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

Теперь перезапустите PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Отредактируйте /etc/fstab. Я добавил usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 к разделу с точкой монтирования /:

UUID=7dd7d165-5d00-4501-b005-b5233c1872e0 /               ext4    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0  0       1
vi /etc/fstab

Чтобы добавить quota, выполните эту команду:

touch /aquota.user /aquota.group

chmod 600 /aquota.*

mount -o remount /

quotacheck -avugm

quotaon -avug

Установка MyDNS

Перед установкой MyDNS мы должны предварительно установить несколько пакетов:

aptitude install g++ 
libc6 gcc 
gawk make 
texinfo libmysqlclient15-dev

MyDNS нет в репозиториях Ubuntu 9.10, поэтому мы должны установить его из исходников самостоятельно:

SinglWolf: Через wget не получится. Нужно зайти по ссылке: http://sourceforge.net/projects/mydns-ng/files/mydns/ и скачать актуальную версию в папку /temp

cd /tmp

wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.27.tar.gz

tar xvfz mydns-1.2.8.27.tar.gz

cd mydns-1.2.8

./configure

make

make install

Затем мы создадим для MyDNS скрипт запуска и остановки:

vi /etc/init.d/mydns

Текст скрипта:

#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern <phil@philkern.de>.
#
Based upon skeleton 1.9.4 by Miquel van Smoorenburg
#<miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:
/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC="DNS server"

SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

case "$1" in
	start)
		echo -n "Starting $DESC: $NAME"
		start-stop-daemon --start --quiet \
			--exec $DAEMON -- -b
		echo "."
		;;
	stop)
		echo -n "Stopping $DESC: $NAME"
		start-stop-daemon --stop --oknodo --quiet \
			--exec $DAEMON
		echo "."
		;;
	reload|force-reload)
		echo -n "Reloading $DESC configuration..."
		start-stop-daemon --stop --signal HUP --quiet \
			--exec $DAEMON
		echo "done."
		;;
	restart)
		echo -n "Restarting $DESC: $NAME"
		start-stop-daemon --stop --quiet --oknodo \
			--exec $DAEMON
		sleep 1
		start-stop-daemon --start --quiet \
			--exec $DAEMON -- -b
		echo "."
		;;
	*)
		echo "Usage: $SCRIPTNAME
{start|stop|restart|reload|force-reload}" >&2
		exit 1
		;;
esac

exit 0

Теперь сделаем скрипт исполняемым и добавим его в автозагрузку:

chmod +x /etc/init.d/mydns

update-rc.d mydns defaults

Установка Vlogger и Webalizer

Vlogger и webalizer могут быть установлены так:

aptitude install vlogger webalizer

Установка Jailkit

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

aptitude install build-essential 
autoconf automake1.9 libtool flex bison

cd /tmp

wget http://olivier.sessink.nl/jailkit/jailkit-2.10.tar.gz

tar xvfz jailkit-2.10.tar.gz

cd jailkit-2.10

./configure

make

make install

cd ..

rm -rf jailkit-2.10*

Установка fail2ban

Это не обязательно, но рекомендуется, потому что ISPConfig контролирует попытки показа лога fail2ban:

aptitude install fail2ban

В следующем месяце, в завершающей части, мы установим SquirrelMail и ISPConfig3, получив идеальный сервер, готовый к работе!