Kapitel 6. Netzwerkapplikationen

Inhaltsverzeichnis

6.1. Webbrowser
6.1.1. Fälschen der User-Agent-Angabe
6.1.2. Browser-Erweiterung
6.2. Das Mail-System
6.2.1. Grundlagen des E-Mail-Systems
6.2.2. Einschränkungen moderner E-Mail-Dienste
6.2.3. Historische Erwartungen an E-Mail-Dienste
6.2.4. Mail Transfer Agent (MTA)
6.2.4.1. Die Konfiguration von exim4
6.2.4.2. Die Konfiguration von Postfix mit SASL
6.2.4.3. Die Mail-Adress-Konfiguration
6.2.4.4. Grundlegende MTA-Operationen
6.3. Der Server für Fernzugriff (SSH) und Hilfsprogramme
6.3.1. Grundlagen von SSH
6.3.2. Benutzername auf dem fernen Rechner
6.3.3. Verbindungen ohne Passwörter für die ferne Seite
6.3.4. Der Umgang mit fremden SSH-Clients
6.3.5. Einrichten von ssh-agent
6.3.6. Eine Mail versenden auf einem fernen Rechner
6.3.7. Portweiterleitung für SMTP-/POP3-Tunnelung
6.3.8. Wie Sie das ferne System über SSH herunterfahren
6.3.9. Fehlersuche bei SSH
6.4. Der Print-Server und Hilfsprogramme
6.5. Weitere Netzwerkanwendungs-Server
6.6. Weitere Netzwerkanwendungs-Clients
6.7. Diagnose von System-Daemons

Nach dem Aufbau der Netzwerkverbindung (laut Kapitel 5, Netzwerkkonfiguration) können Sie verschiedenste Netzwerkapplikationen nutzen.

[Tipp] Tipp

Bezüglich einer aktuellen Anleitung für Debian zum Thema Netzwerk-Infrastruktur lesen Sie das Debian Administratorhandbuch — Netzwerk-Infrastruktur.

[Tipp] Tipp

Falls Sie "2-Schritt-Verifizierung" aktiviert haben, müssen Sie bei manchen Internet-Providern ein Anwendungspasswort beziehen, um aus Ihrem Anwendungsprogramm Zugriff auf POP- und SMTP-Dienste zu erhalten. Auch kann es erforderlich sein, dass Sie im voraus Ihre Host-IP-Adresse bestätigen müssen.

Es gibt viele Webbrowser-Pakete, um über das Hypertext Transfer Protocol (HTTP-Protokoll) auf ferne Inhalte zuzugreifen:


Dieser Abschnitt ist überwiegend für typische tragbare Arbeitsplatzrechner (Laptops) gedacht, die über Internetverbindungen verfügen, wie sie für normale Privatkunden üblich sind.

[Achtung] Achtung

Falls Sie vorhaben, den Mail-Server so einzurichten, dass Mails direkt über das Internet ausgetauscht werden, gibt es wahrscheinlich bessere Beschreibungen als dieses grundlegende Dokument.

Eine E-Mail besteht aus drei Komponenten: den Absender- und Empfänger-Informationen, wie sie bei einem normalen Brief auf dem Umschlag stehen würden, den Nachrichten-Kopfzeilen (Header) und der eigentlichen Nachricht (dem "Nachrichtenkörper").

  • Die "An"- und "Von"-Informationen ("To" und "From") auf dem "Umschlag" werden von SMTP genutzt, um die Nachricht zuzustellen. (Die "From"-Information auf dem Umschlag wird auch mit Bounce address/Envelope sender, From_ usw. bezeichnet).

  • Die "An"- und "Von"-Informationen ("To" und "From") in den Nachrichten-Kopfzeilen werden vom E-Mail-Client (E-Mail-Programm) angezeigt. (Obwohl es sehr gängig ist, dass diese mit den Informationen vom "Umschlag" übereinstimmen, muss dies nicht immer der Fall sein.)

  • Das E-Mail-Nachrichtenformat bestehend aus Kopfzeilen (Header) und Nachrichtenkörper (Body) wird erweitert durch die Multipurpose Internet Mail Extensions (MIME), so dass zusätzlich zum reinen ASCII-Text auch andere Zeichenkodierungen unterstützt werden sowie Anhänge mit Audio-, Video-, Grafik- oder Applikationsdaten.

