Kapitel 6. Netzwerkapplikationen

# Kapitel 6. Netzwerkapplikationen

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

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

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

## 6.1. Webbrowser

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

Tabelle 6.1. Liste der Webbrowser

Paket | Popcon | Größe | Art | Beschreibung des Webbrowsers
--- | --- | --- | --- | ---
`chromium` | V:29, I:101 | 302260 | X | Chromium (quelloffener Browser von Google)
`firefox` | V:15, I:21 | 294905 | " | Firefox, (quelloffener Browser von Mozilla, nur in Debian Unstable verfügbar)
`firefox-esr` | V:190, I:425 | 265874 | " | Firefox ESR, (Firefox-Variante mit erweitertem Support-Umfang, ESR)
`epiphany-browser` | V:2, I:11 | 6666 | " | GNOME, HIG-konform, Epiphany
`konqueror` | V:25, I:112 | 7982 | " | KDE, Konqueror
`dillo` | V:0.5, I:4.1 | 1585 | " | Dillo (ressourcenschonender Browser, FLTK-basiert)
`w3m` | V:11, I:137 | 2853 | Text | w3m
`lynx` | V:28, I:449 | 2031 | " | Lynx
`elinks` | V:3, I:16 | 1789 | " | ELinks
`links` | V:2, I:21 | 2321 | " | Links (Nur-Text)
`links2` | V:1, I:10 | 5466 | grafisch | Links (Konsolen-Grafik ohne X)

### 6.1.1. Fälschen der User-Agent-Angabe

Um auf einige übermäßig beschränkte Webseiten zugreifen zu können, müssen Sie unter Umständen die User-Agent-Angabe fälschen, die Ihr Webbrowser zurück gibt. Näheres unter:

- MDN Web Docs: userAgent (englisch)
- Chrome-Entwickler: die User-Agent-Angabe überschreiben (englisch)
- Wie Sie Ihre User-Agent-Angabe ändern (englisch)
- Wie Sie die User-Agent-Angabe in Chrome, Firefox, Safari und weiteren ändern (englisch)
- Wie Sie die User-Agent-Angabe Ihres Browsers ändern, ohne irgendwelche Erweiterungen installieren zu müssen (englisch)
- Wie Sie die User-Agent-Angabe in Gnome Web (epiphany) ändern (englisch)

### 6.1.2. Browser-Erweiterung

Alle modernen grafischen Webbrowser unterstützen quellcode-basierte Browser-Erweiterungen; diese sollen als Web extensions standardisiert werden.

## 6.2. Das Mail-System

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

### 6.2.1. Grundlagen des E-Mail-Systems

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.

Tabelle 6.2. Liste der Mail User Agents (MUA)

Paket | Popcon | Größe | Art
--- | --- | --- | ---
`evolution` | V:26, I:228 | 488 | X GUI program (GNOME, groupware suite)
`thunderbird` | V:42, I:105 | 274189 | Programm mit grafischer X-GUI-Oberfläche (GTK, Mozilla Thunderbird)
`kmail` | V:43, I:103 | 25270 | Programm mit grafischer X-GUI-Oberfläche (KDE)
`mutt` | V:11, I:89 | 7332 | Programm für textbasiertes Terminal, zu benutzen u.a. mit `vim`
`mew` | V:0.02, I:0.15 | 2319 | Programm für textbasiertes Terminal, zu benutzen mit `(x)emacs`

### 6.2.2. Einschränkungen moderner E-Mail-Dienste

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:

- Kommunikation über den SMTP-Port (25) von Rechnern an einem Endverbraucher-Anschluß wird geblockt.

- Kommunikation über den SMTP-Port (25) zu Rechnern an einem Endverbraucher-Anschluß wird geblockt.

- Ausgehende Nachrichten von Rechnern an einem Endverbraucher-Anschluß ins Internet können nur über den Message Submission Port (587) versandt werden.

- Zur E-Mail-Filterung werden großflächig Anti-Spam-Techniken wie DomainKeys Identified Mail (DKIM), Sender Policy Framework (SPF) und Domain-based Message Authentication, Reporting and Conformance (DMARC) eingesetzt.

- Unter Umständen können Sie zum Versand von Mails über einen Smarthost den DomainKeys Identified Mail-Dienst verwenden.

