Inhaltsverzeichnis
Der Domain-Name-Service (dns) ist für die Umwandlung von Internetadressen (z.B. www.debian.org) in numerische IP-Adressen (198.186.203.20) zuständig. Auch die umgekehrte Richtung ist möglich. Ohne diesen Dienst müsste man immer die IP-Adresse des Servers kennen, auf den man z.B. beim Surfen zugreifen will. Zusätzlich zur IP-Adresse kann der dns-Server auch den Mailserver, der für eine Domain zuständig ist, speichern (sog. MX-Record). Weitere Infos wie Hardware-Ausstattung sind auch möglich, aber eher unüblich. Jede Domain ist in mindestens zwei dns-Servern eingetragen. Welche das sind, kann mit dem Programm whois herausgefunden werden.
Der gebräuchlichste dns-Server für Linux heißt bind. Mit apt-get install bind9 wird Version 9 installiert. Der Server selber wird mit der Datei /etc/bind/named.conf konfiguriert. Im options-Abschnitt müssen folgende Zeilen hinzugefügt werden:
options { forwarders { 217.237.151.161; 194.25.2.129; }; allow-query { 127.0.0.0/8; 192.168.0.0/24; }; allow-transfer { none; }; listen-on { 127.0.0.1; 192.168.0.1; }; };
Damit ist der dns-Server nur vom internen Netzwerk erreichbar. Schließlich ist er auch nur für das interne Netzwerk zuständig. Am Ende von /etc/bind/named.conf müssen noch folgende Zeilen hinzugefügt werden:
zone "gm.rt.schule-bw.de" IN { type master; file "gm.rt.schule-bw.de-zone"; }; zone "0.168.192.in-addr.arpa" IN { type master; file "192.168.0-zone"; };
Jetzt müssen noch die sogenannten Zonen-Dateien erstellt werden. In diesen Dateien liegen die eigentlichen Informationen, die der dns-Server zur Umandlung von Domains in IP-Adressen benötigt. Zuerst erstellen wir die Datei /var/cache/bin/gm.rt.schule-bw.de-zone:
; ; /var/cache/bind/gm.rt.schule-bw.de-zone ; $TTL 2D @ IN SOA dns root.gm.rt.schule-bw.de. ( 2003081201 ; serial JJJJMMTTNN 8H ; refresh rate 2H ; retry rate 1W ; expiration date 2D ) ; minimum ttl IN NS dns IN MX 10 mail dns IN A 192.168.0.1 mail IN A 192.168.0.1 pop IN A 192.168.0.1 news IN A 192.168.0.1 server IN A 192.168.0.1 proxy IN A 192.168.0.1 www IN NS dns1.belwue.de. ; www.gm.rt.schule-bw.de. wird von unserem ; dns-server nicht verwaltet, aber von belwue.
Diese Datei sorgt für die Auflösung eines Namens in seine IP-Adresse. Die andere Zonen-Datei ist für die umgekehrte Richtung da. /var/cache/bin/192.168.0-zone muss folgenden Inhalt haben:
; ; /var/cache/bind/192.168.0-zone ; $TTL 2D @ IN SOA dns.gm.rt.schule-bw.de. root.gm.rt.schule-bw.de. ( 2003081201 ; serial JJJJMMTTNN 8H ; refresh rate 2H ; retry rate 1W ; expiration date 2D ) ; minimum ttl IN NS dns.gm.rt.schule-bw.de. 1 IN PTR server.gm.rt.schule-bw.de.
Mit /etc/init.d/bind reload wird die neue Konfiguration übernommen.
Damit unser Server seinen eigenen dns-Server auch benutzt, muss noch die Datei /etc/resolv.conf bearbeitet werden. Sie muss folgenden Inhalt haben:
# # /etc/resolv.conf # search gm.rt.schule-bw.de nameserver 192.168.0.1
Damit ist die Konfiguration des dns-Servers abgeschlossen.
Mit dem dhcp-Protokoll lassen sich die Clients automatisch konfigurieren. Da unser Netz die Adresse 192.168.0.0 hat und 192.168.0.1 und 192.168.0.254 schon belegt sind (Server und Netzdrucker), bleibt für die Clients im Prinzip der Adressbereich 2-253 übrig. Um aber für besondere Fälle (z.B. weitere Netzdrucker) noch einige Adressen frei zu haben, sollten die Clients nur folgenden Bereich nutzen: 140-253.
Zuerst muss der dhcp-Server wahrscheinlich installiert werden. Das geht mit dem Befehl apt-get install dhcp. Die Konfigurationsdatei heißt /etc/dhcpd.conf. Sie muss folgenden Inhalt haben:
# # /etc/dhcpd.conf # default-lease-time 604800; # 7 days max-lease-time 2592000; # 30 days option domain-name "gm.rt.schule-bw.de"; option domain-name-servers dns.gm.rt.schule-bw.de; option lpr-servers server.gm.rt.schule-bw.de; option netbios-name-servers server.gm.rt.schule-bw.de; option time-servers server.gm.rt.schule-bw.de; option smtp-server mail.gm.rt.schule-bw.de; option pop-server pop.gm.rt.schule-bw.de; option www-server server.gm.rt.schule-bw.de; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.140 192.168.0.253; }
In der Datei /etc/default/dhcp steht, auf welchen Netzwerkkarten der dhcp-Server aktiv ist. Hier muss folgende Zeile stehen:
INTERFACES="eth0"
Mit /etc/init.d/dhcp restart wird die Konfiguration übernommen.
In diesem Abschnitt wird die Konfiguration des Mailsystems beschrieben. Zunächst muss uucp eingerichtet werden. uucp wird zum Abholen der Mails vom Provider verwendet (in unserem Fall: belwue). Dann muss der eigentliche MTA (Mail Transfer Agent) eingerichtet werden, der SMTP-Server. Dieser Server erhält über uucp die Mails der Domain gm.rt.schule-bw.de und verteilt diese an die Benutzer. Andererseits nimmt der SMTP-Server neue Mails von den Clients an und versendet sie über uucp.
Zunächst einmal muss die uucp-Software installiert werden: apt-get install uucp. Alle Konfigurationsdateien liegen in /etc/uucp/. Am besten werden in diesem Verzeichnis zuerst alle Konfigurationsdateien gelöscht.
Wir bearbeiten zuerst die Datei call. Hier werden drei Informationen benötigt: Der Systemname des Providers (hier: belwue), Login-Name und Passwort.
# # /etc/uucp/call # # Format: # system login passwd belwue loginname passwort
"loginname" und "passwort" müssen natürlich noch ersetzt werden.
Die nächste Datei heißt config. Hier steht der UUCP-Name des lokalen Rechners.
# # /etc/uucp/config # nodename loginname
Auch hier muss "loginname" ersetzt werden.
In der Datei sys werden die bekannten Systeme beschrieben, die verwendet werden sollen. Diese Datei sollte folgenden Inhalt haben:
# # /etc/uucp/sys # ### # Globale Einstellung für alle Systeme # Loginnamen und Passwort aus der Datei 'call' lesen call-login * call-password * # Keine Einschränkung der Zugriffszeit time any ### # Systemspezifische Einstellungen system belwue called-login loginname commands rnews rmail rsmtp rcsmtp crsmtp myname loginname port type tcp address news.belwue.de
Hier muss wieder "loginname" ersetzt werden.
In der Datei /etc/hosts muss noch eine Zeile ergänzt werden:
129.143.4.4 news.belwue.de belwue
Neue Mails werden dann letztendlich mit folgendem Befehl abgeholt: uucico -r1 -sbelwue -f.
Die Konfiguration kann natürlich auch getestet werden. Dazu die folgenden Befehle eingeben; die Ausgabe sollte ähnlich sein.
server:~# su - uucp uucp@server:~$ /usr/lib/uucp/uuchk Local node name loginname Spool directory /var/spool/uucp Public directory /var/spool/uucppublic Lock directory /var/lock Log file /var/log/uucp/Log Statistics file /var/log/uucp/Stats Debug file /var/log/uucp/Debug Global debugging level uucico -l will strip login names and passwords uucico will strip UUCP protocol commands Start uuxqt once per uucico invocation System: belwue Caller must log in as loginname Will use loginname as name of local system Call out using a specially defined port The port is defined as: Port name system belwue port Port type tcp TCP service uucp Characteristics: eight-bit-clean reliable end-to-end fullduplex Remote address news.belwue.de Chat script "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: \L word: \P Chat script timeout 10 Chat script incoming bytes stripped to seven bits Login name loginname Password passwort At any time may call if any work May retry the call up to 26 times May make local requests when calling May make local requests when called May send by local request: / May send by remote request: ~ May accept by local request: ~ May receive by remote request: ~ May execute rnews rmail rsmtp rcsmtp crsmtp Execution path /bin /usr/bin /usr/local/bin /usr/sbin Will leave 50000 bytes available Public directory is /var/spool/uucppublic Will use any known protocol
Eine weitere Möglichkeit, die Konfiguration zu testen, ist, die Mails abzuholen und dabei Debug-Ausgaben erzeugen zu lassen. Das geht mit uucico -r1 -x9 -sbelwue -f recht einfach. In /var/log/uucp/Debug stehen die ausführlichen Debug-Ausgaben. Die Datei /var/log/uucp/Log wird immer erweitert, wenn uucp benutzt wird.
Exim ist wahrscheinlich schon installiert. Mit eximconfig wird das Konfigurationsprogramm aufgerufen. Bei der ersten Frage muss Option 1 ausgewählt werden (Internet site). Die Antwort auf die nächste Frage ("visible mail name of your system") lautet gm.rt.schule-bw.de. Dann noch vier mal "none" also Antwort verwenden und die grobe Konfiguration ist abgeschlossen.
Jetzt kommt die feinere Konfiguration in der Datei /etc/exim/exim.conf. Um uucp mit exim verwenden zu können, müssen im Abschnitt Transports folgende Zeilen hinzugefügt werden:
###################################################################### # TRANSPORTS CONFIGURATION # ###################################################################### # ORDER DOES NOT MATTER # # Only one appropriate transport is called for each delivery. # ###################################################################### uucp_pipe: driver = pipe command = "uux - -a$sender_address -r $host\!rmail ($local_part@$domain)" pipe_as_creator restrict_to_path path = "/usr/bin:/bin" return_output
Im Abschnitt Router müssen folgende Zeilen am Anfang des Abschnitts hinzugefügt werden (die Reihenfolge spielt eine Rolle):
###################################################################### # ROUTERS CONFIGURATION # # Specifies how remote addresses are handled # ###################################################################### # ORDER DOES MATTER # # A remote address is passed to each in turn until it is accepted. # ###################################################################### uucp: driver = domainlist transport = uucp_pipe route_list = "* belwue byname"
Damit wird die ausgehende Mail zuerst über uucp verschickt.
Im ersten Abschnitt (main configuration settings) muss die Variable "trusted_users" gesucht werden. Folgendes muss geändert werden:
trusted_users = mail:uucp trusted_groups = uucp
Im selben Abschnitt müssen noch zwei Optionen gesucht und geändert bzw. überprüft werden:
host_accept_relay = 127.0.0.1 never_users = root
Damit können lokale Prozesse, die den Mailserver über die Adresse 127.0.0.1 ansprechen, Nachrichten mit beliebigem Absender und Empfänger verschicken. Die zweite Option verhindert, dass dem Benutzer root (also dem Systemadministrator) direkt Mails zugestellt werden. Die Mails an root müssen an einen anderen Benutzer weitergeleitet werden. Das passiert weiter unten.
Damit man jetzt aber auch von allen Computern im Netzwerk aus Mails verschicken kann, wird noch eine Authentifikation eingerichtet. Diese Konfiguration verhindert, dass mögliche Viren sich nicht selber über den Server weiterverschicken können. Dazu muss im Abschnitt MAIN CONFIGURATION SETTINGS die Option
exim_group = shadow
eingestellt werden. Damit läuft der Mail-Server unter der Gruppe "shadow", sodass er die Datei /etc/shadow, in der die Passwörter der Benutzer stehen, lesen darf. Zusätzlich muss im selben Abschnitt folgende Option gesetzt werden:
host_auth_accept_relay = 192.168.0.0/24
Damit wird es den Rechner aus dem Netzwerk erlaubt, den Mail-Server als Mail-Relay zu benutzen, nachdem sie sich authentifiziert haben. Die Authentifikation wird in der Konfigurationsdatei ganz am Ende eingerichtet, unter dem Abschnitt AUTHENTICATION CONFIGURATION. Hier müssen folgende Zeilen stehen:
plain: driver = plaintext public_name = PLAIN server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2} \ lsearch{/etc/shadow}{$value}{*:*}}}}}{1}{0}}" server_set_id = $2
Die Einstellungen sind sofort aktiv; exim muss nicht neugestartet werden. Damit man jetzt Mails verschicken kann, müssen die Clients entsprechend konfiguriert sein ("Benutzername und Passwort verwenden").
Zur Mailkonfiguration gibt es noch eine zweite, sehr wichtige Datei: /etc/aliases. Hier können z.B. Weiterleitungen definiert werden. eximconfig hat schon eine neue Datei erstellt. Am Ende dieser Datei sollten folgende Zeilen hinzugefügt werden:
info: verwaltung, homepage homepage: thomas, alexander, jmueller, bohn, andreas verwaltung: root sekretariat: poststelle@xxxxxxxx.schule.bwl.de, \sekretariat proxymaster: root root: andreas # Anmerkung: Hier könnten noch Weiterleitungen von Mail an externe Adressen # eingerichtet werden, zum Beispiel für Lehrer andreas: a.dangel@gmx.de, \andreas
Die letzte Zeile ist ein Beispiel für eine externe Weiterleitung.
Soll der Server regelmäßig neue Mails abholen, muss der cron-Dienst entsprechend konfiguriert werden. In der Datei /etc/cron.d/getEmail steht eine neue cron-Konfiguration. Sie muss folgenden Inhalt haben:
# # /etc/cron.d/getEmail # # min hour(s) day month dow user command 0 7,10,13,15,17,19,21 * * * root /usr/local/sbin/getEmail
Die Datei /usr/local/sbin/getEmail sieht so aus:
#!/bin/sh # # /usr/local/sbin/getEmail # # Internetverbindung aufbauen: ping an news.belwue.de ping -c 5 129.143.4.4 > /dev/null # Mailqueue abarbeiten /usr/sbin/exim -q # neue Mails holen /usr/sbin/uucico -r1 -sbelwue -f
Mit chmod 700 /usr/local/sbin/getEmail wird das Script ausführbar gemacht.
Standardmäßig wird die Mail-Warteschlange von exim alle 15 Minuten ausgeführt. Dies ist unnötig und verursacht nur häufige Internet-Einwahlen. Die Mail-Queue wird im Script /usr/local/sbin/getEmail auch ausgeführt (exim -q). Wir deaktivieren deshalb die Standardeinstellung. Dazu wird der Eintrag in der vierten Zeile in /etc/cron.d/exim mit einem "#" auskommentiert.