Voll ausgestattete GUI-basierte E-Mail-Clients bieten all diese Funktionen über eine grafische intuitive Konfiguration.

  • Sie erstellen und interpretieren die Nachrichten-Kopfzeilen und den Nachrichtenkörper unter Verwendung der Multipurpose Internet Mail Extensions (MIME), um den Datentyp und die Kodierung des Nachrichteninhalts korrekt zu bestimmen.

  • Sie authentifizieren sich selbst gegenüber den SMTP- und IMAP-Servern des ISP mittels der althergebrachten Basic Access Authentication oder der modernen Variante OAuth 2.0. (Um OAuth 2.0 zu nutzen, legen Sie dies über die Einstellungen Ihrer Arbeitsplatzumgebung fest; z.B. über "Einstellungen" -> "Online-Konten".)

  • Sie versenden die Nachrichten an den SMTP-Server des ISP (über den Message Submission Port 587).

  • Sie empfangen die auf dem Mail-Server des ISP vorhandenen Nachrichten über den TSL/IMAP4-Port (993).

  • Sie können Mails über deren Attribute filtern.

  • Teilweise bieten sie auch weitere optionale Funktionalitäten: Kontakte, Kalender, Aufgaben, Notizen.


Moderne E-Mail-Dienste unterliegen einigen Einschränkungen, um die Belästigung/Schädigung durch Spam (unerwünschte und unverlangte E-Mails) zu minimieren.

  • Sie können nicht davon ausgehen, dass das Betreiben eines SMTP-Servers an einem Endverbraucher-Anschluß (und somit das Senden von Nachrichten direkt an einen fernen Zielrechner) zuverlässig funktioniert.

  • Eine E-Mail kann an jeglicher Stelle auf der Route zum Ziel ohne weiteren Hinweis verworfen werden, außer sie ist als so authentisch wie möglich erkennbar.

  • Sie können nicht davon ausgehen, dass das Versenden von Mails an ferne Rechner mit einer zufälligen Absender-Mail-Adresse über einen eigenen Smarthost zuverlässig funktioniert.

Die Gründe hierfür sind:

Prinzipiell sollten mobile Arbeitsplatzrechner auch ohne den vom Mail Transfer Agent (MTA) bereitgestellten /usr/sbin/sendmail-Befehl funktionieren.

Obwohl auf mobilen Arbeitsplatzrechnern voll ausgestattete grafische E-Mail-Clients installiert sind, installiert Debian den MTA normalerweise, um den in Abschnitt 6.2.2, „Einschränkungen moderner E-Mail-Dienste“ und Abschnitt 6.2.3, „Historische Erwartungen an E-Mail-Dienste“ aufgeführten Ansprüchen gerecht werden zu können.

Bei mobilen Arbeitsplatzrechnern ist die typische Wahl für den MTA entweder exim4-daemon-light oder postfix (bei diesem wird die Installationsoption "E-Mails direkt mittels SMTP oder über fetchmail empfangen; ausgehende E-Mails über einen Smarthost versenden." ausgewählt). Dies sind ressourcen-schonende MTAs, die auch "/etc/aliases" respektieren.

[Tipp] Tipp

Die Konfiguration von exim4 zum Versenden von E-Mails über mehrere Absender-Mail-Adressen und mehrere dazugehörige Smarthosts ist alles andere als einfach. Wenn Sie solche Funktionalitäten für einige Programme benötigen, richten Sie diese so ein, dass sie msmtp benutzen; damit ist es auf einfache Art möglich, mehrere Absender-Adressen einzurichten. Den Haupt-MTA können Sie dann für nur eine einzige Mail-Adresse eingerichtet lassen.


Für das Verschicken von Mails über das Internet via Smarthost (re-)konfigurieren Sie die exim4-*-Pakete wie folgt:

$ sudo systemctl stop exim4
$ sudo dpkg-reconfigure exim4-config

Wählen Sie bei "Generelle E-Mail-Einstellungen" den Eintrag "Versand über Sendezentrale (Smarthost); Empfang mit SMTP oder Fetchmail".

Setzen Sie den "E-Mail-Name des Systems" auf seinen Standardwert, den FQDN (Näheres dazu in Abschnitt 5.1.1, „Die Auflösung des Rechnernamens“).

Bei "IP-Adressen, an denen eingehende SMTP-Verbindungen erwartet werden" wählen Sie den Standardwert "127.0.0.1 ; ::1".

Löschen Sie alle eingetragenen Werte bei der Abfrage von "Weitere Ziele, für die E-Mails angenommen werden sollen".

Löschen Sie alle eingetragenen Werte bei der Abfrage von "Rechner, für die E-Mails weitergeleitet werden (Relay)".

Setzen Sie "IP-Adresse oder Rechnername der Sendezentrale für ausgehende E-Mails" auf "smtp.hostname.dom:587".