- Der Smarthost-Dienst überschreibt unter Umständen die Absenderadresse in den Nachrichten-Kopfzeilen mit der Ihres Mail-Accounts, um zu verhindern, dass die E-Mail-Adresse gefälscht wird.

### 6.2.3. Historische Erwartungen an E-Mail-Dienste

Einige Programme im Debian-System erwarten, dass auf den `/usr/sbin/sendmail`-Befehl zugegriffen werden kann, um in der Standardeinstellung (oder auch in benutzerspezifisch angepassten Konfigurationen) E-Mails verschicken zu können. Der Grund hierfür ist, dass der Mail-Dienst auf UNIX-Systemen historisch gesehen wie folgt funktioniert:

- Eine E-Mail wird als Textdatei erstellt.

- Die E-Mail wird an den `/usr/sbin/sendmail`-Befehl übergeben.

- Wenn die Zieladresse auf dem gleichen Rechner liegt, stellt `/usr/sbin/sendmail` die Mail per lokaler Auslieferung zu, indem sie an die Datei `/var/mail/$username` angehängt wird.

  - Befehle, die diese Funktionalität nutzen: `apt-listchanges`, `cron`, `at`, ...

- Liegt die Zieladresse auf einem fernen Rechner, sendet `/usr/sbin/sendmail` die Nachricht per SMTP an den (per DNS-MX-Eintrag ermittelten) Zielrechner.

  - Befehle, die diese Funktionalität nutzen: `popcon`, `reportbug`, `bts`, ...

### 6.2.4. Mail Transfer Agent (MTA)

Mobile Arbeitsplatzrechner unter Debian können seit Debian 12 Bookworm so konfiguriert werden, dass ein voll ausgestatteter grafischer E-Mail-Client ohne installierten Mail Transfer Agent (MTA) trotzdem korrekt funktioniert.

Traditionell hat Debian immer ein MTA-Programm installiert, um Mail-Programme zu unterstützen, die den `/usr/sbin/sendmail` erwarten. Solche MTA müssen auf mobilen Arbeitsplatzrechnern mit Abschnitt 6.2.2, „Einschränkungen moderner E-Mail-Dienste“ und Abschnitt 6.2.3, „Historische Erwartungen an E-Mail-Dienste“ zurechtkommen.

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

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.

Tabelle 6.3. Liste von Paketen für grundlegende Mail Transfer Agents

Paket | Popcon | Größe | Beschreibung
--- | --- | --- | ---
`exim4-daemon-light` | V:211, I:218 | 1637 | Exim4 Mail Transfer Agent (MTA: Debian-Standard)
`exim4-daemon-heavy` | V:5.1, I:5.2 | 1802 | Exim4 Mail Transfer Agent (MTA: flexible Alternative)
`exim4-base` | V:216, I:224 | 1634 | Exim4-Dokumentation (Text-Variante) und allgemeine Dateien
`exim4-doc-html` | I:0.96 | 3798 | Exim4-Dokumentation (html-Variante)
`exim4-doc-info` | I:0.54 | 648 | Exim4-Dokumentation (info-Variante)
`postfix` | V:107, I:112 | 4224 | Postfix Mail Transfer Agent (MTA: sichere Alternative)
`postfix-doc` | I:4.6 | 5022 | Postfix-Dokumentation (html- + Text-Variante)
`sasl2-bin` | V:5, I:10 | 381 | Cyrus SASL API Implementation (Ergänzung zu Postfix für SMTP AUTH)
`cyrus-sasl2-doc` | I:0.68 | 2140 | Cyrus SASL - Dokumentation
`msmtp` | V:8, I:14 | 811 | Ressourcen-schonender MTA
`msmtp-mta` | V:6.5, I:8.5 | 136 | Ressourcen-schonender MTA (Sendmail-Kompatibilitätserweiterung für `msmtp`)
`nullmailer` | V:7.9, I:8.4 | 483 | eingeschränkter MTA, kein lokaler Mail-Transfer
`ssmtp` | V:4.2, I:6.3 | 134 | eingeschränkter MTA, kein lokaler Mail-Transfer
`sendmail-bin` | V:11, I:11 | 1954 | vollständig ausgestatteter MTA (nur, wenn Sie sich bereits damit auskennen)
`git-email` | V:0.4, I:9.8 | 1204 | git-send-email(1) Programm zum Versenden von Patch-Serien per E-Mail

