Der perfekte Server – Debian Lenny (Debian 5.0) [ISPConfig 3] mit Dovecot und Bind

Autor: Falko Timme

Co-Autor: Alexander Fox <howtoforge [at] planetfox.de [dot] de>

Created: 28/04/10

Version 1.0

Folge mir auf Twitter | Diese Seite     zu Mister Wong hinzufügen Folge mir auf Mr Wong
Dieses  Tutorial zeigt, wie man einen Debian Lenny (Debian 5.0) Server aufsetzt, für ISPConfig 3 vorbereitet und wie man ISPConfig 3 installiert. ISPConfig 3 ist ein Webhosting-Bedienungspanel, das Dir erlaubt, folgende Services über einen Webbrowser zu steuern:Apache Webserver, Postfix Mailserver, MySQL, MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV, und viele mehr.

Dieses Tutorial verwendet nicht, Courier IMAP bzw. Courier-pop3, wie standardmäßig in ISPConfig3 verwendet wird, sondern Dovecot . Dovecot ist eine weiterer IMAP und POP3 Server, dessen Hauptaugenmerk auf Sicherheit ausgelegt wurde. Dovecot ist eine vollfunktionale Alternative zu Courier-IMAP, die auch deutlich ressourcenfreundlicher ist.Es wird mbox als auch maildir unterstützt. Natürlich ist TLS/SSL auch kein Fremdwort für dovecot.

Seit der ISPConfig Version 3.0.2.1 ist es möglich Dovecot alternativ zu verwenden.

Dieses Setup funktioniert nicht für ISPConfig 2! Es ist ausschließlich für ISPConfig 3 !

Ich gebe keine Garantie, das es bei Dir genauso funktioniert!

1 Anforderungen

Um dieses System zu installieren, wirst Du folgendes benötigen:

2 Vorbemerkung

In dieser Anleitung benutze ich den Host-Namen server1.example.com mit der IP Adresse 192.168.0.100 und der Gateway 192.168.0.1. Diese Angaben können bei Dir anders sein, bitte achte darauf dass sie gegebenenfalls angepasst werden.

3 Das Basissystem

Lege die Debian Lenny Netzwerk Instalaltions-CD ein und boote von der CD. Wähle Install
(das startet den textbasierten Installer  – wenn Du eine graphische Oberfläche bevorzugst, wähle Graphical install):


Wähle Deine Sprache aus:


Wähle Deinen Standort aus:




Wähle ein Tastatur-Layout:


Der Installer überprüft die Installations-CD, Deine Hardware, und konfiguriert anschließend das Netzwerk per DHCP, wenn es einen DHCP- Server im Netzwerk gibt:



Gib den Hostnamen ein. In diesem Beispiel heisst mein System server1.example.com, also gebe ich server1 ein:


Gib den Domain-Namen an. In diesem Beispiel ist es example.com:


Nun musst Du Deine Festplatte partitionieren. Der Einfachheit halber werde ich eine grosse Partition erstellen (mit dem Mount-Punkt /) und eine kleine

Tauschpartition, daher wähle ich Guided – use entire disk aus. Selbstverständlich kannst Du die Partition beliebig erstellen und auch LVM benutzen.


Wähle die Festplatte aus, die partitioniert werden soll:



Dann wähle das Partitionsschema aus. Wie bereits gesagt, wähle ich die einfache Variante All files in one partition (recommended for new users)- Du kannst jedoch auch etwas anderes auswählen:


Hiernach wähle Finish partitioning and write changes to disk:

Wähle Yes aus, wenn Du gefragt wirst Write changes to disks?:

Hiernach werden Deine Partitionen erstellt und formatiert:


Nun ist das Basissystem installiert:


Bitte gib nun dem Root-Benutzer ein Passwort:


Bestätige das Passwort – und vertippe Dich nicht…:


Erstelle ein normales Benutzerkonto wie z.B. für den Nutzer Administrator mit dem Namen administrator. Benutze aber nicht den Namen admin, da dieser bereits vom Debian Lenny System reserviert ist:






Als Nächstes musst Du apt konfigurieren. Da wir die Debian Lenny Netzwerk Installations-CD nutzen, die nur eine kleine Anzahl von Paketen bereit hält, müssen wir einen Netzwerk-Mirror benutzen.

Wähle das Mirror aus, das Du benutzen möchtest, üblicherweise das wo Dein Debian Lenny System herkommt:


Dann wähle ein Mirror aus (z.B. ftp2.de.debian.org):


Wenn Du keinen HTTP Proxy benutzt, lass das folgende Feld leer und klick auf Continue:

Apt aktualisiert nun die Paket-Datenbank:


Du kannst die Umfrage zur Paket-Nutzung übergehen, indem Du auf No klickst:


Wir brauchen zwar einen Webserver, DNS-Sserver, Mailserver, und eine MySQL Datenbank, nichtsdestotrotz wähle ich nichts davon aus, da ich volle Kontrolle über das System haben möchte. Wir werden die Pakete natürlich später manuell installieren. Daher wähle Standard system und klick Continue:


Die benötigten Pakete wurden heruntergeladen und auf Dein System installiert:



Wenn Du gefragt wirst Install the GRUB boot loader to the master boot record, wähle bitte Yes aus:


Die Basissysteminstallation ist nun beendet. Nimm die Debian Lenny Netzwerk Installations-CD raus und klick auf Continue um das System neu zu starten:


Weiter zu den nächsten Schritten …

4 SSH-Server installieren

Debian Lenny installiert nicht standardmässig OpenSSH, daher müssen wir es selbst machen. Gib ein:

apt-get install ssh openssh-server

Ab sofort kannst Du einen SSH-Client wie PuTTY benutzen und Dich für die restlichen Anleitungsschritte von Deinem Rechner aus auf Deinem Debian Lenny Server einloggen.

5 vim-nox installieren (optional)

Ich werde vi als Texteditor in dieser Anleitung benutzen. Das standardmässige vi Programm hat einige Macken auf Debian und Ubuntu und um diese zu beheben installieren wir vim-nox:

apt-get install vim-nox

(Das brauchst Du natürlich nicht, wenn Du einen anderen Texteditor wie joe oder nao benutzt.)

6 Netzwerk konfigurieren

Da der Debian Lenny Installer das System so konfiguriert hat, dass es die Netzwerkeinstellungen per DHCP bekommt, müssen wir das ändern, da ein Server eine statische IP-Adresse benötigt. Editiere /etc/network/interfaces und passe es nach Deinen Bedürfnissen an (in diesem Beispiel nutze ich die IP-Adresse 192.168.0.100). Bitte beachte dass ich allow-hotplug eth0 mit auto eth0 ersetze; ansonsten kann man das Netztwerk nicht neu starten und müsste das gesamte System neu starten):

vi /etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Dann starte das Netzwerk neu:

/etc/init.d/networking restart

Bitte editiere /etc/hosts. Es sollte folgendermassen aussehen:

vi /etc/hosts


127.0.0.1       localhost.localdomain   localhost
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Gib ein

echo server1.example.com > /etc/hostname

/etc/init.d/hostname.sh start

Danach gib ein

hostname

hostname -f

Beide sollten server1.example.com anzeigen.

7 Debian Installation aktualisieren

Gib ein

apt-get update

um die apt Paket-Datenbank zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren, falls es welche gibt.

8 Systemuhr synchronisieren

Es ist eine gute Idee, die Systemuhr mit NTP(network time protocol)Server über das Internet zu synchronisieren.

Gib einfach:

apt-get install ntp ntpdate

und Deine Systemzeit wird immer mit ntp synchronisiert.

9 Installieren von Postfix , Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