Wählen Sie "Nein" bei der Frage "Lokalen E-Mail-Namen in ausgehenden E-Mails verbergen?". (Nutzen Sie stattdessen "/etc/email-addresses" wie in Abschnitt 6.2.4.3, „Die Mail-Adress-Konfiguration“ beschrieben.)

Bei der Abfrage "DNS-Anfragen minimieren (Automatische Einwahl, Dial-on-Demand)?" gehen Sie wie folgt vor:

  • Wählen Sie "Nein", wenn Ihr System während des Rechnerstarts mit dem Internet verbunden ist.

  • Wählen Sie "Ja", wenn Ihr System während des Rechnerstarts nicht (oder nicht immer) mit dem Internet verbunden ist.

Setzen Sie den Wert für "Versandart bei lokaler E-Mail-Zustellung:" auf "Mbox-Format in /var/mail/".

Bei der Frage "Einstellungen auf kleine Dateien aufteilen?" wählen Sie "Ja".

Erzeugen Sie Passworteinträge für den Smarthost, indem Sie "/etc/exim4/passwd.client" editieren:

$ sudo vim /etc/exim4/passwd.client
 ...
$ cat /etc/exim4/passwd.client
^smtp.*\.hostname\.dom:username@hostname.dom:password

Konfigurieren Sie exim4(8) mit "QUEUERUNNER='queueonly'", "QUEUERUNNER='nodaemon'" usw. in "/etc/default/exim4", um die Nutzung von Systemressourcen zu minimieren (optional).

Starten Sie exim4 mit folgendem Befehl:

$ sudo systemctl start exim4

Der Rechnername in "/etc/exim4/passwd.client" sollte nicht der Alias-Name sein. Sie können den echten Rechnernamen wie folgt herausfinden:

$ host smtp.hostname.dom
smtp.hostname.dom is an alias for smtp99.hostname.dom.
smtp99.hostname.dom has address 123.234.123.89

Ich verwende reguläre Ausdrücke in "/etc/exim4/passwd.client", um das Alias-Problem zu umgehen. SMTP AUTH funktioniert unter Umständen sogar, wenn der Internet-Diensteanbieter den Host (Rechner), auf den der Alias zeigt, verändert.

Sie können die exim4-Konfiguration händisch aktualisieren, indem Sie wie folgt vorgehen:

  • Aktualisieren der exim4-Konfigurationsdateien in "/etc/exim4/".

    • Erzeugen von "/etc/exim4/exim4.conf.localmacros", um MACROs zu aktivieren und Editieren von "/etc/exim4/exim4.conf.template" (bei Installation ohne gesplittete Konfigurationsdateien)

    • Erzeugen neuer oder Editieren vorhandener Dateien in den Unterverzeichnissen von "/etc/exim4/exim4.conf.d" (bei Installation mit gesplitteten Konfigurationsdateien)

  • Führen Sie "systemctl reload exim4" aus.

[Achtung] Achtung

Das Starten von exim4 dauert ziemlich lange, wenn die Frage "DNS-Anfragen minimieren (Automatische Einwahl, Dial-on-Demand)?" mit "Nein" (dem Standardwert) beantwortet wurde und das System während dem Rechnerstart nicht mit dem Internet verbunden ist.

Lesen Sie bitte die offizielle Anleitung unter "/usr/share/doc/exim4-base/README.Debian.gz" und update-exim4.conf(8).

[Warnung] Warnung

Aus praktischen Gründen sollten Sie SMTP mit STARTTLS auf Port 587 verwenden oder SMTPS SSL (SMTPS) auf Port 465, aber nicht reines SMTP auf Port 25.

Für das Verschicken von Mails über das Internet via Smarthost sollten Sie zunächst die Postfix-Dokumentation und einschlägige dazugehörige Handbuchseiten lesen.


Sie (re-)konfigurieren die postfix- und sasl2-bin-Pakete wie folgt:

$ sudo systemctl stop postfix
$ sudo dpkg-reconfigure postfix

Wählen Sie "Internet mit Smarthost".

Setzen Sie "SMTP-Relay-Server (leere Eingabe: keiner)" auf "[smtp.rechnername.dom]:587" und konfigurieren Sie ihn mit folgenden Befehlen:

$ sudo postconf -e 'smtp_sender_dependent_authentication = yes'
$ sudo postconf -e 'smtp_sasl_auth_enable = yes'
$ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
$ sudo postconf -e 'smtp_sasl_type = cyrus'
$ sudo vim /etc/postfix/sasl_passwd

Erzeugen Sie Passworteinträge für den Smarthost:

$ cat /etc/postfix/sasl_passwd
[smtp.hostname.dom]:587     username:password
$ sudo postmap hush:/etc/postfix/sasl_passwd