#### 6.2.4.1. Die Konfiguration von exim4

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
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
Aus praktischen Gründen sollten Sie SMTP mit STARTTLS auf Port 587 verwenden oder SMTPS (SMTP over SSL) auf Port 465, stattreinem SMTP auf Port 25.

#### 6.2.4.2. Die Konfiguration von Postfix mit SASL

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.

Tabelle 6.4. Liste von wichtigen Postfix-Handbuchseiten

Befehl | Funktion
--- | ---
postfix(1) | Postfix-Steuerprogramm
postconf(1) | Postfix-Konfigurationswerkzeug
postconf(5) | Postfix-Konfigurationsparameter
postmap(1) | Wartung von Postfix-Lookup-Tabellen
postalias(1) | Wartung der Postfix-Alias-Datenbank

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`".

#### 6.2.4.3. Die Mail-Adress-Konfiguration

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

Tabelle 6.5. Liste von Konfigurationsdateien für Mail-Adressen

Datei | Funktion | Applikation
--- | --- | ---
`/etc/mailname` | Standard-Rechnername für (ausgehende) Mails | Debian-spezifisch, mailname(5)
`/etc/email-addresses` | Änderung des Rechnernamens für ausgehende Mails | exim(8)-spezifisch, exim4-config_files(5)
`/etc/postfix/generic` | Änderung des Rechnernamens für ausgehende Mails | postfix(1)-spezifisch, aktiviert nach Ausführung des postmap(1)-Befehls
`/etc/aliases` | Kontonamen-Alias für eingehende Mails | Grundlegend, aktiviert nach Ausführung des newaliases(1)-Befehls

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

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
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/`".

#### 6.2.4.4. Grundlegende MTA-Operationen

Es gibt mehrere grundlegende MTA-Operationen. Einige könnten über die sendmail(1)-Kompatibilitätsschnittstelle ausgeführt werden.

Tabelle 6.6. Liste grundlegender MTA-Operationen

exim-Befehl | postfix-Befehl | Beschreibung
--- | --- | ---
`sendmail` | `sendmail` | Mails von der Standardeingabe lesen und für die Zustellung vorbereiten (`-bm`)
`mailq` | `mailq` | Die Mail-Warteschlange auflisten mit Status und Queue-ID (`-bp`)
`newaliases` | `newaliases` | Initialisieren der Alias-Datenbank (`-I`)
`exim4 -q` | `postqueue -f` | Wartende Mails zustellen (`-q`)
`exim4 -qf` | `postsuper -r ALL deferred; postqueue -f` | Alle Mails zustellen
`exim4 -qff` | `postsuper -r ALL; postqueue -f` | Zurückgehaltene Mails ebenfalls zustellen
`exim4 -Mg queue_id` | `postsuper -h queue_id` | Eine durch ihre Queue-ID spezifizierte Nachricht zurückhalten
`exim4 -Mrm queue_id` | `postsuper -d queue_id` | Eine durch ihre Queue-ID spezifizierte Nachricht löschen
Nicht verfügbar | `postsuper -d ALL` | Alle Nachrichten löschen

| Tipp
Es könnte eine gute Idee sein, alle Mails durch ein Skript in "`/etc/ppp/ip-up.d/*`" zustellen zu lassen.

## 6.3. Der Server für Fernzugriff (SSH) und Hilfsprogramme

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-]).

Tabelle 6.7. Liste von Servern für Fernzugriff und Hilfsprogrammen

Paket | Popcon | Größe | Werkzeug | Beschreibung
--- | --- | --- | --- | ---
`openssh-client` | V:915, I:996 | 4210 | ssh(1) | Secure-Shell-Client
`openssh-server` | V:768, I:819 | 3359 | sshd(8) | Secure-Shell-Server
`ssh-askpass` | I:16 | 103 | ssh-askpass(1) | Fragt den Benutzer nach einer Passphrase für ssh-add (reines X)
`ssh-askpass-gnome` | V:0.4, I:3.0 | 207 | ssh-askpass-gnome(1) | Fragt den Benutzer nach einer Passphrase für ssh-add (GNOME)
`ssh-askpass-fullscreen` | V:0.11, I:0.45 | 41 | ssh-askpass-fullscreen(1) | Fragt den Benutzer nach einer Passphrase für ssh-add (GNOME) - etwas hübscher
`shellinabox` | V:0.7, I:1.1 | 528 | shellinaboxd(1) | Webserver für den VT100-Terminal-Emulator mit Browser-Zugriff

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

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

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

