[HOwTO] Web- und Mailserver mit Debian Lenny

mbunge

New Member
Hallo Leute,

nachfolgend werde ich euch meinen Leidensweg zu einen funktionierenden Web und Mailserver offenbaren. Vorrausetzungen sind ein frisch installiertes minimales Debian Lenny 5.0 (ich hatte als Referenzsystem einen vServer) und ein root Zugang zum server per SSH (unter Win mit PuTTy).

Da ich 3 HOWTO's (eigentlich noch viel mehr) dankbar bin, das es sie gibt werde ich auf diese 3 HOWTO's verlinken. Ich mache noch Ergänzungen, zu Themen die bei mir nicht ganz Rund liefen.

Als Tipp wenn Ihr Anfänger seit, dann empfhele ich das Openbook Wie werde ich UNIX-Guru. Außerdem ist es wichtig unbekannte Befehle nach zuschauen bzw. zu googlen. Und gebt nicht auf den kein Controlpanel kann die Konsole ersetzen ;-).

Let's go!

Tutorial-Gliederung:
Diese Gliederung entspricht der Gliederung der einzelnen Tutorien und nicht des Threads!

  1. Webserver konfigurieren
    1. Vorbereitungen
    2. Apache installieren
    3. MySQL Server installieren
    4. PhpMyadmin installieren
  2. Mailserver konfigurieren
    1. Vorbereitungen
    2. Postfix konfigurieren
    3. Dovecot konfigurieren
    4. Server testen
    5. Anmeldung mit Outlook 2007

1. Webserver konfigurieren

1.1 Vorbereitungen

Alle Themen von 1.1 bis 1.4 werden in nachfolgenden Thread sehr ansehentlich behandelt und erklärt. Nach folgend ein paar Punkte, die ich Ergänzen möchte. Die Punkte Ergänzen das Howto und dürfen erst aus Kompatibilitätsgründen mit während der Abarbeiten des Tutorials (auf dass ich verlinken werden) berücksichtigt werden.

1. Installation der Tools:

Hier habe ich die Liste um dnsutils, mailutils, telnet ergänzt.
  • dnsutils bringt Tools wie nslookup und dig mit sich. damit kann man Informationen über die eigenen DNS Einträge z.B. MX Record sammeln und prüfen.
  • mailutils bringt das Tool Mail mit sich. Es wird im Kapitel 2.4 benötigt.
  • telnet wird ebenfalls für Kapitel 2.4 benötigt. Mit dem Tool wird getestet ob eine Verbindung zum Mailserver hergestellt werden kann.

Nun der Unixcode:
Code:
apt-get -y install mc zip unzip bzip2 screen vim rsync traceroute ftp lynx openssl autoconf automake1.9 libtool bison autotools-dev g++ build-essential dnsutils telnet mailutils

2. MySQL und PhpMyAdmin

1. Installation

Aus unempfindlichen Gründen hatte PhpMyadmin etwas gesponne als ich es zusammen mit MySQL installiert habe. Darum empfehle ich erst den Server zu installieren, dann PhpMyadmin.

2. PhpMyAdmin verfügbar machen

Ihr werdet merken, dass der Aufruf von PhpMyAdmin via domain.tld/phpmyadmin nicht sofort funktioniert. Das liegt daran, dass Phpmyadmin gar nicht im Ordner /var/www/ vorhanden ist. Das problem kann mit einem Symlink gefixt werden. Folgende Zeilen bitte auf der Konsole ausführen.

Code:
cd /var/www
ln -s /usr/share/phpmyadmin/ phpmyadmin

Mit cd /var/www/ wechseln wir in das Verzeichniss /var/www/. Und mit ln -s /usr/share/phpmyadmin/ phpmyadmin erstellen wir den Symlink 'phpmyadmin' im Verzeichniss /var/www/.

3. Apache: Virtualhost
nach dem Sternchen in <VirtualHost *> bitte noch den Port 80 wir folgt angeben. <VirtualHost *:80>. Es kann manchmal zu Problemen kommen wenn der Port nicht mit angegeben ist. Der Port dient quasi als Tür zum HTTP / Webserver.

4. Das eigentlich Thema
Zum Thema Webserver einrichten möchte ich auf auf folgenden Link verweisen http://www.tim-bormann.de/debian-lenny-server-vserver/

2. Mailserver konfigurieren

2.1 Vorbereitungen und Ergänzungen

Diese Tutorial ist sehr verständlich und detailliert geschrieben. Aber auch hier blieben einige wenige Ergänzungen nicht aus.

1. apt-get statt apitude
Ich bin etwas Abergläubisch und bleibe bei Servern gerne bei einem Befehl wenn er das selbe macht. Darum verwende ich statt apitude install apt-get install.

2. Das SSL Zertifikat
Euch wird empfohlen einen Dienst zu verwenden. An sich ist der auch nicht schlecht, jedoch benötigt ihr eine E-Mailaddresse auf euren Server. Und diesen richtet ihr ja noch ein, mit anderen Worten ihr könnt das Zertifikat nicht anlegen. Alternativ möchte ich euch folgenden Weg vorschlagen:

(Quelle: http://holl.co.at/howto-email/#a2.1.2)
Statt asconix.* erstellen wir die Dateien mail.key (statt asconix.key) und mail.cert (statt asconox.pem). Genau mail.cert ist das Äquvalent zu asconox.pem!

Mit folgenden Zeilen auf der Konsole erstellen wir die gewünschten Dateien:

Code:
openssl genrsa -out mail.key 2048

Hiermit wird ein privater RSA Schlüssel mit 2048 Bit Länge erstellt.

Code:
openssl req -new -key mail.key -out mail.csr

Hiermit wird ein CSR (Certificate Signing Request) erstellt. Das CSR ist im Prinzip der public key versehen mit zusätzlichen Informationen. Wichtig ist, dass bei der Frage nach dem Common Name (CN) der vollständige Hostname eingetragen wird (z. B. mail.example.com oder example.com). Denn wenn sich ein Client zum Host example.com verbindet und beim Common Name aber nur example eingegeben wurde, bekommt der Client eine Warnung, dass der Name des Hosts nicht mit dem des Common Name übereinstimmt.

Code:
openssl x509 -req -days 4312 -in mail.csr -out mail.cert -signkey mail.key

Erstellen eines selbst-signierten Zertifikates mit einer Gültigkeit von 4312 Tagen.

3. Virtual Host
Die Virtualhost dateien sollte man am besten nur mit einem Datensatz füttern. Im Verlauf des Tutorials wird ein kleines shell-script installiert, dass die Nutzer automatisch anlegt.

4. Anlegen der Mailpostfächer
Unter /var/www/vhosts/domain.tld/* müsst ihr die Ordner zu den frisch angelegten Postfächern erstellen. Dabei müsst ihr nach dem Erstellen noch die Rechte auf 775 setzten, da sonst kein Zugriff auf die Ordner möglich ist:

Code:
[...]
Sep 10 20:29:47 t2236 deliver(testuser@domain.tld): mkdir(/var/mail/vhosts/domain.tld/testuser/cur) failed: Permission denied
Sep 10 20:29:47 t2236 deliver(testuser@domain.tld): msgid=<20100910202946.ED1DF118586@t5363.domain.tld>: Couldn't open mailbox INBOX: Internal error occurred. Refer to server log for more information. 
[...]

Folgende Zeilen kann man zum fixen des Problems verwenden:

Code:
mkdir account
Erstellt das Verzeichnis account.
Code:
chmod 775 account
Setzt die Rechte für den Ordner Account

5. das eigentlich Tutorial
Ich möchte nicht um den heißen Brei reden: http://www.asconix.com/howtos/debian/postfix-dovecot-mailserver-debian-lenny-howto

2.5 Outlook mit Mailserver verbinden

  1. macht ein Häkchen bei "Servereinstellungen oder zusätzliche Servertypen manuel konfigurieren"
  2. Wählt den Punkt "Internet-Email"
  3. Füllt alle Felder mit euren Daten aus
    1. Anmeldleinformationen => Benutzername ist meist die E-Mail-Adresse!
  4. macht ein Häkchen bei "Anmeldung mit Hilfe der gesicherten Kennwortwuthetifizierung (SPA) erforderlich"
  5. Dann auf "weitere Einstellungen"
    1. Reiter Postausgangsserver -> Häkchen bei "Der Postausgangsserver (SMTP) erfordert Authentifizierung"
      1. Dann wählt ihr "Anmelden mit" und gebt eure Daten ein
      2. dann macht ein Häkchen bei "Gesicherte Kennwortauthetifizierung (SPA) erforderlich"
    2. Reiter Erweitert -> Häkchen bei "Server erfordert ene verschlüsselte Verbindung (SSL)", der Port müsste sich jetzt auf 995 ändern
  6. Mit Ok bestätigen und dann Kontoeinstellunegn testen. Wenn alles gut ging werdet ihr 2 Grüne Häkchen bekommen. Mit Schließen das Fenster... naja
  7. Dann mit Weiter und dann Fertigstellen die Konfiguration abschließen.

Ich hoffe euch hilft diese HOWTO, oder eher die Zusammenfassung von Howto's, um euch mit der Installation und Konfiguration eines Webservers und eines Mailservers und später dann mit der Administration zurecht zu finden.

MfG
M. Bunge
 
Last edited by a moderator:
Großes Danke für dieses How To! Bei mir hat alles reibungslos geklappt. Allerdings steht jetzt bei mir eine Frage im Raum. Wenn ich einen Benutzer für eine bestimmte Domain anlegen möchte, wie mache ich das? Momentan habe ich nämlich gar keinen Benutzer für meine Domains.

Meine zweite Frage bezieht sich auf die Ordner Struktur innerhalb des Ordners zu der Domain, wie muss diese aussehen? Bei Plesk z.b. legt er so httpdocs, cgi-bin Ordner etc. selbst an. Muss ich das auch machen? Wird es evtl. gar nicht benötigt oder gibt es eine Art Befehl dafür um die Struktur automatisch anlegen zu lassen?

//edit

Hab doch noch eine kleine Frage. Wie kann ich mich im phpmyadmin einloggen? Da ich ja nur ein Passwort vergeben musste und keinen User bin ich da ein wenig ahnungslos.
 
Last edited by a moderator:
//edit

Hab doch noch eine kleine Frage. Wie kann ich mich im phpmyadmin einloggen? Da ich ja nur ein Passwort vergeben musste und keinen User bin ich da ein wenig ahnungslos.

Geht standardmässig mit dem Benutzernamen: root

Lg.

(auch wenn es schon ein paar tage her ist xP)
 
Hallo,

Zu Anfang sehr schönes Tut. Und ich weiß das der Beitrag schon etwas älter ist. Doch ich weiß nicht wo ich diese Frage sonst stellen sollte.
Ich hab alles so gemacht wie es beschrieben steht, wenn ich jetzt jedoch einen Benutzer hinzufügen möchte und dazu das addmailuser Script benutze bringt er mir folgende Ausgabe:

root@debian:/usr/local/bin# addmailuser xxx@xxxxx.de zzzzzzz
Adding Postfix user configuration...
postmap: warning: /etc/postfix/vmailbox, line 7: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 8: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 9: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 10: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 11: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 12: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 13: expected format: key whitespace value
postmap: warning: /etc/postfix/vmailbox, line 14: expected format: key whitespace value
Adding Dovcot user configuration...
/usr/local/bin/addmailuser: line 45: PASSWD: command not found
dovecotpw: option requires an argument -- 'p'
usage: dovecotpw [-l] [-p plaintext] [-s scheme] [-u user] [-V]
-l List known password schemes
-p plaintext New password
-s scheme Password scheme
-u user Username (if scheme uses it)
-V Internally verify the hash
/usr/local/bin/addmailuser: line 46: BASEDIR//passwd: No such file or directory
/usr/local/bin/addmailuser: line 47: BASEDIR//shadow: No such file or directory
Reloading Postfix configuration...chmod: missing operand after `600'
Try `chmod --help' for more information.
chmod: missing operand after `600'
Try `chmod --help' for more information.
done.
root@debian:/usr/local/bin#

Was bzw. wo hab ich was falsch gemacht?


Giganull
 
Das Howto ist für Lenny, aktuell ist Debain Squeeze. Kann gut sein, dass das nicht mehr funktioniert. Wo hast du das Script her? Bitte mal Original verlinken.
 
Ich vermute mal er meint dieses hier

Code:
#!/bin/bash
#
# Script to add users for
# Dovecot/PostFix using Virtual Users

USAGE="Usage: $0 EMAIL PASSWORD [BASEDIR]";

if [ ! -n "$2" ]
then
  echo $USAGE;
  exit 1;
fi

USERNAME=$(echo "$1" | cut -f1 -d@);
DOMAIN=$(echo "$1" | cut -f2 -d@);
ADDRESS=$1;
PASSWD=$2;

if [ -n "$3" ]
then
  if [ ! -d "$3" ]
  then
    echo $USAGE;
    echo "BASEDIR must be a valid directory!";
    echo "I would have tried, $(postconf | grep ^virtual_mailbox_base | cut -f3 -d' ')";
    exit 2;
  else
    BASEDIR="$3";
  fi
else
  BASEDIR="$(postconf | grep ^virtual_mailbox_base | cut -f3 -d' ')";
fi

if [ -f /etc/postfix/vmailbox ]
then

  echo "Adding Postfix user configuration..."
  echo $ADDRESS $DOMAIN/$USERNAME/ >> /etc/postfix/vmailbox
  postmap /etc/postfix/vmailbox

  if [ $? -eq 0 ]
  then
    echo "Adding Dovecot user configuration..."
    echo $USERNAME::5000:5000::$BASEDIR/$DOMAIN/$USERNAME >> $BASEDIR/$DOMAIN/passwd
    echo $USERNAME":"$(dovecotpw -p $PASSWD) >> $BASEDIR/$DOMAIN/shadow
    chown root:root $BASEDIR/$DOMAIN/passwd && chmod 600 $BASEDIR/$DOMAIN/passwd
    chown root:root $BASEDIR/$DOMAIN/shadow && chmod 600 $BASEDIR/$DOMAIN/shadow
    /etc/init.d/postfix reload
  fi

fi

welches man hier findet. http://www.asconix.com/howtos/debian/postfix-dovecot-mailserver-debian-howto
 
Hallo

Also die Fehlermeldungen hab ich jetzt weg bekommen. Hab mich in dem addmailuser Script verschrieben gehabt :o nach erneutem abtippen kam keine Fehler mehr und die Benutzer waren auch wie hier beschrieben sichtbar.

Hab jetzt aber weiter unten ein weiteres Problem :(

Wenn ich mit
Code:
echo “%Dies ist ein Test …” | mail -s “Testmail” m.mustermann@example.com%
eine Test Mail senden will, dann taucht die nicht in /var/mail/vhosts/example.com/m.mustermann/new auf sondern in
/var/mail/benutzer

Drin steht irgendwas er konnte den Benutzer m.mustermann leider nicht finden?!

Wo muss ich nach dem Fehler suchen?

MfG

Giganull
 
Back
Top