Starten Sie postfix wie folgt:

$ sudo systemctl start postfix

Hierbei stellt die Verwendung von "[" und "]" im dpkg-reconfigure-Dialog und in "/etc/postfix/sasl_passwd" sicher, dass keine MX-Einträge abgefragt werden, sondern direkt der angegebene Rechnername genutzt wird. Lesen Sie dazu "Enabling SASL authentication in the Postfix SMTP client" in "/usr/share/doc/postfix/html/SASL_README.html".

Es gibt mehrere Dateien zur Konfiguration der Mail-Adresse für Mail Transfer Agents, Mail Delivery Agents und Mail User Agents.


Der mailname in der Datei "/etc/mailname" ist normalerweise ein voll-qualifizierter Domain-Name (FQDN), der sich auf eine der IP-Adressen des Rechners auflösen lässt. Bei Privatkundenrechnern, die keinen solchen FQDN-Namen mit einer aufzulösenden IP-Adresse haben, setzen Sie diesen mailname auf den Wert von "hostname -f". (Dies ist eine sichere Wahl und funktioniert sowohl für exim4-* wie auch für postfix.)

[Tipp] Tipp

Der Inhalt von "/etc/mailname" wird von vielen nicht-MTA-Programmen für deren Standardverhalten genutzt. Für mutt setzen Sie die "hostname"- und "from"-Variablen in der Datei ~/muttrc, um den mailname-Wert zu überschreiben. Für Programme im devscripts-Paket, wie bts(1) und dch(1), exportieren Sie die Umgebungsvariablen "$DEBFULLNAME" und "$DEBEMAIL", um ihn zu überschreiben.

[Tipp] Tipp

Das Paket popularity-contest sendet normalerweise Mails vom root-Konto über den FQDN. Sie müssen MAILFROM in /etc/popularity-contest.conf setzen, wie in der Datei /usr/share/popularity-contest/default.conf beschrieben. Andernfalls wird Ihre Mail vom Smarthost-SMTP-Server abgelehnt werden. Obwohl lästig, ist dieser Ansatz sicherer als das Neuschreiben der Ursprungsadresse für alle Mails von root über den MTA und sollte für andere Daemons und cron-Skripte ebenfalls genutzt werden.

Wenn Sie den mailname auf den Wert von "hostname -f" setzen, kann die Änderung der Mail-Ursprungsadresse via MTA wie folgt realisiert werden:

  • für exim4(8) über die Datei "/etc/email-addresses", wie in exim4-config_files(5) beschrieben;

  • für postfix(1) über die Datei "/etc/postfix/generic", wie in generic(5) beschrieben.

Für postfix sind die folgenden zusätzlichen Schritte nötig:

# postmap hash:/etc/postfix/generic
# postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
# postfix reload

Sie können die Mailadressen-Konfiguration wie folgt testen:

  • exim(8) mit den Optionen -brw, -bf, -bF, -bV, …;

  • postmap(1) mit der Option -q.

[Tipp] Tipp

Exim wird zusammen mit mehreren Hilfsprogrammen wie exiqgrep(8) und exipick(8) ausgeliefert. Informationen über verfügbare Befehle finden Sie mittels "dpkg -L exim4-base|grep man8/".

Die Secure SHell (SSH) ist der sichere Weg für Verbindungen über das Internet. Eine freie Version von SSH namens OpenSSH ist in Debian über die openssh-client- und openssh-server-Pakete verfügbar.

Für den Benutzer fungiert ssh(1) als clevere und sichere Alternative zu telnet(1). Anders als der telnet-Befehl scheitert ssh nicht am telnet-Maskierungszeichen (escape character; Standardeinstellung STRG-]).


Obwohl shellinabox kein SSH-Programm ist, ist es hier als interessante Alternative für fernen Terminal-Zugriff aufgelistet.

Lesen Sie auch Abschnitt 7.8, „X-Server-Verbindungen“ für Infos zur Verbindung mit fernen X-Client-Programmen.

[Achtung] Achtung

Lesen Sie Abschnitt 4.6.3, „Zusätzliche Sicherheitsmaßnahmen für das Internet“, falls Ihr SSH über das Internet erreichbar ist.

[Tipp] Tipp

Bitte nutzen Sie das Programm screen(1), um dem Remote-Shell-Prozess die Chance zu geben, Verbindungsunterbrechungen zu überstehen (Weiteres dazu finden Sie in Abschnitt 9.1.2, „Das Programm screen“).

Der OpenSSH-Daemon unterstützt lediglich das SSH-Protokoll 2.

