Dies ist ein "Kopieren und Einfügen" Anleitung! Der einfachste Weg, diesem Tutorial zu folgen, besteht darin, einen Befehlszeilen-Client/SSH-Client (wie PuTTY für Windows) zu verwenden und die Befehle einfach zu kopieren und einzufügen (außer wenn Sie eigene Informationen wie IP-Adressen, Hostnamen, Passwörter usw. angeben müssen). ). Dies hilft, Tippfehler zu vermeiden.
Das perfekte Setup – Debian Sarge (3.1)
Version 1.9
Autor:Falko Timme
Dies ist eine detaillierte Beschreibung der Schritte, die unternommen werden müssen, um ein Debian einzurichten basierter Server (Debian Sarge alias Debian 3.1), der alle von ISPs und Hostern benötigten Dienste anbietet (Webserver (SSL-fähig), Mailserver (mit SMTP-AUTH und TLS!), DNSserver, FTP-Server, MySQL-Server, POP3/POP3s/ IMAP/IMAPs, Kontingent, Firewall usw.).
Ich werde die folgende Software verwenden:
- Webserver:Apache 2.0.x
- Mail-Server:Postfix (einfacher zu konfigurieren als sendmail; hat eine kürzere Historie von Sicherheitslücken als sendmail)
- DNS-Server:BIND9
- FTP-Server:proftpd
- POP3/POP3s/IMAP/IMAPs:In diesem Beispiel können Sie zwischen dem traditionellen UNIX-Postfachformat wählen (wir verwenden dann ipopd/ uw-imapd) oder das Maildir-Format (in diesem Fall verwenden wir Courier-POP3/Courier-IMAP).
- Webalizer für Website-Statistiken
Am Ende sollten Sie ein System haben, das zuverlässig funktioniert und bereit ist für das kostenlose Webhosting-Control-Panel ISPConfig (d.h. ISPConfig läuft darauf aus dem Feld).
Ich möchte zuerst sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
Anforderungen
Um ein solches System zu installieren, benötigen Sie Folgendes:
- Eine Debian SargeNetinstall CD (hier erhältlich:http://ftp.de.debian.org/debian-cd/3.1_r0a /i386/iso-cd/debian-31r0a-i386-netinst.iso)
- eine Internetverbindung, da ich in diesem Dokument eine Netzwerkinstallation beschreiben werde
1 TheBase-System
Legen Sie Ihre SargeNetinstall-CD in Ihr System ein und booten Sie davon (geben Sie ein linux26 am Boot-Prompt, um einen 2.6er Kernel zu installieren). Die Installation beginnt, und zuerst müssen Sie Ihre Sprache auswählen:
Wählen Sie Ihr Land aus:
Wählen Sie ein Tastaturlayout:
Die Hardwareerkennung startet:
Geben Sie den Hostnamen ein. In diesem Beispiel heißt mein System server1 .beispiel.com , also gebe ich server1 ein :
Geben Sie Ihren Domainnamen ein. In diesem Beispiel ist dies example.com :
Jetzt müssen Sie Ihre Festplatte partitionieren. Ich werde eine große Partition erstellen (mit dem Einhängepunkt / ) und eine kleine Swappartition:
Nun wird das Basissystem installiert:
Ich installiere den GRUBboot-Loader zum Master Boot Record:
Entfernen Sie anschließend die Sarge Netinstall-CD von Ihrem System und starten Sie es neu:
Konfigurieren Sie Ihre Zeitzone:
Geben Sie ein Passwort für root ein :
Erstellen Sie einen zweiten Benutzer admin :
Wählen Sie Ihre Installationsmethode. Da ich eine Installation über das Netzwerk durchführen möchte, wähle ich http oder ftp .
Wählen Sie einen Mirror für Ihre Installation:
Geben Sie einen Proxy für die Installation ein (falls erforderlich) .Normalerweise können Sie dieses Feld leer lassen.
Unter Debiansoftware-Auswahl Ich wähle nur Mailserver . Alle anderen Dienste werde ich später manuell installieren.
Die Netzwerkinstallation beginnt:
Fahren Sie mit der Installation des libc-client ohne Maildir-Unterstützung fort. Wenn Sie Maildir verwenden möchten, können Sie Courier-POP3 installieren /Courier-IMAP (später erklärt):
Konfigurieren Sie Exim nicht da wir es durch Postfix ersetzen werden später:
Herzlichen Glückwunsch! Ihr Basissystem ist jetzt fertig:
Weiter zum nächsten Schritt...
2 Installation und Konfiguration des restlichen Systems
Konfigurieren Sie TheNetwork
Da das DebianSarge-Installationsprogramm unser System so konfiguriert hat, dass es seine Netzwerkeinstellungen über DHCP erhält, müssen wir das jetzt ändern, da ein Server eine statische IP-Adresse. Bearbeiten Sie /etc/network/interfaces und passen Sie es an Ihre Bedürfnisse an (in diesem Beispiel-Setup verwende ich die IP-Adresse 192.168.0.100 ):
# /etc/network/interfaces -- Konfigurationsdatei für ifup(8), ifdown(8) |
Wenn Sie die IP-Adresse hinzufügen möchten 192.168.0.101 an die Schnittstelle eth0 Sie sollten die Datei wie folgt ändern:
# /etc/network/interfaces -- Konfigurationsdatei für ifup(8), ifdown(8) |
Starten Sie dann Ihr Netzwerk neu:
/etc/init.d/networkingrestart
Bearbeiten Sie /etc/resolv.conf und füge einige Nameserver hinzu:
Suchserver |
Bearbeiten Sie /etc/hosts und fügen Sie Ihre neuen IP-Adressen hinzu:
127.0.0.1 localhost.localdomain localhost server1 |
Festlegen des Hostnamens
echo server1.example.com> /etc/hostname
/bin/hostname -F /etc/hostname
Software installieren/entfernen
Lassen Sie uns nun einige Software installieren, die wir später benötigen, und einige Pakete entfernen, die wir nicht benötigen:
apt-get install wget bzip2rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat libarchive-zip-perl zlib1g-devlibpopt-dev nmap openssl lynx fileutils g++
apt-get remove lpr nfs-commonportmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig
update-rc.d -f exim remove
update-inetd --removedaytime
update-inetd --telnet entfernen
update-inetd - - Zeit entfernen
update-inetd --finger entfernen
update-inetd --gespräch entfernen
update-inetd --ntalk entfernen
update-inetd --ftp entfernen
update-inetd --remove discard
<- Ja
/etc/init.d/openbsd-inetd reload
Quote
apt-get install quota quotatool
<- Nein
Bearbeiten Sie /etc/fstab so aussehen (ich habe ,usrquota,grpquota hinzugefügt auf die Partition mit dem Einhängepunkt / ):
# /etc/fstab:Informationen zum statischen Dateisystem. |
Führen Sie dann Folgendes aus:
touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug
DNS-Server
apt-getinstall bind9
Aus Sicherheitsgründen möchten wir BIND chroot ausführen, daher müssen wir die folgenden Schritte ausführen:
/etc/init.d/bind9 stop
Bearbeiten Sie die Datei /etc/default/bind9 so dass der Daemon als nicht privilegierter Benutzer 'bind ',gechrootet nach /var/lib/named .Ändern Sie die Zeile:OPTS=" -ubind " sodass es lautet:OPTS="-u bind-t /var/lib/named" :
OPTIONS="-u bind -t /var/lib/named" |
Erstellen Sie die erforderlichen Verzeichnisse unter /var/lib :
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
Verschieben Sie dann das Konfigurationsverzeichnis von /etc bis /var/lib/named/etc :
mv /etc/bind /var/lib/named/etc
Erstellen Sie einen symbolischen Link zum neuen Konfigurationsverzeichnis vom alten Speicherort (um Probleme zu vermeiden, wenn Bindis in Zukunft aktualisiert wird):
ln -s /var/lib/named/etc/bind/etc/bind
Null- und Zufallsgeräte erstellen und Berechtigungen der Verzeichnisse korrigieren:
mknod /var/lib/named/dev/nullc 1 3
mknod /var/lib/named/dev /random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/ *
chown -R bind:bind /var/lib/named/etc/bind
Wir müssen das Startskript ändern /etc/init.d/ sysklogd von sysklogd damit wir weiterhin wichtige Meldungen in den Systemprotokollen protokollieren können. Ändern Sie die Zeile: SYSLOGD="" sodass es lautet:SYSLOGD="-a/var/lib/named/dev/log" :
#! /bin/sh |
Starten Sie den Logging-Daemon neu:
/etc/init.d/sysklogd restart
Starten Sie BIND und überprüfen Sie /var/log/syslog für Fehler:
/etc/init.d/bind9 start
MySQL
apt-getinstall mysql-server mysql-client libmysqlclient12-dev
mysqladmin -u root passwordyourrootsqlpassword
Wenn Sie netstat-tap ausführen Sie sollten jetzt eine Zeile wie diese sehen:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2449/mysqld |
was bedeutet, dass auf 127.0.0.1 auf Port 3306 auf MySQL zugegriffen werden kann. Sie können zum nächsten Abschnitt (Postfix) gehen. Wenn Sie es nicht sehen Bearbeiten Sie in dieser Zeile /etc/mysql/my.cnf und kommentieren Sie skip-networking aus :
# skip-networking |
Wenn Sie möchten, dass MySQL alle verfügbaren IP-Adressen überwacht, bearbeiten Sie /etc/mysql/my.cnf und kommentieren Sie bind-address =127.0.0.1 aus :
#bind-address =127.0.0.1 |
Wenn Sie /etc/mysql/my.cnf bearbeiten müssten Sie müssen MySQL neu starten:
/etc/init.d/mysql restart
Wenn MySQL auf allen Schnittstellen lauscht, müssen Sie jetzt auch ein MySQL-Passwort für server1.beispiel.com weil sonst jeder auf Ihre Datenbank zugreifen könnte:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
Postfix/POP3/IMAP
Um Postfix mit SMTP-AUTH und TLS sowie einen POP3-Server zu installieren, der auch POP3s (Port 995) und einen IMAP-Server unterstützt ist auch IMAP-fähig (Port 993) führen Sie die folgenden Schritte aus:
apt-get install postfixpostfix-tls libsasl2 sasl2-bin libsasl2-modules ipopd-ssl uw-imapd-ssl (1 Zeile!)
<- pop3 und pop3s
<- Nein
<- Internet-Site
<- NONE
<- server1.example.com
<- server1.example.com, localhost.example.com, localhost
<- Nein
postconf -e 'smtpd_sasl_local_domain='
postconf -e 'smtpd_sasl_auth_enable =yes'
postconf -e 'smtpd_sasl_security_options =noanonymous'
postconf -e 'broken_sasl_auth_clients =yes'
postconf -e 'smtpd_recipient_restrictions =permission_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces =all'
echo 'pwcheck_method:saslauthd'>> /etc/postfix/sasl/smtpd.conf
echo 'mech_list:plain login'>> /etc/postfix/sasl/smtpd.conf
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa - des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days3650
postconf -e 'smtpd_tls_auth_only=no'
postconf -e 'smtp_use_tls =yes'
postconf - e 'smtpd_use_tls =yes'
postconf -e 'smtp_tls_note_starttls_offer =yes'
postconf -e 'smtpd_tls_key_file =/etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file =/ etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile =/etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel =1'
postconf -e 'smtpd_tls_received_header =yes'
postconf -e 'smtpd_tls_session_cache_timeout =3600s'
postconf -e 'tls_random_source =dev:/dev/urandom'
Die Datei /etc/postfix/main.cf sollte nun so aussehen:
# Siehe /usr/share/postfix/main.cf.dist für eine kommentierte, vollständigere Versionmtpd_banner =$myhostname ESMTP $mail_name (Debian/GNU )biff =no# Anhängen von .domain ist der Job des MUA.append_dot_mydomain =no# Entkommentieren Sie die nächste Zeile, um „verzögerte Mail“ zu generieren warnings#delay_warning_time =4hmyhostname =server1.example.comalias_maps =hash:/etc/aliasesalias_database =hash:/etc /aliasesmyorigin =/etc/mailnamemydestination =server1.example.com, localhost.example.com, localhostrelayhost =mynetworks =127.0.0.0/8mailbox_command =procmail -a "$EXTENSION"mailbox_size_limit =0recipient_delimiter =+inet_interfaces =allsmtpd_sasl_local_domain =smtpd_sasl_local_domain =smtpd_optiond_sasl_sasl_able noanonymousbroken_sasl_auth_clients =yessmtpd_recipient_restrictions =permission_sasl_authenticated,permit_mynetworks,reject_unauth_destinationsmtpd_tls_auth_only =nosmtp_use_tls =yessmtpd_use_tls =yessmtp_tls_note_starttls_offer =yessmtpd_tls_key_file =/etc/ postfix/ssl/smtpd.keysmtpd_tls_cert_file =/etc/postfix/ssl/smtpd.crtsmtpd_tls_CAfile =/etc/postfix/ssl/cacert.pemsmtpd_tls_loglevel =1smtpd_tls_received_header =yessmtpd_tls_session_urache_timeout =3600stls_random/dedom.source =3600stls_random/dedom.source = |
/etc/init.d/postfixrestart
Die Authentifizierung erfolgt durch saslauthd .Wir müssen ein paar Dinge ändern, damit es richtig funktioniert. Weil Postfix in /var/spool/postfix läuft wir müssen folgendes tun:
mkdir -p /var/spool/postfix/var/run/saslauthd
Now we have toedit /etc/default/saslauthd in order to activate saslauthd .Remove # in front of START=yes and add the line PARAMS="-m /var/spool/postfix/var/run/saslauthd -r" :
# This needs to be uncommented before saslauthd will be run automaticallySTART=yesPARAMS="-m /var/spool/postfix/var/run/saslauthd -r"# You must specify the authentication mechanisms you wish to use.# This defaults to "pam" for PAM support, but may also include# "shadow" or "sasldb", like this:# MECHANISMS="pam shadow"MECHANISMS="pam" |
We must also edit /etc/init.d/saslauthd and change the location of saslauthd's PID file. Change the value of PIDFILE to /var/spool/postfix/var/run/${NAME}/saslauthd.pid :
PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid" |
Now start saslauthd :
/etc/init.d/saslauthd start
Next we create the file /etc/c-client.cf with the following contents:
I accept the riskset disable-plaintext 0 |
and restart inetd :
/etc/init.d/openbsd-inetd restart
If we don't do this, then our POP3/IMAP logins will fail.
To see if SMTP-AUTHand TLS work properly now run the following command:
telnetlocalhost 25
After you haveestablished the connection to your postfix mail server type
ehlolocalhost
If you see thelines
250-STARTTLS
and
250-AUTH
everything is fine.
Type
quit
to return to thesystem's shell.
Courier-IMAP/Courier-POP3
If you want touse a POP3/IMAP daemon that has Maildir support (if you do not want to use thetraditional Unix mailbox format) you can install Courier-IMAP/Courier-IMAP-SSL(for IMAPs on port 993) and Courier-POP3/Courier-POP3-SSL (for POP3s on port995). Otherwise you can proceed with the Apache configuration.
apt-get install courier-imapcourier-imap-ssl courier-pop courier-pop-ssl
<- No
ipopd and UW-IMAPwill then be replaced.
Then configurePostfix to deliver emails to a user's Maildir*:
postconf -e 'home_mailbox=Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart
*Please note:Youdo not have to do this if you intend to use ISPConfigon your system as ISPConfig does the necessary configuration using procmailrecipes. But please go sure to enable Maildir under Management -> Settings ->EMail in the ISPConfig web interface.