Wir können  Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils mit einem einzigen Befehl installieren:
apt-get  install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d
Folgende Fragen werden uns gestellt:
New password for the MySQL “root” user: <– yourrootsqlpassword
Repeat password for the MySQL “root” user: <– yourrootsqlpassword Create directories for web-based administration? <– No General type of mail configuration: <– Internet Site System mail name: <– server1.example.com SSL certificate required <– Ok
MySQL soll auf alle Oberflächen laufen, nicht nur auf localhost, daher editieren wir /etc/mysql/my.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus:
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 [...]
Dann starten wir MySQL neu:
/etc/init.d/mysql restart
Nun kontrolliere, dass das Netzwerk aktiv ist. Starte
netstat -tap | grep mysql
Die Ausgabe sollte wie hier ausschauen:
server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      6612/mysqld server1:~#

10.) Installiere Amavisd-new, Spamassassin and Clamav

Wir können Amavisd-new, Spamassassin and Clamav mit einem einzigen Befehl installieren:
apt-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

11.) Installiere apache2, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt

Wir können apache2, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt mit einem einzigen Befehl installieren:
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 libapache2-mod-suphp libopenssl-ruby
Du wirst folgende Frage sehen bei PHPMyAdmin:

Web server to reconfigure automatically: <– apache2

Starte folgenden Befehl um die Apache module suexec, rewrite, ssl, actions, und include zu aktivieren:
a2enmod suexec rewrite ssl actions include
Anschließend starte Apache neu:
/etc/init.d/apache2 restart

12.) Installieren von PureFTPd und Quota

PureFTPd und quota können mit folgendem Befehl installiert werden:
apt-get install pure-ftpd-common pure-ftpd-mysql   quota quotatool
Optional aktiviere TLS
echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/ openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem chmod 600 /etc/ssl/private/pure-ftpd.pem
Editiere die Datei /etc/default/pure-ftpd-common…

vi /etc/default/pure-ftpd-common

… und wechsele den Startmodus von inetd zu standalone und setze VIRTUALCHROOT=true:
[...]  STANDALONE_OR_INETD=standalone
[...] VIRTUALCHROOT=true [...]
Editiere die Datei /etc/inetd.conf um inetd davor zu schützen ftp zu starten: vi /etc/inetd.conf Kommentiere die Zeile, welche mit ftp stream tcp beginnt raus:
[...]
#:STANDARD: These are standard services. #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper [...]
Anschließend starte inetd neu:
/etc/init.d/openbsd-inetd restart
dann starte PureFTPd:
/etc/init.d/pure-ftpd-mysql start

13.) Installiere BIND DNS Server

Dies kann wieder in einer Zeile ausgeführt werden
apt-get install bind9 dnsutils

14.) Installation von Vlogger und Webalizer

Vlogger und webalizer können wie folgt installiert werden:
apt-get install vlogger webalizer

15.) Installiere Jailkit

Jailkit muss nur installiert werden wenn du  chroot SSH benutzer. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden- es kann nicht anschließend installiert werden!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp

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

tar xvfz jailkit-2.11.tar.gz

cd jailkit-2.11

./debian/rules binary

cd ..

dpkg -i jailkit_2.11-1_*.deb

rm -rf jailkit-2.11*


16 Installieren von fail2ban