Bitte lesen Sie "/usr/share/doc/openssh-client/README.Debian.gz", ssh(1), sshd(8), ssh-agent(1), ssh-keygen(1), ssh-add(1) und ssh-agent(1).

[Warnung] Warnung

Wenn Sie den OpenSSH-Server laufen lassen möchten, darf "/etc/ssh/sshd_not_to_be_run" nicht vorhanden sein.

Aktivieren Sie NICHT rhost-basierte Authentifizierung (HostbasedAuthentication in /etc/ssh/sshd_config).


Mit folgenden Befehlen starten Sie eine ssh(1)-Verbindung von einem Client:


Sie müssen den Prozess, der das "shutdown -h now" ausführt (lesen Sie Abschnitt 1.1.8, „Wie Sie das System herunterfahren“), davor schützen, durch SSH beendet zu werden. Verwenden Sie dazu wie folgt den at(1)-Befehl (weiteres zu at in Abschnitt 9.4.13, „Einmalige Aufgaben planen“):

# echo "shutdown -h now" | at now

"shutdown -h now" in einer screen(1)-Sitzung auszuführen (weitere Infos in Abschnitt 9.1.2, „Das Programm screen“) ist ein anderer möglicher Weg.

Im alten Unix-ähnlichen System war der BSD Line Printer Daemon (lpd) Standard und das Standard-Druckausgabe-Format von freier Software auf Unix-artigen Systemen war PostScript (PS). Ein Filtersystem wurde zusammen mit Ghostscript verwendet, um das Drucken auf nicht-PostScript-Druckern zu ermöglichen. Siehe Abschnitt 11.4.1, „Ghostscript“.

Im modernen Debian-System ist das Common UNIX Printing System (CUPS) der De-Facto-Standard und das Standard-Druckausgabe-Format von moderner freier Software ist das Portable Document Format (PDF).

CUPS nutzt das Internet Printing Protocol (IPP). IPP wird jetzt auch von anderen Betriebssystemen wie Windows XP und Mac OS X unterstützt und ist der plattform-übergreifende De-Facto-Standard für das Drucken von fern; es unterstützt bi-direktionale Kommunikation.

Dank der Dateiformat-abhängigen automatischen Konvertierungsfunktion des CUPS-Systems sollte die einfache Übergabe jeglicher Daten an den lpr-Befehl zur gewünschten Druckausgabe führen. (In CUPS kann lpr aktiviert werden, indem das cups-bsd-Paket installiert wird.)

Das Debian-System enthält einige erwähnenswerte Pakete für Print-Server und deren Hilfsprogramme:


[Tipp] Tipp

Sie können das CUPS-System konfigurieren, indem Sie in Ihrem Browser "http://localhost:631/" eingeben.

Hier einige weitere Netzwerkanwendungs-Server:


Das Common Internet File System - Protokoll (CIFS) ist das gleiche Protokoll wie Server Message Block (SMB) und wird von Microsoft Windows ausgiebig genutzt.

[Tipp] Tipp

In Abschnitt 4.5.2, „Modernes zentralisiertes Systemmanagement“ finden Sie Informationen zur Integration von Server-Systemen.

[Tipp] Tipp

Die Rechnernamenauflösung wird normalerweise über den DNS-Server realisiert. Für IP-Adressen, die dynamisch über einen DHCP-Server zugewiesen werden, kann Dynamic DNS eingerichtet werden; dazu können bind9 und isc-dhcp-server genutzt werden, wie auf der DDNS-Seite im Debian-Wiki beschrieben.

[Tipp] Tipp

Die Verwendung eines Proxy-Servers wie squid ist viel effizienter, um Bandbreite zu sparen, als ein lokaler Archiv-Spiegel mit dem vollständigen Inhalt des Debian-Archivs.

Hier einige weitere Netzwerkanwendungs-Clients:


Das telnet-Programm ermöglicht die manuelle Verbindung zu den System-Daemons und ihren Diagnosefunktionen.

Um einen reinen POP3-Dienst zu testen, probieren Sie folgendes:

$ telnet mail.ispname.net pop3

Um einen POP3-Dienst mit aktiviertem TLS/SSL (wie sie bei manchen Providern vorkommen) zu testen, benötigen Sie einen telnet-Client mit aktiviertem TLS/SSL, z.B. aus dem telnet-ssl- oder openssl-Paket:

$ telnet -z ssl pop.gmail.com 995
$ openssl s_client -connect pop.gmail.com:995

Die folgenden RFCs enthalten das zur Diagnose erforderliche Wissen für jeden System-Daemon.


Die Verwendung der Ports ist in "/etc/services" beschrieben.