| 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“).

### 6.3.1. Grundlagen von SSH

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-keygen(1), ssh-add(1) und ssh-agent(1).

| 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`).

Tabelle 6.8. Liste von SSH-Konfigurationsdateien

Konfigurationsdatei | Beschreibung
--- | ---
`/etc/ssh/ssh_config` | SSH-Client-Standardeinstellungen, lesen Sie ssh_config(5)
`/etc/ssh/sshd_config` | SSH-Server-Standardeinstellungen, lesen Sie sshd_config(5)
`~/.ssh/authorized_keys` | öffentliche Standard-SSH-Schlüssel, die Clients verwenden, um sich mit diesem Konto auf diesem SSH-Server zu verbinden
`~/.ssh/id_rsa` | geheimer SSH-2 RSA-Schlüssel des Benutzers
`~/.ssh/id_key-type-name` | geheimer SSH-2 key-type-name-Schlüssel wie z.B. `ecdsa`, `ed25519`, ... des Benutzers

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

Tabelle 6.9. Liste von Beispielen zum Start einer SSH-Verbindung auf einem Client

Befehl | Beschreibung
--- | ---
`ssh benutzername@rechnername.domaene.ext` | im Standardmodus verbinden
`ssh -v benutzername@rechnername.domaene.ext` | im Standardmodus verbinden mit aktivierten Debugging-Meldungen (zur Fehlersuche)
`ssh -o PreferredAuthentications=password username@hostname.domain.ext` | Verwendung des Passworts erzwingen mit SSH Version 2
`ssh -t username@hostname.domain.ext passwd` | führen Sie `passwd` aus, um das Passwort auf einem fernen Rechner zu ändern

### 6.3.2. Benutzername auf dem fernen Rechner

Wenn Sie auf dem lokalen und dem fernen Rechner den gleichen Benutzernamen verwenden, können Sie "`username@`" weglassen.

Sogar wenn Sie unterschiedliche Benutzernamen nutzen, können Sie sie weglassen, sofern Sie "`~/.ssh/config`" verwenden. Für den Debian Salsa-Service mit dem Kontoname "`foo-guest`" muss "`~/.ssh/config`" z.B. folgendes enthalten:

    Host salsa.debian.org people.debian.org
    User foo-guest

### 6.3.3. Verbindungen ohne Passwörter für die ferne Seite

Man kann es vermeiden, sich Passwörter für ferne Systeme merken zu müssen, indem man "`PubkeyAuthentication`" (SSH-2-Protokoll) nutzt.

Setzen Sie dazu auf dem fernen System die entsprechenden Einträge: "`PubkeyAuthentication yes`" in "`/etc/ssh/sshd_config`".

Erzeugen Sie die Authentifizierungs-Schlüssel lokal und installieren Sie sie wie folgt auf dem fernen System:

    $ ssh-keygen -t rsa
    $ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"

Sie können weitere Optionen zu den Einträgen in "`~/.ssh/authorized_keys`" hinzufügen, um die erlaubten Rechner einzuschränken und spezifische Befehle ausführen. Lesen Sie dazu sshd(8) - "AUTHORIZED_KEYS FILE FORMAT".

### 6.3.4. Der Umgang mit fremden SSH-Clients

Es sind einige freie SSH-Clients für andere Plattformen verfügbar:

Tabelle 6.10. Liste freier SSH-Clients für andere Plattformen

Umgebung | freies SSH-Programm
--- | ---
Windows | puTTY (PuTTY: ein freier SSH- und Telnet-Client) (GPL)
Windows (Cygwin) | SSH in cygwin (Cygwin: das Linux-Feeling unter Windows bekommen) (GPL)
Mac OS X | OpenSSH; verwenden Sie `ssh` in der Terminal-Applikation (GPL)

### 6.3.5. Einrichten von ssh-agent

Es ist sicherer, Ihren geheimen SSH-Authentifizierungs-Schlüssel mit einer Passphrase zu schützen. Falls Sie noch keine Passphrase vergeben haben, verwenden Sie dazu "`ssh-keygen -p`".

Legen Sie Ihren öffentlichen SSH-Schlüssel (z.B. "`~/.ssh/id_rsa.pub`") wie folgt in "`~/.ssh/authorized_keys`" auf dem fernen Server ab, und zwar über eine passwort-basierte Verbindung zum Server, wie oben beschrieben.

    $ ssh-agent bash
    $ ssh-add ~/.ssh/id_rsa
    Enter passphrase for /home/username/.ssh/id_rsa:
    Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

Es ist kein Passwort für das ferne System zur Ausführung des nächsten Befehls mehr nötig:

    $ scp foo username@remote.host:foo

Drücken Sie Strg-D, um die ssh-agent-Sitzung zu beenden.

Für den X-Server führt das normale Debian-Start-Skript `ssh-agent` als Eltern-Prozess aus. Sie müssen `ssh-add` daher nur einmal ausführen. Für weitere Details lesen Sie ssh-agent(1) und ssh-add(1).

### 6.3.6. Eine Mail versenden auf einem fernen Rechner

Wenn Sie ein SSH-Shell-Konto auf einem Server mit vernünftigen DNS-Einstellungen haben, können Sie eine Mail, die Sie auf Ihrem Arbeitsplatzrechner vorbereitet haben, von dem fernen Rechner aus als E-Mail verschicken:

    $ ssh username@example.org /usr/sbin/sendmail -bm -ti -f "username@example.org" < mail_data.txt

### 6.3.7. Portweiterleitung für SMTP-/POP3-Tunnelung

Um für eine Verbindung von Port 4025 auf `localhost` zu Port 25 auf `remote-server` (einem fernen Server) oder für eine Verbindung von Port 4110 auf `localhost` zu Port 110 auf `remote-server` via `ssh` eine Weiterleitung aufzubauen, führen Sie auf dem lokalen Rechner (localhost) folgendes aus:

    # ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server

Dies ist ein sicherer Weg für Verbindungen zu SMTP-/POP3-Servern über das Internet. Setzen Sie in "`/etc/ssh/sshd_config`" auf dem fernen Server den Wert für "`AllowTcpForwarding`" auf "`yes`".

### 6.3.8. Wie Sie das ferne System über SSH herunterfahren

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.

### 6.3.9. Fehlersuche bei SSH

Falls Sie Probleme haben, kontrollieren Sie die Zugriffsrechte der Konfigurationsdateien und starten Sie `ssh` mit der Option "`-v`".

Nutzen Sie die Option "`-p`", wenn Sie root sind und Probleme mit einer Firewall haben; dadurch wird die Verwendung der Ports 1 - 1023 auf dem Server vermieden.

Wenn `ssh`-Verbindungen zu einem fernen Rechner plötzlich nicht mehr funktionieren, könnte dies auf Spielereien des Systemadministrators zurückzuführen sein, höchstwahrscheinlich Änderungen am "`host_key`" im Rahmen von Systemwartungsarbeiten. Nachdem Sie sich versichert haben, dass dies der Fall ist und niemand versucht, den fernen Rechner über einen cleveren Hack zu imitieren, können Sie die Verbindung wiedererlangen, indem Sie den "`host_key`"-Eintrag in der "`~/.ssh/known_hosts`"-Datei auf dem lokalen Rechner entfernen.

## 6.4. Der Print-Server und Hilfsprogramme

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

The CUPS uses Internet Printing Protocol (IPP). The IPP is the cross-platform de facto standard for remote printing with bi-directional communication capability.

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:

Tabelle 6.11. Liste von Print-Servern und Hilfsprogrammen

Paket | Popcon | Größe | Port | Beschreibung
--- | --- | --- | --- | ---
`lpr` | V:2.1, I:2.5 | 378 | printer (515) | BSD lpr/lpd (Line Printer Daemon)
`cups` | V:98, I:446 | 1088 | IPP (631) | Internet-Printing CUPS-Server
`cups-client` | V:118, I:458 | 429 | " | System-V-Druckerbefehle für CUPS: lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), …
`cups-bsd` | V:34, I:186 | 131 | " | BSD-Druckbefehle für CUPS: lpr(1), lpq(1), lprm(1), lpc(8)
`printer-driver-gutenprint` | V:11, I:56 | 1117 | Nicht anwendbar | Druckertreiber für CUPS

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

## 6.5. Weitere Netzwerkanwendungs-Server

Hier einige weitere Netzwerkanwendungs-Server:

Tabelle 6.12. Liste von weiteren Netzwerkanwendungs-Servern

Paket | Popcon | Größe | Protokoll | Beschreibung
--- | --- | --- | --- | ---
`telnetd` | V:0.3, I:1.6 | 55 | TELNET | TELNET-Server
`nfs-kernel-server` | V:47, I:55 | 830 | NFS | Datei-Netzwerkfreigabe unter Unix
`samba` | V:109, I:123 | 5053 | SMB | Datei- und Drucker-Netzwerkfreigabe unter Windows
`netatalk` | V:0.74, I:0.97 | 933 | ATP | Datei- und Drucker-Netzwerkfreigabe unter Apple/Mac (AppleTalk)
`proftpd-basic` | V:3.9, I:9.2 | 452 | FTP | Grundlegender Datei-Download
`apache2` | V:178, I:218 | 586 | HTTP | Grundlegender Web-Server
`squid` | V:9.3, I:9.9 | 9358 | " | Grundlegender Web-Proxy-Server
`bind9` | V:35, I:37 | 885 | DNS | IP-Adresse für andere Rechner
`kea` | I:0.57 | 244 | DHCP | IP-Adresse des Clients selbst

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

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

| 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 `kea` genutzt werden, wie auf der DDNS-Seite im Debian-Wiki beschrieben.

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

## 6.6. Weitere Netzwerkanwendungs-Clients

Hier einige weitere Netzwerkanwendungs-Clients:

Tabelle 6.13. Liste von Netzwerkanwendungs-Clients

Paket | Popcon | Größe | Protokoll | Beschreibung
--- | --- | --- | --- | ---
`netcat-traditional` | V:50, I:904 | 139 | TCP/IP | TCP/IP-Alleskönner
`netcat-openbsd` | V:22, I:120 | 105 | TCP/IP | TCP/IP swiss army knife with support for IPv6, proxies, and Unix sockets
`openssl` | V:847, I:996 | 2532 | SSL | Secure-Socket-Layer-(SSL-)Binärdatei und dazugehörige Kryptografie-Werkzeuge
`stunnel4` | V:6.2, I:9.3 | 24 | " | universeller SSL-Wrapper
`telnet` | V:11, I:215 | 55 | TELNET | TELNET-Client
`nfs-common` | V:150, I:197 | 1139 | NFS | Datei-Netzwerkfreigabe unter Unix
`smbclient` | V:26, I:206 | 2088 | SMB | Datei- und Druckerfreigabe-Client für MS Windows
`cifs-utils` | V:33, I:119 | 351 | " | Befehle zum Einbinden und Trennen von fern abgelegten MS-Windows-Dateien
`wget` | V:185, I:982 | 3784 | HTTP und FTP | Programm zum Herunterladen von Dateien aus dem Web
`curl` | V:244, I:716 | 512 | " | "
`transmission-gtk` | V:11, I:156 | 6259 | BitTorrent | BitTorrent client (GTK)
`transmission-qt` | V:0.7, I:2.5 | 6213 | " | BitTorrent client (Qt)
`ktorrent` | V:1.4, I:5.1 | 5031 | " | BitTorrent client (Qt)
`qbittorrent` | V:8, I:22 | 15261 | " | BitTorrent client (Qt)
`bind9-host` | V:128, I:940 | 137 | DNS | host(1) von bind9, "`Priorität: standard`"
`dnsutils` | V:5, I:161 | 23 | " | dig(1) von bind, "`Priorität: standard`"
`ldap-utils` | V:10, I:58 | 782 | LDAP | Daten von einem LDAP-Server beziehen

## 6.7. Diagnose von System-Daemons

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.

Tabelle 6.14. Liste populärer RFCs

RFC | Beschreibung
--- | ---
rfc1939 und rfc2449 | POP3-Dienst
rfc3501 | IMAP4-Dienst
rfc2821 (rfc821) | SMTP-Dienst
rfc2822 (rfc822) | Mail-Datei-Format
rfc2045 | Multipurpose Internet Mail Extensions (MIME)
rfc819 | DNS-Dienst
rfc2616 | HTTP-Dienst
rfc2396 | URI-Definition

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

Kapitel 5. Netzwerkkonfiguration |  | Kapitel 7. GUI-System