das ist  optional aber vorgeschlagen, weil die ISPConfig kontrolle versucht den log anzuzeigen: siehe mehr hier (http://www.howtoforge.com/fail2ban_debian_etch )

apt-get install fail2ban

17 Installieren von SquirrelMail

Um SquirrelMail webmail client zu installieren, starte

apt-get install squirrelmail

dann erstelle den folgenden Symlink für Squirrelmail und einen für PHPmyAdmin…
ln -s /usr/share/squirrelmail/ /var/www/webmail

ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
…und konfiguriere SquirrelMail:
squirrelmail-configure
Wir müssen  SquirrelMail sagen, das wir Courier-IMAP/-POP3 benutzen:

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

Gib ein: D

SquirrelMail Configuration : Read: config.php

———————————————————

While we have been building SquirrelMail, we have discovered some

preferences that work better with some servers that don’t work so

well with others.  If you select your IMAP server, this option will

set some pre-defined settings for that server.

Please note that you will still need to go through and make sure

everything is correct.  This does not change everything.  There are

only a few settings that this will change.

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

quit        = Do not change anything

Gib ein: dovecot

imap_server_type = courier

default_folder_prefix = INBOX.

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 = .

delete_folder = true

Press any key to continue… <– Taste drücken

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

Eingabe: S

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

Eingabe>> <– Q

Anschließend kannst du SquirrelMail unter http://server1.example.com/webmail oder http://192.168.0.100/webmail erreichen:

18 Installation von ISPConfig 3

ISPConfig 3 kann von der letzten erschienen Version installiert werden (.tar.gz).

Um es von der letzten erschienen Released zu erstellen, gehe wie folgt vor:

cd /tmp

wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.tar.gz

tar xvfz ISPConfig-3.0.2.tar.gz

cd ispconfig3_install/install/

Wir starten nun den Installer von ISPConfig3:

php -q install.php

>> Initial configuration

Operating System: Debian Lenny or compatible

Following will be a few questions for primary configuration so be careful.

Default values are in [brackets] and can be accepted with <ENTER>.

Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: de

Installation mode (standard,expert) [standard]:

Full qualified hostname (FQDN) of the server, eg server1.domain.tld [testispconfig.nixhelp.de]:

MySQL server hostname [localhost]:

MySQL root username [root]:

MySQL root password []: monstermegahammergeheimespasswort

MySQL database to create [dbispconfig]:

MySQL charset [utf8]:

Generating a 2048 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]:DE

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) []:testispconfig.nixhelp.de

Email Address []:chef@vomserver.de

Configuring Jailkit

Configuring SASL

Configuring PAM

Configuring Dovecot

Configuring Spamassassin

Configuring Amavisd

Configuring Getmail

Configuring Pureftpd

Configuring BIND

Configuring Apache

Configuring vlogger

Configuring Apps vhost

Configuring Firewall

Installing ISPConfig

ISPConfig Port [8080]:

Configuring DBServer

Installing Crontab

no crontab for root

no crontab for getmail

Restarting services ...

Stopping MySQL database server: mysqld.

Starting MySQL database server: mysqld.

Checking for corrupt, not cleanly closed and upgrade needing tables..

Stopping Postfix Mail Transport Agent: postfix.

Starting Postfix Mail Transport Agent: postfix.

Stopping SASL Authentication Daemon: saslauthd.

Starting SASL Authentication Daemon: saslauthd.

Stopping amavisd: amavisd-new.

head: cannot open `/etc/mailname' for reading: No such file or directory

Starting amavisd: amavisd-new.

Stopping ClamAV daemon: clamd.

Starting ClamAV daemon: clamd .

Restarting IMAP/POP3 mail server: dovecot.

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 -b -E -p 4000:4020 -u 1000 -A -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -H -B

Installation completed.

server1:/tmp/ispconfig3_install/install#

Der Installer konfiguriert alle untergeordneten Services, sodass es keiner manuellen Konfiguration bedarf.

Anschließend kannst du  ISPConfig 3 unter http://server1.example.com:8080/ oder http://192.168.0.100:8080/ erreichen. Logge dich mit dem Benutzernamen admin und dem Passwort admin (Du solltest den Standard nach dem ersten log-in ändern) ein:



Das System kann nun benutzt werden.

19. Hinweiss für Debian unter OpenVz

a)

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


b) Pureftp

PureFTPD greift auf gewisse Schnittstellen zurück, die der virtuellen Maschine nicht vom Standard aus gegeben sind.

Hierzu muss im Host die Config der virtuellen Maschine bearbeitet bzw. ergänzt werden.

Die Configs liegen unter /etc/vz/config

vi /etc/config


CAPABILITY=”CHOWN:on DAC_READ_SEARCH:on SETGID:on SETUID:on NET_BIND_SERVICE:on NET_ADMIN:on SYS_CHROOT:on SYS_NICE:on “

20. Links

Bitte benutze die Kommentarfunktion nicht für Fragen, sondern nutze das Forum dazu.