This is guix.de.info, produced by makeinfo version 6.7 from
guix.de.texi.

Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021
Ludovic Courtès
Copyright © 2013, 2014, 2016 Andreas Enge
Copyright © 2013 Nikita Karetnikov
Copyright © 2014, 2015, 2016 Alex Kost
Copyright © 2015, 2016 Mathieu Lirzin
Copyright © 2014 Pierre-Antoine Rault
Copyright © 2015 Taylan Ulrich Bayırlı/Kammer
Copyright © 2015, 2016, 2017, 2019, 2020, 2021 Leo Famulari
Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus
Copyright © 2016 Ben Woodcroft
Copyright © 2016, 2017, 2018, 2021 Chris Marusich
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner
Copyright © 2016 John Darrington
Copyright © 2016, 2017 Nikita Gillmann
Copyright © 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen
Copyright © 2016, 2017, 2018, 2019, 2020 Julien Lepiller
Copyright © 2016 Alex ter Weele
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines
Copyright © 2017, 2018, 2019 Clément Lassieur
Copyright © 2017, 2018, 2020, 2021 Mathieu Othacehe
Copyright © 2017 Federico Beffa
Copyright © 2017, 2018 Carlo Zancanaro
Copyright © 2017 Thomas Danckaert
Copyright © 2017 humanitiesNerd
Copyright © 2017, 2021 Christopher Lemmer Webber
Copyright © 2017, 2018, 2019, 2020 Marius Bakke
Copyright © 2017, 2019, 2020 Hartmut Goebel
Copyright © 2017, 2019, 2020, 2021 Maxim Cournoyer
Copyright © 2017, 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice
Copyright © 2017 George Clemmer
Copyright © 2017 Andy Wingo
Copyright © 2017, 2018, 2019, 2020 Arun Isaac
Copyright © 2017 nee
Copyright © 2018 Rutger Helling
Copyright © 2018, 2021 Oleg Pykhalov
Copyright © 2018 Mike Gerwitz
Copyright © 2018 Pierre-Antoine Rouby
Copyright © 2018, 2019 Gábor Boskovits
Copyright © 2018, 2019, 2020 Florian Pelz
Copyright © 2018 Laura Lazzati
Copyright © 2018 Alex Vong
Copyright © 2019 Josh Holland
Copyright © 2019, 2020 Diego Nicola Barbato
Copyright © 2019 Ivan Petkov
Copyright © 2019 Jakob L. Kreuze
Copyright © 2019 Kyle Andrews
Copyright © 2019 Alex Griffin
Copyright © 2019, 2020 Guillaume Le Vaillant
Copyright © 2020 Leo Prikler
Copyright © 2019, 2020 Simon Tournier
Copyright © 2020 Wiktor Żelazny
Copyright © 2020 Damien Cassou
Copyright © 2020 Jakub Kądziołka
Copyright © 2020 Jack Hill
Copyright © 2020 Naga Malleswari
Copyright © 2020 Brice Waegeneire
Copyright © 2020 R Veera Kumar
Copyright © 2020 Pierre Langlois
Copyright © 2020 pinoaffe
Copyright © 2020 André Batista
Copyright © 2020, 2021 Alexandru-Sergiu Marton
Copyright © 2020 raingloom
Copyright © 2020 Daniel Brooks
Copyright © 2020 John Soo
Copyright © 2020 Jonathan Brielmaier
Copyright © 2020 Edgar Vincent
Copyright © 2021 Maxime Devos

   Es ist Ihnen gestattet, dieses Dokument zu vervielfältigen,
weiterzugeben und/oder zu verändern, unter den Bedingungen der GNU Free
Documentation License, entweder gemäß Version 1.3 der Lizenz oder (nach
Ihrer Option) einer späteren Version, die von der Free Software
Foundation veröffentlicht wurde, ohne unveränderliche Abschnitte, ohne
vorderen Umschlagtext und ohne hinteren Umschlagtext. Eine Kopie der
Lizenz finden Sie im Abschnitt mit dem Titel „GNU Free Documentation
License“.
INFO-DIR-SECTION Systemadministration
START-INFO-DIR-ENTRY
* Guix: (guix.de).           Installierte Software und Systemkonfigurationen
                               verwalten.
* guix package: (guix.de)guix package aufrufen.  Pakete installieren,
                                                   entfernen und
                                                   aktualisieren.
* guix gc: (guix.de)guix gc aufrufen.  Unbenutzten Plattenspeicher wieder
                                         freigeben.
* guix pull: (guix.de)guix pull aufrufen.  Die Liste verfügbarer Pakete
                                             aktualisieren.
* guix system: (guix.de)guix system aufrufen.  Die
                                                 Betriebssystemkonfiguration
                                                 verwalten.
* guix deploy: (guix.de)guix deploy aufrufen.  Betriebssystemkonfigurationen
                                                 entfernter Rechner verwalten.
END-INFO-DIR-ENTRY

INFO-DIR-SECTION Softwareentwicklung
START-INFO-DIR-ENTRY
* guix environment: (guix.de)guix environment aufrufen.  Umgebungen für
                                                           Entwickler
                                                           erstellen
* guix build: (guix.de)guix build aufrufen.  Erstellen von Paketen.
* guix pack: (guix.de)guix pack aufrufen.  Bündel aus Binärdateien
                                             erstellen.
END-INFO-DIR-ENTRY


File: guix.de.info,  Node: Desktop-Dienste,  Next: Tondienste,  Prev: Druckdienste,  Up: Dienste

10.8.8 Desktop-Dienste
----------------------

Das Modul ‘(gnu services desktop)’ stellt Dienste zur Verfügung, die
meistens bei „Desktop“-Einrichtungen für grafische Nutzung praktisch
sind — also auf einer Maschine mit einem grafischem Anzeigeserver,
vielleicht mit einer grafischen Benutzeroberfläche, usw. Im Modul werden
auch Dienste definiert, die bestimmte Arbeitsumgebungen wie GNOME, Xfce
oder MATE bereitstellen.

   Um es einfacher zu machen, definiert das Modul auch eine Variable mit
denjenigen Diensten, die man auf einer Maschine mit einer grafischen
Umgebung und Netzwerkunterstützung erwarten würde:

 -- Scheme-Variable: %desktop-services
     Dies ist eine Liste von Diensten, die ‘%base-services’ ergänzt und
     weitere Dienste hinzufügt oder bestehende anpasst, um für eine
     normale „Desktop“-Nutzung geeignet zu sein.

     Insbesondere wird eine grafische Anmeldeverwaltung hinzugefügt
     (siehe *note ‘gdm-service-type’: X Window.), ebenso Programme zur
     Bildschirmsperre, ein Werkzeug zur Netzwerkverwaltung (siehe *note
     ‘network-manager-service-type’: Netzwerkdienste.) mit Unterstützung
     für Modems (siehe *note ‘modem-manager-service-type’:
     Netzwerkdienste.), Energieverbrauchs- und Farbverwaltungsdienste,
     Anmeldungs- und Sitzungsverwaltung über ‘elogind’, der
     Berechtigungsdienst Polkit, der Ortungsdienst GeoClue, der
     AccountsService-Daemon, mit dem autorisierte Benutzer
     Systempasswörter ändern können, ein NTP-Client (siehe *note
     Netzwerkdienste::) und der Avahi-Daemon. Außerdem wird der Name
     Service Switch konfiguriert, damit er ‘nss-mdns’ benutzt (siehe
     *note mDNS: Name Service Switch.).

   Die ‘%desktop-services’-Variable kann als das ‘services’-Feld einer
‘operating-system’-Deklaration genutzt werden (siehe *note ‘services’:
„operating-system“-Referenz.).

   Daneben können die Prozeduren ‘gnome-desktop-service-type’,
‘xfce-desktop-service’, ‘mate-desktop-service-type’,
‘lxqt-desktop-service-type’ und ‘enlightenment-desktop-service-type’
jeweils GNOME, Xfce, MATE und/oder Enlightenment zu einem System
hinzufügen. „GNOME hinzufügen“ bedeutet, dass Dienste auf Systemebene
wie z.B. Hilfsprogramme zur Anpassung der Hintergrundbeleuchtung und des
Energieverbrauchs zum System hinzugefügt werden und ‘polkit’ und ‘dbus’
entsprechend erweitert werden, wodurch GNOME mit erhöhten Berechtigungen
auf eine begrenzte Zahl von speziellen Systemschnittstellen zugreifen
kann. Zusätzlich bedeutet das Hinzufügen eines durch
‘gnome-desktop-service-type’ erzeugten Dienstes, dass das
GNOME-Metapaket ins Systemprofil eingefügt wird. Genauso wird beim
Einfügen des Xfce-Dienstes nicht nur das ‘xfce’-Metapaket zum
Systemprofil hinzugefügt, sondern dem Thunar-Dateiverwaltungsprogramm
wird auch die Berechtigung gegeben, ein Fenster mit Administratorrechten
zu öffnen, wenn der Benutzer sich mit dem Administratorpasswort über die
standardmäßige grafische Oberfläche von Polkit authentisiert. „MATE
hinzufügen“ bedeutet, dass ‘polkit’ und ‘dbus’ entsprechend erweitert
werden, wodurch MATE mit erhöhten Berechtigungen auf eine begrenzte Zahl
von speziellen Systemschnittstellen zugreifen kann. Zusätzlich bedeutet
das Hinzufügen eines durch ‘mate-desktop-service-type’ erzeugten
Dienstes, dass das MATE-Metapaket ins Systemprofil eingefügt wird.
„Enlightenment hinzufügen“ bedeutet, dass ‘dbus’ entsprechend erweitert
wird und mehrere Binärdateien von Enlightenment als setuid eingerichtet
werden, wodurch das Programm zum Sperren des Bildschirms und andere
Funktionen von Enlightenment wie erwartet funktionieren.

   Die Arbeitsumgebungen in Guix benutzen standardmäßig den
Xorg-Anzeigeserver. Falls Sie das neuere Anzeigeserverprotokoll namens
Wayland benutzen möchten, müssen Sie den Dienst ‘sddm-service’ anstelle
von GDM für die grafische Anmeldeverwaltung einrichten. Dann sollten Sie
in SDDM die Sitzung „GNOME (Wayland)“ auswählen. Alternativ können Sie
auch versuchen, GNOME mit Wayland manuell aus einer Konsole (TTY) mit
dem Befehl „XDG_SESSION_TYPE=wayland exec dbus-run-session
gnome-session“ zu starten. Derzeit wird Wayland nur von GNOME
unterstützt.

 -- Scheme-Variable: gnome-desktop-service-type
     Dies ist der Typ des Dienstes, der die GNOME-Arbeitsumgebung
     (https://www.gnome.org) bereitstellt. Sein Wert ist ein
     ‘gnome-desktop-configuration’-Objekt (siehe unten).

     Dieser Dienst fügt das ‘gnome’-Paket zum Systemprofil hinzu und
     erweitert Polkit um die von ‘gnome-settings-daemon’ benötigten
     Aktionen.

 -- Datentyp: gnome-desktop-configuration
     Verbundsobjekt für die Konfiguration der GNOME-Arbeitsumgebung.

     ‘gnome’ (Vorgabe: ‘gnome’)
          Welches GNOME-Paket benutzt werden soll.

 -- Scheme-Variable: xfce-desktop-service-type
     Der Typ des Dienstes, um die Xfce-Arbeitsumgebung
     (https://xfce.org/) auszuführen. Sein Wert ist ein
     ‘xfce-desktop-configuration’-Objekt (siehe unten).

     Dieser Dienst fügt das Paket ‘xfce’ zum Systemprofil hinzu und
     erweitert Polkit, damit ‘thunar’ befähigt wird, das Dateisystem aus
     einer Benutzersitzung heraus mit Administratorrechten zu
     bearbeiten, nachdem sich der Benutzer mit dem Administratorpasswort
     authentisiert hat.

     Bedenken Sie, dass ‘xfce4-panel’ und seine Plugin-Pakete in
     dasselbe Profil installiert werden sollten, um sicherzugehen, dass
     sie kompatibel sind. Wenn Sie diesen Dienst benutzen, sollten Sie
     zusätzliche Plugins (‘xfce4-whiskermenu-plugin’,
     ‘xfce4-weather-plugin’ usw.) ins ‘packages’-Feld Ihres
     ‘operating-system’ eintragen.

 -- Datentyp: xfce-desktop-configuration
     Verbundstyp für Einstellungen zur Xfce-Arbeitsumgebung.

     ‘xfce’ (Vorgabe: ‘xfce’)
          Das Xfce-Paket, was benutzt werden soll.

 -- Scheme-Variable: mate-desktop-service-type
     Dies ist der Typ des Dienstes, um die MATE-Arbeitsumgebung
     (https://mate-desktop.org/) auszuführen. Sein Wert ist ein
     ‘mate-desktop-configuration’-Objekt (siehe unten).

     Dieser Dienst fügt das Paket ‘mate’ ins Systemprofil ein und
     erweitert Polkit um die Aktionen aus dem ‘mate-settings-daemon’.

 -- Datentyp: mate-desktop-configuration
     Verbundstyp für die Einstellungen der MATE-Arbeitsumgebung.

     ‘mate’ (Vorgabe: ‘mate’)
          Das MATE-Paket, was benutzt werden soll.

 -- Scheme-Variable: lxqt-desktop-service-type
     Dies ist der Typ des Dienstes, um die LXQt-Arbeitsumgebung
     (https://lxqt.github.io) auszuführen. Sein Wert ist ein
     ‘lxqt-desktop-configuration’-Objekt (siehe unten).

     Dieser Dienst fügt das Paket ‘lxqt’ ins Systemprofil ein.

 -- Datentyp: lxqt-desktop-configuration
     Verbundstyp für Einstellungen zur LXQt-Arbeitsumgebung.

     ‘lxqt’ (Vorgabe: ‘lxqt’)
          Das LXQT-Paket, was benutzt werden soll.

 -- Scheme-Variable: enlightenment-desktop-service-type
     Liefert einen Dienst, der das ‘enlightenment’-Paket zum
     Systemprofil hinzufügt und D-Bus mit den Aktionen aus ‘efl’
     erweitert.

 -- Datentyp: enlightenment-desktop-service-configuration
     ‘enlightenment’ (Vorgabe: ‘enlightenment’)
          Das Enlightenment-Paket, was benutzt werden soll.

   Weil die Desktopdienste GNOME, Xfce und MATE so viele Pakete ins
System mitnehmen, gehören diese nicht zu den Vorgaben in der
‘%desktop-services’-Variablen. Um GNOME, Xfce oder MATE hinzuzufügen,
benutzen Sie einfach ‘cons’ zum Anhängen an die ‘%desktop-services’ im
‘services’-Feld Ihrer ‘operating-system’-Deklaration:

     (use-modules (gnu))
     (use-service-modules desktop)
     (operating-system
       …
       ;; cons* adds items to the list given as its last argument.
       (services (cons* (service gnome-desktop-service-type)
                        (service xfce-desktop-service)
                        %desktop-services))
       …)

   Diese Arbeitsumgebungen stehen dann im grafischen Anmeldefenster zur
Auswahl.

   Die eigentlichen Dienstdefinitionen, die in ‘%desktop-services’
stehen und durch ‘(gnu services dbus)’ und ‘(gnu services desktop)’ zur
Verfügung gestellt werden, werden im Folgenden beschrieben.

 -- Scheme-Prozedur: dbus-service [#:dbus DBUS] [#:services '()]
     Liefert einen Dienst, der den „Systembus“ mit DBUS ausführt, mit
     Unterstützung für die als SERVICES übergebenen Dienste.

     D-Bus (https://dbus.freedesktop.org/) ist eine Einrichtung zur
     Interprozesskommunikation. Deren Systembus wird benutzt, damit
     Systemdienste miteinander kommunizieren können und damit sie bei
     systemweiten Ereignissen benachrichtigt werden können.

     Als SERVICES muss eine Liste von Paketen übergeben werden, die ein
     Verzeichnis ‘etc/dbus-1/system.d’ mit zusätzlichen
     D-Bus-Konfigurations- und Richtliniendateien enthalten. Damit zum
     Beispiel der Avahi-Daemon den Systembus benutzen kann, muss
     SERVICES gleich ‘(list avahi)’ sein.

 -- Scheme-Prozedur: elogind-service [#:config KONFIGURATION]
     Liefert einen Dienst, der den Anmelde- und Sitzungsdaemon ‘elogind’
     ausführt. Elogind (https://github.com/elogind/elogind) stellt eine
     D-Bus-Schnittstelle bereit, über die ausgelesen werden kann, welche
     Benutzer angemeldet sind und welche Sitzungen sie geöffnet haben,
     und außerdem das System in Bereitschaft versetzt werden kann, der
     Bereitschaftsmodus unterdrückt werden kann, das System neu
     gestartet werden kann und anderes.

     Die meisten Energieereignisse auf Systemebene in einem Rechner
     werden von elogind behandelt, wie etwa ein Versetzen des Systems in
     Bereitschaft, wenn der Rechner zugeklappt wird, oder ein
     Herunterfahren beim Drücken des Stromschalters.

     Das CONFIG-Schlüsselwort gibt die Konfiguration für elogind an und
     sollte das Ergebnis eines Aufrufs von ‘(elogind-configuration
     (PARAMETER WERT)...)’ sein. Verfügbare Parameter und ihre
     Vorgabewerte sind:

     ‘kill-user-processes?’
          ‘#f’
     ‘kill-only-users’
          ‘()’
     ‘kill-exclude-users’
          ‘("root")’
     ‘inhibit-delay-max-seconds’
          ‘5’
     ‘handle-power-key’
          ‘poweroff’
     ‘handle-suspend-key’
          ‘suspend’
     ‘handle-hibernate-key’
          ‘hibernate’
     ‘handle-lid-switch’
          ‘suspend’
     ‘handle-lid-switch-docked’
          ‘ignore’
     ‘handle-lid-switch-external-power’
          ‘ignore’
     ‘power-key-ignore-inhibited?’
          ‘#f’
     ‘suspend-key-ignore-inhibited?’
          ‘#f’
     ‘hibernate-key-ignore-inhibited?’
          ‘#f’
     ‘lid-switch-ignore-inhibited?’
          ‘#t’
     ‘holdoff-timeout-seconds’
          ‘30’
     ‘idle-action’
          ‘ignore’
     ‘idle-action-seconds’
          ‘(* 30 60)’
     ‘runtime-directory-size-percent’
          ‘10’
     ‘runtime-directory-size’
          ‘#f’
     ‘remove-ipc?’
          ‘#t’
     ‘suspend-state’
          ‘("mem" "standby" "freeze")’
     ‘suspend-mode’
          ‘()’
     ‘hibernate-state’
          ‘("disk")’
     ‘hibernate-mode’
          ‘("platform" "shutdown")’
     ‘hybrid-sleep-state’
          ‘("disk")’
     ‘hybrid-sleep-mode’
          ‘("suspend" "platform" "shutdown")’

 -- Scheme-Prozedur: accountsservice-service [#:accountsservice
          ACCOUNTSSERVICE] Liefert einen Dienst, der
     AccountsService ausführt. Dabei handelt es sich um einen
     Systemdienst, mit dem verfügbare Benutzerkonten aufgelistet und
     deren Passwörter geändert werden können, und Ähnliches.
     AccountsService arbeitet mit PolicyKit zusammen, um es Benutzern
     ohne besondere Berechtigungen zu ermöglichen, ihre
     Systemkonfiguration zu ändern. Siehe den Webauftritt von
     AccountsService
     (https://www.freedesktop.org/wiki/Software/AccountsService/) für
     weitere Informationen.

     Das Schlüsselwortargument ACCOUNTSSERVICE gibt das
     ‘accountsservice’-Paket an, das als Dienst verfügbar gemacht wird.

 -- Scheme-Prozedur: polkit-service [#:polkit POLKIT] Liefert einen
          Dienst, der
     Polkit als Dienst zur Verwaltung von Berechtigungen
     (https://www.freedesktop.org/wiki/Software/polkit/) ausführt,
     wodurch Systemadministratoren auf strukturierte Weise den Zugang zu
     „privilegierten“ Operationen gewähren können, die erweiterte
     Berechtigungen erfordern. Indem der Polkit-Dienst angefragt wird,
     kann eine mit Berechtigungen ausgestattete Systemkomponente die
     Information erhalten, ob normalen Benutzern Berechtigungen gewährt
     werden dürfen. Zum Beispiel kann einer normalen Nutzerin die
     Berechtigung gegeben werden, das System in den Bereitschaftsmodus
     zu versetzen, unter der Voraussetzung, dass sie lokal vor Ort
     angemeldet ist.

 -- Scheme-Variable: polkit-wheel-service
     Dieser Dienst richtet die ‘wheel’-Benutzergruppe als
     Administratoren für den Polkit-Dienst ein. Der Zweck davon ist,
     dass Benutzer in der ‘wheel’-Benutzergruppe nach ihren eigenen
     Passwörtern gefragt werden statt dem Passwort des
     Administratornutzers ‘root’, wenn sie administrative Tätigkeiten
     durchführen, ähnlich dem, wie sich ‘sudo’ verhält.

 -- Scheme-Variable: upower-service-type
     Typ des Dienstes, der ‘upowerd’ (https://upower.freedesktop.org/)
     ausführt, ein Programm zur systemweiten Überwachung des
     Energieverbrauchs und der Akkuladung. Er hat die angegebenen
     Konfigurationseinstellungen.

     Er implementiert die D-Bus-Schnittstelle ‘org.freedesktop.UPower’.
     Insbesondere wird UPower auch von GNOME benutzt.

 -- Datentyp: upower-configuration
     Repräsentiert die Konfiguration von UPower.

     ‘upower’ (Vorgabe: UPOWER)
          Das Paket, das für ‘upower’ benutzt werden soll.

     ‘watts-up-pro?’ (Vorgabe: ‘#f’)
          Aktiviert das Watts-Up-Pro-Gerät.

     ‘poll-batteries?’ (Vorgabe: ‘#t’)
          Aktiviert das regelmäßige Abfragen des Kernels bezüglich
          Änderungen am Stand der Akku-Ladung.

     ‘ignore-lid?’ (Vorgabe: ‘#f’)
          Ignorieren, ob der Rechner zugeklappt ist. Das kann gewünscht
          sein, wenn Auf- und Zuklappen nicht richtig erkannt werden.

     ‘use-percentage-for-policy?’ (Vorgabe: ‘#f’)
          Ob sich die Richtlinie am Akku-Ladestand in Prozent
          orientieren soll. Die Vorgabe ist, sich an der verbleibenden
          Zeit zu orientieren. Wenn Sie sie auf ‘#t’ ändern, dient der
          Prozentstand als Orientierung.

     ‘percentage-low’ (Vorgabe: ‘10’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#t’ gesetzt ist, wird
          hiermit der Prozentstand festgelegt, ab dem der Akku-Ladestand
          als niedrig gilt.

     ‘percentage-critical’ (Vorgabe: ‘3’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#t’ gesetzt ist, wird
          hiermit der Prozentstand festgelegt, ab dem der Akku-Ladestand
          als kritisch gilt.

     ‘percentage-action’ (Vorgabe: ‘2’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#t’ gesetzt ist, wird
          hiermit der Prozentstand festgelegt, ab dem Maßnahmen
          eingeleitet werden.

     ‘time-low’ (Vorgabe: ‘1200’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#f’ gesetzt ist, wird
          hiermit die verbleibende Zeit in Sekunden festgelegt, ab der
          der Akku-Ladestand als niedrig gilt.

     ‘time-critical’ (Vorgabe: ‘300’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#f’ gesetzt ist, wird
          hiermit die verbleibende Zeit in Sekunden festgelegt, ab der
          der Akku-Ladestand als kritisch gilt.

     ‘time-action’ (Vorgabe: ‘120’)
          Wenn ‘use-percentage-for-policy?’ auf ‘#f’ gesetzt ist, wird
          hiermit die verbleibende Zeit in Sekunden festgelegt, ab der
          Maßnahmen eingeleitet werden.

     ‘critical-power-action’ (Vorgabe: ‘'hybrid-sleep’)
          Welche Maßnahme eingeleitet wird, wenn die ‘percentage-action’
          oder ‘time-action’ erreicht wurde (je nachdem, wie
          ‘use-percentage-for-policy?’ eingestellt wurde).

          Mögliche Werte sind:

             • ‘'power-off’

             • ‘'hibernate’

             • ‘'hybrid-sleep’.

 -- Scheme-Prozedur: udisks-service [#:udisks UDISKS]
     Liefert einen Dienst für UDisks
     (https://udisks.freedesktop.org/docs/latest/), einen Daemon zur
     “Datenträgerverwaltung”, der Benutzeroberflächen mit
     Benachrichtigungen und Möglichkeiten zum Einbinden und Aushängen
     von Datenträgern versorgt. Zu den Programmen, die mit UDisks
     kommunizieren, gehört der Befehl ‘udisksctl’, der Teil von UDisks
     ist, sowie GNOME Disks. Beachten Sie, dass Udisks über den Befehl
     ‘mount’ funktioniert; man kann damit also nur die
     Dateisystemwerkzeuge benutzen, die ins Systemprofil installiert
     sind. Wenn Sie also NTFS-Dateisysteme zum Lesen und Schreiben
     öffnen können möchten, müssen Sie ‘ntfs-3g’ systemweit installiert
     haben.

 -- Scheme-Variable: colord-service-type
     Dies ist der Typ des Dienstes, der ‘colord’ ausführt. Dabei handelt
     es sich um einen Systemdienst mit einer D-Bus-Schnittstelle, um die
     Farbprofile von Ein- und Ausgabegeräten wie Bildschirmen oder
     Scannern zu verwalten. Insbesondere wird colord vom grafischen
     GNOME-Farbverwaltungswerkzeug benutzt. Siehe den Webauftritt von
     colord (https://www.freedesktop.org/software/colord/) für weitere
     Informationen.

 -- Scheme-Variable: sane-service-type
     Mit diesem Dienst wird Zugriff auf Scanner über SANE
     (http://www.sane-project.org) möglich, indem er die nötigen
     udev-Regeln installiert. Er ist Teil von ‘%desktop-services’ (siehe
     *note Desktop-Dienste::) und verwendet in den Vorgabeeinstellungen
     das Paket ‘sane-backends-minimal’ (siehe unten) für die
     Hardwareunterstützung.

 -- Scheme-Variable: sane-backends-minimal
     Das vorgegebene Paket, das durch den ‘sane-service-type’
     installiert wird. Es unterstützt viele aktuelle Scanner.

 -- Scheme-Variable: sane-backends
     Dieses Paket bietet Unterstützung für alle Scanner, die
     ‘sane-backends-minimal’ unterstützt, und außerdem für ältere
     Hewlett-Packard-Scanner, die das Paket ‘hplip’ unterstützt. Um es
     auf einem System zu benutzen, das auf den ‘%desktop-services’
     aufbaut, können Sie ‘modify-services’ benutzen (siehe *note
     ‘modify-services’: Service-Referenz.), etwa so:

          (use-modules (gnu))
          (use-service-modules
            …
            desktop)
          (use-package-modules
            …
            scanner)

          (define %my-desktop-services
            ;; Alternative Diensteliste wie %desktop-services mit Unterstützung
            ;; für mehr Scanner.
            (modify-services %desktop-services
              (sane-service-type _ => sane-backends)))

          (operating-system
            …
            (services %my-desktop-services)

 -- Scheme-Prozedur: geoclue-application Name [#:allowed? #t] [#:system?
          #f] [#:users '()]
     Liefert eine Konfiguration, mit der eine Anwendung auf Ortungsdaten
     von GeoClue zugreifen kann. Als NAME wird die Desktop-ID der
     Anwendung angegeben, ohne die Pfadkomponente mit ‘.desktop’-Endung.
     Wenn ALLOWED? wahr ist, hat die Anwendung standardmäßig Zugriff auf
     Ortungsinformationen. Der boolesche Wert SYSTEM? zeigt an, ob die
     Anwendung eine Systemkomponente ist oder nicht. Zum Schluss wird
     für USERS eine Liste von Benutzeridentifikatoren (UIDs) aller
     Benutzerkonten angegeben, für die diese Anwendung Zugriff auf
     Ortungsinformationen gewährt bekommt. Eine leere Benutzerliste
     bedeutet, dass dies für alle Benutzer gewährt wird.

 -- Scheme-Variable: %standard-geoclue-applications
     Die Standardliste wohlbekannter GeoClue-Anwendungskonfigurationen,
     mit der das GNOME-Werkzeug für Datum und Uhrzeit die Berechtigung
     bekommt, den aktuellen Ort abzufragen, um die Zeitzone festzulegen,
     und die Webbrowser IceCat und Epiphany Ortsinformationen abfragen
     dürfen. IceCat und Epiphany fragen beide zuerst beim Benutzer nach,
     bevor sie einer Webseite gestatten, den Ort des Benutzer
     abzufragen.

 -- Scheme-Prozedur: geoclue-service [#:colord COLORD] [#:whitelist '()]
           [#:wifi-geolocation-url
     "https://location.services.mozilla.com/v1/geolocate?key=geoclue"]
      [#:submit-data? #f] [#:wifi-submission-url
     "https://location.services.mozilla.com/v1/submit?key=geoclue"]
      [#:submission-nick "geoclue"]  [#:applications
     %standard-geoclue-applications] Liefert einen Dienst, der den
     Ortungsdienst GeoClue ausführt. Dieser Dienst bietet eine
     D-Bus-Schnittstelle an, mit der Anwendungen Zugriff auf den
     physischen Ort eines Benutzers anfragen können, und optional
     Informationen in Online-Ortsdatenbanken eintragen können. Siehe den
     Webauftritt von GeoClue
     (https://wiki.freedesktop.org/www/Software/GeoClue/) für weitere
     Informationen.

 -- Scheme-Prozedur: bluetooth-service [#:bluez BLUEZ]
          [#:auto-enable? #f] Liefert einen Dienst, der den
     ‘bluetoothd’-Daemon ausführt, welcher alle Bluetooth-Geräte
     verwaltet, und eine Reihe von D-Bus-Schnittstellen zur Verfügung
     stellt. Wenn AUTO-ENABLE? wahr ist, wird die Bluetooth-Steuerung
     automatisch beim Hochfahren gestartet, was sich als nützlich
     erweisen kann, wenn man eine Bluetooth-Tastatur oder -Maus benutzt.

     Benutzer müssen zur ‘lp’-Benutzergruppe gehören, damit sie Zugriff
     auf den D-Bus-Dienst bekommen.

 -- Scheme-Variable: gnome-keyring-service-type
     Dies ist der Typ des Dienstes, der den GNOME-Schlüsselbund
     (https://wiki.gnome.org/Projects/GnomeKeyring) bereitstellt. Sein
     Wert ist ein ‘gnome-keyring-configuration’-Objekt (siehe unten).

     Dieser Dienst fügt das ‘gnome-keyring’-Paket zum Systemprofil hinzu
     und erweitert PAM um Einträge zur Nutzung von
     ‘pam_gnome_keyring.so’, wodurch der Schlüsselbund von Nutzern
     entsperrt wird, wenn sie sich anmelden, und passwd auch das
     Passwort des Schlüsselbunds festlegt.

 -- Datentyp: gnome-keyring-configuration
     Verbundsobjekt für die Konfiguration des
     GNOME-Schlüsselbunddienstes.

     ‘keyring’ (Vorgabe: ‘gnome-keyring’)
          Welches GNOME-Schlüsselbund-Paket benutzt werden soll.

     ‘pam-services’
          Eine Liste von Paaren aus ‘(DIENST . TYP)’, die zu erweiternde
          PAM-Dienste bezeichnen. Dabei steht DIENST für den Namen eines
          bestehenden Dienstes, der erweitert werden soll, und als TYP
          kann ‘login’ oder ‘passwd’ angegeben werden.

          Wenn ‘login’ angegeben wird, wird ein optionales
          ‘pam_gnome_keyring.so’ zum Auth-Block ohne Argumente und zum
          Session-Block mit ‘auto_start’ hinzugefügt. Wenn ‘passwd’
          angegeben wird, wird ein optionales ‘pam_gnome_keyring.so’ zum
          Password-Block ohne Argumente hinzugefügt.

          Der vorgegebene Inhalt ist „gdm-password“ mit dem Wert ‘login’
          und „passwd“ mit dem Wert ‘passwd’.


File: guix.de.info,  Node: Tondienste,  Next: Datenbankdienste,  Prev: Desktop-Dienste,  Up: Dienste

10.8.9 Tondienste
-----------------

Das Modul ‘(gnu services sound)’ stellt einen Dienst zur Verfügung, um
das Advanced-Linux-Sound-Architecture-System (ALSA) zu konfigurieren, so
dass PulseAudio als bevorzugter ALSA-Ausgabetreiber benutzt wird.

 -- Scheme-Variable: alsa-service-type
     Dies ist der Typ des Dienstes für das als Advanced Linux Sound
     Architecture (ALSA) (https://alsa-project.org/) bekannte System,
     das die Konfigurationsdatei ‘/etc/asound.conf’ erzeugt. Der Wert
     für diesen Diensttyp ist ein ‘alsa-configuration’-Verbundsobjekt
     wie in diesem Beispiel:

          (service alsa-service-type)

     Siehe die folgenden Details zur ‘alsa-configuration’.

 -- Datentyp: alsa-configuration
     Repräsentiert die Konfiguration für den Dienst ‘alsa-service’.

     ‘alsa-plugins’ (Vorgabe: ALSA-PLUGINS)
          ‘alsa-plugins’-Paket, was benutzt werden soll.

     ‘pulseaudio?’ (Vorgabe: #T)
          Ob ALSA-Anwendungen transparent den PulseAudio-Audioserver
          (https://www.pulseaudio.org/) benutzen sollen.

          Wenn PulseAudio benutzt wird, können Sie gleichzeitig mehrere
          Anwendungen mit Tonausgabe ausführen und sie unter anderem mit
          ‘pavucontrol’ einzeln einstellen.

     ‘extra-options’ (Vorgabe: "")
          Die Zeichenkette, die an die Datei ‘/etc/asound.conf’
          angehängt werden soll.

   Wenn einzelne Benutzer von ALSAs Systemkonfiguration abweichende
Einstellungen vornehmen möchten, können Sie das mit der
Konfigurationsdatei ‘~/.asoundrc’ tun:

     # In Guix müssen wir den absoluten Pfad von Plugins angeben.
     pcm_type.jack {
       lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so"
     }

     # ALSA an jack weiterleiten:
     # <http://jackaudio.org/faq/routing_alsa.html>.
     pcm.rawjack {
       type jack
       playback_ports {
         0 system:playback_1
         1 system:playback_2
       }

       capture_ports {
         0 system:capture_1
         1 system:capture_2
       }
     }

     pcm.!default {
       type plug
       slave {
         pcm "rawjack"
       }
     }

   Siehe <https://www.alsa-project.org/main/index.php/Asoundrc> für die
Details.

 -- Scheme-Variable: pulseaudio-service-type
     Dies ist der Diensttyp für den PulseAudio-Soundserver
     (https://www.pulseaudio.org/). Mit ihm können die Voreinstellungen
     systemweit abgeändert werden. Dazu benutzen Sie eine
     ‘pulseaudio-configuration’, siehe unten.

          Warnung: Durch diesen Dienst werden Einstellungen vorgenommen,
          die Vorrang vor den Konfigurationsdateien des Benutzers haben.
          Wenn PulseAudio Konfigurationsdateien in ‘~/.config/pulse’
          beachten soll, müssen Sie die Umgebungsvariablen
          ‘PULSE_CONFIG’ und ‘PULSE_CLIENTCONFIG’ in Ihrer
          ‘~/.bash_profile’ deaktivieren.

          Warnung: Dieser Dienst sorgt alleine noch nicht dafür, dass
          auf ihrer Maschine das ‘pulseaudio’-Paket vorliegt. Er fügt
          bloß Konfigurationsdateien dafür hinzu, wie im Folgenden
          beschrieben. Für den (zugegebenermaßen unwahrscheinlichen)
          Fall, dass Ihnen ein ‘pulseaudio’-Paket fehlt, möchten Sie es
          vielleicht durch den oben genannten ‘alsa-service-type’
          aktivieren.

 -- Datentyp: pulseaudio-configuration
     Repräsentiert die Konfiguration für den Dienst
     ‘pulseaudio-service’.

     ‘client-conf’ (Vorgabe: ‘'()’)
          Eine Liste der Einstellungen, die in ‘client.conf’ vorgenommen
          werden. Hierfür wird eine Liste von entweder Zeichenketten
          oder Symbol-Wert-Paaren akzeptiert. Eine Zeichenkette wird so,
          wie sie ist, eingefügt, mit einem Zeilenumbruch danach. Ein
          Paar wird als „Schlüssel = Wert“ formatiert, auch hier gefolgt
          von einem Zeilenumbruch.

     ‘daemon-conf’ (Vorgabe: ‘'((flat-volumes . no))’)
          Eine Liste der Einstellungen, die in ‘daemon.conf’ vorgenommen
          werden, im gleichen Format wie CLIENT-CONF.

     ‘script-file’ (Vorgabe: ‘(file-append pulseaudio "/etc/pulse/default.pa")’)
          Welche Skriptdatei als ‘default.pa’ verwendet werden soll.

     ‘system-script-file’ (Vorgabe: ‘(file-append pulseaudio "/etc/pulse/system.pa")’)
          Welche Skriptdatei als ‘system.pa’ verwendet werden soll.

 -- Scheme-Variable: ladspa-service-type
     Der Diensttyp für den Dienst, der die LADSPA_PATH-Variable
     festlegt, damit sie beachtende Programme, z.B. PulseAudio,
     LADSPA-Plugins laden können.

     Das folgende Beispiel wird den Dienst so einrichten, dass Module
     aus dem ‘swh-plugins’-Paket aktiviert werden:

          (service ladspa-service-type
                   (ladspa-configuration (plugins (list swh-plugins))))

     Siehe <http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html> für
     die Details.


File: guix.de.info,  Node: Datenbankdienste,  Next: Mail-Dienste,  Prev: Tondienste,  Up: Dienste

10.8.10 Datenbankdienste
------------------------

Das Modul ‘(gnu services databases)’ stellt die folgenden Dienste zur
Verfügung.

PostgreSQL
..........

Das folgende Beispiel zeigt einen PostgreSQL-Dienst in seiner
Vorgabekonfiguration.

     (service postgresql-service-type
              (postgresql-configuration
               (postgresql postgresql-10)))

   Wenn diese Dienste nicht starten können, ist vielleicht bereits ein
inkompatibler Datenbankverbund („Cluster“) in DATA-DIRECTORY vorhanden.
Ändern Sie dann den Wert dafür (oder falls Sie den Verbund nicht mehr
brauchen, löschen Sie DATA-DIRECTORY einfach) und starten Sie den Dienst
neu.

   Nach Voreinstellung müssen sich normale Benutzerkonten des
Guix-Systems, die mit PostgreSQL kommunizieren, sogenannte „Peers“,
zunächst authentifizieren. Allerdings ist für das
‘postgres’-Benutzerkonto keine Shell eingestellt, wodurch keine
‘psql’-Befehle durch diesen Benutzer ausgeführt werden können. Um ‘psql’
benutzen zu können, können Sie sich vorläufig als der ‘postgres’-Nutzer
unter Angabe einer Shell anmelden, ein Konto für einen
PostgreSQL-Administrator (einen „Superuser“) mit demselben Namen wie
einer der Benutzer des Systems einrichten und dann die zugehörige
Datenbank erstellen.

     sudo -u postgres -s /bin/sh
     createuser --interactive
     createdb $BENUTZER_ANMELDENAME  # muss angepasst werden

 -- Datentyp: postgresql-configuration
     Der Datentyp repräsentiert die Konfiguration für den
     ‘postgresql-service-type’.

     ‘postgresql’
          Das PostgreSQL-Paket, was für diesen Dienst benutzt werden
          soll.

     ‘port’ (Vorgabe: ‘5432’)
          Der Port, auf dem PostgreSQL lauschen soll.

     ‘locale’ (Vorgabe: ‘"en_US.utf8"’)
          Welche Regions- und Spracheinstellung („Locale“) beim
          Erstellen des Datenbankverbunds voreingestellt werden soll.

     ‘config-file’ (Vorgabe: ‘(postgresql-config-file)’)
          Aus welcher Konfigurationsdatei die Laufzeitkonfiguration von
          PostgreSQL geladen werden soll. Vorgegeben ist, die
          Einstellungen aus einem postgresql-config-file-Verbundsobjekt
          mit Vorgabewerten zu nehmen.

     ‘log-directory’ (Vorgabe: ‘"/var/log/postgresql"’)
          In welchem Verzeichnis die Ausgabe von ‘pg_ctl’ in eine Datei
          namens ‘"pg_ctl.log"’ geschrieben wird. Diese Datei kann zum
          Beispiel dabei helfen, Fehler in der Konfiguration von
          PostgreSQL zu finden.

     ‘data-directory’ (Vorgabe: ‘"/var/lib/postgresql/data"’)
          Das Verzeichnis, in dem die Daten gespeichert werden sollen.

     ‘extension-packages’ (Vorgabe: ‘'()’)
          Zusätzliche Erweiterungen werden aus den unter
          EXTENSION-PACKAGES aufgeführten Paketen geladen. Erweiterungen
          sind zur Laufzeit verfügbar. Zum Beispiel kann ein Nutzer den
          postgresql-service-Dienst wie in diesem Beispiel
          konfigurieren, um eine geografische Datenbank mit Hilfe der
          ‘postgis’-Erweiterung zu erzeugen:

               (use-package-modules databases geo)

               (operating-system
                 …
                 ;; postgresql wird benötigt, um „psql“ auszuführen, aber postgis ist
                 ;; für den Betrieb nicht unbedingt notwendig.
                 (packages (cons* postgresql %base-packages))
                 (services
                   (cons*
                     (service postgresql-service-type
                              (postgresql-configuration
                               (postgresql postgresql-10)
                               (extension-packages (list postgis))))
                     %base-services)))

          Dann wird die Erweiterung sichtbar und Sie können eine leere
          geografische Datenbak auf diese Weise initialisieren:

               psql -U postgres
               > create database postgistest;
               > \connect postgistest;
               > create extension postgis;
               > create extension postgis_topology;

          Es ist nicht notwendig, dieses Feld für contrib-Erweiterungen
          wie hstore oder dblink hinzuzufügen, weil sie bereits durch
          postgresql geladen werden können. Dieses Feld wird nur
          benötigt, um Erweiterungen hinzuzufügen, die von anderen
          Paketen zur Verfügung gestellt werden.

 -- Datentyp: postgresql-config-file
     Der Datentyp, der die Konfigurationsdatei von PostgreSQL
     repräsentiert. Wie im folgenden Beispiel gezeigt, kann er benutzt
     werden, um die Konfiguration von PostgreSQL anzupassen. Es sei
     darauf hingewiesen, dass Sie jeden beliebigen G-Ausdruck oder
     Dateinamen anstelle dieses Verbunds angeben können, etwa wenn Sie
     lieber eine bestehende Konfigurationsdatei benutzen möchten.

          (service postgresql-service-type
                   (postgresql-configuration
                    (config-file
                     (postgresql-config-file
                      (log-destination "stderr")
                      (hba-file
                       (plain-file "pg_hba.conf"
                                   "
          local	all	all			trust
          host	all	all	127.0.0.1/32 	md5
          host	all	all	::1/128 	md5"))
                      (extra-config
                       '(("session_preload_libraries"     "auto_explain")
                         ("random_page_cost"              2)
                         ("auto_explain.log_min_duration" "100 ms")
                         ("work_mem"                      "500 MB")
                         ("logging_collector"             #t)
                         ("log_directory"                 "/var/log/postgresql")))))))

     ‘log-destination’ (Vorgabe: ‘"syslog"’)
          Welche Protokollierungsmethode für PostgreSQL benutzt werden
          soll. Hier können mehrere Werte kommagetrennt angegeben
          werden.

     ‘hba-file’ (Vorgabe: ‘%default-postgres-hba’)
          Ein Dateiname oder G-Ausdruck für die Konfiguration der
          Authentifizierung durch den Server („Host-based
          Authentication“).

     ‘ident-file’ (Vorgabe: ‘%default-postgres-ident’)
          Ein Dateiname oder G-Ausdruck für die Konfiguration der
          Benutzernamensabbildung („User name mapping“).

     ‘socket-directory’ (Vorgabe: ‘#false’)
          Gibt an, in welchem Verzeichnis der oder die Unix-Socket(s) zu
          finden sind, auf denen PostgreSQL auf Verbindungen von
          Client-Anwendungen lauscht. Ist dies auf ‘""’ gesetzt, so
          lauscht PostgreSQL auf gar keinem Unix-Socket, so dass
          Verbindungen zum Server nur mit TCP/IP-Sockets aufgebaut
          werden können.

          Der Vorgabewert ‘#false’ bedeutet, dass der voreingestellte
          Wert von PostgreSQL benutzt wird. Derzeit ist die
          Voreinstellung ‘/tmp’.

     ‘extra-config’ (Vorgabe: ‘'()’)
          Eine Liste zusätzlicher Schlüssel-Wert-Kombinationen, die in
          die PostgreSQL-Konfigurationsdatei aufgenommen werden sollen.
          Jeder Eintrag in der Liste muss eine Liste von Listen sein,
          deren erstes Element dem Schlüssel entspricht und deren übrige
          Elemente die Werte angeben.

          Als Werte können Zahlen, Boolesche Ausdrücke oder
          Zeichenketten dienen. Sie werden auf die Parametertypen von
          PostgreSQL, ‘Boolean’, ‘String’, ‘Numeric’, ‘Numeric with
          Unit’ und ‘Enumerated’, abgebildet, die hier
          (https://www.postgresql.org/docs/current/config-setting.html)
          beschrieben werden.

 -- Scheme-Variable: postgresql-role-service-type
     Mit diesem Dienst können PostgreSQL-Rollen und -Datenbanken erzeugt
     werden, nachdem der PostgreSQL-Dienst gestartet worden ist. Hier
     ist ein Beispiel, wie man ihn benutzt.

          (service postgresql-role-service-type
                      (postgresql-role-configuration
                       (roles
                        (list (postgresql-role
                               (name "test")
                               (create-database? #t))))))

     Dieser Dienst kann mit weiteren Rollen erweitert werden, wie in
     diesem Beispiel:

          (service-extension postgresql-role-service-type
                             (const (postgresql-role
                                     (name "alice")
                                     (create-database? #t))))

 -- Datentyp: postgresql-role
     PostgreSQL verwaltet Zugriffsrechte auf Datenbanken mit dem
     Rollenkonzept. Eine Rolle kann als entweder ein Datenbanknutzer
     oder eine Gruppe von Datenbanknutzern verstanden werden, je
     nachdem, wie die Rolle eingerichtet wurde. Rollen können Eigentümer
     von Datenbankobjekten sein (zum Beispiel von Tabellen) und sie
     können anderen Rollen Berechtigungen auf diese Objekte zuweisen
     oder steuern, wer auf welche Objekte Zugriff hat.

     ‘name’
          Der Rollenname.

     ‘permissions’ (Vorgabe: ‘'(createdb login)’)
          Die Liste der Berechtigungen der Rolle. Unterstützte
          Berechtigungen sind ‘bypassrls’, ‘createdb’, ‘createrole’,
          ‘login’, ‘replication’ und ‘superuser’.

     ‘create-database?’ (Vorgabe: ‘#f’)
          Ob eine Datenbank mit demselben Namen wie die Rolle erzeugt
          werden soll.

 -- Datentyp: postgresql-role-configuration
     Der Datentyp, der die Konfiguration des
     POSTGRESQL-ROLE-SERVICE-TYPE repräsentiert.

     ‘host’ (Vorgabe: ‘"/var/run/postgresql"’)
          Mit welchem PostgreSQL-Host eine Verbindung hergestellt werden
          soll.

     ‘log’ (Vorgabe: ‘"/var/log/postgresql_roles.log"’)
          Der Dateiname der Protokolldatei.

     ‘roles’ (Vorgabe: ‘'()’)
          Welche PostgreSQL-Rollen von Anfang an erzeugt werden sollen.

MariaDB/MySQL
.............

 -- Scheme-Variable: mysql-service-type
     Dies ist der Diensttyp für einen Datenbankserver zu MySQL oder
     MariaDB. Sein Wert ist ein ‘mysql-configuration’-Objekt, das das zu
     nutzende Paket sowie verschiedene Einstellungen für den
     ‘mysqld’-Daemon festlegt.

 -- Datentyp: mysql-configuration
     Der Datentyp, der die Konfiguration des MYSQL-SERVICE-TYPE
     repräsentiert.

     ‘mysql’ (Vorgabe: MARIADB)
          Das Paketobjekt des MySQL-Datenbankservers; es kann entweder
          MARIADB oder MYSQL sein.

          Für MySQL wird bei der Aktivierung des Dienstes ein temporäres
          Administratorpasswort („root“-Passwort) angezeigt. Für MariaDB
          ist das „root“-Passwort leer.

     ‘bind-address’ (Vorgabe: ‘"127.0.0.1"’)
          Auf welcher IP-Adresse auf Verbindungen gelauscht wird.
          Benutzen Sie ‘"0.0.0.0"’, wenn sich der Server an alle
          verfügbaren Netzwerkschnittstellen binden soll.

     ‘port’ (Vorgabe: ‘3306’)
          Der TCP-Port, auf dem der Datenbankserver auf eingehende
          Verbindungen lauscht.

     ‘socket’ (Vorgabe: ‘"/run/mysqld/mysqld.sock"’)
          Welche Socket-Datei für lokale Verbindungen (die also nicht
          über ein Netzwerk laufen) benutzt wird.

     ‘extra-content’ (Vorgabe: ‘""’)
          Weitere Einstellungen für die Konfigurationsdatei ‘my.cnf’.

     ‘auto-upgrade?’ (Vorgabe: ‘#t’)
          Ob nach dem Starten des Dienstes ‘mysql_upgrade’ automatisch
          ausgeführt werden soll. Das ist nötig, um das “Systemschema”
          nach „großen“ Aktualisierungen auf den neuen Stand zu bringen
          (etwa beim Umstieg von MariaDB 10.4 auf 10.5), aber Sie können
          es abschalten, wenn Sie das lieber manuell vornehmen.

Memcached
.........

 -- Scheme-Variable: memcached-service-type
     Dies ist der Diensttyp für den Memcached-Dienst
     (https://memcached.org/), der einen verteilten Zwischenspeicher im
     Arbeitsspeicher (einen „In-Memory-Cache“) zur Verfügung stellt. Der
     Wert dieses Dienstes ist ein ‘memcached-configuration’-Objekt.

     (service memcached-service-type)

 -- Datentyp: memcached-configuration
     Der Datentyp, der die Konfiguration von memcached repräsentiert.

     ‘memcached’ (Vorgabe: ‘memcached’)
          Das Memcached-Paket, das benutzt werden soll.

     ‘interfaces’ (Vorgabe: ‘'("0.0.0.0")’)
          Auf welchen Netzwerkschnittstellen gelauscht werden soll.

     ‘tcp-port’ (Vorgabe: ‘11211’)
          Der Port, auf dem Verbindungen akzeptiert werden.

     ‘udp-port’ (Vorgabe: ‘11211’)
          Der Port, auf dem UDP-Verbindungen akzeptiert werden. Ist der
          Wert 0, wird _nicht_ auf einem UDP-Socket gelauscht.

     ‘additional-options’ (Vorgabe: ‘'()’)
          Zusätzliche Befehlszeilenoptionen, die an ‘memcached’
          übergeben werden.

Redis
.....

 -- Scheme-Variable: redis-service-type
     Dies ist der Diensttyp für den Schlüssel-/Wert-Speicher Redis
     (https://redis.io/), dessen Wert ein ‘redis-configuration’-Objekt
     ist.

 -- Datentyp: redis-configuration
     Der Datentyp, der die Konfiguration von redis repräsentiert.

     ‘redis’ (Vorgabe: ‘redis’)
          Das zu benutzende Redis-Paket.

     ‘bind’ (Vorgabe: ‘"127.0.0.1"’)
          Die Netzwerkschnittstelle, auf der gelauscht wird.

     ‘port’ (Vorgabe: ‘6379’)
          Der Port, auf dem Verbindungen akzeptiert werden. Ist der Wert
          0, wird das Lauschen auf einem TCP-Socket deaktiviert.

     ‘working-directory’ (Vorgabe: ‘"/var/lib/redis"’)
          Das Verzeichnis, in dem die Datenbank und damit zu tun habende
          Dateien gespeichert werden.


File: guix.de.info,  Node: Mail-Dienste,  Next: Kurznachrichtendienste,  Prev: Datenbankdienste,  Up: Dienste

10.8.11 Mail-Dienste
--------------------

Das Modul ‘(gnu services mail)’ stellt Guix-Dienstdefinitionen für
E-Mail-Dienste zur Verfügung: IMAP-, POP3- und LMTP-Server sowie Mail
Transport Agents (MTAs). Jede Menge Akronyme! Auf diese Dienste wird in
den folgenden Unterabschnitten im Detail eingegangen.

Dovecot-Dienst
..............

 -- Scheme-Prozedur: dovecot-service [#:config (dovecot-configuration)]
     Liefert einen Dienst, der den IMAP-/POP3-/LMTP-Mailserver Dovecot
     ausführt.

   Normalerweise muss für Dovecot nicht viel eingestellt werden; das
vorgegebene Konfigurationsobjekt, das mit ‘(dovecot-configuration)’
erzeugt wird, wird genügen, wenn Ihre Mails in ‘~/Maildir’ gespeichert
werden. Ein selbstsigniertes Zertifikat wird für durch TLS geschützte
Verbindungen generiert, aber Dovecot lauscht nach Vorgabe auch auf
unverschlüsselten Ports. Es gibt jedoch eine Reihe von Optionen, die
Mail-Administratoren unter Umständen ändern müssen, was Guix — wie auch
bei anderen Diensten — mit einer einheitlichen Scheme-Schnittstelle
möglich macht.

   Um zum Beispiel anzugeben, dass sich Mails in ‘maildir~/.mail’
befinden, würde man den Dovecot-Dienst wie folgt instanziieren:

     (dovecot-service #:config
                      (dovecot-configuration
                       (mail-location "maildir:~/.mail")))

   Im Folgenden sehen Sie die verfügbaren Konfigurationsparameter. Jeder
Parameterdefinition ist ihr Typ vorangestellt; zum Beispiel bedeutet
‘Zeichenketten-Liste foo’, dass der Parameter ‘foo’ als eine Liste von
Zeichenketten angegeben werden sollte. Es ist auch möglich, die
Konfiguration als Zeichenkette anzugeben, wenn Sie eine alte
‘dovecot.conf’-Datei haben, die Sie von einem anderen System übernehmen
möchten; am Ende finden Sie mehr Details dazu.

   Verfügbare ‘dovecot-configuration’-Felder sind:

 -- ‘dovecot-configuration’-Parameter: „package“ dovecot
     Das Dovecot-Paket.

 -- ‘dovecot-configuration’-Parameter:
          Kommagetrennte-Zeichenketten-Liste listen
     Eine Liste der IPs oder der Rechnernamen („Hosts“), auf denen auf
     Verbindungen gelauscht wird. ‘*’ bedeutet, auf allen
     IPv4-Schnittstellen zu lauschen; ‘::’ lässt auf allen
     IPv6-Schnittstellen lauschen. Wenn Sie nicht der Vorgabe
     entsprechende Ports oder komplexere Einstellungen festlegen
     möchten, sollten Sie die Adress- und Portfelder des ‘inet-listener’
     beim jeweiligen Dienst anpassen, für den Sie sich interessieren.

 -- ‘dovecot-configuration’-Parameter: „protocol-configuration“-Liste
          protocols
     Die Liste der Protokolle, die angeboten werden sollen. Zu den
     verfügbaren Protokollen gehören ‘imap’, ‘pop3’ und ‘lmtp’.

     Verfügbare ‘protocol-configuration’-Felder sind:

      -- ‘protocol-configuration’-Parameter: Zeichenkette name
          Der Name des Protokolls.

      -- ‘protocol-configuration’-Parameter: Zeichenkette
               auth-socket-path
          Der Pfad des UNIX-Sockets zum Hauptauthentifizierungsserver,
          um Benutzer zu finden. Er wird von imap (für geteilte
          Benutzer) und lda benutzt. Die Vorgabe ist
          ‘"/var/run/dovecot/auth-userdb"’.

      -- ‘protocol-configuration’-Parameter:
               Leerzeichengetrennte-Zeichenketten-Liste mail-plugins
          Leerzeichengetrennte Liste der zu ladenden Plugins.

      -- ‘protocol-configuration’-Parameter: Nichtnegative-ganze-Zahl
               mail-max-userip-connections
          Die Maximalzahl der IMAP-Verbindungen, die jeder Nutzer von
          derselben IP-Adresse aus benutzen kann. _Anmerkung_: Beim
          Vergleichen des Benutzernamens wird Groß- und Kleinschreibung
          unterschieden. Die Vorgabe ist ‘10’.

 -- ‘dovecot-configuration’-Parameter: „service-configuration“-Liste
          services
     Die Liste der zu aktivierenden Dienste. Zu den verfügbaren Diensten
     gehören ‘imap’, ‘imap-login’, ‘pop3’, ‘pop3-login’, ‘auth’ und
     ‘lmtp’.

     Verfügbare ‘service-configuration’-Felder sind:

      -- ‘service-configuration’-Parameter: Zeichenkette kind
          Die Dienstart (englisch „kind“). Zu den gültigen Werten
          gehören ‘director’, ‘imap-login’, ‘pop3-login’, ‘lmtp’,
          ‘imap’, ‘pop3’, ‘auth’, ‘auth-worker’, ‘dict’, ‘tcpwrap’,
          ‘quota-warning’ oder alles andere.

      -- ‘service-configuration’-Parameter:
               „listener-configuration“-Liste listeners
          „Listener“ für den Dienst, also Lauscher auf neue
          Verbindungen. Als Listener kann entweder eine
          ‘unix-listener-configuration’, eine
          ‘fifo-listener-configuration’ oder eine
          ‘inet-listener-configuration’ angegeben werden. Die Vorgabe
          ist ‘()’.

          Verfügbare ‘unix-listener-configuration’-Felder sind:

           -- ‘unix-listener-configuration’-Parameter: Zeichenkette path
               Der Pfad zur Datei, relativ zum Feld ‘base-dir’. Er wird
               auch als der Abschnittsname verwendet.

           -- ‘unix-listener-configuration’-Parameter: Zeichenkette mode
               Der Zugriffsmodus des Sockets. Die Vorgabe ist ‘"0600"’.

           -- ‘unix-listener-configuration’-Parameter: Zeichenkette user
               Der Benutzer, dem der Socket gehört. Die Vorgabe ist
               ‘""’.

           -- ‘unix-listener-configuration’-Parameter: Zeichenkette
                    group
               Die Gruppe, der der Socket gehört. Die Vorgabe ist ‘""’.

          Verfügbare ‘fifo-listener-configuration’-Felder sind:

           -- ‘fifo-listener-configuration’-Parameter: Zeichenkette path
               Der Pfad zur Datei, relativ zum Feld ‘base-dir’. Er wird
               auch als der Abschnittsname verwendet.

           -- ‘fifo-listener-configuration’-Parameter: Zeichenkette mode
               Der Zugriffsmodus des Sockets. Die Vorgabe ist ‘"0600"’.

           -- ‘fifo-listener-configuration’-Parameter: Zeichenkette user
               Der Benutzer, dem der Socket gehört. Die Vorgabe ist
               ‘""’.

           -- ‘fifo-listener-configuration’-Parameter: Zeichenkette
                    group
               Die Gruppe, der der Socket gehört. Die Vorgabe ist ‘""’.

          Verfügbare ‘inet-listener-configuration’-Felder sind:

           -- ‘inet-listener-configuration’-Parameter: Zeichenkette
                    protocol
               Das Protokoll, auf das gelauscht wird.

           -- ‘inet-listener-configuration’-Parameter: Zeichenkette
                    address
               Die Adresse, auf der gelauscht wird. Bleibt das Feld
               leer, wird auf allen Adressen gelauscht. Die Vorgabe ist
               ‘""’.

           -- ‘inet-listener-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl port
               Der Port, auf dem gelauscht werden soll.

           -- ‘inet-listener-configuration’-Parameter:
                    Boolescher-Ausdruck ssl?
               Ob für diesen Dienst SSL benutzt werden kann: ‘yes’ für
               ja, ‘no’ für nein oder ‘required’ für „verpflichtend“.
               Die Vorgabe ist ‘#t’.

      -- ‘service-configuration’-Parameter: Nichtnegative-ganze-Zahl
               client-limit
          Die maximale Anzahl gleichzeitiger Verbindungen mit Clients
          pro Prozess. Sobald diese Anzahl von Verbindungen eingegangen
          ist, bewirkt das Eingehen der nächsten Verbindung, dass
          Dovecot einen weiteren Prozess startet. Ist sie auf 0 gesetzt,
          benutzt Dovecot stattdessen ‘default-client-limit’.

          Die Vorgabe ist ‘0’.

      -- ‘service-configuration’-Parameter: Nichtnegative-ganze-Zahl
               service-count
          Die Anzahl Verbindungen, die behandelt werden, bevor ein neuer
          Prozess gestartet wird. Typischerweise sind die einzig
          sinnvollen Werte 0 (unbeschränkt) oder 1. 1 ist sicherer, aber
          0 ist schneller. Siehe <doc/wiki/LoginProcess.txt>. Die
          Vorgabe ist ‘1’.

      -- ‘service-configuration’-Parameter: Nichtnegative-ganze-Zahl
               process-limit
          Die maximale Anzahl von Prozessen, die für diesen Dienst
          existieren können. Wenn sie auf 0 gesetzt ist, benutzt Dovecot
          stattdessen ‘default-process-limit’.

          Die Vorgabe ist ‘0’.

      -- ‘service-configuration’-Parameter: Nichtnegative-ganze-Zahl
               process-min-avail
          Die Anzahl der Prozesse, mit denen immer auf neue Verbindungen
          gewartet wird. Die Vorgabe ist ‘0’.

      -- ‘service-configuration’-Parameter: Nichtnegative-ganze-Zahl
               vsz-limit
          Wenn Sie ‘service-count 0’ festlegen, müssen Sie hierfür
          wahrscheinlich eine größere Zahl wählen. Die Vorgabe ist
          ‘256000000’.

 -- ‘dovecot-configuration’-Parameter: dict-configuration dict
     Die Wörterbuchkonfiguration, wie sie der
     ‘dict-configuration’-Konstruktor erzeugt.

     Verfügbare ‘dict-configuration’-Felder sind:

      -- ‘dict-configuration’-Parameter: Formlose-Felder entries
          Eine Liste von Schlüssel-Wert-Paaren, die in diesem Wörterbuch
          enthalten sein sollen. Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: „passdb-configuration“-Liste
          passdbs
     Eine Liste von Passwortdatenbankkonfigurationen, die jeweils mit
     dem ‘passdb-configuration’-Konstruktor erzeugt werden.

     Verfügbare ‘passdb-configuration’-Felder sind:

      -- ‘passdb-configuration’-Parameter: Zeichenkette driver
          Der Treiber, den die Passwortdatenbank benutzen soll. Zu den
          gültigen Werten gehören ‘pam’, ‘passwd’, ‘shadow’, ‘bsdauth’
          und ‘static’. Die Vorgabe ist ‘"pam"’.

      -- ‘passdb-configuration’-Parameter:
               Leerzeichengetrennte-Zeichenketten-Liste args
          Leerzeichengetrennte Liste der Argumente an den
          Passwortdatenbanktreiber. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: „userdb-configuration“-Liste
          userdbs
     Liste der Benutzerdatenbankkonfigurationen, die jeweils mit dem
     ‘userdb-configuration’-Konstruktor erzeugt werden.

     Verfügbare ‘userdb-configuration’-Felder sind:

      -- ‘userdb-configuration’-Parameter: Zeichenkette driver
          Der Treiber, den die Benutzerdatenbank benutzen soll. Zu den
          gültigen Werten gehören ‘passwd’ und ‘static’. Die Vorgabe ist
          ‘"passwd"’.

      -- ‘userdb-configuration’-Parameter:
               Leerzeichengetrennte-Zeichenketten-Liste args
          Leerzeichengetrennte Liste der Argumente an den
          Benutzerdatenbanktreiber. Die Vorgabe ist ‘""’.

      -- ‘userdb-configuration’-Parameter: Formlose-Argumente
               override-fields
          Einträge, die Vorrang vor den Feldern aus passwd haben. Die
          Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: „plugin-configuration“
          plugin-configuration
     Die Plugin-Konfiguration, die vom
     ‘plugin-configuration’-Konstruktor erzeugt wird.

 -- ‘dovecot-configuration’-Parameter: „namespace-configuration“-Liste
          namespaces
     Liste der Namensräume. Jedes Objekt in der Liste wird durch den
     ‘namespace-configuration’-Konstruktor erzeugt.

     Verfügbare ‘namespace-configuration’-Felder sind:

      -- ‘namespace-configuration’-Parameter: Zeichenkette name
          Der Name dieses Namensraums.

      -- ‘namespace-configuration’-Parameter: Zeichenkette type
          Namensraum-Typ: ‘private’, ‘shared’ oder ‘public’. Die Vorgabe
          ist ‘"private"’.

      -- ‘namespace-configuration’-Parameter: Zeichenkette separator
          Welche Trennzeichen in der Hierarchie von Namensräumen benutzt
          werden sollen. Sie sollten denselben Trenner für alle
          Namensräume benutzen, sonst führt es zu Verwirrung bei manchen
          Clients. Meistens ist ‘/’ eine gute Wahl, die Voreinstellung
          ist allerdings abhängig vom darunterliegenden
          Mail-Speicher-Format. Die Vorgabe ist ‘""’.

      -- ‘namespace-configuration’-Parameter: Zeichenkette prefix
          Das Präfix, das für Zugang auf diesen Namensraum angegeben
          werden muss. Es muss für jeden Namensraum ein anderes gewählt
          werden. Ein Beispiel ist ‘Public/’. Die Vorgabe ist ‘""’.

      -- ‘namespace-configuration’-Parameter: Zeichenkette location
          Der physische Ort, an dem sich dieses Postfach („Mailbox“)
          befindet. Das Format ist dasselbe wie beim Mail-Ort („mail
          location“), der auch als Voreinstellung hierfür benutzt wird.
          Die Vorgabe ist ‘""’.

      -- ‘namespace-configuration’-Parameter: Boolescher-Ausdruck inbox?
          Es kann nur eine INBOX geben; hiermit wird festgelegt, zu
          welchem Namensraum sie gehört. Die Vorgabe ist ‘#f’.

      -- ‘namespace-configuration’-Parameter: Boolescher-Ausdruck
               hidden?
          Wenn der Namensraum versteckt ist, wird er Clients gegenüber
          _nicht_ über die NAMESPACE-Erweiterung mitgeteilt.
          Wahrscheinlich möchten Sie auch ‘list? #f’ festlegen. Das ist
          in erster Linie dann nützlich, wenn Sie von einem anderen
          Server mit anderen Namensräumen umziehen, die Sie ersetzen
          möchten, die aber trotzdem noch weiterhin funktionieren
          sollen. Zum Beispiel können Sie versteckte Namensräume mit
          Präfixen ‘~/mail/’, ‘~%u/mail/’ und ‘mail/’ anlegen. Die
          Vorgabe ist ‘#f’.

      -- ‘namespace-configuration’-Parameter: Boolescher-Ausdruck list?
          Ob die Postfächer („Mailboxes“) unter diesem Namensraum mit
          dem LIST-Befehl angezeigt werden können. Dadurch wird der
          Namensraum für Clients sichtbar, die die NAMESPACE-Erweiterung
          nicht unterstützen. Mit dem besonderen Wert ‘children’ werden
          auch Kind-Postfächer aufgelistet, aber das Namensraumpräfix
          verborgen. Die Vorgabe ist ‘#t’.

      -- ‘namespace-configuration’-Parameter: Boolescher-Ausdruck
               subscriptions?
          Die Abonnements werden im Namensraum selbst behandelt. Wenn es
          auf ‘#f’ gesetzt ist, werden sie im Elternnamensraum
          behandelt. Das leere Präfix sollte hier immer ‘#t’ haben. Die
          Vorgabe ist ‘#t’.

      -- ‘namespace-configuration’-Parameter:
               „mailbox-configuration“-Liste mailboxes
          Die Liste der in diesem Namensraum vordefinierten Postfächer.
          Die Vorgabe ist ‘()’.

          Verfügbare ‘mailbox-configuration’-Felder sind:

           -- ‘mailbox-configuration’-Parameter: Zeichenkette name
               Der Name dieses Postfachs (dieser „Mailbox“).

           -- ‘mailbox-configuration’-Parameter: Zeichenkette auto
               Bei ‘create’ wird dieses Postfach automatisch erzeugt.
               Bei ‘subscribe’ wird dieses Postfach sowohl automatisch
               erzeugt als auch automatisch abonniert. Die Vorgabe ist
               ‘"no"’.

           -- ‘mailbox-configuration’-Parameter:
                    Leerzeichengetrennte-Zeichenketten-Liste special-use
               Liste der ‘SPECIAL-USE’-Attribute von IMAP, wie sie im
               RFC 6154 festgelegt wurden. Gültige Werte sind ‘\All’,
               ‘\Archive’, ‘\Drafts’, ‘\Flagged’, ‘\Junk’, ‘\Sent’ und
               ‘\Trash’. Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: Dateiname base-dir
     Das Basisverzeichnis, in dem Laufzeitdaten gespeichert werden. Die
     Vorgabe ist ‘"/var/run/dovecot/"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette login-greeting
     Begrüßungsnachricht für Clients. Die Vorgabe ist ‘"Dovecot
     ready."’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste
          login-trusted-networks
     Die Liste der Netzwerkbereiche, denen vertraut wird. Für
     Verbindungen von diesen IP-Adressen können abweichende IP-Adressen
     und Ports angegeben werden (zur Protokollierung und zur
     Authentifizierung). ‘disable-plaintext-auth’ wird für diese
     Netzwerke außerdem ignoriert. Normalerweise würden Sie hier Ihre
     IMAP-Proxy-Server eintragen. Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste login-access-sockets
     Die Liste der Sockets zur Zugriffsprüfung beim Anmelden (z.B.
     tcpwrap). Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          verbose-proctitle?
     Ausführlichere Prozessnamen anzeigen (mit „ps“). Nach
     Voreinstellung werden Benutzername und IP-Adresse angezeigt. Die
     Einstellung ist nützlich, wenn man sehen können will, wer
     tatsächlich IMAP-Prozesse benutzt (z.B. gemeinsam genutzte
     Postfächer oder wenn derselbe Benutzeridentifikator/„UID“ für
     mehrere Konten benutzt wird). Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          shutdown-clients?
     Ob alle Prozesse abgewürgt werden sollen, wenn der
     Haupt-Dovecot-Prozess terminiert. Ist dies auf ‘#f’ gesetzt, kann
     Dovecot aktualisiert werden, ohne dass bestehende
     Client-Verbindungen zwangsweise geschlossen werden (jedoch kann das
     problematisch sein, wenn die Aktualisierung z.B. eine
     Sicherheitslücke schließen soll). Die Vorgabe ist ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          doveadm-worker-count
     Ist dies _nicht_ null, werden Mail-Befehle über die angegebene
     Anzahl von Verbindungen an den doveadm-Server geschickt, statt sie
     direkt im selben Prozess auszuführen. Die Vorgabe ist ‘0’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette doveadm-socket-path
     Der UNIX-Socket oder das „Host:Port“-Paar, mit dem Verbindungen zum
     doveadm-Server hergestellt werden. Die Vorgabe ist
     ‘"doveadm-server"’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste import-environment
     Die Liste der Umgebungsvariablen, die beim Starten von Dovecot
     erhalten bleiben und allen Kindprozessen davon mitgegeben werden.
     Sie können auch „Schlüssel=Wert“-Paare angeben, um wie immer
     bestimmte Zuweisungen festzulegen.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          disable-plaintext-auth?
     Deaktiviert den LOGIN-Befehl und alle anderen
     Klartext-Authentisierungsverfahren, solange kein SSL/TLS benutzt
     wird (die LOGINDISABLED-Capability). Beachten Sie, dass, wenn die
     entfernte IP-Adresse mit der lokalen IP-Adresse identisch ist (Sie
     sich also vom selben Rechner aus verbinden), die Verbindung als
     sicher aufgefasst und Klartext-Authentisierung möglich ist. Siehe
     auch die „ssl=required“-Einstellung. Die Vorgabe ist ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          auth-cache-size
     Die Größe des Zwischenspeichers für Authentifizierungen (z.B.
     ‘#e10e6’). Bei 0 ist er deaktiviert. Beachten Sie, dass für
     bsdauth, PAM und vpopmail die Einstellung ‘cache-key’ festgelegt
     sein muss, damit ein Zwischenspeicher benutzt wird. Die Vorgabe ist
     ‘0’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-cache-ttl
     Wie lange Daten im Zwischenspeicher gültig bleiben („Time to
     live“). Nachdem die TTL ausläuft, wird der zwischengespeicherte
     Eintrag nicht mehr benutzt, _außer_ wenn eine Auflösung über die
     Hauptdatenbank zu einem internen Fehler führt. Dovecot versucht
     zudem, Passwortänderungen automatisch zu behandeln: Wenn die letzte
     Authentisierung erfolgreich war, diese jetzt aber nicht, wird der
     Zwischenspeicher _nicht_ benutzt. Derzeit funktioniert dies nur bei
     Klartext-Authentisierung. Die Vorgabe ist ‘"1 hour"’ für 1 Stunde.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          auth-cache-negative-ttl
     TTL beim Zwischenspeichern negativer Ergebnisse („negative Hits“,
     z.B. wenn der Benutzer nicht gefunden wurde oder das Passwort nicht
     stimmt). 0 deaktiviert das Zwischenspeichern davon vollständig. Die
     Vorgabe ist ‘"1 hour"’ für 1 Stunde.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste auth-realms
     Die Liste der Administrationsbereiche („Realms“) für
     SASL-Authentisierungsmechanismen, die solche benötigen. Sie können
     dieses Feld leer lassen, wenn Sie _keine_ Unterstützung für mehrere
     Administrationsbereiche wollen. Viele Clients benutzen den ersten
     hier aufgelisteten Administrationsbereich, also sollte der als
     Voreinstellung gewünschte Bereich vorne stehen. Die Vorgabe ist
     ‘()’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-default-realm
     Der voreingestellte Administrationsbereich bzw. die Domain, falls
     keiner angegeben wurde. Dies wird sowohl für
     SASL-Administrationsbereiche als auch zum Anhängen von @domain an
     den Benutzernamen bei Klartextanmeldungen benutzt. Die Vorgabe ist
     ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-username-chars
     Die Liste der in Benutzernamen zulässigen Zeichen. Wenn der vom
     Benutzer angegebene Benutzername ein hier nicht aufgelistetes
     Zeichen enthält, wird die Authentisierung automatisch abgelehnt.
     Dies dient bloß als eine weitere Überprüfung, um zu gewährleisten,
     dass mögliche Schwachstellen bei der Maskierung von
     Anführungszeichen in SQL-/LDAP-Datenbanken nicht ausgenutzt werden
     können. Wenn Sie alle Zeichen zulassen möchten, setzen Sie dieses
     Feld auf eine leere Zeichenkette. Die Vorgabe ist
     ‘"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          auth-username-translation
     Wie Zeichen in Benutzernamen ersetzt werden sollen, bevor der Name
     mit Datenbanken aufgelöst wird. Der Wert besteht aus einer Reihe
     von Angaben, welches Zeichen durch welches zu ersetzen ist. Zum
     Beispiel werden für ‘#@/@’ die Zeichen ‘#’ und ‘/’ beide durch ‘@’
     ersetzt. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-username-format
     Formatierungsanweisungen, die auf jeden Benutzernamen angewandt
     werden, bevor er mit einer Datenbank aufgelöst wird. Sie können
     hierzu die Standardvariablen verwenden, z.B. würde %Lu den
     Benutzernamen in Kleinbuchstaben umschreiben („lowercase“), %n
     würde den Domainnamen weglassen, wenn einer angegeben wurde, und
     ‘%n-AT-%d’ würde alle ‘@’ durch ‘-AT-’ ersetzen. Diese Übersetzung
     wird durchgeführt, nachdem die Änderungen aus
     ‘auth-username-translation’ angewandt wurden. Die Vorgabe ist
     ‘"%Lu"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          auth-master-user-separator
     Wenn Sie es für „Master“-Benutzer erlauben möchten, sich durch
     Angeben des Master-Benutzernamens als Teil einer normalen
     Benutzernamens-Zeichenkette als jemand anders anzumelden (also ohne
     Verwendung der Unterstützung davon durch den SASL-Mechanismus),
     können Sie hier die Trennzeichen dazwischen angeben. Das Format ist
     dann <Benutzername><Trenner><Master-Benutzername>. UW-IMAP benutzt
     ‘*’ als Trennzeichen, also könnte das eine gute Wahl sein. Die
     Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          auth-anonymous-username
     Der Benutzername, der verwendet wird, wenn sich Benutzer mit dem
     SASL-Mechanismus „ANONYMOUS“ anmelden. Die Vorgabe ist
     ‘"anonymous"’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          auth-worker-max-count
     Die maximale Anzahl von dovecot-auth-Arbeiterprozessen. Diese
     werden benutzt, um blockierende Anfragen an die Passwortdatenbank
     („passdb“) und an die Benutzerdatenbank („userdb“) zu stellen (z.B.
     MySQL und PAM). Sie werden automatisch erzeugt und gelöscht, je
     nachdem, wann sie gebraucht werden. Die Vorgabe ist ‘30’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-gssapi-hostname
     Der Rechnername, der in GSSAPI-Prinzipalnamen benutzt wird. Nach
     Voreinstellung wird der durch gethostname() zurückgelieferte Name
     verwendet. Benutzen Sie ‘$ALL’ (mit Anführungszeichen), damit alle
     Einträge in der Schlüsseltabelle („Keytab“) akzeptiert werden. Die
     Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-krb5-keytab
     Kerberos-Schlüsseltabelle („Keytab“), die für den
     GSSAPI-Mechanismus benutzt werden soll. Wenn sie nicht angegeben
     wird, wird die Voreinstellung des Systems benutzt (in der Regel
     ‘/etc/krb5.keytab’). Eventuell müssen Sie den Auth-Dienst als
     Administratornutzer „root“ ausführen lassen, um Lesezugriffe auf
     diese Datei zu ermöglichen. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          auth-use-winbind?
     NTLM-Authentifizierung und GSS-SPNEGO-Authentifizierung mit dem
     winbind-Daemon und dem ‘ntlm-auth’-Hilfsprogramm von Samba
     durchführen. Siehe
     <doc/wiki/Authentication/Mechanisms/Winbind.txt>. Die Vorgabe ist
     ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Dateiname
          auth-winbind-helper-path
     Der Pfad zur Binärdatei ‘ntlm-auth’ von Samba. Die Vorgabe ist
     ‘"/usr/bin/ntlm_auth"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette auth-failure-delay
     Die Zeit, wie lange vor der Antwort auf eine fehlgeschlagene
     Authentisierung gewartet wird. Die Vorgabe ist ‘"2 secs"’ für 2
     Sekunden.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          auth-ssl-require-client-cert?
     Es wird ein gültiges SSL-Client-Zertifikat verlangt, andernfalls
     schlägt die Authentisierung fehl. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          auth-ssl-username-from-cert?
     Ob der Benutzername aus dem SSL-Zertifikat des Clients ausgelesen
     werden soll, indem ‘X509_NAME_get_text_by_NID()’ benutzt wird, um
     den Distinguished Name („DN“) als Gebräuchlicher Name
     („CommonName“) des Zertifikatinhabers („Subject“) auszulesen. Die
     Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste auth-mechanisms
     Die Liste der erwünschten Authentisierungsmechanismen. Unterstützte
     Mechanismen sind: ‘plain’, ‘login’, ‘digest-md5’, ‘cram-md5’,
     ‘ntlm’, ‘rpa’, ‘apop’, ‘anonymous’, ‘gssapi’, ‘otp’, ‘skey’ und
     ‘gss-spnego’. _Anmerkung_: Siehe auch die Einstellung zu
     ‘disable-plaintext-auth’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste director-servers
     Die Liste der IP-Adressen oder Rechnernamen („Hostnames“) für alle
     Direktorserver, einschließlich dieses Servers selbst. Ports können
     wie in „IP:Port“ angegeben werden. Der voreingestellte Port ist
     derselbe wie der, der beim ‘inet-listener’ des Direktordienstes
     benutzt wird. Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste director-mail-servers
     Die Liste der IP-Adressen oder Rechnernamen („Hostnames“), um alle
     Hintergrund-Mailserver zu erreichen. Auch Bereiche können angegeben
     werden, wie 10.0.0.10-10.0.0.30. Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette director-user-expire
     Wie lange Benutzer zum selben Server weitergeleitet werden, sobald
     dieser keine Verbindungen mehr hat. Die Vorgabe ist ‘"15 min"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          director-username-hash
     Wie der Benutzername umgeschrieben wird, bevor er gehasht wird. Zu
     den sinnvollen Werten gehören %Ln, wenn der Nutzer sich mit oder
     ohne @domain anmelden kann, oder %Ld, wenn Postfächer innerhalb der
     Domain gemeinsam genutzt werden. Die Vorgabe ist ‘"%Lu"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette log-path
     Die Protokolldatei, die für Fehlermeldungen benutzt werden soll.
     Bei ‘syslog’ wird das Protokoll an syslog geschrieben, bei
     ‘/dev/stderr’ an die Standardfehlerausgabe. Die Vorgabe ist
     ‘"syslog"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette info-log-path
     Die Protokolldatei, die für Informationsmeldungen benutzt werden
     soll. Die Voreinstellung ist ‘log-path’. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette debug-log-path
     Die Protokolldatei, die für Meldungen zur Fehlersuche benutzt
     werden soll. Die Voreinstellung ist ‘info-log-path’. Die Vorgabe
     ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette syslog-facility
     Als welche Syslog-Einrichtung Protokolle an Syslog übermittelt
     werden sollen. Falls Sie ‘mail’ hierbei _nicht_ benutzen wollen,
     eignen sich normalerweise local0–local7. Andere
     Standardeinrichtungen werden auch unterstützt. Die Vorgabe ist
     ‘"mail"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck auth-verbose?
     Ob gescheiterte Anmeldeversuche und die Gründe, warum diese nicht
     erfolgreich waren, protokolliert werden sollen. Die Vorgabe ist
     ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          auth-verbose-passwords
     Ob bei falschen Passwörtern das versuchte falsche Passwort ins
     Protokoll geschrieben werden soll. Gültige Werte sind "no"
     („nein“), "plain" (als Klartext) und "sha1". Den SHA1-Hash zu
     speichern kann nützlich sein, um zu erkennen, wenn jemand versucht,
     sehr viele Passwörter durchzuprobieren (ein „Brute-Force“-Angriff)
     oder ob Benutzer einfach nur dasselbe Passwort immer wieder
     probieren. Sie können auch nur die ersten n Zeichen des Wertes
     protokollieren, indem Sie ":n" anhängen (z.B. sha1:6). Die Vorgabe
     ist ‘"no"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck auth-debug?
     Ob zur Fehlersuche noch ausführlichere Protokolle geschrieben
     werden sollen. Zum Beispiel werden SQL-Anfragen protokolliert. Die
     Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          auth-debug-passwords?
     Ob bei falschen Passwörtern das versuchte falsche Passwort und das
     benutzte Passwortschema ins Protokoll geschrieben werden soll,
     damit das Problem untersucht werden kann. Wenn dies aktiviert wird,
     wird auch ‘auth-debug’ aktiviert. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck mail-debug?
     Ob die Fehlersuche beim Mail-Prozess ermöglicht werden soll. Dies
     kann Ihnen dabei helfen, herauszufinden, warum Dovecot Ihre E-Mails
     nicht findet. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck verbose-ssl?
     SSL-Fehler auf Protokollebene anzeigen. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette log-timestamp
     Das Präfix für jede Zeile, die ins Protokoll geschrieben wird.
     %-Codes sind im Format von strftime(3). Die Vorgabe ist ‘"\"%b %d
     %H:%M:%S \""’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste
          login-log-format-elements
     Eine Liste der Elemente, die protokolliert werden sollen. Die
     Elemente, deren Variablenwerte nicht leer sind, werden zu einer
     kommagetrennten Zeichenkette zusammengefügt.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette login-log-format
     Das Format des Anmeldeprogramms. %s umfasst die Zeichenkette
     ‘login-log-format-elements’, %$ enthält die Daten, die man
     protokollieren lassen möchte. Die Vorgabe ist ‘"%$: %s"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-log-prefix
     Das Präfix, das Protokollen für Mailprozesse vorangestellt wird.
     Siehe doc/wiki/Variables.txt für eine Liste der benutzbaren
     Variablen. Die Vorgabe ist ‘"\"%s(%u)<%{pid}><%{session}>: \""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette deliver-log-format
     Welches Format zur Protokollierung von Mailzustellungen verwendet
     werden soll. Sie können die folgenden Variablen benutzen:
     ‘%$’
          Zustellungsstatusnachricht (z.B. ‘saved to INBOX’)
     ‘%m’
          Nachrichtenidentifikator („Message-ID“)
     ‘%s’
          Betreff („Subject“)
     ‘%f’
          Absendeadresse („From“)
     ‘%p’
          Physische Größe
     ‘%w’
          Virtuelle Größe.
     Die Vorgabe ist ‘"msgid=%m: %$"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-location
     Wo die Postfächer (die „Mailboxes“) der Benutzer gespeichert sind.
     Die Vorgabe ist die leere Zeichenkette, was bedeutet, dass Dovecot
     die Postfächer automatisch zu finden versucht. Das funktioniert
     nur, wenn der Nutzer bereits E-Mails gespeichert hat, also sollten
     Sie Dovecot den vollständigen Pfad mitteilen.

     Wenn Sie das mbox-Format benutzen, genügt es _nicht_, den Pfad zur
     INBOX-Datei (z.B. ‘/var/mail/%u’) anzugeben. Sie müssen Dovecot
     _auch_ mitteilen, wo die anderen Postfächer gespeichert sind.
     Dieses Verzeichnis nennt sich _Wurzelmailverzeichnis_ („Root Mail
     Directory“) und es muss als erster Pfad in der
     ‘mail-location’-Einstellung angegeben werden.

     Es gibt ein paar besondere Variable, die Sie verwenden können,
     z.B.:

     ‘%u’
          Benutzername
     ‘%n’
          Benutzerteil in Benutzer@Domain; sonst dasselbe wie %u, wenn
          es keine Domain gibt
     ‘%d’
          Domainteil in Benutzer@Domain; sonst leer, wenn es keine
          Domain gibt
     ‘%h’
          Persönliches Verzeichnis

     Siehe doc/wiki/Variables.txt für die vollständige Liste. Einige
     Beispiele:
     ‘maildir:~/Maildir’
     ‘mbox:~/mail:INBOX=/var/mail/%u’
     ‘mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%’
     Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-uid
     Systembenutzer und -gruppe, die benutzt werden sollen, um auf Mails
     zuzugreifen. Wenn Sie mehrere Benutzerkonten verwenden, kann auch
     die Benutzerdatenbank „userdb“ vorrangig verwendet werden, indem
     sie zu Benutzer- oder Gruppenidentifikatoren (UIDs und GIDs)
     auflöst. Sie können hier Zahlen oder Namen angeben. Siehe
     <doc/wiki/UserIds.txt>. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-gid

     Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          mail-privileged-group
     Die Benutzergruppe, die zwischenzeitlich benutzt wird, um
     Operationen mit besonderen Berechtigungen auszuführen. Derzeit wird
     dies nur mit dem INBOX-Postfach benutzt, wenn dessen anfängliche
     Erzeugung oder Sperrung per „Dotlocking“-Datei fehlschlägt.
     Typischerweise wird es auf ‘"mail"’ gesetzt, damit Zugriffe auf
     ‘/var/mail’ möglich sind. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-access-groups
     Mail-Prozessen Zugriff auf diese zusätzlichen Benutzergruppen
     gewähren. Typischerweise werden sie benutzt, um gemeinsam genutzte
     Postfächer („Mailboxes“) so einzurichten, dass alle aus der Gruppe
     zugreifen können. Beachten Sie, dass es gefährlich sein kann, dies
     zu erlauben, wenn Benutzer symbolische Verknüpfungen einrichten
     können (z.B. kann jeder, wenn hier die ‘mail’-Gruppe festgelegt
     wurde, ‘ln -s /var/mail ~/mail/var’ benutzen, um die Postfächer der
     anderen zu löschen, oder ‘ln -s /secret/shared/box ~/mail/mybox’,
     um sie zu lesen). Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mail-full-filesystem-access?
     Clients vollen Dateisystemzugriff gestatten. Damit gibt es keine
     Zugriffsüberprüfungen mehr, abgesehen von denen, die das
     Betriebssystem für die aktiven Benutzer- und Gruppenidentifikatoren
     (UID und GID) durchführt. Es ist sowohl für maildir- als auch
     mbox-Formate verwendbar und Sie können dadurch für Namen von
     Postfächern („Mailboxes“) Präfixe wie z.B. ‘/pfad/’ oder
     ‘~benutzer/’ wählen. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck mmap-disable?
     Überhaupt kein ‘mmap()’ benutzen. Das ist erforderlich, wenn Sie
     Indexe auf geteilten Dateisystemen speichern (wie NFS oder
     Cluster-Dateisystemen). Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          dotlock-use-excl?
     Ob sich Dovecot darauf verlassen kann, dass ‘O_EXCL’ funktioniert,
     wenn es Sperrdateien als „Dotlock“ erstellt. NFS unterstützt
     ‘O_EXCL’ seit Version 3, also sollte es heutzutage kein Problem
     mehr sein, dies als Voreinstellung zu benutzen. Die Vorgabe ist
     ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-fsync
     Wann fsync() oder fdatasync() aufgerufen werden soll:
     ‘optimized’
          Wann immer es nötig ist, um keine wichtigen Daten zu verlieren
     ‘always’
          Praktisch bei z.B. NFS, wenn Schreibzugriffe mit ‘write()’
          verzögert sind
     ‘never’
          Niemals benutzen (ist am schnellsten, aber Abstürze können zu
          Datenverlusten führen)
     Die Vorgabe ist ‘"optimized"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mail-nfs-storage?
     Mails werden in NFS gespeichert. Setzen Sie dies auf ja, damit
     Dovecot NFS-Zwischenspeicher zurückschreiben kann, wann immer es
     nötig ist. Wenn Sie nur einen einzigen Mail-Server benutzen,
     brauchen Sie es _nicht_. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mail-nfs-index?
     Ob die Index-Dateien für Mails auch in NFS gespeichert sind. Wenn
     dies auf ja gesetzt ist, muss ‘mmap-disable? #t’ und
     ‘fsync-disable? #f’ gesetzt sein. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette lock-method
     Die Sperrmethode für Indexdateien. Die Alternativen sind fcntl,
     flock und dotlock. Bei Dotlocking werden ein paar Tricks benutzt,
     die mehr Plattenein- und -ausgaben als andere Sperrmethoden zur
     Folge haben. Für NFS-Benutzer gilt: flock funktioniert nicht, also
     denken Sie bitte daran, ‘mmap-disable’ zu ändern. Die Vorgabe ist
     ‘"fcntl"’.

 -- ‘dovecot-configuration’-Parameter: Dateiname mail-temp-dir
     Das Verzeichnis, in dem LDA/LMTP zwischenzeitlich eingehende
     E-Mails >128 kB speichert. Die Vorgabe ist ‘"/tmp"’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          first-valid-uid
     Der Bereich, in dem die Benutzerkennungen („UIDs“) von sich bei
     Dovecot anmeldenden Benutzern liegen müssen. Das dient
     hauptsächlich dazu, sicherzustellen, dass sich Anwender nicht mit
     den Benutzerkonten von Daemons oder sonstigen Systembenutzerkonten
     anmelden können. Beachten Sie, dass eine Anmeldung als
     Administrator „root“ grundsätzlich vom Code des Dovecot-Programms
     verboten wird und selbst dann _nicht_ möglich ist, wenn Sie
     ‘first-valid-uid’ auf 0 setzen. Die Vorgabe ist ‘500’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          last-valid-uid

     Die Vorgabe ist ‘0’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          first-valid-gid
     Der Bereich, in dem die Gruppenkennungen („GIDs“) von sich bei
     Dovecot anmeldenden Benutzern liegen müssen. Benutzerkonten, deren
     primäre Gruppe keine gültige GID hat, können sich nicht anmelden.
     Wenn das Benutzerkonto zu zusätzlichen Gruppen mit ungültiger GID
     gehört, werden diese Gruppen-Berechtigungen von Dovecot wieder
     abgegeben. Die Vorgabe ist ‘1’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          last-valid-gid

     Die Vorgabe ist ‘0’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          mail-max-keyword-length
     Die maximale zulässige Länge eines Mail-Schlüsselwort-Namens. Sie
     wirkt sich nur aus, wenn Sie neue Schlüsselwörter anzulegen
     versuchen. Die Vorgabe ist ‘50’.

 -- ‘dovecot-configuration’-Parameter:
          Doppelpunktgetrennte-Dateinamen-Liste valid-chroot-dirs
     Die Liste der Verzeichnisse, in die Mail-Prozesse per „chroot“ das
     Wurzelverzeichnis wechseln können (d.h. für ‘/var/mail’ wird auch
     ein chroot nach ‘/var/mail/foo/bar’ möglich). Diese Einstellung hat
     keinen Einfluss auf ‘login-chroot’, ‘mail-chroot’ oder
     Authentifizierungs-„chroot“-Einstellungen. Wenn diese Einstellung
     leer gelassen wird, werden chroots per ‘/./’ in Persönlichen
     Verzeichnissen ignoriert. _Warnung_: Fügen Sie niemals
     Verzeichnisse hinzu, die lokale Benutzer verändern können, weil
     diese dann eventuell über eine Rechteausweitung Administratorrechte
     an sich reißen können. In der Regel sollte man ein solches
     Verzeichnis nur eintragen, wenn Nutzer keinen Shell-Zugriff
     erhalten können. Siehe <doc/wiki/Chrooting.txt>. Die Vorgabe ist
     ‘()’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-chroot
     Das voreingestellte „chroot“-Verzeichnis für Mail-Prozesse. Es kann
     für einzelne Nutzer in der Benutzerdatenbank außer Kraft gesetzt
     werden, indem ‘/./’ als Teil der Angabe zum Persönlichen
     Verzeichnis des Benutzers verwendet wird (z.B. lässt
     ‘/home/./benutzer’ das Wurzelverzeichnis per „chroot“ nach ‘/home’
     wechseln). Beachten Sie, dass es in der Regel _nicht_ unbedingt
     notwendig ist, Chrooting zu betreiben, weil Dovecot es Benutzern
     ohnehin nicht erlaubt, auf Dateien außerhalb ihres
     Mail-Verzeichnisses zuzugreifen. Wenn Ihren Persönlichen
     Verzeichnissen das Chroot-Verzeichnis vorangestellt ist, sollten
     Sie ‘/.’ an ‘mail-chroot’ anhängen. Siehe <doc/wiki/Chrooting.txt>.
     Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Dateiname auth-socket-path
     Der UNIX-Socket-Pfad, unter dem der Hauptauthentifizierungsserver
     zu finden ist, mit dem Nutzer gefunden werden können. Er wird von
     IMAP (für gemeinsame Benutzerkonten) und von LDA benutzt. Die
     Vorgabe ist ‘"/var/run/dovecot/auth-userdb"’.

 -- ‘dovecot-configuration’-Parameter: Dateiname mail-plugin-dir
     Das Verzeichnis, in dem Mailplugins zu finden sind. Die Vorgabe ist
     ‘"/usr/lib/dovecot"’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste mail-plugins
     Die Liste der Plugins, die für alle Dienste geladen werden sollen.
     Plugins, die nur für IMAP, LDA, etc. gedacht sind, werden in ihren
     eigenen .conf-Dateien zu dieser Liste hinzugefügt. Die Vorgabe ist
     ‘()’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          mail-cache-min-mail-count
     Die kleinste Anzahl an Mails in einem Postfach, bevor
     Aktualisierungen an der Zwischenspeicherdatei vorgenommen werden.
     Damit kann das Verhalten von Dovecot optimiert werden, um weniger
     Schreibzugriffe auf die Platte durchzuführen, wofür allerdings mehr
     Lesezugriffe notwendig werden. Die Vorgabe ist ‘0’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          mailbox-idle-check-interval
     Während der IDLE-Befehl läuft, wird ab und zu im Postfach (der
     „Mailbox“) nachgeschaut, ob es neue Mails oder andere Änderungen
     gibt. Mit dieser Einstellung wird festgelegt, wie lange zwischen
     diesen Überprüfungen höchstens gewartet wird. Dovecot kann auch
     dnotify, inotify und kqueue benutzen, um sofort über Änderungen
     informiert zu werden. Die Vorgabe ist ‘"30 secs"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mail-save-crlf?
     Ob Mails mit CR+LF-Kodierung für Zeilenumbrüche statt einfacher LF
     gespeichert werden sollen. Dadurch wird das Versenden dieser Mails
     den Prozessor weniger beanspruchen, dies gilt besonders für den
     Systemaufruf sendfile() unter Linux und FreeBSD. Allerdings werden
     auch ein bisschen mehr Ein- und Ausgaben auf der Platte notwendig,
     wodurch es insgesamt langsamer werden könnte. Beachten Sie
     außerdem, dass andere Software, die die mboxes/maildirs ausliest,
     mit den CRs falsch umgehen und Probleme verursachen könnte. Die
     Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          maildir-stat-dirs?
     Nach Voreinstellung liefert der LIST-Befehl alle Einträge im
     Mailverzeichnis („Maildir“), die mit einem Punkt beginnen. Wenn
     diese Option aktiviert wird, liefert Dovecot nur solche Einträge,
     die für Verzeichnisse stehen. Dazu wird auf jedem Eintrag stat()
     aufgerufen, wodurch mehr Ein- und Ausgaben auf der Platte anfallen.
     (Bei Systemen, die einen Struktureintrag ‘dirent->d_type’ machen,
     ist diese Überprüfung unnötig, daher werden dort nur Verzeichnisse
     geliefert, egal was hier eingestellt ist.) Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          maildir-copy-with-hardlinks?
     Ob zum Kopieren einer Nachricht statt einer Kopie so weit möglich
     harte Verknüpfungen („Hard Links“) verwendet werden sollen. Dadurch
     wird das System wesentlich weniger ausgelastet und Nebenwirkungen
     sind unwahrscheinlich. Die Vorgabe ist ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          maildir-very-dirty-syncs?
     Ob Dovecot annehmen darf, dass es der einzige MUA ist, der auf
     Maildir zugreift. Dann wird das cur/-Verzeichnis nur bei
     unerwarteten Änderungen an seiner mtime durchsucht oder wenn die
     Mail sonst nicht gefunden werden kann. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste mbox-read-locks
     Welche Sperrmethoden zum Sperren des mbox-Postfachs (der „Mailbox“)
     benutzt werden. Es stehen vier Methoden zur Auswahl:

     ‘dotlock’
          Hier wird eine Datei namens <Postfach>.lock erzeugt. Es
          handelt sich um die älteste und am ehesten mit NFS verwendbare
          Lösung. Wenn Sie ein Verzeichnis wie /var/mail/ benutzen,
          müssen die Benutzer Schreibzugriff darauf haben.
     ‘dotlock-try’
          Genau wie dotlock, aber wenn es mangels Berechtigungen
          fehlschlägt oder nicht genug Plattenplatz verfügbar ist, wird
          einfach nicht gesperrt.
     ‘fcntl’
          Benutzen Sie diese Einstellung wenn möglich. Sie funktioniert
          auch mit NFS, sofern lockd benutzt wird.
     ‘flock’
          Existiert vielleicht nicht auf allen Systemen. Funktioniert
          nicht mit NFS.
     ‘lockf’
          Existiert vielleicht nicht auf allen Systemen. Funktioniert
          nicht mit NFS.

     Sie können mehrere Sperrmethoden angeben; wenn ja, dann ist deren
     Reihenfolge entscheidend, um Verklemmungen („Deadlocks“) zu
     vermeiden, wenn andere MTAs/MUAs auch mehrere Sperrmethoden
     benutzen. Manche Betriebssysteme erlauben es nicht, manche davon
     gleichzeitig zu benutzen.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste mbox-write-locks

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mbox-lock-timeout
     Wie lange höchstens auf Sperren (irgendeiner Art) gewartet wird,
     bevor abgebrochen wird. Die Vorgabe ist ‘"5 mins"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          mbox-dotlock-change-timeout
     Wenn eine Dotlock-Sperrdatei existiert, das Postfach (die
     „Mailbox“) aber auf keine Weise geändert wurde, wird die Sperrdatei
     nach der hier angegebenen Zeit außer Kraft gesetzt. Die Vorgabe ist
     ‘"2 mins"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mbox-dirty-syncs?
     Wenn sich das mbox-Postfach unerwartet ändert, müssen wir es
     gänzlich neu einlesen, um herauszufinden, was sich geändert hat.
     Wenn die mbox groß ist, kann das viel Zeit in Anspruch nehmen. Weil
     es sich bei der Änderung meistens nur um eine neu angefügte Mail
     handelt, wäre es schneller, nur die neuen Mails zu lesen. Wenn
     diese Einstellung hier aktiviert ist, arbeitet Dovecot nach dem
     eben beschriebenen Prinzip, liest aber doch die ganze mbox-Datei
     neu ein, sobald es etwas nicht wie erwartet vorfindet. Der einzige
     wirkliche Nachteil bei dieser Einstellung ist, dass es Dovecot
     nicht sofort erkennt, wenn ein anderer MUA die Statusindikatoren
     („Flags“) ändert. Beachten Sie, dass eine komplette Synchronisation
     bei den Befehlen SELECT, EXAMINE, EXPUNGE und CHECK durchgeführt
     wird. Die Vorgabe ist ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mbox-very-dirty-syncs?
     Wie ‘mbox-dirty-syncs’, aber ohne dass komplette Synchronisationen
     selbst bei den Befehlen SELECT, EXAMINE, EXPUNGE oder CHECK
     durchgeführt werden. Wenn dies hier aktiviert ist, wird
     ‘mbox-dirty-syncs’ ignoriert. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mbox-lazy-writes?
     Ob das Schreiben von mbox-Kopfzeilen hinausgezögert wird, bis eine
     komplette Schreibsynchronisation durchgeführt wird (bei den
     Befehlen EXPUNGE und CHECK, und beim Schließen des Postfachs, d.h.
     der „Mailbox“). Das wird besonders nützlich, wenn Clients POP3
     verwenden, wo es oft vorkommt, dass die Clients alle Mails löschen.
     Der Nachteil ist, dass Dovecots Änderungen nicht sofort für andere
     MUAs sichtbar werden. Die Vorgabe ist ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          mbox-min-index-size
     Wenn die Größe des mbox-Postfaches kleiner als die angegebene Größe
     (z.B. 100k) ist, werden keine Index-Dateien geschrieben. Wenn
     bereits eine Index-Datei existiert, wird sie weiterhin gelesen und
     nur nicht aktualisiert. Die Vorgabe ist ‘0’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          mdbox-rotate-size
     Die maximale Größe der dbox-Datei, bis sie rotiert wird. Die
     Vorgabe ist ‘10000000’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          mdbox-rotate-interval
     Das maximale Alter der dbox-Datei, bis sie rotiert wird.
     Typischerweise wird es in Tagen angegeben. Der Tag beginnt um
     Mitternacht, also steht 1d für heute, 2d für gestern, etc. 0 heißt,
     die Überprüfung ist abgeschaltet. Die Vorgabe ist ‘"1d"’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          mdbox-preallocate-space?
     Ob beim Erstellen neuer mdbox-Postfachdateien gleich am Anfang eine
     Datei der Größe ‘mdbox-rotate-size’ vorab angelegt werden soll.
     Diese Einstellung funktioniert derzeit nur mit Linux auf manchen
     Dateisystemen (ext4, xfs). Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-attachment-dir
     Postfächer in den Formaten sdbox und mdbox unterstützen es,
     Mail-Anhänge in externen Dateien zu speichern, wodurch sie mit
     Einzelinstanz-Speicherung („Single-Instance Storage“) dedupliziert
     werden können. Andere Hintergrundsysteme („Backends“) bieten dafür
     noch keine Unterstützung.

     _Warnung_: Diese Funktionalität wurde noch nicht ausgiebig
     getestet. Benutzen Sie sie auf eigene Gefahr.

     Das Wurzelverzeichnis, in dem Mail-Anhänge gespeichert werden. Wenn
     es leer gelassen wird, ist es deaktiviert. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          mail-attachment-min-size
     Anhänge, die kleiner sind als hier angegeben, werden _nicht_ extern
     gespeichert. Es ist auch möglich, ein Plugin zu schreiben, das
     externes Speichern bestimmter Anhänge deaktiviert. Die Vorgabe ist
     ‘128000’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-attachment-fs
     Ein Dateisystemhintergrundprogramm, mit dem Anhänge gespeichert
     werden:
     ‘posix’
          Dovecot führt keine Einzelinstanzspeicherung durch (aber das
          Dateisystem kann so leichter selbst deduplizieren)
     ‘sis posix’
          Einzelinstanzspeicherung wird durch einen sofortigen
          Byte-für-Byte-Vergleich beim Speichern umgesetzt
     ‘sis-queue posix’
          Einzelinstanzspeicherung mit verzögertem Vergleich und
          Deduplizierung.
     Die Vorgabe ist ‘"sis posix"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette mail-attachment-hash
     Welches Hash-Format die Dateinamen von Anhängen bestimmt. Sie
     können beliebigen Text und Variable beifügen: ‘%{md4}’, ‘%{md5}’,
     ‘%{sha1}’, ‘%{sha256}’, ‘%{sha512}’, ‘%{size}’. Es können auch nur
     Teile der Variablen benutzt werden, z.B. liefert ‘%{sha256:80}’ nur
     die ersten 80 Bits. Die Vorgabe ist ‘"%{sha1}"’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          default-process-limit

     Die Vorgabe ist ‘100’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          default-client-limit

     Die Vorgabe ist ‘1000’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          default-vsz-limit
     Die vorgegebene Beschränkung der VSZ („Virtual Memory Size“,
     virtuelle Speichergröße) für Dienstprozesse. Dies ist hauptsächlich
     dafür gedacht, Prozessen, die ein Speicherleck aufweisen,
     rechtzeitig Einhalt zu gebieten und sie abzuwürgen, bevor sie allen
     Speicher aufbrauchen. Die Vorgabe ist ‘256000000’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette default-login-user
     Der Anmeldebenutzer, der intern von Anmeldeprozessen benutzt wird.
     Der Anmeldebenutzer ist derjenige Benutzer im Dovecot-System, dem
     am wenigsten Vertrauen zugeschrieben wird. Er sollte auf überhaupt
     nichts Zugriff haben. Die Vorgabe ist ‘"dovenull"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          default-internal-user
     Der interne Benutzer, der von Prozessen ohne besondere
     Berechtigungen benutzt wird. Er sollte sich vom Anmeldebenutzer
     unterscheiden, damit Anmeldeprozesse keine anderen Prozesse stören
     können. Die Vorgabe ist ‘"dovecot"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl?
     SSL/TLS-Unterstützung: yes für ja, no für nein, oder required, wenn
     SSL/TLS verpflichtend benutzt werden muss. Siehe
     <doc/wiki/SSL.txt>. Die Vorgabe ist ‘"required"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-cert
     Das PEM-kodierte X.509-SSL/TLS-Zertifikat (der öffentliche
     Schlüssel). Die Vorgabe ist ‘"</etc/dovecot/default.pem"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-key
     Der PEM-kodierte private Schlüssel für SSL/TLS. Der Schlüssel wird
     geöffnet, bevor Administratorrechte abgegeben werden, damit niemand
     außer dem Administratornutzer „root“ Lesezugriff auf die
     Schlüsseldatei hat. Die Vorgabe ist
     ‘"</etc/dovecot/private/default.pem"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-key-password
     Wenn die Schlüsseldatei passwortgeschützt ist, geben Sie hier das
     Passwort an. Alternativ können Sie es angeben, wenn sie Dovecot
     starten, indem Sie es mit dem Parameter -p übergeben. Da die
     Konfigurationsdatei oftmals allgemein lesbar ist, möchten Sie es
     vielleicht in einer anderen Datei ablegen. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-ca
     Die PEM-kodierte Zertifikatsautorität, die als vertrauenswürdig
     eingestuft wird. Legen Sie sie nur dann fest, wenn Sie
     ‘ssl-verify-client-cert? #t’ setzen möchten. Die Datei sollte das
     oder die Zertifikat(e) der Zertifikatsautorität („Certificate
     Authority“, kurz CA) enthalten, gefolgt von den entsprechenden
     Zertifikatsperrlisten (CRLs), z.B. ‘ssl-ca </etc/ssl/certs/ca.pem’.
     Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          ssl-require-crl?
     Ob die Prüfung der Client-Zertifikate gegen die
     Zertifikatsperrlisten (CRLs) erfolgreich sein muss. Die Vorgabe ist
     ‘#t’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          ssl-verify-client-cert?
     Ob der Client gebeten wird, ein Zertifikat zu schicken. Wenn Sie es
     auch verpflichtend machen wollen, setzen Sie
     ‘auth-ssl-require-client-cert? #t’ im Autorisierungsabschnitt. Die
     Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          ssl-cert-username-field
     Welches Feld im Zertifikat den Benutzernamen angibt. In der Regel
     wählt man den Gebräuchlichen Namen „commonName“ oder den
     Eindeutigen Identifikator „x500UniqueIdentifier“ als Benutzernamen,
     wenn man Client-Zertifikate benutzt. Sie müssen dann auch
     ‘auth-ssl-username-from-cert? #t’ setzen. Die Vorgabe ist
     ‘"commonName"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-min-protocol
     Die kleinste Version des SSL-Protokolls, die noch akzeptiert werden
     soll. Die Vorgabe ist ‘"TLSv1"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-cipher-list
     Welche SSL-Ciphers benutzt werden dürfen. Die Vorgabe ist
     ‘"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette ssl-crypto-device
     Das SSL-Verschlüsselungsgerät („Crypto Device“), das benutzt werden
     soll. Gültige Werte bekommen Sie gezeigt, wenn Sie „openssl engine“
     ausführen. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette postmaster-address
     An welche Adresse Mails versandt werden sollen, die über die
     Zurückweisung einer Mail informieren. %d wird zur Domain des
     Empfängers umgeschrieben. Die Vorgabe ist ‘"postmaster@%d"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette hostname
     Der Rechnername, der an mehreren Stellen in versandten E-Mails
     (z.B. im Nachrichtenidentifikator „Message-Id“) und in
     LMTP-Antworten benutzt wird. Die Voreinstellung entspricht dem
     wirklichen Rechnernamen des Systems. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          quota-full-tempfail?
     Ob bei einem Nutzer, der sein Kontingent überschreitet, ein
     temporärer Fehler gemeldet werden soll, statt Nachrichten zurück zu
     versenden (zu „bouncen“). Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Dateiname sendmail-path
     Welche Binärdatei zum Versenden von Mails benutzt werden soll. Die
     Vorgabe ist ‘"/usr/sbin/sendmail"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette submission-host
     Wenn dieses Feld nicht leer ist, werden Mails an den SMTP-Server
     auf dem angegebenen „Rechner[:Port]“ statt an sendmail geschickt.
     Die Vothabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette rejection-subject
     Die Betreffkopfzeile („Subject:“), die für Mails benutzt werden
     soll, die über die Zurückweisung einer Mail informieren. Sie können
     dieselben Variablen wie beim hierunter beschriebenen
     Zurückweisungsgrund ‘rejection-reason’ benutzen. Die Vorgabe ist
     ‘"Rejected: %s"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette rejection-reason
     Die menschenlesbare Fehlermeldung in Mails, die über die
     Zurückweisung einer Mail informieren. Sie können diese Variablen
     benutzen:

     ‘%n’
          CRLF-Zeilenumbruch
     ‘%r’
          Begründung („Reason“)
     ‘%s’
          Ursprünglicher Betreff („Subject“)
     ‘%t’
          Empfänger („To“)
     Die Vorgabe ist ‘"Your message to <%t> was automatically
     rejected:%n%r"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette recipient-delimiter
     Trennzeichen zwischen dem eigentlichen Lokalteil („local-part“) und
     Detailangaben in der E-Mail-Adresse. Die Vorgabe ist ‘"+"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          lda-original-recipient-header
     Aus welcher Kopfzeile die Adresse des Ursprünglichen Empfängers
     (SMTPs „RCPT TO:“-Adresse) genommen wird, wenn sie nicht
     anderweitig eingetragen ist. Wird die Befehlszeilenoption ‘-a’ von
     dovecot-lda angegeben, hat sie Vorrang vor diesem Feld. Oft wird
     die Kopfzeile X-Original-To hierfür verwendet. Die Vorgabe ist
     ‘""’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          lda-mailbox-autocreate?
     Ob ein nicht existierendes Postfach (eine „Mailbox“) automatisch
     erzeugt werden soll, wenn eine Mail darin abgespeichert wird. Die
     Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Boolescher-Ausdruck
          lda-mailbox-autosubscribe?
     Ob automatisch erzeugte Postfächer („Mailboxes“) auch automatisch
     abonniert werden sollen. Die Vorgabe ist ‘#f’.

 -- ‘dovecot-configuration’-Parameter: Nichtnegative-ganze-Zahl
          imap-max-line-length
     Die maximale Länge einer IMAP-Befehlszeile. Manche Clients erzeugen
     sehr lange Befehlszeilen bei riesigen Postfächern, daher müssen Sie
     diesen Wert gegebenenfalls anheben, wenn Sie Fehlermeldungen wie
     „Too long argument“ oder „IMAP command line too large“ häufig
     sehen. Die Vorgabe ist ‘64000’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette imap-logout-format
     Formatzeichenkette für das Abmelden bei IMAP:
     ‘%i’
          Gesamtzahl vom Client empfangener Bytes
     ‘%o’
          Gesamtzahl zum Client versandter Bytes
     Siehe ‘doc/wiki/Variables.txt’ für eine Liste aller Variablen, die
     Sie benutzen können. Die Vorgabe ist ‘"in=%i out=%o
     deleted=%{deleted} expunged=%{expunged} trashed=%{trashed}
     hdr_count=%{fetch_hdr_count} hdr_bytes=%{fetch_hdr_bytes}
     body_count=%{fetch_body_count} body_bytes=%{fetch_body_bytes}"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette imap-capability
     Ersetzt die Antworten auf IMAP-CAPABILITY-Anfragen. Wenn der Wert
     mit „+“ beginnt, werden die angegebenen Capabilitys zu den
     voreingestellten hinzugefügt (z.B. +XFOO XBAR). Die Vorgabe ist
     ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette
          imap-idle-notify-interval
     Wie lange zwischen „OK Still here“-Benachrichtigungen gewartet
     wird, wenn der Client auf IDLE steht. Die Vorgabe ist ‘"2 mins"’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette imap-id-send
     ID-Feldnamen und -werte, die an Clients versandt werden sollen.
     Wenn * als der Wert angegeben wird, benutzt Dovecot dafür den
     voreingestellten Wert. Die folgenden Felder verfügen derzeit über
     voreingestellte Werte: name, version, os, os-version, support-url,
     support-email. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette imap-id-log
     Welche vom Client übermittelten ID-Felder protokolliert werden. *
     bedeutet alle. Die Vorgabe ist ‘""’.

 -- ‘dovecot-configuration’-Parameter:
          Leerzeichengetrennte-Zeichenketten-Liste
          imap-client-workarounds
     Maßnahmen, um verschiedene Fehler in Clients zu umgehen:

     ‘delay-newmail’
          Benachrichtigungen über neue Mails mit EXISTS/RECENT nur als
          Antwort auf NOOP- und CHECK-Befehle versenden. Manche Clients
          ignorieren diese ansonsten, zum Beispiel OSX Mail (<v2.1).
          Outlook Express verhält sich noch problematischer, denn ohne
          diese Maßnahme können dem Anwender Fehlermeldungen wie „Die
          Nachricht steht nicht mehr auf dem Server zur Verfügung“
          („Message no longer in server“) angezeigt werden. Beachten
          Sie, dass OE6 auch mit dieser Maßnahme immer noch Probleme
          macht, wenn die Synchronisation auf „nur Kopfzeilen“ („Headers
          Only“) eingestellt ist.

     ‘tb-extra-mailbox-sep’
          Thunderbird kommt aus irgendeinem Grund durcheinander bei
          LAYOUT=fs (mbox und dbox) und fügt überzählige ‘/’-Suffixe an
          Postfachnamen („Mailbox“-Namen) an. Mit dieser Maßnahme
          ignoriert Dovecot zusätzliche ‘/’, statt sie als ungültige
          Postfachnamen zu behandeln.

     ‘tb-lsub-flags’
          Ob \Noselect-Flags für LSUB-Antworten mit LAYOUT=fs (z.B.
          mbox) geliefert werden. Dadurch merkt Thunderbird, dass man
          Postfächer nicht auswählen kann, und zeigt sie ausgegraut an,
          statt erst nach einiger Zeit eine Fehlermeldung einzublenden,
          sie seien nicht auswählbar.
     Die Vorgabe ist ‘()’.

 -- ‘dovecot-configuration’-Parameter: Zeichenkette imap-urlauth-host
     Welcher Rechner in vom Client übermittelten URLAUTH-URLs zugelassen
     wird. Bei „*“ wird jeder zugelassen. Die Vorgabe ist ‘""’.

   Uff! Das waren viele Konfigurationsoptionen. Das Schöne daran ist
aber, dass Guix eine vollständige Schnittstelle für alles bietet, was
man in Dovecots Konfigurationssprache ausdrücken kann. Damit können Sie
Konfigurationen nicht nur auf schöne Art aufschreiben, sondern kann auch
reflektiven Code schreiben, der Konfigurationen aus Scheme heraus
auslesen und umschreiben kann.

   Vielleicht haben Sie aber auch einfach schon eine ‘dovecot.conf’, die
Sie mit Guix zum Laufen bringen möchten. In diesem Fall können Sie eine
‘opaque-dovecot-configuration’ im ‘#:config’-Parameter an
‘dovecot-service’ übergeben. Wie der Name schon sagt, bietet eine opake
Konfiguration keinerlei Unterstützung für Reflexion.

   Verfügbare ‘opaque-dovecot-configuration’-Felder sind:

 -- ‘opaque-dovecot-configuration’-Parameter: „package“ dovecot
     Das Dovecot-Paket.

 -- ‘opaque-dovecot-configuration’-Parameter: Zeichenkette string
     Der Inhalt der ‘dovecot.conf’ als eine Zeichenkette.

   Wenn Ihre ‘dovecot.conf’ zum Beispiel nur aus der leeren Zeichenkette
bestünde, könnten Sie einen Dovecot-Dienst wie folgt instanziieren:

     (dovecot-service #:config
                      (opaque-dovecot-configuration
                       (string "")))

OpenSMTPD-Dienst
................

 -- Scheme-Variable: opensmtpd-service-type
     Dies ist der Diensttyp des OpenSMTPD-Dienstes
     (https://www.opensmtpd.org), dessen Wert ein
     ‘opensmtpd-configuration’-Objekt sein sollte, wie in diesem
     Beispiel:

          (service opensmtpd-service-type
                   (opensmtpd-configuration
                     (config-file (local-file "./my-smtpd.conf"))))

 -- Datentyp: opensmtpd-configuration
     Datentyp, der die Konfiguration von opensmtpd repräsentiert.

     ‘package’ (Vorgabe: OPENSMTPD)
          Das Paketobjekt des SMTP-Servers OpenSMTPD.

     ‘config-file’ (Vorgabe: ‘%default-opensmtpd-file’)
          Ein dateiartiges Objekt der OpenSMTPD-Konfigurationsdatei, die
          benutzt werden soll. Nach Vorgabe lauscht OpenSMTPD auf der
          Loopback-Netzwerkschnittstelle und ist so eingerichtet, dass
          Mail von Nutzern und Daemons auf der lokalen Maschine sowie
          E-Mails an entfernte Server versandt werden können. Führen Sie
          ‘man smtpd.conf’ aus, wenn Sie mehr erfahren möchten.

Exim-Dienst
...........

 -- Scheme-Variable: exim-service-type
     Dies ist der Diensttyp für den Mail Transfer Agent (MTA) namens
     Exim (https://exim.org), dessen Wert ein
     ‘exim-configuration’-Objekt sein sollte, wie in diesem Beispiel:

          (service exim-service-type
                   (exim-configuration
                     (config-file (local-file "./my-exim.conf"))))

   Um einen Dienst vom Typ ‘exim-service-type’ zu benutzen, müssen Sie
auch einen Dienst ‘mail-aliases-service-type’ in Ihrer
‘operating-system’-Deklaration stehen haben (selbst wenn darin keine
Alias-Namen eingerichtet sind).

 -- Datentyp: exim-configuration
     Der Datentyp, der die Konfiguration von Exim repräsentiert.

     ‘package’ (Vorgabe: EXIM)
          Das Paketobjekt des Exim-Servers.

     ‘config-file’ (Vorgabe: ‘#f’)
          Ein dateiartiges Objekt der Exim-Konfigurationsdatei. Wenn
          sein Wert ‘#f’ ist, wird die vorgegebene Konfigurationsdatei
          aus dem als ‘package’ angegebenen Paket benutzt. Die sich
          ergebende Konfigurationsdatei wird geladen, nachdem die
          Konfigurationsvariablen ‘exim_user’ und ‘exim_group’ gesetzt
          wurden.

Getmail-Dienst
..............

 -- Scheme-Variable: getmail-service-type
     Dies ist der Diensttyp des Mail-Retrievers Getmail
     (http://pyropus.ca/software/getmail/), der als Wert ein
     ‘getmail-configuration’-Objekt hat.

   Verfügbare ‘getmail-configuration’-Felder sind:

 -- ‘getmail-configuration’-Parameter: Zeichenkette name
     Ein Symbol, das den getmail-Dienst identifiziert.

     Die Vorgabe ist ‘"unset"’.

 -- ‘getmail-configuration’-Parameter: „package“ package
     Das getmail-Paket, das benutzt werden soll.

 -- ‘getmail-configuration’-Parameter: Zeichenkette user
     Das Benutzerkonto, mit dem getmail ausgeführt wird.

     Die Vorgabe ist ‘"getmail"’.

 -- ‘getmail-configuration’-Parameter: Zeichenkette group
     Die Benutzergruppe, mit der getmail ausgeführt wird.

     Die Vorgabe ist ‘"getmail"’.

 -- ‘getmail-configuration’-Parameter: Zeichenkette directory
     Welches getmail-Verzeichnis benutzt werden soll.

     Die Vorgabe ist ‘"/var/lib/getmail/default"’.

 -- ‘getmail-configuration’-Parameter: „getmail-configuration-file“
          rcfile
     Die zu benutzende getmail-Konfigurationsdatei.

     Verfügbare ‘getmail-configuration-file’-Felder sind:

      -- ‘getmail-configuration-file’-Parameter:
               „getmail-retriever-configuration“ retriever
          Von welchem E-Mail-Konto Mails bezogen werden sollen und wie
          auf dieses zugegriffen werden kann.

          Verfügbare ‘getmail-retriever-configuration’-Felder sind:

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    type
               Welche Art von Mail-Retriever benutzt werden soll. Zu den
               gültigen Werten gehören ‘passwd’ und ‘static’.

               Die Vorgabe ist ‘"SimpleIMAPSSLRetriever"’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    server
               Der Benutzername, mit dem man sich beim Mailserver
               anmeldet.

               Die Vorgabe ist ‘unset’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    username
               Der Benutzername, mit dem man sich beim Mailserver
               anmeldet.

               Die Vorgabe ist ‘unset’.

           -- ‘getmail-retriever-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl port
               Die Portnummer, mit der eine Verbindung hergestellt wird.

               Vorgegeben ist ‘#f’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    password
               Einträge, die Vorrang vor den Feldern aus passwd haben.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-retriever-configuration’-Parameter: Liste
                    password-command
               Einträge, die Vorrang vor den Feldern aus passwd haben.

               Die Vorgabe ist ‘()’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    keyfile
               Der Schlüssel im PEM-Format, der für das Aufbauen der
               TLS-Verbindung genutzt werden soll.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    certfile
               Die Zertifikatsdatei im PEM-Format, die für das Aufbauen
               der TLS-Verbindung genutzt werden soll.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-retriever-configuration’-Parameter: Zeichenkette
                    ca-certs
               Welche Zertifikate von Zertifikatsautoritäten („CA
               Certificates“) benutzt werden sollen.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-retriever-configuration’-Parameter:
                    Parameter-Assoziative-Liste extra-parameters
               Weitere Parameter für den Retriever.

               Die Vorgabe ist ‘()’.

      -- ‘getmail-configuration-file’-Parameter:
               „getmail-destination-configuration“ destination
          Was mit geholten Nachrichten geschehen soll.

          Verfügbare ‘getmail-destination-configuration’-Felder sind:

           -- ‘getmail-destination-configuration’-Parameter:
                    Zeichenkette type
               Die Art des Empfängers der Mail. Zu den gültigen Werten
               gehören ‘Maildir’, ‘Mboxrd’ und ‘MDA_external’.

               Die Vorgabe ist ‘unset’.

           -- ‘getmail-destination-configuration’-Parameter:
                    Zeichenkette-oder-Dateiartiges-Objekt path
               Entspricht der path-Option für den Mailempfänger
               („Destination“). Was hiermit bewirkt wird, hängt von der
               gewählten Empfängerart ab.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-destination-configuration’-Parameter:
                    Parameter-Assoziative-Liste extra-parameters
               Weitere Empfängerparameter.

               Die Vorgabe ist ‘()’.

      -- ‘getmail-configuration-file’-Parameter:
               „getmail-options-configuration“ options
          getmail konfigurieren.

          Verfügbare ‘getmail-options-configuration’-Felder sind:

           -- ‘getmail-options-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl verbose
               Wenn es auf ‘0’ gesetzt ist, wird getmail nur Warnungen
               und Fehler ausgeben. Ein Wert von ‘1’ bedeutet, dass
               Meldungen über das Holen und Löschen von Nachrichten
               ausgegeben werden. Wenn es auf ‘2’ gesetzt ist, wird
               getmail Meldungen über jede durchgeführte Aktion
               ausgeben.

               Die Vorgabe ist ‘1’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck read-all
               Wenn es auf wahr gesetzt ist, wird getmail alle
               verfügbaren Nachrichten holen. Andernfalls wird es nur
               solche Nachrichten holen, die es nicht bereits gesehen
               hat.

               Die Vorgabe ist ‘#t’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck delete
               Wenn es auf wahr gesetzt ist, werden Mitteilungen vom
               Server gelöscht, nachdem sie erfolgreich geholt und
               zugestellt wurden. Andernfalls werden Nachrichten auf dem
               Server gelassen.

               Vorgegeben ist ‘#f’.

           -- ‘getmail-options-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl delete-after
               Getmail wird nach der hier angegebenen Anzahl von Tagen
               Nachrichten löschen, die es gesehen hat, wenn sie
               zugestellt wurden. Dadurch werden Nachrichten diese
               Anzahl von Tagen lang auf dem Server gelassen, nachdem
               sie zugestellt wurden. Ein Wert von ‘0’ deaktiviert diese
               Funktionalität.

               Die Vorgabe ist ‘0’.

           -- ‘getmail-options-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl delete-bigger-than
               Nachrichten, die größer als die angegebene Anzahl von
               Bytes sind, nach dem Holen löschen, selbst wenn die
               Optionen delete und delete-after abgeschaltet sind. Ein
               Wert von ‘0’ deaktiviert diese Funktionalität.

               Die Vorgabe ist ‘0’.

           -- ‘getmail-options-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl max-bytes-per-session
               Nachrichten, die höchstens die angegebene Anzahl von
               Bytes groß sind, vor dem Beenden der Serversitzung von
               dort holen. Ein Wert von ‘0’ deaktiviert diese
               Funktionalität.

               Die Vorgabe ist ‘0’.

           -- ‘getmail-options-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl max-message-size
               _Keine_ Nachrichten holen, deren Größe die angegebene
               Anzahl von Bytes überschreitet. Ein Wert von ‘0’
               deaktiviert diese Funktionalität.

               Die Vorgabe ist ‘0’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck delivered-to
               Wenn dies auf wahr gesetzt ist, fügt getmail eine
               Delivered-To-Kopfzeile an die Nachrichten an.

               Die Vorgabe ist ‘#t’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck received
               Wenn dies gesetzt ist, fügt getmail eine
               Received-Kopfzeile an die Nachrichten an.

               Die Vorgabe ist ‘#t’.

           -- ‘getmail-options-configuration’-Parameter: Zeichenkette
                    message-log
               Getmail wird seine Aktionen in die genannte Datei
               protokollieren. Wenn als Wert ‘""’ angegeben wird, wird
               diese Funktionalität deaktiviert.

               Die Vorgabe ist ‘""’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck message-log-syslog
               Wenn es auf wahr gesetzt ist, wird getmail ein Protokoll
               seiner Aktionen an den Systemprotokolldienst übergeben.

               Vorgegeben ist ‘#f’.

           -- ‘getmail-options-configuration’-Parameter:
                    Boolescher-Ausdruck message-log-verbose
               Wenn dies auf wahr gesetzt ist, wird getmail
               Informationen über _nicht_ geholte Nachrichten und den
               jeweiligen Grund dafür sowie Anfang und Ende des
               Holvorgangs in Informationszeilen protokollieren.

               Vorgegeben ist ‘#f’.

           -- ‘getmail-options-configuration’-Parameter:
                    Parameter-Assoziative-Liste extra-parameters
               Weitere geltende Optionen.

               Die Vorgabe ist ‘()’.

 -- ‘getmail-configuration’-Parameter: Liste idle
     Eine Liste der Postfächer, für die getmail beim Server auf
     Benachrichtigungen wegen neuer Mails warten soll. Diese
     Funktionalität setzt voraus, dass der Server die IDLE-Erweiterung
     unterstützt.

     Die Vorgabe ist ‘()’.

 -- ‘getmail-configuration’-Parameter: Liste environment-variables
     Umgebungsvariable, die für getmail gelten sollen.

     Die Vorgabe ist ‘()’.

Dienst für Mail-Alias-Namen
...........................

 -- Scheme-Variable: mail-aliases-service-type
     Das ist der Typ des Dienstes, der ‘/etc/aliases’ zur Verfügung
     stellt, wo festgelegt wird, wie Mail-Nachrichten an Benutzer des
     Systems geliefert werden.

          (service mail-aliases-service-type
                   '(("postmaster" "bob")
                     ("bob" "bob@example.com" "bob@example2.com")))

   Die Konfiguration für einen Dienst vom Typ
‘mail-aliases-service-type’ ist eine assoziative Liste, die angibt, wie
beim System ankommende Mail-Nachrichten zuzustellen sind. Jeder Eintrag
hat die Form ‘(Alias Adressen ...)’, wobei das ‘Alias’ den lokalen
Alias-Namen angibt und ‘Adressen’ angibt, wo die Mail-Nachrichten für
diesen Benutzer ankommen sollen.

   Die Alias-Namen müssen nicht als Benutzerkonten auf dem lokalen
System existieren. Im Beispiel oben muss es also keinen Eintrag für
‘postmaster’ unter den ‘user-accounts’ in der
‘operating-system’-Deklaration geben, um die ‘postmaster’-Mails an ‘bob’
weiterzuleiten (von wo diese dann an ‘bob@example.com’ und
‘bob@example2.com’ weitergeschickt würden).

GNU-Mailutils-IMAP4-Daemon
..........................

 -- Scheme-Variable: imap4d-service-type
     Dies ist der Diensttyp für den IMAP4-Daemon aus den GNU Mailutils
     (siehe *note (mailutils)imap4d::), dessen Wert ein
     ‘imap4d-configuration’-Objekt sein sollte, wie in diesem Beispiel:

          (service imap4d-service-type
                   (imap4d-configuration
                     (config-file (local-file "imap4d.conf"))))

 -- Datentyp: imap4d-configuration
     Datentyp, der die Konfiguration von ‘imap4d’ repräsentiert.

     ‘package’ (Vorgabe: ‘mailutils’)
          Das Paket, das ‘imap4d’ zur Verfügung stellt.

     ‘config-file’ (Vorgabe: ‘%default-imap4d-config-file’)
          Dateiartiges Objekt der zu nutzenden Konfigurationsdatei. Nach
          Vorgabe lauscht IMAP4D auf TCP-Port 143 vom lokalen Rechner
          ‘localhost’. Siehe *note (mailutils)Conf-imap4d:: für Details.

Radicale-Dienst
...............

 -- Scheme-Variable: radicale-service-type
     Dies ist der Diensttyp des CalDAV- und CardDAV-Servers Radicale
     (https://radicale.org), der als Wert ein
     ‘radicale-configuration’-Objekt hat.

 -- Datentyp: radicale-configuration
     Datentyp, der die Konfiguration von ‘radicale’ repräsentiert.

     ‘package’ (Vorgabe: ‘radicale’)
          Das Paket, das ‘radicale’ zur Verfügung stellt.

     ‘config-file’ (Vorgabe: ‘%default-radicale-config-file’)
          Dateiartiges Objekt der zu nutzenden Konfigurationsdatei. Nach
          Vorgabe lauscht Radicale auf TCP-Port 5232 vom lokalen Rechner
          ‘localhost’ und benutzt die ‘htpasswd’-Datei unter
          ‘/var/lib/radicale/users’ mit Passwörtern im Klartext
          („plain“).


File: guix.de.info,  Node: Kurznachrichtendienste,  Next: Telefondienste,  Prev: Mail-Dienste,  Up: Dienste

10.8.12 Kurznachrichtendienste
------------------------------

Das Modul ‘(gnu services messaging)’ stellt Guix-Dienstdefinitionen für
Kurznachrichtendienste, d.h. „Instant Messaging“, zur Verfügung. Zurzeit
werden folgende Dienste unterstützt:

Prosody-Dienst
..............

 -- Scheme-Variable: prosody-service-type
     Dies ist der Diensttyp für den XMPP-Kommunikationsserver Prosody
     (https://prosody.im). Sein Wert muss ein
     ‘prosody-configuration’-Verbundsobjekt wie in diesem Beispiel sein:

          (service prosody-service-type
                   (prosody-configuration
                    (modules-enabled (cons* "groups" "mam" %default-modules-enabled))
                    (int-components
                     (list
                      (int-component-configuration
                       (hostname "conference.example.net")
                       (plugin "muc")
                       (mod-muc (mod-muc-configuration)))))
                    (virtualhosts
                     (list
                      (virtualhost-configuration
                       (domain "example.net"))))))

     Siehe im Folgenden Details über die ‘prosody-configuration’.

   Prosody kann mit den Vorgabeeinstellungen ohne viel weitere
Konfiguration benutzt werden. Nur ein ‘virtualhosts’-Feld wird
gebraucht: Es legt die Domain fest, um die sich Prosody kümmert.

   Sie können die Korrektheit der generierten Konfigurationsdatei
überprüfen, indem Sie den Befehl ‘prosodyctl check’ ausführen.

   Prosodyctl hilft auch dabei, Zertifikate aus dem
‘letsencrypt’-Verzeichnis zu importieren, so dass das
‘prosody’-Benutzerkonto auf sie Zugriff hat. Siehe
<https://prosody.im/doc/letsencrypt>.

     prosodyctl --root cert import /etc/letsencrypt/live

   Im Folgenden finden Sie die verfügbaren Konfigurationsparameter.
Jeder Parameterdefinition ist ihr Typ vorangestellt; zum Beispiel
bedeutet ‘Zeichenketten-Liste foo’, dass der Parameter ‘foo’ als Liste
von Zeichenketten angegeben werden sollte. Typangaben, die mit
‘Vielleicht-’ beginnen, stehen für Parameter, die in ‘prosody.cfg.lua’
nicht vorkommen, falls deren Wert als ‘'disabled’ („deaktiviert“)
angegeben wurde.

   Sie können die Konfiguration auch als eine Zeichenkette festlegen,
wenn Sie über eine alte ‘prosody.cfg.lua’-Datei verfügen, die Sie von
einem anderen System übernehmen möchten; siehe das Ende dieses
Abschnitts für Details.

   Der Typ ‘Dateiobjekt’ bezeichnet hierbei entweder ein dateiartiges
Objekt (siehe *note dateiartige Objekte: G-Ausdrücke.) oder einen
Dateinamen.

   Verfügbare ‘prosody-configuration’-Felder sind:

 -- ‘prosody-configuration’-Parameter: „package“ prosody
     Das Prosody-Paket.

 -- ‘prosody-configuration’-Parameter: Dateiname data-path
     Der Ort, wo sich Prosodys Verzeichnis zum Speichern von Daten
     befinden soll. Siehe <https://prosody.im/doc/configure>. Die
     Vorgabe ist ‘"/var/lib/prosody"’.

 -- ‘prosody-configuration’-Parameter: Dateiobjekt-Liste plugin-paths
     Zusätzliche Plugin-Verzeichnisse. Plugins werden der Reihe nach in
     allen festgelegten Pfaden gesucht. Siehe
     <https://prosody.im/doc/plugins_directory>. Die Vorgabe ist ‘()’.

 -- ‘prosody-configuration’-Parameter: Dateiname certificates
     Jeder virtuellte Rechner und jede Komponente braucht ein
     Zertifikat, mit dem Clients und Server ihre Identität sicher
     verifizieren können. Prosody lädt automatisch Zertifikate bzw.
     Schlüssel aus dem hier angegebenen Verzeichnis. Die Vorgabe ist
     ‘"/etc/prosody/certs"’.

 -- ‘prosody-configuration’-Parameter: Zeichenketten-Liste admins
     Dies ist eine Liste der Benutzerkonten, die auf diesem Server
     Administratoren sind. Beachten Sie, dass Sie die Benutzerkonten
     noch separat als Nutzer erzeugen lassen müssen. Siehe
     <https://prosody.im/doc/admins> and
     <https://prosody.im/doc/creating_accounts>. Ein Beispiel: ‘(admins
     '("user1@example.com" "user2@example.net"))’ Die Vorgabe ist ‘()’.

 -- ‘prosody-configuration’-Parameter: Boolescher-Ausdruck use-libevent?
     Die Nutzung von libevent aktivieren, damit bessere
     Leistungsfähigkeit auch unter hoher Last gewährleistet wird. Siehe
     <https://prosody.im/doc/libevent>. Die Vorgabe ist ‘#f’.

 -- ‘prosody-configuration’-Parameter: Modul-Liste modules-enabled
     Die Liste der Module, die Prosody beim Starten lädt. Es sucht nach
     ‘mod_modulename.lua’ im Plugin-Verzeichnis, also sollten Sie
     sicherstellen, dass es dort auch existiert. Dokumentation über
     Module können Sie hier finden: <https://prosody.im/doc/modules>.
     Die Vorgabe ist ‘("roster" "saslauth" "tls" "dialback" "disco"
     "carbons" "private" "blocklist" "vcard" "version" "uptime" "time"
     "ping" "pep" "register" "admin_adhoc")’.

 -- ‘prosody-configuration’-Parameter: Zeichenketten-Liste
          modules-disabled
     ‘"offline"’, ‘"c2s"’ und ‘"s2s"’ werden automatisch geladen, aber
     wenn Sie sie deaktivieren möchten, tragen Sie sie einfach in die
     Liste ein. Die Vorgabe ist ‘()’.

 -- ‘prosody-configuration’-Parameter: Dateiobjekt groups-file
     Der Pfad zu einer Textdatei, in der gemeinsame Gruppen definiert
     werden. Wenn dieser Pfad leer ist, dann tut ‘mod_groups’ nichts.
     Siehe <https://prosody.im/doc/modules/mod_groups>. Die Vorgabe ist
     ‘"/var/lib/prosody/sharedgroups.txt"’.

 -- ‘prosody-configuration’-Parameter: Boolescher-Ausdruck
          allow-registration?
     Ob nach Voreinstellung _keine_ neuen Benutzerkonten angelegt werden
     können, aus Sicherheitsgründen. Siehe
     <https://prosody.im/doc/creating_accounts>. Die Vorgabe ist ‘#f’.

 -- ‘prosody-configuration’-Parameter: Vielleicht-„ssl-configuration“
          ssl
     Dies ist der Teil der Einstellungen, der mit SSL/TLS zu tun hat.
     Der Großteil davon ist deaktiviert, damit die Voreinstellungen von
     Prosody verwendet werden. Wenn Sie diese Optionen hier nicht völlig
     verstehen, sollten Sie sie _nicht_ in Ihrer Konfiguration
     verwenden. Es passiert leicht, dass Sie die Sicherheit Ihres
     Servers absenken, indem Sie sie falsch benutzen. Siehe
     <https://prosody.im/doc/advanced_ssl_config>.

     Verfügbare ‘ssl-configuration’-Felder sind:

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenkette protocol
          Dadurch wird entschieden, was für ein Handshake benutzt wird.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Dateiname key
          Der Pfad zur Datei mit Ihrem privaten Schlüssel.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Dateiname certificate
          Der Pfad zur Datei mit Ihrem Zertifikat.

      -- ‘ssl-configuration’-Parameter: Dateiobjekt capath
          Der Pfad zum Verzeichnis, das die Wurzelzertifikate enthält,
          die Prosody zur Verifikation der Zertifikate entfernter Server
          benutzen soll. Die Vorgabe ist ‘"/etc/ssl/certs"’.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Dateiobjekt cafile
          Der Pfad zu einer Datei, in der Wurzelzertifikate enthalten
          sind, denen Prosody vertrauen soll. Er verhält sich ähnlich
          wie ‘capath’, aber alle Zertifikate stehen hintereinander in
          der Datei.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenketten-Liste
               verify
          Eine Liste von Verifikationsoptionen. (Die meisten bilden auf
          die ‘set_verify()’-Flags von OpenSSL ab.)

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenketten-Liste
               options
          Eine Liste allgemeiner Optionen, die mit SSL/TLS zu tun haben.
          Diese bilden auf OpenSSLs ‘set_options()’ ab. Eine
          vollständige Liste der in LuaSec verfügbaren Optionen finden
          Sie im Quellcode von LuaSec.

      -- ‘ssl-configuration’-Parameter:
               Vielleicht-Nichtnegative-ganze-Zahl depth
          Wie lange eine Kette von Zertifikatsautoritäten („Certificate
          Authorities“) nach einem passenden Wurzelzertifikat durchsucht
          wird, dem vertraut wird.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenkette ciphers
          Eine Zeichenkette mit OpenSSL-Ciphers. Damit wird ausgewählt,
          welche Ciphers Prosody seinen Clients anbietet, und in welcher
          Reihenfolge.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Dateiname dhparam
          Ein Pfad zu einer Datei, in der Parameter für
          Diffie-Hellman-Schlüsselaustausche stehen. Sie können so eine
          Datei mit diesem Befehl erzeugen: ‘openssl dhparam -out
          /etc/prosody/certs/dh-2048.pem 2048’

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenkette curve
          Die Kurve, die für Diffie-Hellman mit elliptischen Kurven
          verwendet werden soll. Prosodys Voreinstellung ist
          ‘"secp384r1"’.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenketten-Liste
               verifyext
          Eine Liste von zusätzlichen Verifikationsoptionen.

      -- ‘ssl-configuration’-Parameter: Vielleicht-Zeichenkette password
          Das Passwort fÜr verschlüsselte private Schlüssel.

 -- ‘prosody-configuration’-Parameter: Boolescher-Ausdruck
          c2s-require-encryption?
     Ob alle Verbindungen von Client zu Server zwangsweise verschlüsselt
     sein müssen. Siehe <https://prosody.im/doc/modules/mod_tls>. Die
     Vorgabe ist ‘#f’.

 -- ‘prosody-configuration’-Parameter: Zeichenketten-Liste
          disable-sasl-mechanisms
     Welche Mechanismen angeboten werden. Siehe
     <https://prosody.im/doc/modules/mod_saslauth>. Die Vorgabe ist
     ‘("DIGEST-MD5")’.

 -- ‘prosody-configuration’-Parameter: Boolescher-Ausdruck
          s2s-require-encryption?
     Ob alle Verbindungen von Server zu Server zwangsweise verschlüsselt
     sein müssen. Siehe <https://prosody.im/doc/modules/mod_tls>. Die
     Vorgabe ist ‘#f’.

 -- ‘prosody-configuration’-Parameter: Boolescher-Ausdruck
          s2s-secure-auth?
     Ob Verschlüsselung und Zertifikatsauthentifizierung verpflichtend
     durchgeführt werden müssen. Das bietet das ideale Maß an
     Sicherheit, jedoch müssen dann auch die Server, mit denen Sie
     kommunizieren, Verschlüsselung unterstützen _und_ gültige
     Zertifikate vorweisen, denen Sie auch vertrauen. Siehe
     <https://prosody.im/doc/s2s#security>. Die Vorgabe ist ‘#f’.

 -- ‘prosody-configuration’-Parameter: Zeichenketten-Liste
          s2s-insecure-domains
     Viele Server bieten keine Unterstützung für Verschlüsselung oder
     ihre Zertifikate sind ungültig oder selbstsigniert. Hier können Sie
     Domains eintragen, die von der Pflicht zur Authentisierung mit
     Zertifikaten ausgenommen werden. Diese werden dann über DNS
     authentifiziert. Siehe <https://prosody.im/doc/s2s#security>. Die
     Vorgabe ist ‘()’.

 -- ‘prosody-configuration’-Parameter: Zeichenketten-Liste
          s2s-secure-domains
     Selbst wenn Sie ‘s2s-secure-auth?’ deaktiviert lassen, können Sie
     noch immer gültige Zertifikate bei manchen Domains verlangen, indem
     Sie diese hier auflisten. Siehe
     <https://prosody.im/doc/s2s#security>. Die Vorgabe ist ‘()’.

 -- ‘prosody-configuration’-Parameter: Zeichenkette authentication
     Wählen Sie aus, welcher Hintergrunddienst („Provider“) zur
     Authentifizierung benutzt werden soll. Das vorgegebene System
     speichert Passwörter im Klartext ab und benutzt dafür den in
     Prosody eingestellten Datenspeicher, um Authentifizierungsdaten zu
     speichern. Wenn Sie Ihrem Server kein Vertrauen entgegenbringen,
     siehe <https://prosody.im/doc/modules/mod_auth_internal_hashed> für
     Informationen, wie Sie den gehashten Hintergrunddienst benutzen.
     Siehe auch <https://prosody.im/doc/authentication>. Die Vorgabe ist
     ‘"internal_plain"’.

 -- ‘prosody-configuration’-Parameter: Vielleicht-Zeichenkette log
     Hiermit werden die Protokollierungsoptionen festgelegt.
     Fortgeschrittene Protokollierungskonfigurationen werden vom
     Prosody-Dienst noch nicht unterstützt. Siehe
     <https://prosody.im/doc/logging>. Die Vorgabe ist ‘"*syslog"’.

 -- ‘prosody-configuration’-Parameter: Dateiname pidfile
     Die Datei, in der Prosodys Prozessidentifikator („PID“) abgelegt
     wird. Siehe <https://prosody.im/doc/modules/mod_posix>. Die Vorgabe
     ist ‘"/var/run/prosody/prosody.pid"’.

 -- ‘prosody-configuration’-Parameter:
          Vielleicht-Nichtnegative-ganze-Zahl http-max-content-size
     Die maximal zulässige Größe des HTTP-Rumpfs (in Bytes).

 -- ‘prosody-configuration’-Parameter: Vielleicht-Zeichenkette
          http-external-url
     Manche Module machen auf verschiedene Arten ihre eigene URL
     verfügbar. Diese URL setzt sich aus dem benutzten Protokoll,
     Rechnernamen und Port zusammen. Wenn Prosody hinter einem Proxy
     ausgeführt wird, ist die öffentliche URL stattdessen die
     ‘http-external-url’. Siehe
     <https://prosody.im/doc/http#external_url>.

 -- ‘prosody-configuration’-Parameter: „virtualhost-configuration“-Liste
          virtualhosts
     Der Name eines Rechners („Host“) in Prosody bezeichnet eine Domain,
     auf der Benutzerkonten angelegt werden können. Wenn Sie zum
     Beispiel möchten, dass Nutzer Adressen haben wie
     ‘"john.smith@example.com"’, dann müssen Sie einen Rechnernamen
     ‘"example.com"’ hinzufügen. Alle Optionen in dieser Liste gelten
     nur für diesen Rechnernamen.

     Beachten Sie: Die Bezeichnung _virtueller_ Rechnername wird in der
     Konfiguration verwendet, damit es nicht zu Verwechslungen mit dem
     tatsächlichen physischen Rechner kommt, auf dem Prosody installiert
     ist. Eine einzelne Prosody-Instanz kann mehrere Domains bedienen,
     jede definiert mit ihrem eigenen VirtualHost-Eintrag in der
     Konfiguration von Prosody. Im Gegensatz dazu hätte ein Server, der
     nur eine Domain anbietet, nur einen einzigen VirtualHost-Eintrag.

     Siehe <https://prosody.im/doc/configure#virtual_host_settings>.

     Verfügbare ‘virtualhost-configuration’-Felder sind:

     Alle folgenden Felder, wie sie auch die ‘prosody-configuration’
     hat: ‘admins’, ‘use-libevent?’, ‘modules-enabled’,
     ‘modules-disabled’, ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     und außerdem:
      -- ‘virtualhost-configuration’-Parameter: Zeichenkette domain
          Die Domain, auf der man Prosody erreichen soll.

 -- ‘prosody-configuration’-Parameter:
          „int-component-configuration“-Liste int-components
     Komponenten sind zusätzliche Dienste auf einem Server, die Clients
     zur Verfügung stehen. Sie sind normalerweise auf einer Subdomain
     des Hauptservers verfügbar (wie zum Beispiel
     ‘"mycomponent.example.com"’). Beispiele für Komponenten könnten
     Server für Chaträume, Benutzerverzeichnisse oder Zugänge
     („Gateways“) zu anderen Protokollen sein.

     Interne Komponenten werden über Prosody-spezifische Plugins
     implementiert. Um eine interne Komponente hinzuzufügen, tragen Sie
     einfach das ‘hostname’-Feld für den Rechnernamen und die Plugins
     ein, die Sie für die Komponente benutzen möchten.

     Siehe <https://prosody.im/doc/components>. Die Vorgabe ist ‘()’.

     Verfügbare ‘int-component-configuration’-Felder sind:

     Alle folgenden Felder, wie sie auch die ‘prosody-configuration’
     hat: ‘admins’, ‘use-libevent?’, ‘modules-enabled’,
     ‘modules-disabled’, ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     und außerdem:
      -- ‘int-component-configuration’-Parameter: Zeichenkette hostname
          Der Rechnername für diese Komponente.

      -- ‘int-component-configuration’-Parameter: Zeichenkette plugin
          Das Plugin, das Sie für diese Komponente benutzen möchten.

      -- ‘int-component-configuration’-Parameter:
               Vielleicht-„mod-muc-configuration“ mod-muc
          Multi-User Chat (MUC) ist der Name von Prosodys Modul, womit
          Sie Chaträume/Konferenzen für XMPP-Benutzer anbieten lassen
          können.

          Allgemeine Informationen über das Einrichten und Benutzen von
          Multi-User-Chaträumen können Sie in der Dokumentation über
          Chaträume finden (<https://prosody.im/doc/chatrooms>), die Sie
          lesen sollten, wenn Ihnen XMPP-Chaträume neu sind.

          Siehe auch <https://prosody.im/doc/modules/mod_muc>.

          Verfügbare ‘mod-muc-configuration’-Felder sind:

           -- ‘mod-muc-configuration’-Parameter: Zeichenkette name
               Der Name, der in Antworten auf die Diensteermittlung
               benutzt. Die Vorgabe ist ‘"Prosody Chatrooms"’.

           -- ‘mod-muc-configuration’-Parameter:
                    Zeichenkette-oder-Boolescher-Ausdruck
                    restrict-room-creation
               Für ‘#t’ können nur Administratoren neue Chaträume
               anlegen. Andernfalls kann jeder einen Raum anlegen. Der
               Wert ‘"local"’ schränkt das Anlegen neuer Räume auf
               solche Nutzer ein, die zur Eltern-Domain des Dienstes
               gehören. Z.B. kann ‘user@example.com’ Räume auf
               ‘rooms.example.com’ anlegen. Für den Wert ‘"admin"’
               können nur Dienstadministratoren Chaträume anlegen. Die
               Vorgabe ist ‘#f’.

           -- ‘mod-muc-configuration’-Parameter:
                    Nichtnegative-ganze-Zahl max-history-messages
               Die Maximalzahl der Nachrichten aus dem Chat-Verlauf, die
               an ein Mitglied nachversandt werden, das gerade erst dem
               Raum beigetreten ist. Die Vorgabe ist ‘20’.

 -- ‘prosody-configuration’-Parameter:
          „ext-component-configuration“-Liste ext-components
     Externe Komponenten benutzen XEP-0114, das von den meisten
     eigenständigen Komponenten unterstützt wird. Um eine externe
     Komponente hinzuzufügen, tragen Sie einfach den Rechnernamen ins
     ‘hostname’-Feld ein. Siehe <https://prosody.im/doc/components>. Die
     Vorgabe ist ‘()’.

     Verfügbare ‘ext-component-configuration’-Felder sind:

     Alle folgenden Felder, wie sie auch die ‘prosody-configuration’
     hat: ‘admins’, ‘use-libevent?’, ‘modules-enabled’,
     ‘modules-disabled’, ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     und außerdem:
      -- ‘ext-component-configuration’-Parameter: Zeichenkette
               component-secret
          Das Passwort, das die Komponente für die Anmeldung benutzt.

      -- ‘ext-component-configuration’-Parameter: Zeichenkette hostname
          Der Rechnername für diese Komponente.

 -- ‘prosody-configuration’-Parameter: Nichtnegative-ganze-Zahl-Liste
          component-ports
     Der/Die Port(s), wo Prosody auf Verbindungen zu Komponenten
     lauscht. Die Vorgabe ist ‘(5347)’.

 -- ‘prosody-configuration’-Parameter: Zeichenkette component-interface
     Die Schnittstelle, auf der Prosody auf Verbindungen zu Komponenten
     lauscht. Die Vorgabe ist ‘"127.0.0.1"’.

 -- ‘prosody-configuration’-Parameter: Vielleicht-Roher-Inhalt
          raw-content
     „Roher Inhalt“, der so, wie er ist, an die Konfigurationsdatei
     angefügt wird.

   Möglicherweise möchten Sie einfach nur eine bestehende
‘prosody.cfg.lua’ zum Laufen bringen. In diesem Fall können Sie ein
‘opaque-prosody-configuration’-Verbundsobjekt als der Wert des
‘prosody-service-type’ übergeben. Wie der Name schon sagt, bietet eine
opake Konfiguration keinerlei Unterstützung für Reflexion. Verfügbare
‘opaque-prosody-configuration’-Felder sind:

 -- ‘opaque-prosody-configuration’-Parameter: „package“ prosody
     Das Prosody-Paket.

 -- ‘opaque-prosody-configuration’-Parameter: Zeichenkette
          prosody.cfg.lua
     Der Inhalt, der als ‘prosody.cfg.lua’ benutzt werden soll.

   Wenn Ihre ‘prosody.cfg.lua’ zum Beispiel nur aus der leeren
Zeichenkette bestünde, könnten Sie einen Prosody-Dienst wie folgt
instanziieren:

     (service prosody-service-type
              (opaque-prosody-configuration
               (prosody.cfg.lua "")))

BitlBee-Dienst
..............

BitlBee (https://bitlbee.org) ist ein Zugang („Gateway“), der eine
IRC-Schnittstelle für verschiedene Kurznachrichtenprotokolle wie XMPP
verfügbar macht.

 -- Scheme-Variable: bitlbee-service-type
     Dies ist der Diensttyp für den BitlBee-IRC-Zugangsdaemon
     (https://bitlbee.org) (englisch „IRC Gateway Daemon“). Sein Wert
     ist eine ‘bitlbee-configuration’ (siehe unten).

     Damit BitlBee auf Port 6667 vom lokalen Rechner („localhost“)
     lauscht, fügen Sie diese Zeile zu Ihrem „services“-Feld hinzu:

          (service bitlbee-service-type)

 -- Datentyp: bitlbee-configuration
     Dies ist die Konfiguration für BitlBee. Sie hat folgende Felder:

     ‘interface’ (Vorgabe: ‘"127.0.0.1"’)
     ‘port’ (Vorgabe: ‘6667’)
          Lauscht auf der Netzwerkschnittstelle, die der als INTERFACE
          angegebenen IP-Adresse entspricht, auf dem angegebenen PORT.

          Wenn als INTERFACE ‘127.0.0.1’ angegeben wurde, können sich
          nur lokale Clients verbinden; bei ‘0.0.0.0’ können die
          Verbindungen von jeder Netzwerkschnittstelle aus hergestellt
          werden.

     ‘bitlbee’ (Vorgabe: ‘bitlbee’)
          Das zu benutzende BitlBee-Paket.

     ‘plugins’ (Vorgabe: ‘'()’)
          Die Liste zu verwendender Plugin-Pakete — z.B.
          ‘bitlbee-discord’.

     ‘extra-settings’ (Vorgabe: ‘""’)
          Ein Konfigurationsschnipsel, das wortwörtlich in die
          BitlBee-Konfigurationsdatei eingefügt wird.

Quassel-Dienst
..............

Quassel (https://quassel-irc.org/) ist ein verteilter IRC-Client, was
bedeutet, dass sich ein oder mehr Clients mit dem zentralen Kern
verbinden und die Verbindung wieder trennen können.

 -- Scheme-Variable: quassel-service-type
     Dies ist der Diensttyp für den Daemon zum IRC-Hintergrundsystem
     („Backend“) Quassel (https://quassel-irc.org/). Sein Wert ist eine
     ‘quassel-configuration’ (siehe unten).

 -- Datentyp: quassel-configuration
     Die Konfiguration für Quassel mit den folgenden Feldern:

     ‘quassel’ (Vorgabe: ‘quassel’)
          Das zu verwendende Quassel-Paket.

     ‘interface’ (Vorgabe: ‘"::,0.0.0.0"’)
     ‘port’ (Vorgabe: ‘4242’)
          Lauscht auf der/den Netzwerkschnittstelle(n), die den in der
          kommagetrennten INTERFACE-Liste festgelegten IPv4- oder
          IPv6-Schnittstellen entsprechen, auf dem angegebenen PORT.

     ‘loglevel’ (Vorgabe: ‘"Info"’)
          Die gewünschte Detailstufe der Protokollierung. Akzeptiert
          werden die Werte Debug (ausführlich zur Fehlersuche), Info,
          Warning (nur Warnungen und Fehler) und Error (nur Fehler).


File: guix.de.info,  Node: Telefondienste,  Next: Dateientauschdienste,  Prev: Kurznachrichtendienste,  Up: Dienste

10.8.13 Telefondienste
----------------------

Dieser Abschnitt beschreibt, wie Sie einen Murmur-Server einrichten und
ausführen. Murmur ist der Server zur Internettelefonie-Suite Mumble
(https://mumble.info) für „Voice over IP“ (VoIP).

 -- Datentyp: murmur-configuration
     Der Diensttyp für den Murmur-Server. Eine Beispielkonfiguration
     kann so aussehen:

          (service murmur-service-type
                   (murmur-configuration
                    (welcome-text
                      "Willkommen zu diesem mit Guix betriebenen Mumble-Server!")
                    (cert-required? #t) ;Anmeldungen mit Textpasswort deaktivieren
                    (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
                    (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))

     Nachdem Sie Ihr System rekonfiguriert haben, können Sie das
     Passwort des Murmur-Administratornutzers ‘SuperUser’ mit Hilfe des
     Befehls von Hand festlegen, der Ihnen in Murmurs Aktivierungsphase
     angezeigt wird.

     Es wird empfohlen, ein normales Mumble-Benutzerkonto zu
     registrieren und mit Administrator- oder Moderatorrechten
     auszustatten. Sie können auch das Clientprogramm ‘mumble’ benutzen,
     um sich als neuer normaler Benutzer anzumelden und zu registrieren,
     und sich dann abmelden. Im nächsten Schritt melden Sie sich mit dem
     Benutzernamen ‘SuperUser’ mit dem vorher festgelegten
     ‘SuperUser’-Passwort an und statten Ihren registrierten
     Mumble-Benutzer mit Administrator- oder Moderatorrechten aus oder
     erzeugen ein paar Kanäle.

     Verfügbare ‘murmur-configuration’-Felder sind:

     ‘package’ (Vorgabe: ‘mumble’)
          Das Paket, das ‘bin/murmurd’ enthält.

     ‘user’ (Vorgabe: ‘"murmur"’)
          Der Benutzer, der den Murmur-Server ausführt.

     ‘group’ (Vorgabe: ‘"murmur"’)
          Die Gruppe des Benutzers, der den Murmur-Server ausführt.

     ‘port’ (Vorgabe: ‘64738’)
          Der Port, auf dem der Server lauschen wird.

     ‘welcome-text’ (Vorgabe: ‘""’)
          Der Willkommenstext, der an Clients geschickt wird, sobald sie
          eine Verbindung aufgebaut haben.

     ‘server-password’ (Vorgabe: ‘""’)
          Das Passwort, das Clients eingeben müssen, um sich verbinden
          zu können.

     ‘max-users’ (Vorgabe: ‘100’)
          Die Maximalzahl von Nutzern, die gleichzeitig mit dem Server
          verbunden sein können.

     ‘max-user-bandwidth’ (Vorgabe: ‘#f’)
          Wie viele Stimmdaten ein Benutzer pro Sekunde versenden kann.

     ‘database-file’ (Vorgabe: ‘"/var/lib/murmur/db.sqlite"’)
          Der Dateiname der SQLite-Datenbank. Das Benutzerkonto für den
          Dienst wird Besitzer des Verzeichnisses.

     ‘log-file’ (Vorgabe: ‘"/var/log/murmur/murmur.log"’)
          Der Dateiname der Protokolldatei. Das Benutzerkonto für den
          Dienst wird Besitzer des Verzeichnisses.

     ‘autoban-attempts’ (Vorgabe: ‘10’)
          Wie oft sich ein Benutzer innerhalb des in ‘autoban-timeframe’
          angegebenen Zeitrahmens verbinden kann, ohne automatisch für
          die in ‘autoban-time’ angegebene Zeit vom Server verbannt zu
          werden.

     ‘autoban-timeframe’ (Vorgabe: ‘120’)
          Der Zeitrahmen für automatisches Bannen in Sekunden.

     ‘autoban-time’ (Vorgabe: ‘300’)
          Wie lange in Sekunden ein Client gebannt wird, wenn er die
          Autobann-Beschränkungen überschreitet.

     ‘opus-threshold’ (Vorgabe: ‘100’)
          Der Prozentanteil der Clients, die Opus unterstützen müssen,
          bevor der Opus-Audiocodec verwendet wird.

     ‘channel-nesting-limit’ (Vorgabe: ‘10’)
          Wie tief Kanäle höchstens ineinander verschachtelt sein
          können.

     ‘channelname-regex’ (Vorgabe: ‘#f’)
          Eine Zeichenkette in Form eines regulären Ausdrucks von Qt, zu
          dem Kanalnamen passen müssen.

     ‘username-regex’ (Vorgabe: ‘#f’)
          Eine Zeichenkette in Form eines regulären Ausdrucks von Qt, zu
          dem Nutzernamen passen müssen.

     ‘text-message-length’ (Vorgabe: ‘5000’)
          Wie viele Bytes ein Benutzer höchstens in einer
          Textchatnachricht verschicken kann.

     ‘image-message-length’ (Vorgabe: ‘(* 128 1024)’)
          Wie viele Bytes ein Benutzer höchstens in einer Bildnachricht
          verschicken kann.

     ‘cert-required?’ (Vorgabe: ‘#f’)
          Falls dies auf ‘#t’ gesetzt ist, werden Clients abgelehnt, die
          sich bloß mit Passwörtern authentisieren. Benutzer müssen den
          Zertifikatsassistenten abgeschlossen haben, bevor sie sich
          verbinden können.

     ‘remember-channel?’ (Vorgabe: ‘#f’)
          Ob sich Murmur für jeden Nutzer den Kanal merken soll, auf dem
          er sich zuletzt befunden hat, als er die Verbindung getrennt
          hat, so dass er wieder auf dem gemerkten Kanal landet, wenn er
          dem Server wieder beitritt.

     ‘allow-html?’ (Vorgabe: ‘#f’)
          Ob HTML in Textnachrichten, Nutzerkommentaren und
          Kanalbeschreibungen zugelassen wird.

     ‘allow-ping?’ (Vorgabe: ‘#f’)
          Wenn es auf wahr gesetzt ist, wird an nicht angemeldete
          Anwender die momentane Benutzerzahl, die maximale Benutzerzahl
          und die maximale Bandbreite pro Benutzer übermittelt. Im
          Mumble-Client werden diese Informationen im Verbinden-Dialog
          angezeigt.

          Wenn diese Einstellung deaktiviert ist, wird der Server nicht
          in der öffentlichen Serverliste aufgeführt.

     ‘bonjour?’ (Vorgabe: ‘#f’)
          Ob der Server im lokalen Netzwerk anderen über das
          Bonjour-Protokoll mitgeteilt werden soll.

     ‘send-version?’ (Vorgabe: ‘#f’)
          Ob die Murmur-Serverversion Clients gegenüber in Ping-Anfragen
          mitgeteilt werden soll.

     ‘log-days’ (Vorgabe: ‘31’)
          Murmur führt in der Datenbank Protokolle, auf die über
          entfernte Prozeduraufrufe („Remote Procedure Calls“, kurz RPC)
          zugegriffen werden kann. Nach Vorgabe bleiben diese 31 Tage
          lang erhalten, aber sie können diese Einstellung auf 0 setzen,
          damit sie ewig gespeichert werden, oder auf -1, um _keine_
          Protokolle in die Datenbank zu schreiben.

     ‘obfuscate-ips?’ (Vorgabe: ‘#t’)
          Ob IP-Adressen in Protokollen anonymisiert werden sollen, um
          die Privatsphäre von Nutzern zu schützen.

     ‘ssl-cert’ (Vorgabe: ‘#f’)
          Der Dateiname des SSL-/TLS-Zertifikats, das für verschlüsselte
          Verbindungen benutzt werden soll.

               (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
     ‘ssl-key’ (Vorgabe: ‘#f’)
          Dateipfad zum privaten Schlüssel für SSL, was für
          verschlüsselte Verbindungen benutzt wird.
               (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")

     ‘ssl-dh-params’ (Vorgabe: ‘#f’)
          Dateiname einer PEM-kodierten Datei mit
          Diffie-Hellman-Parametern für die SSL-/TLS-Verschlüsselung.
          Alternativ setzen Sie ihn auf ‘"@ffdhe2048"’, ‘"@ffdhe3072"’,
          ‘"@ffdhe4096"’, ‘"@ffdhe6144"’ oder ‘"@ffdhe8192"’, wodurch
          die mitgelieferten Parameter aus RFC 7919 genutzt werden.

     ‘ssl-ciphers’ (Vorgabe: ‘#f’)
          Die Option ‘ssl-ciphers’ wählt aus, welche Cipher-Suites zur
          Verwendung in SSL/TLS verfügbar sein sollen.

          Diese Option wird in der OpenSSL-Notation für Cipher-Listen
          (https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT)
          angegeben.

          Es wird empfohlen, dass Sie Ihre Cipher-Zeichenkette mit
          „openssl ciphers <Zeichenkette>“ prüfen, bevor Sie sie hier
          einsetzen, um ein Gefühl dafür zu bekommen, was für eine
          Cipher-Suite sie damit bekommen. Nachdem Sie diese Option
          festgelegt haben, wird empfohlen, dass Sie Ihr
          Murmur-Protokoll durchsehen und sicherstellen, dass Murmur
          auch wirklich die Cipher-Suites benutzt, die Sie erwarten.

          Beachten Sie: Änderungen hieran können die
          Rückwärtskompatibilität Ihres Murmur-Servers beeinträchtigen;
          dadurch kann es für ältere Mumblie-Clients unmöglich werden,
          sich damit zu verbinden.

     ‘public-registration’ (Vorgabe: ‘#f’)
          Hier muss ein
          ‘<murmur-public-registration-configuration>’-Verbundsobjekt
          oder ‘#f’ angegeben werden.

          Sie können Ihren Server optional in die öffentliche
          Serverliste eintragen lassen, die der Mumble-Client ‘mumble’
          beim Start anzeigt. Sie können Ihren Server nicht
          registrieren, wenn Sie ein ‘server-password’ festgelegt oder
          ‘allow-ping’ auf ‘#f’ gesetzt haben.

          Es könnte ein paar Stunden dauern, bis er in der öffentlichen
          Liste zu finden ist.

     ‘file’ (Vorgabe: ‘#f’)
          Optional kann hier eine vorrangig benutzte alternative
          Konfiguration festgelegt werden.

 -- Datentyp: murmur-public-registration-configuration
     Konfiguration für das öffentliche Registrieren eines
     Murmur-Dienstes.

     ‘name’
          Dies ist ein Anzeigename für Ihren Server. Er ist nicht zu
          verwechseln mit dem Rechnernamen („Hostname“).

     ‘password’
          Ein Passwort, um Ihre Registrierung zu identifizieren.
          Nachfolgende Aktualisierungen müssen dasselbe Passwort
          benutzen. Verlieren Sie Ihr Passwort nicht.

     ‘url’
          Dies sollte ein Link mit ‘http://’ oder ‘https://’ auf Ihren
          Webauftritt sein.

     ‘hostname’ (Vorgabe: ‘#f’)
          Nach Vorgabe wird Ihr Server über seine IP-Adresse aufgeführt.
          Wenn dies gesetzt ist, wird er stattdessen mit diesem
          Rechnernamen verknüpft.


File: guix.de.info,  Node: Dateientauschdienste,  Next: Systemüberwachungsdienste,  Prev: Telefondienste,  Up: Dienste

10.8.14 Dateientauschdienste
----------------------------

Im Modul ‘(gnu services file-sharing)’ werden Dienste bereitgestellt,
die beim Übertragen von Dateien zwischen Netzwerkteilnehmern
untereinander helfen („peer-to-peer“).

Transmission-Daemon-Dienst
..........................

Transmission (https://transmissionbt.com/) ist ein vielseitiger
BitTorrent-Client, der eine Vielzahl grafischer und
befehlszeilenbasierter Benutzeroberflächen bereitstellt. Ein Dienst vom
Typ ‘transmission-daemon-service-type’ macht die Variante für die
Nutzung ohne Oberfläche zugänglich, nämlich ‘transmission-daemon’, als
ein Systemdienst, mit dem Benutzer Dateien über BitTorrent teilen
können, selbst wenn sie gerade nicht angemeldet sind.

 -- Scheme-Variable: transmission-daemon-service-type
     Der Diensttyp für den BitTorrent-Client „Transmission Daemon“. Sein
     Wert muss ein ‘transmission-daemon-configuration’-Verbundsobjekt
     wie in diesem Beispiel sein:

          (service transmission-daemon-service-type
                   (transmission-daemon-configuration
                    ;; Zugriff auf die Steuerungsschnittstelle über
                    ;; entfernte Prozeduraufrufe (Remote Procedure Calls)
                    (rpc-authentication-required? #t)
                    (rpc-username "transmission")
                    (rpc-password
                     (transmission-password-hash
                      "transmission" ; gewünschtes Passwort
                      "uKd1uMs9"))   ; beliebiges „Salt“

                    ;; Anfragen von diesem Rechner und Rechnern im
                    ;; lokalen Netzwerk erlauben
                    (rpc-whitelist-enabled? #t)
                    (rpc-whitelist '("::1" "127.0.0.1" "192.168.0.*"))

                    ;; Während der Arbeitszeit die Bandbreite begrenzen
                    (alt-speed-down (* 1024 2)) ;   2 MB/s
                    (alt-speed-up 512)          ; 512 kB/s

                    (alt-speed-time-enabled? #t)
                    (alt-speed-time-day 'weekdays)
                    (alt-speed-time-begin
                     (+ (* 60 8) 30))           ; 8:30 morgens
                    (alt-speed-time-end
                     (+ (* 60 (+ 12 5)) 30))))  ; 5:30 nachmittags / abends

   Sobald der Dienst gestartet wurde, können Benutzer mit dem Daemon
über seine Webschnittstelle interagieren (auf ‘http://localhost:9091/’)
oder indem sie das Werkzeug ‘transmission-remote’ auf der Befehlszeile
aufrufen. Es ist Teil des Pakets ‘transmission’. (Emacs-Nutzer möchten
vielleicht einen Blick auf das Paket ‘emacs-transmission’ werfen.) Beide
kommunizieren mit dem Daemon über seine Schnittstelle für entfernte
Prozeduraufrufe (Remote Procedure Calls, RPC), was nach Vorgabe jedem
Nutzer auf dem System zur Verfügung steht. Sie könnten das ändern
wollen, indem Sie die Einstellungen ‘rpc-authentication-required?’,
‘rpc-username’ und ‘rpc-password’ anpassen, wie oben gezeigt und im
Folgenden beschrieben.

   Als Wert für ‘rpc-password’ muss ein Passwort in der Art angegeben
werden, die Transmission-Clients erzeugen und nutzen. Sie können es aus
einer bestehenden Datei ‘settings.json’ exakt kopieren, wenn bereits ein
anderer Transmission-Client benutzt wurde. Andernfalls können Sie mit
den Prozeduren ‘transmission-password-hash’ und
‘transmission-random-salt’ aus diesem Modul einen geeigneten Hash-Wert
bestimmen.

 -- Scheme-Prozedur: transmission-password-hash PASSWORT SALT
     Liefert eine Zeichenkette mit dem Hash von PASSWORT zusammen mit
     dem SALT in dem Format, das Clients für Transmission für deren
     ‘rpc-password’-Einstellung erkennen.

     Das SALT muss eine acht Zeichen lange Zeichenkette sein. Die
     Prozedur ‘transmission-random-salt’ kann benutzt werden, um einen
     geeigneten Salt-Wert zufällig zu erzeugen.

 -- Scheme-Prozedur: transmission-random-salt
     Liefert eine Zeichenkette mit einem zufälligen, acht Zeichen langen
     Salt-Wert von der Art, wie sie Clients für Transmission erzeugen
     und benutzen. Sie ist dafür geeignet, an die Prozedur
     ‘transmission-password-hash’ übergeben zu werden.

   Diese Prozeduren sind aus einer über den Befehl ‘guix repl’
gestarteten Guile-REPL heraus zugänglich (siehe *note Aufruf von guix
repl::). Sie eignen sich dafür, einen zufälligen Salt-Wert zu bekommen,
der als der zweite Parameter an „transmission-password-hash“ übergeben
werden kann. Zum Beispiel:

     $ guix repl
     scheme@(guix-user)> ,use (gnu services file-sharing)
     scheme@(guix-user)> (transmission-random-salt)
     $1 = "uKd1uMs9"

   Alternativ kann ein vollständiger Passwort-Hash in einem einzigen
Schritt erzeugt werden:

     scheme@(guix-user)> (transmission-password-hash "transmission"
     (transmission-random-salt))
     $2 = "{c8bbc6d1740cd8dc819a6e25563b67812c1c19c9VtFPfdsX"

   Die sich ergebende Zeichenkette kann so, wie sie ist, als der Wert
von ‘rpc-password’ eingesetzt werden. Dadurch kann das Passwort geheim
gehalten werden, selbst in einer Betriebssystemkonfiguration.

   Vom Daemon heruntergeladene Torrent-Dateien sind nur für die Benutzer
in der Benutzergruppe „transmission“ direkt zugänglich. Sie haben auf
das in der Einstellung ‘download-dir’ angegebene Verzeichnis nur
Lesezugriff (und auf das in ‘incomplete-dir’ angegebene Verzeichnis,
sofern ‘incomplete-dir-enabled?’ auf ‘#t’ gesetzt ist). Heruntergeladene
Dateien können in beliebige Verzeichnisse verschoben oder ganz gelöscht
werden, indem Sie ‘transmission-remote’ mit den Befehlszeilenoptionen
‘--move’ zum Verschieben und ‘--remove-and-delete’ zum Löschen benutzen.

   Wenn die Einstellung ‘watch-dir-enabled?’ auf ‘#t’ gesetzt ist, haben
die Benutzer in der Gruppe „transmission“ auch die Möglichkeit,
‘.torrent’-Dateien in dem über ‘watch-dir’ angegebenen Verzeichnis zu
platzieren. Dadurch fügt der Daemon die entsprechenden Torrents hinzu.
(Mit der Einstellung ‘trash-original-torrent-files?’ wird festgelegt, ob
der Daemon diese Dateien löschen soll, wenn er mit ihnen fertig ist.)

   Manche der Einstellungen des Daemons können zeitweilig über
‘transmission-remote’ und ähnliche Werkzeuge geändert werden. Sie können
solche Änderungen rückgängig machen, indem Sie die ‘reload’-Aktion des
Dienstes aufrufen. Dann lädt der Daemon seine Einstellungen neu von der
Platte:

     # herd reload transmission-daemon

   Die vollständige Menge der Einstellmöglichkeiten finden Sie in der
Definition des Datentyps ‘transmission-daemon-configuration’.

 -- Datentyp: transmission-daemon-configuration
     Dieser Datentyp repräsentiert die Einstellungen für den
     Transmission-Daemon. Sie entsprechen direkt den Einstellungen, die
     Clients für Transmission aus deren Datei ‘settings.json’ erkennen
     können.

   Verfügbare ‘transmission-daemon-configuration’-Felder sind:

 -- ‘transmission-daemon-configuration’-Parameter: „package“
          transmission
     Das Transmission-Paket, das benutzt werden soll.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl stop-wait-period
     Wie viele Sekunden gewartet werden soll, wenn der Dienst für
     ‘transmission-daemon’ gestoppt wird, bis dieser sich beendet, bevor
     sein Prozess zwangsweise abgewürgt wird. Dadurch wird dem Daemon
     etwas Zeit gegeben, seine Daten in Ordnung zu bringen und seinen
     Trackern ein letztes Mal Bescheid zu geben, wenn er herunterfährt.
     Auf langsamen Rechnern oder Rechnern mit einer langsamen
     Netzwerkanbindung könnte es besser sein, diesen Wert zu erhöhen.

     Die Vorgabe ist ‘10’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenkette
          download-dir
     Das Verzeichnis, wohin Torrent-Dateien heruntergeladen werden.

     Die Vorgabe ist ‘"/var/lib/transmission-daemon/downloads"’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          incomplete-dir-enabled?
     Wenn es ‘#t’ ist, werden Dateien in ‘incomplete-dir’
     zwischengespeichert, während ihr Torrent heruntergeladen wird, und
     nach Abschluss des Torrents nach ‘download-dir’ verschoben.
     Andernfalls werden Dateien für alle Torrents gleich in
     ‘download-dir’ gespeichert (einschließlich derer, bei denen das
     Herunterladen noch im Gange ist).

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Zeichenkette incomplete-dir
     In welchem Verzeichnis die Dateien bei noch nicht abgeschlossenem
     Herunterladen zwischengespeichert werden, falls
     ‘incomplete-dir-enabled?’ auf ‘#t’ gesetzt ist.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: umask umask
     Die Dateimodusmaske, mit der heruntergeladene Dateien erzeugt
     werden. (Siehe die Handbuchseite von ‘umask’ für mehr
     Informationen.)

     Die Vorgabe ist ‘18’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          rename-partial-files?
     Wenn es ‘#t’ ist, wird an die Namen teilweise heruntergeladener
     Dateien „.part“ angehängt.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Zuweisungsmodus
          preallocation
     Auf welche Art vorab Speicher für heruntergeladene Dateien
     zugewiesen werden soll. Entweder ‘none’ (gar nicht), ‘fast’
     (schnell) bzw. gleichbedeutend ‘sparse’ (dünnbesetzt/kompakt) oder
     ‘full’ (gänzlich). Bei ‘full’ fragmentiert die Platte am wenigsten,
     aber es dauert länger, die Datei zu erzeugen.

     Vorgegeben ist ‘fast’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          watch-dir-enabled?
     Ist es ‘#t’, wird das in ‘watch-dir’ angegebene Verzeichnis
     beobachtet, ob dort neue ‘.torrent’-Dateien eingefügt werden. Die
     darin beschriebenen Torrents werden automatisch hinzugefügt (und
     die ursprünglichen Dateien werden entfernt, wenn
     ‘trash-original-torrent-files?’ auf ‘#t’ steht).

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Zeichenkette watch-dir
     Welches Verzeichnis beobachtet wird, ob dort neue
     ‘.torrent’-Dateien eingefügt werden, die neu hinzuzufügende
     Torrents anzeigen, falls ‘watch-dir-enabled’ auf ‘#t’ steht.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          trash-original-torrent-files?
     Wenn es ‘#t’ ist, werden ‘.torrent’-Dateien aus dem beobachteten
     Verzeichnis gelöscht, sobald ihr Torrent hinzugefügt worden ist
     (siehe ‘watch-directory-enabled?’).

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          speed-limit-down-enabled?
     Wenn es ‘#t’ ist, wird die Geschwindigkeit beim Herunterladen durch
     den Daemon durch die in ‘speed-limit-down’ angegebene Rate
     beschränkt.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl speed-limit-down
     Die standardmäßige globale Höchstgeschwindigkeit für das
     Herunterladen, in Kilobyte pro Sekunde.

     Die Vorgabe ist ‘100’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          speed-limit-up-enabled?
     Wenn es ‘#t’ ist, wird die Geschwindigkeit des Daemons beim
     Hochladen durch die in ‘speed-limit-up’ eingestellte Rate
     beschränkt.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl speed-limit-up
     Die standardmäßige globale Höchstgeschwindigkeit für das Hochladen,
     in Kilobyte pro Sekunde.

     Die Vorgabe ist ‘100’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          alt-speed-enabled?
     Wenn es ‘#t’ ist, gelten die alternativen Höchstgeschwindigkeiten
     ‘alt-speed-down’ und ‘alt-speed-up’ (statt ‘speed-limit-down’ und
     ‘speed-limit-up’, wenn sie aktiviert sind), um die
     Bandbreitennutzung des Daemons einzuschränken. Sie können einen
     Plan festlegen, zu welchen Zeiten in der Woche sie automatisch
     aktiviert werden; siehe ‘alt-speed-time-enabled?’.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl alt-speed-down
     Die alternative globale Höchstgeschwindigkeit für das
     Herunterladen, in Kilobyte pro Sekunde.

     Die Vorgabe ist ‘50’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl alt-speed-up
     Die alternative globale Höchstgeschwindigkeit für das Hochladen, in
     Kilobyte pro Sekunde.

     Die Vorgabe ist ‘50’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          alt-speed-time-enabled?
     Wenn es ‘#t’ ist, werden die alternativen Höchstgeschwindigkeiten
     ‘alt-speed-down’ und ‘alt-speed-up’ automatisch während bestimmter
     Zeitperioden aktiviert, entsprechend der Einstellungen für
     ‘alt-speed-time-day’, ‘alt-speed-time-begin’ und
     ‘alt-speed-time-end’.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter: Tage-Liste
          alt-speed-time-day
     An welchen Wochentagen die alternative
     Höchstgeschwindigkeitsplanung benutzt werden soll. Anzugeben ist
     entweder eine Liste der englischen Namen der Wochentage (‘sunday’,
     ‘monday’ und so weiter) oder eines der Symbole ‘weekdays’ (unter
     der Woche), ‘weekends’ (an Wochenenden) oder ‘all’.

     Die Vorgabe ist ‘all’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl alt-speed-time-begin
     Zu welcher Uhrzeit die alternativen Höchstgeschwindigkeiten in
     Kraft treten, als Anzahl der Minuten seit Mitternacht.

     Die Vorgabe ist ‘540’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl alt-speed-time-end
     Ab welcher Uhrzeit die alternativen Höchstgeschwindigkeiten nicht
     mehr gelten, als Anzahl der Minuten seit Mitternacht.

     Die Vorgabe ist ‘1020’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenkette
          bind-address-ipv4
     Auf welcher IP-Adresse auf Verbindungen von anderen
     Netzwerkteilnehmern (Peers) gelauscht wird. Benutzen Sie
     „‘0.0.0.0’“, wenn auf allen verfügbaren IP-Adressen gelauscht
     werden soll.

     Die Vorgabe ist ‘"0.0.0.0"’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenkette
          bind-address-ipv6
     Auf welcher IPv6-Adresse auf Verbindungen von anderen
     Netzwerkteilnehmern (Peers) gelauscht wird. Benutzen Sie „‘::’“,
     wenn auf allen verfügbaren IPv6-Adressen gelauscht werden soll.

     Die Vorgabe ist ‘"::"’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          peer-port-random-on-start?
     Wenn es ‘#t’ ist, wählt der Daemon bei seinem Start einen Port mit
     zufälliger Portnummer, auf dem er auf Verbindungen durch andere
     Netzwerkteilnehmer lauscht. Die Nummer liegt zwischen
     (einschließlich) den Angaben in ‘peer-port-random-low’ und
     ‘peer-port-random-high’. Ansonsten wird er auf dem in ‘peer-port’
     angegebenen Port lauschen.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter: Portnummer
          peer-port-random-low
     Die niedrigste Portnummer, die ausgewählt werden kann, wenn
     ‘peer-port-random-on-start?’ auf ‘#t’ steht.

     Die Vorgabe ist ‘49152’.

 -- ‘transmission-daemon-configuration’-Parameter: Portnummer
          peer-port-random-high
     Die höchste Portnummer, die ausgewählt werden kann, wenn
     ‘peer-port-random-on-start?’ auf ‘#t’ steht.

     Die Vorgabe ist ‘65535’.

 -- ‘transmission-daemon-configuration’-Parameter: Portnummer peer-port
     Auf welchem Port auf Verbindungsversuche anderer Netzwerkteilnehmer
     gelauscht wird, wenn ‘peer-port-random-on-start?’ auf ‘#f’ steht.

     Die Vorgabe ist ‘51413’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          port-forwarding-enabled?
     Wenn es ‘#t’ ist, wird der Daemon versuchen, eine Weiterleitung
     benötigter Ports beim Internetzugang (Gateway), an dem der Rechner
     angeschlossen ist, automatisch über UPnP und NAT-PMP einzurichten.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Verschlüsselungsmodus
          encryption
     Ob Verbindungen zu anderen Netzwerkteilnehmern (Peers)
     verschlüsselt werden sollen; entweder
     ‘prefer-unencrypted-connections’ (unverschlüsselte Verbindungen
     bevorzugen), ‘prefer-encrypted-connections’ (verschlüsselte
     Verbindungen bevorzugen) oder ‘require-encrypted-connections’ (nur
     verschlüsselte Verbindungen benutzen).

     Die Vorgabe ist ‘prefer-encrypted-connections’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Zeichenkette peer-congestion-algorithm
     Der Algorithmus zur TCP-Staukontrolle, der für Verbindungen zu
     anderen Netzwerkteilnehmern (Peers) verwendet werden soll.
     Anzugeben ist eine Zeichenkette, die das Betriebssystem für Aufrufe
     an ‘setsockopt’ zulässt (oder ‘disabled’, damit die Voreinstellung
     des Betriebssystems angewandt wird).

     Es ist anzumerken, dass der Kernel auf GNU/Linux-Systemen so
     konfiguriert werden muss, dass Prozesse zur Nutzung eines nicht
     standardmäßigen Algorithmus zur Staukontrolle berechtigt sind,
     andernfalls wird er solche Anfragen mit „Die Operation ist nicht
     erlaubt“ ablehnen. Um die auf Ihrem System verfügbaren und zur
     Nutzung freigegebenen Algorithmen zu sehen, schauen Sie sich den
     Inhalt der Dateien ‘tcp_available_congestion_control’ und
     ‘tcp_allowed_congestion_control’ im Verzeichnis
     ‘/proc/sys/net/ipv4’ an.

     Wenn Sie zum Beispiel den Transmission-Daemon zusammen mit dem
     TCP-LP-Algorithmus (http://www-ece.rice.edu/networks/TCP-LP/) („TCP
     Low Priority“) zur Staukontrolle benutzen möchten, müssen Sie Ihre
     Kernelkonfiguration anpassen, damit Unterstützung für den
     Algorithmus eingebaut wird. Anschließend müssen Sie Ihre
     Betriebssystemkonfiguration anpassen, um dessen Nutzung zu
     erlauben, indem Sie einen Dienst des Typs ‘sysctl-service-type’
     hinzufügen (bzw. die Konfiguration des bestehenden Dienstes
     anpassen). Fügen Sie Zeilen ähnlich der folgenden hinzu:

          (service sysctl-service-type
                   (sysctl-configuration
                    (settings
                     ("net.ipv4.tcp_allowed_congestion_control" .
                      "reno cubic lp"))))

     Dann können Sie die Konfiguration des Transmission-Daemons
     aktualisieren zu

          (peer-congestion-algorithm "lp")

     und das System rekonfigurieren, damit die Änderungen in Kraft
     treten.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: TCP-Type-Of-Service
          peer-socket-tos
     Welcher Type-Of-Service in ausgehenden TCP-Paketen angefragt werden
     soll; entweder ‘default’, ‘low-cost’, ‘throughput’, ‘low-delay’
     oder ‘reliability’.

     Die Vorgabe ist ‘default’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl peer-limit-global
     Die globale Höchstgrenze für die Anzahl verbundener
     Netzwerkteilnehmer (Peers).

     Die Vorgabe ist ‘200’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl peer-limit-per-torrent
     Die Höchstgrenze pro Torrent für die Anzahl verbundener
     Netzwerkteilnehmer (Peers).

     Die Vorgabe ist ‘50’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl upload-slots-per-torrent
     An wie viele Netzwerkteilnehmer der Daemon höchstens für denselben
     Torrent gleichzeitig Daten hochlädt.

     Die Vorgabe ist ‘14’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl peer-id-ttl-hours
     Wie viele Stunden die jedem öffentlichen Torrent zugewiesene
     Peer-ID höchstens benutzt wird, bevor sie neu erzeugt wird.

     Die Vorgabe ist ‘6’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          blocklist-enabled?
     Wenn es ‘#t’ ist, wird der Daemon in der Sperrliste vorkommende
     Netzwerkteilnehmer ignorieren. Die Sperrliste lädt er von der
     ‘blocklist-url’ herunter.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Zeichenkette blocklist-url
     Die URL zu einer Filterliste zu sperrender Netzwerkteilnehmer
     (Peers) im P2P-Plaintext-Format oder im eMule-‘.dat’-Format. Sie
     wird regelmäßig neu heruntergeladen und angewandt, wenn
     ‘blocklist-enabled?’ auf ‘#t’ gesetzt ist.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          download-queue-enabled?
     Wenn es ‘#t’ ist, wird der Daemon höchstens ‘download-queue-size’
     _nicht_ stillstehende Torrents gleichzeitig herunterladen.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl download-queue-size
     Die Größe der Warteschlange herunterzuladender Torrents. Sie ist
     die Höchstzahl _nicht_ stillstehender Torrents, die gleichzeitig
     heruntergeladen werden, wenn ‘download-queue-enabled?’ auf ‘#t’
     gesetzt ist.

     Die Vorgabe ist ‘5’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          seed-queue-enabled?
     Wenn es ‘#t’ ist, wird der Daemon höchstens ‘seed-queue-size’
     _nicht_ stillstehende Torrents gleichzeitig verteilen („seeden“).

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl seed-queue-size
     Die Größe der Warteschlange zu verteilender Torrents. Sie ist die
     Höchstzahl _nicht_ stillstehender Torrents, die gleichzeitig
     verteilt werden, wenn ‘seed-queue-enabled?’ auf ‘#t’ gesetzt ist.

     Die Vorgabe ist ‘10’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          queue-stalled-enabled?
     Wenn es ‘#t’ ist, wird der Daemon solche Torrents als stillstehend
     erachten, für die er in den letzten ‘queue-stalled-minutes’ Minuten
     _keine_ Daten geteilt hat, und diese bei Beachtung der
     Beschränkungen in ‘download-queue-size’ und ‘seed-queue-size’
     _nicht_ berücksichtigen.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl queue-stalled-minutes
     Für wie viele Minuten ein Torrent höchstens inaktiv sein darf,
     bevor er als stillstehend gilt, sofern ‘queue-stalled-enabled?’ auf
     ‘#t’ steht.

     Die Vorgabe ist ‘30’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          ratio-limit-enabled?
     Wenn es ‘#t’ ist, werden Torrents, die verteilt („geseedet“)
     werden, automatisch pausiert, sobald das in ‘ratio-limit’
     festgelegte Verhältnis erreicht ist.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-rationale-Zahl ratio-limit
     Das Verhältnis, ab dem ein Torrent, der verteilt wird, pausiert
     wird, wenn ‘ratio-limit-enabled?’ auf ‘#t’ gesetzt ist.

     Die Vorgabe ist ‘2.0’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          idle-seeding-limit-enabled?
     Wenn es ‘#t’ ist, werden Torrents, die verteilt werden, automatisch
     pausiert, sobald sie für ‘idle-seeding-limit’ Minuten inaktiv
     waren.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl idle-seeding-limit
     Wie viele Minuten ein Torrent, der verteilt wird, höchstens inaktiv
     sein darf, bevor er pausiert wird, wenn
     ‘idle-seeding-limit-enabled?’ auf ‘#t’ gesetzt ist.

     Die Vorgabe ist ‘30’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          dht-enabled?
     Das DHT-Protokoll (http://bittorrent.org/beps/bep_0005.html) zum
     Einsatz einer verteilten Hashtabelle (Distributed Hash Table, DHT)
     zur Unterstützung trackerloser Torrents aktivieren.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          lpd-enabled?
     Local Peer Discovery
     (https://en.wikipedia.org/wiki/Local_Peer_Discovery) (LPD)
     aktivieren, d.h. Netzwerkteilnehmer im lokalen Netz werden
     ermittelt, wodurch vielleicht weniger Daten über das öffentliche
     Internet gesendet werden müssen.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          pex-enabled?
     Peer Exchange (https://en.wikipedia.org/wiki/Peer_exchange) (PEX)
     aktivieren, wodurch der Daemon weniger von externen Trackern
     abhängt und vielleicht schneller ist.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          utp-enabled?
     Das Mikro-Transport-Protokoll
     (http://bittorrent.org/beps/bep_0029.html) (uTP) aktivieren, damit
     BitTorrent-Datenverkehr andere Netzwerknutzungen im lokalen
     Netzwerk weniger beeinträchtigt, die verfügbare Bandbreite aber
     möglichst voll ausgeschöpft wird.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          rpc-enabled?
     Wenn es ‘#t’ ist, wird die Fernsteuerung des Daemons über die
     Schnittstelle entfernter Prozeduraufrufe (Remote Procedure Call,
     RPC) zugelassen. Dadurch kann man ihn über seine Weboberfläche,
     über den Befehlszeilen-Client ‘transmission-remote’ oder über
     ähnliche Werkzeuge steuern.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenkette
          rpc-bind-address
     Auf welcher IP-Adresse auf RPC-Verbindungen gelauscht wird.
     Benutzen Sie „‘0.0.0.0’“, wenn auf allen verfügbaren IP-Adressen
     gelauscht werden soll.

     Die Vorgabe ist ‘"0.0.0.0"’.

 -- ‘transmission-daemon-configuration’-Parameter: Portnummer rpc-port
     Auf welchem Port auf RPC-Verbindungen gelauscht werden soll.

     Die Vorgabe ist ‘9091’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenkette rpc-url
     Das Präfix für die Pfade in den URLs des RPC-Endpunkts.

     Die Vorgabe ist ‘"/transmission/"’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          rpc-authentication-required?
     Wenn es ‘#t’ ist, müssen sich Clients bei der RPC-Schnittstelle
     authentifizieren (siehe ‘rpc-username’ und ‘rpc-password’).
     Anzumerken ist, dass dann die Liste erlaubter Rechnernamen
     ignoriert wird (siehe ‘rpc-host-whitelist-enabled?’.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Zeichenkette rpc-username
     Welchen Benutzernamen Clients verwenden müssen, um über die
     RPC-Schnittstelle zugreifen zu dürfen, wenn
     ‘rpc-authentication-required?’ auf ‘#t’ gesetzt ist.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Transmissionpasswort-Hash rpc-password
     Welches Passwort Clients brauchen, um über die RPC-Schnittstelle
     zugreifen zu dürfen, wenn ‘rpc-authentication-required?’ auf ‘#t’
     gesetzt ist. Es muss als Passwort-Hash im von Transmission-Clients
     erkannten Format angegeben werden. Kopieren Sie es entweder aus
     einer bestehenden ‘settings.json’-Datei oder lassen Sie es mit der
     Prozedur ‘transmission-password-hash’ erzeugen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          rpc-whitelist-enabled?
     Wenn es ‘#t’ ist, werden RPC-Anfragen nur dann akzeptiert, wenn sie
     von einer in ‘rpc-whitelist’ angegebenen Adresse kommen.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenketten-Liste
          rpc-whitelist
     Die Liste der IP- und IPv6-Adressen, von denen RPC-Anfragen
     angenommen werden, wenn ‘rpc-whitelist-enabled?’ auf ‘#t’ gesetzt
     ist. Hierbei kann ‘*’ als Platzhalter verwendet werden.

     Die Vorgabe ist ‘("127.0.0.1" "::1")’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          rpc-host-whitelist-enabled?
     Wenn es ‘#t’ ist, werden RPC-Anfragen nur dann angenommen, wenn sie
     an einen Rechnernamen aus der Liste ‘rpc-host-whitelist’ adressiert
     sind. Allerdings werden Anfragen an „localhost“ oder „localhost.“
     oder eine numerische Adresse immer angenommen, egal was hier
     eingestellt ist.

     Anzumerken ist, dass diese Funktionalität ignoriert wird, wenn
     ‘rpc-authentication-required?’ auf ‘#t’ gesetzt ist.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Zeichenketten-Liste
          rpc-host-whitelist
     Die Liste der Rechnernamen, auf die der RPC-Server reagiert, wenn
     ‘rpc-host-whitelist-enabled?’ auf ‘#t’ gesetzt ist.

     Die Vorgabe ist ‘()’.

 -- ‘transmission-daemon-configuration’-Parameter: Meldungsstufe
          message-level
     Ab welcher Schwerestufe der Daemon Meldungen ins Protokoll (in
     ‘/var/log/transmission.log’) aufnimmt, entweder ‘none’ (gar nicht),
     ‘error’ (nur Fehler), ‘info’ oder ‘debug’.

     Die Vorgabe ist ‘info’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          start-added-torrents?
     Wenn es ‘#t’ ist, werden Torrents gestartet, sobald sie hinzugefügt
     wurden, ansonsten sind sie nach dem Hinzufügen im pausierten
     Zustand.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          script-torrent-done-enabled?
     Wenn es ‘#t’ ist, wird immer dann, wenn ein Torrent abgeschlossen
     wurde, das durch ‘script-torrent-done-filename’ angegebene Skript
     aufgerufen.

     Vorgegeben ist ‘#f’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Vielleicht-Dateiobjekt script-torrent-done-filename
     Ein Dateiname oder ein dateiartiges Objekt eines Skripts, das nach
     Abschluss eines Torrents aufgerufen werden soll, wenn
     ‘script-torrent-done-enabled?’ auf ‘#t’ gesetzt ist.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          scrape-paused-torrents-enabled?
     Wenn es ‘#t’ ist, wird der Daemon selbst dann auf Trackern nach
     einem Torrent suchen, wenn der Torrent pausiert ist.

     Die Vorgabe ist ‘#t’.

 -- ‘transmission-daemon-configuration’-Parameter:
          Nichtnegative-ganze-Zahl cache-size-mb
     Wie viele Megabyte Speicher für den im Arbeitsspeicher liegenden
     Zwischenspeicher des Daemons reserviert werden sollen. Ein größerer
     Wert kann eine höhere Leistung bedeuten, indem weniger oft auf die
     Platte zugegriffen werden muss.

     Die Vorgabe ist ‘4’.

 -- ‘transmission-daemon-configuration’-Parameter: Boolescher-Ausdruck
          prefetch-enabled?
     Wenn es ‘#t’ ist, wird der Daemon versuchen, die
     Ein-/Ausgabeleistung zu verbessern, indem er dem Betriebssystem
     Hinweise gibt, auf welche Daten er wahrscheinlich als Nächstes
     zugreift, um den Anfragen anderer Netzwerkteilnehmer nachzukommen.

     Die Vorgabe ist ‘#t’.


File: guix.de.info,  Node: Systemüberwachungsdienste,  Next: Kerberos-Dienste,  Prev: Dateientauschdienste,  Up: Dienste

10.8.15 Systemüberwachungsdienste
---------------------------------

Tailon-Dienst
.............

Tailon (https://tailon.readthedocs.io/) ist eine Web-Anwendung, um
Protokolldateien zu betrachten und zu durchsuchen.

   Das folgende Beispiel zeigt, wie Sie den Dienst mit den Vorgabewerten
konfigurieren. Nach Vorgabe kann auf Tailon auf Port 8080 zugegriffen
werden (‘http://localhost:8080’).

     (service tailon-service-type)

   Im folgenden Beispiel werden mehr Anpassungen an der
Tailon-Konfiguration vorgenommen: ‘sed’ gehört dort auch zur Liste der
erlaubten Befehle dazu.

     (service tailon-service-type
              (tailon-configuration
                (config-file
                  (tailon-configuration-file
                    (allowed-commands '("tail" "grep" "awk" "sed"))))))

 -- Datentyp: tailon-configuration
     Der Datentyp, der die Konfiguration von Tailon repräsentiert.
     Dieser Typ verfügt über die folgenden Parameter:

     ‘config-file’ (Vorgabe: ‘(tailon-configuration-file)’)
          Die Konfigurationsdatei, die für Tailon benutzt werden soll.
          Als Wert kann ein “tailon-configuration-file”-Verbundsobjekt
          oder ein beliebiger G-Ausdruck dienen (siehe *note
          G-Ausdrücke::).

          Um zum Beispiel stattdessen eine lokale Datei zu benutzen,
          kann von der Funktion ‘local-file’ Gebrauch gemacht werden.

               (service tailon-service-type
                        (tailon-configuration
                          (config-file (local-file "./my-tailon.conf"))))

     ‘package’ (Vorgabe: ‘tailon’)
          Das tailon-Paket, das benutzt werden soll.

 -- Datentyp: tailon-configuration-file
     Datentyp, der die Konfigurationsoptionen für Tailon repräsentiert.
     Dieser Typ verfügt über die folgenden Parameter:

     ‘files’ (Vorgabe: ‘(list "/var/log")’)
          Die Liste der anzuzeigenden Dateien. In der Liste dürfen
          Zeichenketten stehen, die jeweils für eine einzelne Datei oder
          ein Verzeichnis stehen, oder auch Listen, deren erstes Element
          den Namen eines Unterbereichs angibt und deren übrige Elemente
          die Dateien oder Verzeichnisse in diesem Unterbereich
          benennen.

     ‘bind’ (Vorgabe: ‘"localhost:8080"’)
          Adresse und Port, an die sich Tailon binden soll.

     ‘relative-root’ (Vorgabe: ‘#f’)
          Welcher URL-Pfad für Tailon benutzt werden soll. Wenn Sie
          hierfür ‘#f’ angeben, wird kein Pfad benutzt.

     ‘allow-transfers?’ (Vorgabe: ‘#t’)
          Ob es möglich sein soll, die Protokolldateien über die
          Weboberfläche herunterzuladen.

     ‘follow-names?’ (Vorgabe: ‘#t’)
          Ob noch nicht existierende Dateien „getailt“ werden können.

     ‘tail-lines’ (Vorgabe: ‘200’)
          Wie viele Zeilen am Anfang aus jeder Datei gelesen werden.

     ‘allowed-commands’ (Vorgabe: ‘(list "tail" "grep" "awk")’)
          Welche Befehle ausgeführt werden dürfen. Nach Vorgabe wird
          ‘sed’ _nicht_ erlaubt.

     ‘debug?’ (Vorgabe: ‘#f’)
          Legen Sie ‘debug?’ als ‘#t’ fest, um Nachrichten zur
          Fehlersuche anzuzeigen.

     ‘wrap-lines’ (Vorgabe: ‘#t’)
          Ob lange Zeilen nach der Anfangseinstellung in der
          Weboberfläche umgebrochen werden sollen. Setzen Sie es auf
          ‘#t’, werden Zeilen in der Anfangseinstellung umgebrochen (die
          Vorgabe), bei ‘#f’ werden sie anfänglich nicht umgebrochen.

     ‘http-auth’ (Vorgabe: ‘#f’)
          Welcher HTTP-Authentifizierungstyp benutzt werden soll. Setzen
          Sie dies auf ‘#f’, damit sich Benutzer nicht authentisieren
          müssen (die Vorgabe). Unterstützte Werte sind ‘"digest"’ oder
          ‘"basic"’.

     ‘users’ (Vorgabe: ‘#f’)
          Wenn HTTP-Authentifizierung aktiviert ist (siehe ‘http-auth’),
          wird der Zugriff nur gewährt, nachdem die hier angegebenen
          Zugangsinformationen eingegeben wurden. Um Nutzer
          hinzuzufügen, geben Sie hier eine Liste von Paaren an, deren
          erstes Element jeweils der Benutzername und deren zweites
          Element das Passwort ist.

               (tailon-configuration-file
                 (http-auth "basic")
                 (users     '(("benutzer1" . "passwort1")
                              ("benutzer2" . "passwort2"))))

Darkstat-Dienst
...............

Darkstat ist ein Netzwerkanalyseprogramm, das Pakete im Datenverkehr
aufzeichnet, Statistiken zur Netzwerknutzung berechnet und über HTTP
Berichte dazu bereitstellt.

 -- Variable: Scheme-Variable darkstat-service-type
     Dies ist der Diensttyp für den darkstat-Dienst
     (https://unix4lyfe.org/darkstat/). Sein Wert muss ein
     ‘darkstat-configuration’-Verbundsobjekt sein, wie in diesem
     Beispiel:

          (service darkstat-service-type
                   (darkstat-configuration
                     (interface "eno1")))

 -- Datentyp: darkstat-configuration
     Datentyp, der die Konfiguration von ‘darkstat’ repräsentiert.

     ‘package’ (Vorgabe: ‘darkstat’)
          Welches darkstat-Paket verwendet werden soll.

     ‘interface’
          Datenverkehr an der angegebenen Netzwerkschnittstelle
          mitschneiden.

     ‘port’ (Vorgabe: ‘"667"’)
          Bindet die Weboberfläche an den angegebenen Port.

     ‘bind-address’ (Vorgabe: ‘"127.0.0.1"’)
          Bindet die Weboberfläche an die angegebene Adresse.

     ‘base’ (Vorgabe: ‘"/"’)
          Geben Sie den Pfad der Basis-URL an. Das kann nützlich sein,
          wenn auf ‘darkstat’ über einen inversen Proxy („Reverse
          Proxy“) zugegriffen wird.

Prometheus-Node-Exporter-Dienst
...............................

Der Prometheus-„Node-Exporter“ stellt Statistiken über Hardware und
Betriebssystem für das Prometheus-Systemüberwachungssystem bereit, die
vom Linux-Kernel geliefert werden. Dieser Dienst sollte auf allen
physischen Netzwerkknoten und virtuellen Maschinen installiert werden,
für die eine Überwachung ihrer Statistiken gewünscht wird.

 -- Variable: Scheme-Variable prometheus-node-exporter-service-type
     Dies ist der Diensttyp für den „prometheus-node-exporter“-Dienst
     (https://github.com/prometheus/node_exporter/). Sein Wert muss ein
     ‘prometheus-node-exporter-configuration’-Verbundsobjekt sein.

          (service prometheus-node-exporter-service-type)

 -- Datentyp: prometheus-node-exporter-configuration
     Repräsentiert die Konfiguration von ‘node_exporter’.

     ‘package’ (Vorgabe: ‘go-github-com-prometheus-node-exporter’)
          Das Paket für den prometheus-node-exporter, was benutzt werden
          soll.

     ‘web-listen-address’ (Vorgabe: ‘":9100"’)
          Bindet die Weboberfläche an die angegebene Adresse.

     ‘textfile-directory’ (Vorgabe: ‘"/var/lib/prometheus/node-exporter"’)
          In dieses Verzeichnis können maschinenspezifische Metriken
          exportiert werden. Hier hinein sollten Dateien mit Metriken im
          Textformat platziert werden, die die Dateiendung ‘.prom’
          haben.

     ‘extra-options’ (Vorgabe: ‘'()’)
          Zusätzliche Befehlszeilenoptionen, die an den
          prometheus-node-exporter übergeben werden sollen.

Zabbix-Server
.............

Zabbix stellt Metriken zur Systemüberwachung zur Verfügung, unter
anderem die Netzwerk- und Prozessorauslastung sowie den
Plattenplatzverbrauch, und bietet dabei:

   • Hohe Leistungsfähigkeit und hohe Kapazität (hunderttausende Geräte
     können überwacht werden).
   • Automatische Erkennung von Servern, Netzwerkgeräten und
     -schnittstellen.
   • Systemnahe Erkennung, wodurch automatisch mit der Überwachung neuer
     Objekte, Dateisysteme, Netzwerkschnittstellen und anderer Dinge
     begonnen werden kann.
   • Verteilte Überwachung mit zentralisierter Web-Administrierbarkeit.
   • Native Hochleistungsagenten.
   • Berichte zum SLA und über ITIL-KPI-Metriken.
   • Überblickssicht (geschäftlich) auf die überwachten Ressourcen über
     benutzerdefinierte visuelle Konsolenbildschirme und Dashboards.
   • Entfernte Befehlsausführung über Zabbix-Proxys.

   Verfügbare ‘zabbix-server-configuration’-Felder sind:

 -- ‘zabbix-server-configuration’-Parameter: „package“ zabbix-server
     Das zabbix-server-Paket.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette user
     Das Benutzerkonto, mit dem der Zabbix-Server ausgeführt wird.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-server-configuration’-Parameter: Gruppe group
     Die Gruppe, mit der der Zabbix-Server ausgeführt wird.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette db-host
     Rechnername der Datenbank.

     Die Vorgabe ist ‘"127.0.0.1"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette db-name
     Datenbankname.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette db-user
     Benutzerkonto der Datenbank.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette db-password
     Das Datenbankpasswort. Bitte benutzen Sie stattdessen
     ‘include-files’ mit ‘DBPassword=SECRET’ in einer angegebenen Datei.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-server-configuration’-Parameter: Zahl db-port
     Datenbank-Portnummer.

     Die Vorgabe ist ‘5432’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette log-type
     Gibt an, wohin Protokollnachrichten geschrieben werden.

        • ‘system’ - Syslog.

        • ‘file’ - Die im ‘log-file’-Parameter angegebene Datei.

        • ‘console’ - Standardausgabe.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette log-file
     Protokolldateiname für den ‘file’-Parameter von ‘log-type’.

     Die Vorgabe ist ‘"/var/log/zabbix/server.log"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette pid-file
     Name der PID-Datei.

     Die Vorgabe ist ‘"/var/run/zabbix/zabbix_server.pid"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette
          ssl-ca-location
     Der Ort mit den Dateien über die Zertifikatsautoritäten
     (Certificate Authoritys, CAs) zur Prüfung der
     SSL-Serverzertifikate.

     Die Vorgabe ist ‘"/etc/ssl/certs/ca-certificates.crt"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette
          ssl-cert-location
     Der Ort mit den SSL-Client-Zertifikaten.

     Die Vorgabe ist ‘"/etc/ssl/certs"’.

 -- ‘zabbix-server-configuration’-Parameter: Zeichenkette extra-options
     Zusätzliche Optionen werden an die
     Zabbix-Server-Konfigurationsdatei angehängt.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-server-configuration’-Parameter: Einzubindende-Dateien
          include-files
     Sie können einzelne Dateien oder alle Dateien in einem Verzeichnis
     in die Konfigurationsdatei einbinden.

     Die Vorgabe ist ‘()’.

Zabbix-Agent
............

Der Zabbix-Agent sammelt Informationen für den Zabbix-Server.

   Verfügbare ‘zabbix-agent-configuration’-Felder sind:

 -- ‘zabbix-agent-configuration’-Parameter: „package“ zabbix-agent
     Das zabbix-agent-Paket.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette user
     Das Benutzerkonto, mit dem der Zabbix-Agent ausgeführt wird.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-agent-configuration’-Parameter: Gruppe group
     Die Gruppe, mit der der Zabbix-Agent ausgeführt wird.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette hostname
     Der eindeutige Rechnername in richtiger Groß-/Kleinschreibung, der
     für aktive Überprüfungen benötigt wird und dem im Server
     eingestellten Rechnernamen entsprechen muss.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette log-type
     Gibt an, wohin Protokollnachrichten geschrieben werden.

        • ‘system’ - Syslog.

        • ‘file’ - Die im ‘log-file’-Parameter angegebene Datei.

        • ‘console’ - Standardausgabe.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette log-file
     Protokolldateiname für den ‘file’-Parameter von ‘log-type’.

     Die Vorgabe ist ‘"/var/log/zabbix/agent.log"’.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette pid-file
     Name der PID-Datei.

     Die Vorgabe ist ‘"/var/run/zabbix/zabbix_agent.pid"’.

 -- ‘zabbix-agent-configuration’-Parameter: Liste server
     Die Liste der IP-Adressen, optional in CIDR-Notation angegeben,
     oder die Rechnernamen von Zabbix-Servern und Zabbix-Proxys.
     Eingehende Verbindungen werden nur dann angenommen, wenn sie von
     hier angegebenen Rechnern stammen.

     Die Vorgabe ist ‘("127.0.0.1")’.

 -- ‘zabbix-agent-configuration’-Parameter: Liste server-active
     Die Liste aus IP:Port-Paaren (oder Rechnername:Port-Paaren) von
     Zabbix-Servern und Zabbix-Proxys für aktive Überprüfungen. Wenn
     kein Port angegeben wurde, wird der Vorgabeport benutzt. Wenn
     dieser Parameter _nicht_ angegeben wird, werden aktive
     Überprüfungen deaktiviert.

     Die Vorgabe ist ‘("127.0.0.1")’.

 -- ‘zabbix-agent-configuration’-Parameter: Zeichenkette extra-options
     Zusätzliche Optionen werden an die
     Zabbix-Server-Konfigurationsdatei angehängt.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-agent-configuration’-Parameter: Einzubindende-Dateien
          include-files
     Sie können einzelne Dateien oder alle Dateien in einem Verzeichnis
     in die Konfigurationsdatei einbinden.

     Die Vorgabe ist ‘()’.

Zabbix-Frontend
...............

Dieser Dienst stellt eine Weboberfläche als Vordergrundsystem
(“Frontend”) für den Zabbix-Server zur Verfügung.

   Verfügbare ‘zabbix-front-end-configuration’-Felder sind:

 -- ‘zabbix-front-end-configuration’-Parameter:
          „nginx-server-configuration“-Liste nginx
     NGINX-Konfiguration.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette db-host
     Rechnername der Datenbank.

     Die Vorgabe ist ‘"localhost"’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zahl db-port
     Datenbank-Portnummer.

     Die Vorgabe ist ‘5432’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette db-name
     Datenbankname.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette db-user
     Benutzerkonto der Datenbank.

     Die Vorgabe ist ‘"zabbix"’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette db-password
     Das Datenbankpasswort. Bitte benutzen Sie stattdessen
     ‘db-secret-file’.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette
          db-secret-file
     In welcher Datei die geheimen Anmeldedaten für das
     Vordergrundsystem von Zabbix stehen. Als Wert muss ein lokaler
     Dateiname angegeben werden und _kein_ G-Ausdruck. Es wird erwartet,
     dass Sie diese Datei manuell erstellen. Ihr Inhalt wird als Wert
     von ‘$DB['PASSWORD']’ in die ‘zabbix.conf.php’ kopiert.

     Die Vorgabe ist ‘""’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zeichenkette zabbix-host
     Zabbix-Server-Rechnername.

     Die Vorgabe ist ‘"localhost"’.

 -- ‘zabbix-front-end-configuration’-Parameter: Zahl zabbix-port
     Zabbix-Server-Port.

     Die Vorgabe ist ‘10051’.


File: guix.de.info,  Node: Kerberos-Dienste,  Next: LDAP-Dienste,  Prev: Systemüberwachungsdienste,  Up: Dienste

10.8.16 Kerberos-Dienste
------------------------

Das ‘(gnu services kerberos)’-Modul stellt Dienste zur Verfügung, die
mit dem Authentifizierungsprotokoll “Kerberos” zu tun haben.

Krb5-Dienst
...........

Programme, die eine Kerberos-Clientbibliothek benutzen, erwarten meist,
dass sich eine Konfigurationsdatei in ‘/etc/krb5.conf’ befindet. Dieser
Dienst erzeugt eine solche Datei aus einer Definition, die in der
Betriebssystemdeklaration angegebenen wurde. Durch ihn wird kein Daemon
gestartet.

   Keine „Schlüsseltabellen“-Dateien werden durch diesen Dienst zur
Verfügung gestellt — Sie müssen sie ausdrücklich selbst anlegen. Dieser
Dienst funktioniert bekanntermaßen mit der MIT-Clientbibliothek
‘mit-krb5’. Andere Implementierungen wurden nicht getestet.

 -- Scheme-Variable: krb5-service-type
     Ein Diensttyp für Kerberos-5-Clients.

Hier ist ein Beispiel, wie man ihn benutzt:
     (service krb5-service-type
              (krb5-configuration
               (default-realm "EXAMPLE.COM")
               (allow-weak-crypto? #t)
               (realms (list
                        (krb5-realm
                         (name "EXAMPLE.COM")
                         (admin-server "groucho.example.com")
                         (kdc "karl.example.com"))
                        (krb5-realm
                         (name "ARGRX.EDU")
                         (admin-server "kerb-admin.argrx.edu")
                         (kdc "keys.argrx.edu"))))))

Dieses Beispiel stellt eine Client-Konfiguration für Kerberos 5 zur
Verfügung, mit der:
   • Zwei Administrationsbereiche erkannt werden, nämlich: „EXAMPLE.COM“
     und „ARGRX.EDU“, die beide verschiedene Administrationsserver und
     Schlüsselverteilungszentren haben,
   • als Vorgabe der Administrationsbereich „EXAMPLE.COM“ verwendet
     wird, falls der Administrationsbereich von Clients nicht
     ausdrücklich angegeben wurde, und
   • auch Dienste angenommen werden, die nur Verschlüsselungstypen
     unterstützen, die bekanntermaßen schwach sind.

   Die Typen ‘krb5-realm’ und ‘krb5-configuration’ haben viele Felder.
Hier werden nur die am häufigsten benutzten beschrieben. Eine
vollständige Liste und jeweils detailliertere Erklärungen finden Sie in
der Dokumentation von krb5.conf vom MIT.

 -- Datentyp: krb5-realm
     ‘name’
          Dieses Feld enthält eine Zeichenkette, die den Namen des
          Administrationsbereichs bezeichnet. Üblich ist, den
          vollständigen DNS-Namen („Fully Qualified DNS Name“) Ihrer
          Organisation nur in Großbuchstaben zu benutzen.

     ‘admin-server’
          Dieses Feld enthält eine Zeichenkette, die den Rechner
          benennt, auf dem der Administrationsserver läuft.

     ‘kdc’
          Dieses Feld enthält eine Zeichenkette, die das
          Schlüsselverteilungszentrum für den Administrationsbereich
          angibt.

 -- Datentyp: krb5-configuration

     ‘allow-weak-crypto?’ (Vorgabe: ‘#f’)
          Wenn diese Option auf ‘#t’ gesetzt ist, werden auch Dienste
          akzeptiert, die nur Verschlüsselungsalgorithmen anbieten, die
          bekanntermaßen schwach sind.

     ‘default-realm’ (Vorgabe: ‘#f’)
          Dieses Feld sollte eine Zeichenkette enthalten, die den
          voreingestellten Kerberos-Administrationsbereich für den
          Client angibt. Sie sollten in diesem Feld den Namen Ihres
          Kerberos-Administrationsbereichs eintragen. Wenn der Wert ‘#f’
          ist, dann muss ein Administrationsbereich mit jedem
          Kerberos-Prinzipal zusammen angegeben werden, wenn Programme
          wie ‘kinit’ aufgerufen werden.

     ‘realms’
          Hierin sollte eine nichtleere Liste von je einem
          ‘krb5-realm’-Objekt pro Administrationsbereich stehen, auf den
          Clients zugreifen können. Normalerweise hat einer davon ein
          ‘name’-Feld, das mit dem ‘default-realm’-Feld übereinstimmt.

PAM-krb5-Dienst
...............

Der ‘pam-krb5’-Dienst ermöglicht es, bei der Anmeldung und
Passwortverwaltung Benutzer über Kerberos zu authentifizieren. Sie
brauchen diesen Dienst, damit Anwendungen, die PAM benutzen können,
Nutzer über Kerberos authentifizieren können.

 -- Scheme-Variable: pam-krb5-service-type
     Ein Diensttyp für das PAM-Modul zu Kerberos 5.

 -- Datentyp: pam-krb5-configuration
     Der Datentyp, der die Konfiguration des PAM-Moduls für Kerberos 5
     repräsentiert. Dieser Typ hat die folgenden Parameter:
     ‘pam-krb5’ (Vorgabe: ‘pam-krb5’)
          Das pam-krb5-Paket, das benutzt werden soll.

     ‘minimum-uid’ (Vorgabe: ‘1000’)
          Der kleinste Benutzeridentifikator (UID), für den
          Authentifizierung über Kerberos versucht werden soll. Lokale
          Benutzerkonten mit niedrigeren Zahlwerten können sich nicht
          authentisieren und bekommen dazu keine Meldung angezeigt.


File: guix.de.info,  Node: LDAP-Dienste,  Next: Web-Dienste,  Prev: Kerberos-Dienste,  Up: Dienste

10.8.17 LDAP-Dienste
--------------------

Das Modul ‘(gnu services authentication)’ stellt den Diensttyp
‘nslcd-service-type’ zur Verfügung, mit dem sich Benutzer gegenüber
einem LDAP-Server authentisieren können. Sie möchten dabei
wahrscheinlich nicht nur den Dienst konfigurieren, sondern auch ‘ldap’
als einen Namensdienst („Name Service“) für den Name Service Switch
hinzufügen. Siehe *note Name Service Switch:: für Details.

   Hier ist ein Beispiel für eine einfache Betriebssystemdeklaration mit
einer der Vorgabe entsprechenden Konfiguration des ‘nslcd-service-type’
und einer Konfiguration des Name Service Switch, die den
‘ldap’-Namensdienst zuletzt prüft:

     (use-service-modules authentication)
     (use-modules (gnu system nss))
     ...
     (operating-system
       ...
       (services
         (cons*
           (service nslcd-service-type)
           (service dhcp-client-service-type)
           %base-services))
       (name-service-switch
        (let ((services (list (name-service (name "db"))
                              (name-service (name "files"))
                              (name-service (name "ldap")))))
          (name-service-switch
           (inherit %mdns-host-lookup-nss)
           (password services)
           (shadow   services)
           (group    services)
           (netgroup services)
           (gshadow  services)))))

   Verfügbare ‘nslcd-configuration’-Felder sind:

 -- ‘nslcd-configuration’-Parameter: „package“ nss-pam-ldapd
     Das ‘nss-pam-ldapd’-Paket, was benutzt werden soll.

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl threads
     Die Anzahl zu startender Threads, die Anfragen bearbeiten und
     LDAP-Abfragen durchführen können. Jeder Thread öffnet eine separate
     Verbindung zum LDAP-Server. Die Vorgabe ist, 5 Threads zu starten.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Zeichenkette uid
     Gibt den Benutzeridentifikator an, unter dem der Daemon ausgeführt
     werden soll.

     Die Vorgabe ist ‘"nslcd"’.

 -- ‘nslcd-configuration’-Parameter: Zeichenkette gid
     Gibt den Gruppenidentifikator an, unter dem der Daemon ausgeführt
     werden soll.

     Die Vorgabe ist ‘"nslcd"’.

 -- ‘nslcd-configuration’-Parameter: Protokolleinstellung log
     Diese Einstellung steuert über eine Liste aus SCHEMA und STUFE, wie
     protokolliert wird. Als SCHEMA-Argument darf entweder eines der
     Symbole ‘none’ (keines) oder ‘syslog’ angegeben werden oder ein
     absoluter Dateiname. Das Argument STUFE ist optional und legt die
     Protokollierungsstufe fest. Die Protokollierungsstufe kann als
     eines der folgenden Symbole angegeben werden: ‘crit’ (kritisch),
     ‘error’ (Fehler), ‘warning’ (Warnung), ‘notice’ (Benachrichtigung),
     ‘info’ (Information) oder ‘debug’ (Fehlersuche). Alle Mitteilungen
     mit der angegebenen Protokollierungsstufe oder einer höheren werden
     protokolliert.

     Die Vorgabe ist ‘("/var/log/nslcd" info)’.

 -- ‘nslcd-configuration’-Parameter: Liste uri
     Die Liste der LDAP-Server-URIs. Normalerweise wird nur der erste
     Server benutzt; nachfolgende Server dienen als Ersatz.

     Die Vorgabe ist ‘("ldap://localhost:389/")’.

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          ldap-version
     Die zu benutzende Version des LDAP-Protokolls. Nach Vorgabe wird
     die höchste Version benutzt, die von der LDAP-Bibliothek
     unterstützt wird.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette binddn
     Gibt den „Distinguished Name“ an, der an den Verzeichnisserver
     („Directory Server“) gebunden wird, um Einträge aufzulösen. Nach
     Vorgabe wird anonym gebunden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette bindpw
     Gibt die Zugangsinformationen an, mit denen gebunden wird. Diese
     Einstellung ist nur dann wirksam, wenn sie mit binddn benutzt wird.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette rootpwmoddn
     Gibt den „Distinguished Name“ an, der benutzt wird, wenn der
     Administratornutzer „root“ versucht, das Passwort eines Benutzers
     mit Hilfe des PAM-Moduls zu verändern.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette rootpwmodpw
     Gibt die Zugangsinformationen an, die benutzt werden, wenn der
     Administratornutzer „root“ versucht, das Passwort eines Benutzers
     zu verändern. Diese Einstellung ist nur dann wirksam, wenn sie mit
     rootpwmoddn benutzt wird.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette sasl-mech
     Gibt an, welcher SASL-Mechanismus benutzt werden soll, um
     Authentifizierung über SASL durchzuführen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette sasl-realm
     Gibt den SASL-Administrationsbereich an, um Authentifizierungen
     über SASL durchzuführen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          sasl-authcid
     Gibt die Authentisierungsidentität an, um Authentifizierungen über
     SASL durchzuführen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          sasl-authzid
     Gibt die Autorisierungsidentität an, um Authentifizierungen über
     SASL durchzuführen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          sasl-canonicalize?
     Legt fest, ob der kanonische Rechnername („Hostname“) des
     LDAP-Servers ermittelt werden soll. Wenn ja, wird die
     LDAP-Bibliothek eine inverse Auflösung („Reverse Lookup“) des
     Rechnernamens durchführen. Die Vorgabe ist, es der LDAP-Bibliothek
     zu überlassen, ob eine solche Überprüfung durchgeführt wird.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette krb5-ccname
     Legt den Namen für den Zwischenspeicher der
     GSS-API-Kerberos-Zugangsdaten fest.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Zeichenkette base
     Basis für die Verzeichnissuche.

     Vorgegeben ist ‘"dc=example,dc=com"’.

 -- ‘nslcd-configuration’-Parameter: Suchbereichs-Einstellung scope
     Legt den Suchbereich fest als subtree (Teilbaum), onelevel (eine
     Ebene), base (Basis) oder children (Kinder). Die Vorgabe für den
     Suchbereich ist subtree; base ist fast nie geeignet für
     Namensdienstauflösungen; children wird nicht auf allen Servern
     unterstützt.

     Die Vorgabe ist ‘(subtree)’.

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Deref-Einstellung deref
     Legt die Richtlinie für das Dereferenzieren von Alias-Namen fest.
     Die vorgegebene Richtlinie ist, Alias-Namen niemals zu
     dereferenzieren.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          referrals
     Gibt an, ob Verweise („Referrals“) automatisch verfolgt werden
     sollen. Das vorgegebene Verhalten ist, sie zu verfolgen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Liste-von-Abbildungseinträgen maps
     Diese Option ermöglicht es, eigene Attribute bei der Auflösung
     anstelle der vorgegebenen RFC-2307-Attribute zu verwenden. Es ist
     eine Liste von Abbildungen („Maps“), von denen jede aus dem Namen
     der Abbildung, dem abzubildenden RFC-2307-Attribut und einem
     Anfrageausdruck besteht, mit dem es anhand des Verzeichnisses
     aufgelöst wird.

     Die Vorgabe ist ‘()’.

 -- ‘nslcd-configuration’-Parameter: Liste-von-Filtereinträgen filters
     Eine Liste von Filtern, von denen jeder aus dem Namen einer
     Abbildung, auf die sich der Filter auswirkt, und einem
     LDAP-Suchfilter-Ausdruck besteht.

     Die Vorgabe ist ‘()’.

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl bind-timelimit
     Gibt die Zeitbeschränkung in Sekunden an, wie lange eine Verbindung
     zum Verzeichnisserver dauern darf. Die Vorgabe ist 10 Sekunden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl timelimit
     Gibt die Zeitbeschränkung (in Sekunden) an, wie lange auf eine
     Antwort vom LDAP-Server gewartet wird. Ein Wert von null, was die
     Vorgabe ist, bewirkt, dass beliebig lange gewartet wird, bis Suchen
     abgeschlossen sind.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl idle-timelimit
     Gibt an, wie lange bei Inaktivität gewartet wird (in Sekunden), bis
     die Verbindung zum LDAP-Server geschlossen wird. Die Vorgabe ist,
     dass es zu keiner Zeitüberschreitung bei Verbindungen kommen kann.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl reconnect-sleeptime
     Gibt die Anzahl an Sekunden an, wie lange „schlafend“ gewartet
     wird, wenn zu _keinem_ LDAP-Server eine Verbindung hergestellt
     werden kann. Die Vorgabe ist, zwischen dem ersten Fehlversuch und
     dem ersten neuen Versuch 1 Sekunde zu warten.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl reconnect-retrytime
     Gibt an, nach wie viel Zeit der LDAP-Server als dauerhaft nicht
     verfügbar angesehen wird. Sobald dieser Fall eintritt, wird eine
     Verbindungsaufnahme nur noch einmal pro weiterem Ablauf dieser
     Zeitperiode versucht. Der Vorgabewert beträgt 10 Sekunden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-SSL-Einstellung ssl
     Gibt an, ob SSL/TLS benutzt werden soll oder nicht (die Vorgabe
     ist, es _nicht_ zu benutzen). Wenn ’start-tls angegeben wird, dann
     wird StartTLS statt schlichtem LDAP über SSL benutzt.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter:
          Vielleicht-„tls-reqcert“-Einstellung tls-reqcert
     Gibt an, welche Überprüfungen auf einem vom Server empfangenen
     Zertifikat durchgeführt werden sollen. Die Bedeutung der Werte wird
     auf der Handbuchseite zu ldap.conf(5) beschrieben.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          tls-cacertdir
     Gibt das Verzeichnis an, das X.509-Zertifikate zur Authentifikation
     von Kommunikationspartnern enthält. Dieser Parameter wird
     ignoriert, wenn Sie GnuTLS benutzen lassen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          tls-cacertfile
     Gibt den Dateipfad zu dem X.509-Zertifikat zur Authentifikation von
     Kommunikationspartnern an.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          tls-randfile
     Gibt den Pfad zu einer Entropiequelle an. Dieser Parameter wird
     ignoriert, wenn Sie GnuTLS benutzen lassen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette tls-ciphers
     Gibt als eine Zeichenkette an, welche Ciphers für TLS benutzt
     werden sollen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette tls-cert
     Gibt den Pfad zu der Datei an, die das lokale Zertifikat zur
     TLS-Authentisierung als Client enthält.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette tls-key
     Gibt den Pfad zu der Datei an, die den privaten Schlüssel zur
     TLS-Authentisierung als Client enthält.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl pagesize
     Geben Sie hier eine Zahl größer als 0 an, um beim LDAP-Server
     seitenweise Antworten anzufordern, entsprechend RFC2696. Die
     Vorgabe (0) fordert alle Ergebnisse auf einmal an.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter:
          Vielleicht-„ignore-users“-Einstellung
          nss-initgroups-ignoreusers
     Diese Einstellung verhindert, dass für die angegebenen Benutzer die
     Gruppenmitgliedschaft über LDAP aufgelöst wird. Alternativ kann der
     Wert ’all-local verwendet werden. Für diesen Wert erzeugt nslcd
     eine vollständige Liste aller Nicht-LDAP-Benutzer, wenn es startet.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl nss-min-uid
     Diese Einstellung lässt sicherstellen, dass LDAP-Benutzer, deren
     numerischer Benutzeridentifikator kleiner als der angegebene Wert
     ist, ignoriert werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl nss-uid-offset
     Diese Einstellung gibt einen Versatz an, der auf den numerischen
     Benutzeridentifikator jedes LDAP-Nutzers aufaddiert wird. Damit
     können Konflikte zwischen den Benutzeridentifikatoren lokaler
     Benutzerkonten und LDAP vermieden werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zahl nss-gid-offset
     Diese Einstellung gibt einen Versatz an, der auf den numerischen
     Gruppenidentifikator jedes LDAP-Nutzers aufaddiert wird. Damit
     können Konflikte zwischen den Gruppenidentifikatoren lokaler
     Gruppen und LDAP vermieden werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          nss-nested-groups
     Wenn diese Einstellung aktiviert ist, können die Attribute einer
     Gruppe auch wieder Verweise auf eine andere Gruppe sein. Attribute
     darin verschachtelter („nested“) Gruppen werden für die Gruppe auf
     höherer Ebene ebenfalls zurückgeliefert und Elterngruppen werden
     zurückgeliefert, wenn nach den Gruppen eines bestimmten Nutzers
     gesucht wird. Die Vorgabe ist, keine zusätzlichen Suchen nach
     verschachtelten Gruppen durchzuführen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          nss-getgrent-skipmembers
     Wenn diese Einstellung aktiviert ist, wird die Liste der
     Gruppenmitglieder beim Auflösen von Gruppen nicht angefragt. Zu
     welchen Gruppen ein Benutzer gehört, kann weiterhin angefragt
     werden, damit dem Benutzer bei der Anmeldung wahrscheinlich dennoch
     die richtigen Gruppen zugeordnet werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          nss-disable-enumeration
     Wenn diese Einstellung aktiviert ist, scheitern Funktionen, die
     alle Benutzer-/Gruppeneinträge aus dem Verzeichnis zu laden
     versuchen. Dadurch kann die Auslastung von LDAP-Servern wesentlich
     reduziert werden, wenn es eine große Anzahl von Benutzern und/oder
     Gruppen gibt. Diese Einstellung wird für die meisten
     Konfigurationen _nicht_ empfohlen.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette validnames
     Mit dieser Einstellung kann festgelegt werden, wie Benutzer- und
     Gruppennamen vom System geprüft werden. Das angegebene Muster wird
     zur Prüfung aller Benutzer- und Gruppennamen benutzt, die über LDAP
     angefragt und zurückgeliefert werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          ignorecase
     Hiermit wird festgelegt, ob bei Suchen nach passenden Einträgen
     _nicht_ auf Groß- und Kleinschreibung geachtet wird. Wenn Sie dies
     aktivieren, könnte es zu Sicherheitslücken kommen, mit denen
     Autorisierungen umgangen („Authorization Bypass“) oder der
     nscd-Zwischenspeicher vergiftet werden kann („Cache Poisoning“),
     was gezielte Überlastungen ermöglichen würde („Denial of Service“).

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Boolescher-Ausdruck
          pam-authc-ppolicy
     Mit dieser Einstellung wird festgelegt, ob
     Passwortrichtliniensteuerung vom LDAP-Server angefragt und
     behandelt wird, wenn Nutzer authentifiziert werden.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          pam-authc-search
     Nach Vorgabe führt nslcd eine LDAP-Suche nach jeder BIND-Operation
     (zur Authentisierung) durch, um sicherzustellen, dass die
     BIND-Operation erfolgreich durchgeführt wurde. Die vorgegebene
     Suche ist eine einfache Überprüfung, ob der DN eines Benutzers
     existiert. Hier kann ein Suchfilter angegeben werden, der
     stattdessen benutzt werden soll. Er sollte mindestens einen Eintrag
     liefern.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          pam-authz-search
     Diese Einstellung ermöglicht flexible Feineinstellungen an der
     durchzuführenden Autorisierungsprüfung. Der angegebene Suchfilter
     wird ausgeführt, woraufhin Zugriff gewährt wird, wenn mindestens
     ein Eintrag passt, andernfall wird der Zugriff verweigert.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Vielleicht-Zeichenkette
          pam-password-prohibit-message
     Wenn diese Einstellung festgelegt wurde, werden Passwortänderungen
     über pam_ldap abgelehnt und dem Anwender wird stattdessen die
     festgelegte Nachricht gezeigt. Die Nachricht kann benutzt werden,
     um den Anwender auf alternative Methoden aufmerksam zu machen, wie
     er sein Passwort ändern kann.

     Der Vorgabewert ist ‘disabled’ (d.h. deaktiviert).

 -- ‘nslcd-configuration’-Parameter: Liste pam-services
     Die Liste der PAM-Dienstnamen, für die eine LDAP-Authentisierung
     als ausreichend gilt.

     Die Vorgabe ist ‘()’.


File: guix.de.info,  Node: Web-Dienste,  Next: Zertifikatsdienste,  Prev: LDAP-Dienste,  Up: Dienste

10.8.18 Web-Dienste
-------------------

Das Modul ‘(gnu services web)’ stellt den Apache-HTTP-Server, den
nginx-Webserver und auch einen fastcgi-Wrapperdienst bereit.

Apache-HTTP-Server
..................

 -- Scheme-Variable: httpd-service-type
     Diensttyp für den Apache-HTTP-Server (https://httpd.apache.org/)
     “httpd”. Der Wert dieses Diensttyps ist ein
     ‘httpd-configuration’-Verbund.

     Es folgt ein einfaches Beispiel der Konfiguration.

          (service httpd-service-type
                   (httpd-configuration
                     (config
                       (httpd-config-file
                         (server-name "www.example.com")
                         (document-root "/srv/http/www.example.com")))))

     Andere Dienste können den ‘httpd-service-type’ auch erweitern, um
     etwas zur Konfiguration hinzuzufügen.

          (simple-service 'www.example.com-server httpd-service-type
                          (list
                            (httpd-virtualhost
                              "*:80"
                              (list (string-join '("ServerName www.example.com"
                                                    "DocumentRoot /srv/http/www.example.com")
                                                 "\n")))))

   Nun folgt eine Beschreibung der Verbundstypen ‘httpd-configuration’,
‘httpd-module’, ‘httpd-config-file’ und ‘httpd-virtualhost’.

 -- Datentyp: httpd-configuration
     Dieser Datentyp repräsentiert die Konfiguration des httpd-Dienstes.

     ‘package’ (Vorgabe: ‘httpd’)
          Das zu benutzende httpd-Paket.

     ‘pid-file’ (Vorgabe: ‘"/var/run/httpd"’)
          Die vom Shepherd-Dienst benutzte PID-Datei.

     ‘config’ (Vorgabe: ‘(httpd-config-file)’)
          Die vom httpd-Dienst zu benutzende Konfigurationsdatei.
          Vorgegeben ist ein ‘httpd-config-file’-Verbundsobjekt, aber
          als Wert kann auch ein anderer G-Ausdruck benutzt werden, der
          eine Datei erzeugt, zum Beispiel ein ‘plain-file’. Es kann
          auch eine Datei außerhalb des Stores mit einer Zeichenkette
          angegeben werden.

 -- Datentyp: httpd-module
     Dieser Datentyp steht für ein Modul des httpd-Dienstes.

     ‘name’
          Der Name des Moduls.

     ‘file’
          Die Datei, in der das Modul steht. Sie kann relativ zum
          benutzten httpd-Paket oder als absoluter Pfad einer Datei oder
          als ein G-Ausdruck für eine Datei im Store angegeben werden,
          zum Beispiel ‘(file-append mod-wsgi "/modules/mod_wsgi.so")’.

 -- Scheme-Variable: %default-httpd-modules
     Eine vorgegebene Liste von ‘httpd-module’-Objekten.

 -- Datentyp: httpd-config-file
     Dieser Datentyp repräsentiert eine Konfigurationsdatei für den
     httpd-Dienst.

     ‘modules’ (Vorgabe: ‘%default-httpd-modules’)
          Welche Module geladen werden sollen. Zusätzliche Module können
          hier eingetragen werden oder durch eine zusätzliche
          Konfigurationsangabe geladen werden.

          Um zum Beispiel Anfragen nach PHP-Dateien zu behandeln, können
          Sie das Modul ‘mod_proxy_fcgi’ von Apache zusammen mit
          ‘php-fpm-service-type’ benutzen:

               (service httpd-service-type
                        (httpd-configuration
                         (config
                          (httpd-config-file
                           (modules (cons*
                                     (httpd-module
                                      (name "proxy_module")
                                      (file "modules/mod_proxy.so"))
                                     (httpd-module
                                      (name "proxy_fcgi_module")
                                      (file "modules/mod_proxy_fcgi.so"))
                                     %default-httpd-modules))
                           (extra-config (list "\
               <FilesMatch \\.php$>
                   SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\"
               </FilesMatch>"))))))
               (service php-fpm-service-type
                        (php-fpm-configuration
                         (socket "/var/run/php-fpm.sock")
                         (socket-group "httpd")))

     ‘server-root’ (Vorgabe: ‘httpd’)
          Die ‘ServerRoot’ in der Konfigurationsdatei, vorgegeben ist
          das httpd-Paket. Direktiven wie ‘Include’ und ‘LoadModule’
          werden relativ zur ServerRoot interpretiert.

     ‘server-name’ (Vorgabe: ‘#f’)
          Der ‘ServerName’ in der Konfigurationsdatei, mit dem das
          Anfrageschema (Request Scheme), der Rechnername (Hostname) und
          Port angegeben wird, mit denen sich der Server identifiziert.

          Es muss nicht als Teil der Server-Konfiguration festgelegt
          werden, sondern kann auch in virtuellen Rechnern (Virtual
          Hosts) festgelegt werden. Vorgegeben ist ‘#f’, wodurch kein
          ‘ServerName’ festgelegt wird.

     ‘document-root’ (Vorgabe: ‘"/srv/http"’)
          Das ‘DocumentRoot’-Verzeichnis, in dem sich die Dateien
          befinden, die man vom Server abrufen kann.

     ‘listen’ (Vorgabe: ‘'("80")’)
          Die Liste der Werte für die ‘Listen’-Direktive in der
          Konfigurationsdatei. Als Wert sollte eine Liste von
          Zeichenketten angegeben werden, die jeweils die Portnummer,
          auf der gelauscht wird, und optional auch die zu benutzende
          IP-Adresse und das Protokoll angeben.

     ‘pid-file’ (Vorgabe: ‘"/var/run/httpd"’)
          Hiermit wird die PID-Datei als ‘PidFile’-Direktive angegeben.
          Der Wert sollte mit der ‘pid-file’-Datei in der
          ‘httpd-configuration’ übereinstimmen, damit der
          Shepherd-Dienst richtig konfiguriert ist.

     ‘error-log’ (Vorgabe: ‘"/var/log/httpd/error_log"’)
          Der Ort, an den der Server mit der ‘ErrorLog’-Direktive
          Fehlerprotokolle schreibt.

     ‘user’ (Vorgabe: ‘"httpd"’)
          Der Benutzer, als der der Server durch die ‘User’-Direktive
          Anfragen beantwortet.

     ‘group’ (Vorgabe: ‘"httpd"’)
          Die Gruppe, mit der der Server durch die ‘Group’-Direktive
          Anfragen beantwortet.

     ‘extra-config’ (Vorgabe: ‘(list "TypesConfig etc/httpd/mime.types")’)
          Eine flache Liste von Zeichenketten und G-Ausdrücken, die am
          Ende der Konfigurationsdatei hinzugefügt werden.

          Alle Werte, mit denen dieser Dienst erweitert wird, werden an
          die Liste angehängt.

 -- Datentyp: httpd-virtualhost
     Dieser Datentyp repräsentiert einen Konfigurationsblock für einen
     virtuellen Rechner (Virtual Host) des httpd-Dienstes.

     Sie sollten zur zusätzlichen Konfiguration extra-config des
     httpd-Dienstes hinzugefügt werden.

          (simple-service 'www.example.com-server httpd-service-type
                          (list
                            (httpd-virtualhost
                              "*:80"
                              (list (string-join '("ServerName www.example.com"
                                                    "DocumentRoot /srv/http/www.example.com")
                                                 "\n")))))

     ‘addresses-and-ports’
          Adressen und Ports für die ‘VirtualHost’-Direktive.

     ‘contents’
          Der Inhalt der ‘VirtualHost’-Direktive. Er sollte als Liste
          von Zeichenketten und G-Ausdrücken angegeben werden.

NGINX
.....

 -- Scheme-Variable: nginx-service-type
     Diensttyp für den NGinx-Webserver (https://nginx.org/). Der Wert
     des Dienstes ist ein ‘<nginx-configuration>’-Verbundsobjekt.

     Es folgt ein einfaches Beispiel der Konfiguration.

          (service nginx-service-type
                   (nginx-configuration
                     (server-blocks
                       (list (nginx-server-configuration
                               (server-name '("www.example.com"))
                               (root "/srv/http/www.example.com"))))))

     Außer durch direktes Hinzufügen von Server-Blöcken zur
     Dienstkonfiguration kann der Dienst auch durch andere Dienste
     erweitert werden, um Server-Blöcke hinzuzufügen, wie man im
     folgenden Beispiel sieht:

          (simple-service 'my-extra-server nginx-service-type
                          (list (nginx-server-configuration
                                  (root "/srv/http/extra-website")
                                  (try-files (list "$uri" "$uri/index.html")))))

   Beim Starten hat ‘nginx’ seine Konfigurationsdatei noch nicht gelesen
und benutzt eine vorgegebene Datei, um Fehlermeldungen zu
protokollieren. Wenn er seine Konfigurationsdatei nicht laden kann,
landen Fehlermeldungen also dort. Nachdem die Konfigurationsdatei
geladen ist, werden Fehlerprotokolle nach Voreinstellung in die Datei
geschrieben, die in der Konfiguration angegeben ist. In unserem Fall
können Sie Fehlermeldungen beim Starten in
‘/var/run/nginx/logs/error.log’ finden und nachdem die Konfiguration
eingelesen wurde, finden Sie sie in ‘/var/log/nginx/error.log’.
Letzterer Ort kann mit der Konfigurationsoption LOG-DIRECTORY geändert
werden.

 -- Datentyp: nginx-configuration
     Dieser Datentyp repräsentiert die Konfiguration von NGinx. Ein Teil
     der Konfiguration kann hierüber und über die anderen zu Ihrer
     Verfügung stehenden Verbundstypen geschehen, alternativ können Sie
     eine Konfigurationsdatei mitgeben.

     ‘nginx’ (Vorgabe: ‘nginx’)
          Das zu benutzende nginx-Paket.

     ‘log-directory’ (Vorgabe: ‘"/var/log/nginx"’)
          In welches Verzeichnis NGinx Protokolldateien schreiben wird.

     ‘run-directory’ (Vorgabe: ‘"/var/run/nginx"’)
          In welchem Verzeichnis NGinx eine PID-Datei anlegen und
          temporäre Dateien ablegen wird.

     ‘server-blocks’ (Vorgabe: ‘'()’)
          Eine Liste von “Server-Blöcken”, die in der erzeugten
          Konfigurationsdatei stehen sollen. Die Elemente davon sollten
          den Typ ‘<nginx-server-configuration>’ haben.

          Im folgenden Beispiel wäre NGinx so eingerichtet, dass
          Anfragen an ‘www.example.com’ mit Dateien aus dem Verzeichnis
          ‘/srv/http/www.example.com’ beantwortet werden, ohne HTTPS zu
          benutzen.
               (service nginx-service-type
                        (nginx-configuration
                          (server-blocks
                            (list (nginx-server-configuration
                                    (server-name '("www.example.com"))
                                    (root "/srv/http/www.example.com"))))))

     ‘upstream-blocks’ (Vorgabe: ‘'()’)
          Eine Liste von “Upstream-Blöcken”, die in der erzeugten
          Konfigurationsdatei stehen sollen. Ihre Elemente sollten den
          Typ ‘<nginx-upstream-configuration>’ haben.

          Upstreams als ‘upstream-blocks’ zu konfigurieren, kann
          hilfreich sein, wenn es mit ‘locations’ in
          ‘<nginx-server-configuration>’ verbunden wird. Das folgende
          Beispiel erzeugt eine Server-Konfiguration mit einer
          Location-Konfiguration, bei der Anfragen als Proxy
          entsprechend einer Upstream-Konfiguration weitergeleitet
          werden, wodurch zwei Server diese beantworten können.

               (service
                 nginx-service-type
                 (nginx-configuration
                   (server-blocks
                     (list (nginx-server-configuration
                             (server-name '("www.example.com"))
                             (root "/srv/http/www.example.com")
                             (locations
                               (list
                                 (nginx-location-configuration
                                 (uri "/path1")
                                 (body '("proxy_pass http://server-proxy;"))))))))
                   (upstream-blocks
                     (list (nginx-upstream-configuration
                             (name "server-proxy")
                             (servers (list "server1.example.com"
                                            "server2.example.com")))))))

     ‘file’ (Vorgabe: ‘#f’)
          Wenn eine Konfigurationsdatei als FILE angegeben wird, dann
          wird diese benutzt und _keine_ Konfigurationsdatei anhand der
          angegebenen ‘log-directory’, ‘run-directory’, ‘server-blocks’
          und ‘upstream-blocks’ erzeugt. Trotzdem sollten diese
          Argumente bei einer richtigen Konfiguration mit denen in der
          Datei FILE übereinstimmen, damit die Verzeichnisse bei
          Aktivierung des Dienstes erzeugt werden.

          Das kann nützlich sein, wenn Sie schon eine bestehende
          Konfigurationsdatei haben oder das, was Sie brauchen, nicht
          mit anderen Teilen eines nginx-configuration-Verbundsobjekts
          umgesetzt werden kann.

     ‘server-names-hash-bucket-size’ (Vorgabe: ‘#f’)
          Größe der Behälter (englisch „Buckets“) für die Hashtabelle
          der Servernamen; vorgegeben ist ‘#f’, wodurch die Größe der
          Cache-Lines des Prozessors verwendet wird.

     ‘server-names-hash-bucket-max-size’ (Vorgabe: ‘#f’)
          Maximale Behältergröße für die Hashtabelle der Servernamen.

     ‘modules’ (Vorgabe: ‘'()’)
          Die Liste zu ladender dynamisch gebundener Module für nginx.
          Die dynamischen Module sollten als Liste von Dateinamen
          ladbarer Module angegeben werden. Zum Beispiel:

               (modules
                (list
                 (file-append nginx-accept-language-module "\
               /etc/nginx/modules/ngx_http_accept_language_module.so")
                 (file-append nginx-lua-module "\
               /etc/nginx/modules/ngx_http_lua_module.so")))

     ‘lua-package-path’ (Vorgabe: ‘'()’)
          Die Liste zu ladender nginx-Lua-Pakete. Hier sollte eine Liste
          von Paketnamen ladbarer Lua-Module angegeben werden. Zum
          Beispiel:

               (lua-package-path (list lua-resty-core
                                       lua-resty-lrucache
                                       lua-resty-signal
                                       lua-tablepool
                                       lua-resty-shell))

     ‘lua-package-cpath’ (Vorgabe: ‘'()’)
          Die Liste zu ladender nginx-Lua-C-Pakete. Hier sollte eine
          Liste von Paketnamen ladbarer Lua-C-Module angegeben werden.
          Zum Beispiel:

               (lua-package-cpath (list lua-resty-signal))

     ‘global-directives’ (Vorgabe: ‘'((events . ()))’)
          Assoziative Liste von globalen Direktiven für die oberste
          Ebene der nginx-Konfiguration. Als Werte können wiederum
          assoziative Listen angegeben werden.

               (global-directives
                `((worker_processes . 16)
                  (pcre_jit . on)
                  (events . ((worker_connections . 1024)))))

     ‘extra-content’ (Vorgabe: ‘""’)
          Zusätzlicher Inhalt des ‘http’-Blocks. Er sollte eine
          Zeichenkette oder ein zeichenkettenwertiger G-Ausdruck.

 -- Datentyp: nginx-server-configuration
     Der Datentyp, der die Konfiguration eines nginx-Serverblocks
     repräsentiert. Dieser Typ hat die folgenden Parameter:

     ‘listen’ (Vorgabe: ‘'("80" "443 ssl")’)
          Jede ‘listen’-Direktive legt Adresse und Port für eine IP fest
          oder gibt einen Unix-Socket an, auf dem der Server Anfragen
          beantwortet. Es können entweder sowohl Adresse als auch Port
          oder nur die Adresse oder nur der Port angegeben werden. Als
          Adresse kann auch ein Rechnername („Hostname“) angegeben
          werden, zum Beispiel:

               '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")

     ‘server-name’ (Vorgabe: ‘(list 'default)’)
          Eine Liste von Servernamen, die dieser Server repräsentiert.
          ‘'default’ repräsentiert den voreingestellten Server, der für
          Verbindungen verwendet wird, die zu keinem anderen Server
          passen.

     ‘root’ (Vorgabe: ‘"/srv/http"’)
          Wurzelverzeichnis des Webauftritts, der über nginx abgerufen
          werden kann.

     ‘locations’ (Vorgabe: ‘'()’)
          Eine Liste von “nginx-location-configuration”- oder
          “nginx-named-location-configuration”-Verbundsobjekten, die
          innerhalb des Serverblocks benutzt werden.

     ‘index’ (Vorgabe: ‘(list "index.html")’)
          Index-Dateien, mit denen Anfragen nach einem Verzeichnis
          beantwortet werden. Wenn _keine_ davon gefunden wird,
          antwortet Nginx mit der Liste der Dateien im Verzeichnis.

     ‘try-files’ (Vorgabe: ‘'()’)
          Eine Liste der Dateien, bei denen in der angegebenen
          Reihenfolge geprüft wird, ob sie existieren. ‘nginx’
          beantwortet die Anfrage mit der ersten Datei, die es findet.

     ‘ssl-certificate’ (Vorgabe: ‘#f’)
          Wo das Zertifikat für sichere Verbindungen gespeichert ist.
          Sie sollten es auf ‘#f’ setzen, wenn Sie kein Zertifikat haben
          oder kein HTTPS benutzen möchten.

     ‘ssl-certificate-key’ (Vorgabe: ‘#f’)
          Wo der private Schlüssel für sichere Verbindungen gespeichert
          ist. Sie sollten ihn auf ‘#f’ setzen, wenn Sie keinen
          Schlüssel haben oder kein HTTPS benutzen möchten.

     ‘server-tokens?’ (Vorgabe: ‘#f’)
          Ob der Server Informationen über seine Konfiguration bei
          Antworten beilegen soll.

     ‘raw-content’ (Vorgabe: ‘'()’)
          Eine Liste von Zeilen, die unverändert in den Serverblock
          eingefügt werden.

 -- Datentyp: nginx-upstream-configuration
     Der Datentyp, der die Konfiguration eines nginx-‘upstream’-Blocks
     repräsentiert. Dieser Typ hat folgende Parameter:

     ‘name’
          Der Name dieser Servergruppe.

     ‘servers’
          Gibt die Adressen der Server in der Gruppe an. Die Adresse
          kann als IP-Adresse (z.B. ‘127.0.0.1’), Domänenname (z.B.
          ‘backend1.example.com’) oder als Pfad eines Unix-Sockets mit
          dem vorangestellten Präfix ‘unix:’ angegeben werden. Wenn
          Adressen eine IP-Adresse oder einen Domänennamen benutzen, ist
          der voreingestellte Port 80, aber ein abweichender Port kann
          auch explizit angegeben werden.

 -- Datentyp: nginx-location-configuration
     Der Datentyp, der die Konfiguration eines nginx-‘location’-Blocks
     angibt. Der Typ hat die folgenden Parameter:

     ‘uri’
          Die URI, die auf diesen Block passt.

     ‘body’
          Der Rumpf des location-Blocks, der als eine Liste von
          Zeichenketten angegeben werden muss. Er kann viele
          Konfigurationsdirektiven enthalten, zum Beispiel können
          Anfragen an eine Upstream-Servergruppe weitergeleitet werden,
          die mit einem ‘nginx-upstream-configuration’-Block angegeben
          wurde, indem diese Direktive im Rumpf angegeben wird: ‘(list
          "proxy_pass http://upstream-name;")’.

 -- Datentyp: nginx-named-location-configuration
     Der Datentyp repräsentiert die Konfiguration eines mit Namen
     versehenen nginx-location-Blocks („Named Location Block“). Ein mit
     Namen versehener location-Block wird zur Umleitung von Anfragen
     benutzt und nicht für die normale Anfrageverarbeitung. Dieser Typ
     hat die folgenden Parameter:

     ‘name’
          Der Name, mit dem dieser location-Block identifiziert wird.

     ‘body’
          Siehe *note nginx-location-configuration body::, weil der
          Rumpf („Body“) eines mit Namen versehenen location-Blocks wie
          ein ‘nginx-location-configuration body’ benutzt werden kann.
          Eine Einschränkung ist, dass der Rumpf eines mit Namen
          versehenen location-Blocks keine location-Blöcke enthalten
          kann.

Varnish Cache
.............

Varnish ist ein schneller zwischenspeichernder Server, der zwischen
Web-Anwendungen und deren Endbenutzern sitzt. Er leitet Anfragen von
Clients weiter und lagert die URLs, auf die zugegriffen wird, in einen
Zwischenspeicher ein, damit bei mehreren Anfragen auf dieselbe Ressource
nur eine Anfrage an die Hintergrundanwendung gestellt wird.

 -- Scheme-Variable: varnish-service-type
     Diensttyp für den Varnish-Daemon.

 -- Datentyp: varnish-configuration
     Der Datentyp, der die Konfiguration des ‘varnish’-Dienstes
     repräsentiert. Dieser Typ hat die folgenden Parameter:

     ‘package’ (Vorgabe: ‘varnish’)
          Das Varnish-Paket, was benutzt werden soll.

     ‘name’ (Vorgabe: ‘"default"’)
          Ein Name für diese Varnish-Instanz. Varnish wird ein
          Verzeichnis in ‘/var/varnish/’ mit diesem Namen erzeugen und
          dort temporäre Dateien speichern. Wenn der Name mit einem
          Schrägstrich beginnt, wird er als absoluter Verzeichnispfad
          interpretiert.

          Übergeben Sie die Befehlszeilenoption ‘-n’ an andere
          Varnish-Programme, um sich mit der Instanz diesen Namens zu
          verbinden, z.B. ‘varnishncsa -n default’.

     ‘backend’ (Vorgabe: ‘"localhost:8080"’)
          Welcher Hintergrunddienst benutzt werden soll. Diese Option
          wird ignoriert, wenn ‘vcl’ gesetzt ist.

     ‘vcl’ (Vorgabe: #f)
          Das “VCL”-Programm (in der Varnish Configuration Language),
          das ausgeführt werden soll. Ist dies auf ‘#f’ gesetzt,
          fungiert Varnish als Proxy für den Hintergrunddienst ‘backend’
          mit der voreingestellten Konfiguration. Andernfalls muss dies
          ein dateiartiges Objekt mit gültiger VCL-Syntax sein.

          Um zum Beispiel mit VCL einen Spiegelserver für www.gnu.org
          (https://www.gnu.org) einzurichten, können Sie so etwas
          benutzen:

               (define %gnu-mirror
                 (plain-file "gnu.vcl"
                             "vcl 4.1;
               backend gnu { .host = \"www.gnu.org\"; }"))

               (operating-system
                 ;; …
                 (services (cons (service varnish-service-type
                                          (varnish-configuration
                                           (listen '(":80"))
                                           (vcl %gnu-mirror)))
                                 %base-services)))

          Die Konfiguration einer bereits laufenden Varnish-Instanz kann
          mit dem Programm ‘varnishadm’ eingesehen und verändert werden.

          Ziehen Sie die Varnish User Guide
          (https://varnish-cache.org/docs/) und das Varnish Book
          (https://book.varnish-software.com/4.0/) zu Rate, wenn Sie
          eine umfassende Dokumentation zu Varnish und seiner
          Konfigurationssprache suchen.

     ‘listen’ (Vorgabe: ‘'("localhost:80")’)
          Liste der Adressen, auf denen Varnish lauschen soll.

     ‘storage’ (Vorgabe: ‘'("malloc,128m")’)
          Liste der Speicher-Hintergrunddienste („Storage Backends“),
          die von der VCL aus benutzt werden können.

     ‘parameters’ (Vorgabe: ‘'()’)
          Liste der Laufzeitparameter von der Form ‘'(("Parameter" .
          "Wert"))’.

     ‘extra-options’ (Vorgabe: ‘'()’)
          Zusätzliche Argumente, die an den ‘varnishd’-Prozess übergeben
          werden.

Patchwork
.........

Patchwork ist ein System, um eingereichten Patches zu folgen. Es kann an
eine Mailing-Liste geschickte Patches sammeln und auf einer
Web-Oberfläche anzeigen.

 -- Scheme-Variable: patchwork-service-type
     Diensttyp für Patchwork.

   Es folgt ein Minimalbeispiel für einen Patchwork-Dienst, der auf der
Domain ‘patchwork.example.com’ läuft.

     (service patchwork-service-type
              (patchwork-configuration
               (domain "patchwork.example.com")
               (settings-module
                (patchwork-settings-module
                 (allowed-hosts (list domain))
                 (default-from-email "patchwork@patchwork.example.com")))
               (getmail-retriever-config
                (getmail-retriever-configuration
                 (type "SimpleIMAPSSLRetriever")
                 (server "imap.example.com")
                 (port 993)
                 (username "patchwork")
                 (password-command
                  (list (file-append coreutils "/bin/cat")
                        "/etc/getmail-patchwork-imap-password"))
                 (extra-parameters
                 '((mailboxes . ("Patches"))))))))


   Der Patchwork-Dienst wird über drei Verbundsobjekte konfiguriert. Die
‘<patchwork-configuration>’ hat mit der Konfiguration von Patchwork
innerhalb des HTTPD-Dienstes zu tun.

   Das ‘settings-module’-Feld innerhalb des
‘<patchwork-configuration>’-Verbundsobjekts kann mit einem
‘<patchwork-settings-module>’-Verbundsobjekt ausgefüllt werden, das ein
im Guix-Store angelegtes Einstellungsmodul beschreibt.

   Für das ‘database-configuration’-Feld innerhalb des
‘<patchwork-settings-module>’ muss eine
‘<patchwork-database-configuration>’ benutzt werden.

 -- Datentyp: patchwork-configuration
     Der Datentyp, der die Konfiguration des Patchwork-Dienstes
     repräsentiert. Dieser Typ hat die folgenden Parameter:

     ‘patchwork’ (Vorgabe: ‘patchwork’)
          Welches Patchwork-Paket benutzt werden soll.

     ‘domain’
          Welche Domain für Patchwork benutzt werden soll. Sie findet
          Verwendung in Patchworks virtuellen Rechner („Virtual Host“)
          für den HTTPD-Dienst.

     ‘settings-module’
          Das durch Patchwork benutzte Einstellungsmodul. Als eine
          Django-Anwendung wird Patchwork mit einem Python-Modul
          konfiguriert, das die Einstellungen speichert. Es kann
          entweder eine Instanz des
          ‘<patchwork-settings-module>’-Verbundstyps sein, ein
          beliebiges anderes Verbundsobjekt sein, das die Einstellungen
          im Store repräsentiert, oder ein Verzeichnis außerhalb des
          Stores.

     ‘static-path’ (Vorgabe: ‘"/static/"’)
          Der Pfad, auf dem der HTTPD-Dienst die statischen Dateien
          anbieten soll.

     ‘getmail-retriever-config’
          Das durch Patchwork benutzte
          getmail-retriever-configuration-Verbundsobjekt. Getmail wird
          mit diesem Wert konfiguriert. Die Mitteilungen werden mit
          Patchwork als Empfänger zugestellt.

 -- Datentyp: patchwork-settings-module
     Der Datentyp, der das Einstellungsmodul für Patchwork
     repräsentiert. Manche dieser Einstellungen haben direkt mit
     Patchwork zu tun, andere beziehen sich auf Django, dem
     Web-Framework auf dem Patchwork aufsetzt, oder dessen
     Django-Rest-Framework-Bibliothek. Dieser Typ verfügt über die
     folgenden Parameter:

     ‘database-configuration’ (Vorgabe: ‘(patchwork-database-configuration)’)
          Die für Patchwork benutzten Datenbankverbindungseinstellungen.
          Siehe den ‘<patchwork-database-configuration>’-Verbundstyp für
          weitere Informationen.

     ‘secret-key-file’ (Vorgabe: ‘"/etc/patchwork/django-secret-key"’)
          Patchwork benutzt als eine Django-Webanwendung einen geheimen
          Schlüssel, um Werte kryptographisch zu signieren. Diese Datei
          sollte einen einzigartigen, unvorhersehbaren Wert enthalten.

          Wenn diese Datei nicht existiert, wird sie erzeugt und ein
          zufälliger Wert wird durch den Shepherd-Dienst für
          patchwork-setup hineingeschrieben.

          Diese Einstellung bezieht sich auf Django.

     ‘allowed-hosts’
          Eine Liste zulässiger Netzwerkschnittstellen (Hosts), auf
          denen dieser Patchwork-Dienst antwortet. Sie sollte wenigstens
          die im ‘<patchwork-configuration>’-Verbundsobjekt genannte
          Domain enthalten.

          Dies ist eine Django-Einstellung.

     ‘default-from-email’
          Die E-Mail-Adresse, von der aus Patchwork nach Voreinstellung
          E-Mails verschicken soll.

          Dies ist eine Patchwork-Einstellung.

     ‘static-url’ (Vorgabe: ‘#f’)
          Die URL, über die statische Dokumente angeboten werden. Es
          kann eine teilweise URL oder eine vollständige URL angegeben
          werden, aber sie muss auf ‘/’ enden.

          Wenn der Vorgabewert benutzt wird, wird der ‘static-path’-Wert
          aus dem ‘<patchwork-configuration>’-Verbundsobjekt benutzt.

          Dies ist eine Django-Einstellung.

     ‘admins’ (Vorgabe: ‘'()’)
          Die E-Mail-Adressen, an die Details zu auftretenden Fehlern
          versendet werden. Jeder Wert sollte eine zweielementige Liste
          mit dem Namen und der E-Mail-Adresse sein.

          Dies ist eine Django-Einstellung.

     ‘debug?’ (Vorgabe: ‘#f’)
          Ob Patchwork im Fehlersuchmodus („Debug Mode“) ausgeführt
          werden soll. Wenn dies auf ‘#t’ steht, werden detaillierte
          Fehlermeldungen angezeigt.

          Dies ist eine Django-Einstellung.

     ‘enable-rest-api?’ (Vorgabe: ‘#t’)
          Ob Patchworks REST-Programmschnittstelle („REST-API“)
          aktiviert werden soll.

          Dies ist eine Patchwork-Einstellung.

     ‘enable-xmlrpc?’ (Vorgabe: ‘#t’)
          Ob die XML-Programmschnittstelle für entfernte Prozeduraufrufe
          („XML-RPC-API“) aktiviert werden soll.

          Dies ist eine Patchwork-Einstellung.

     ‘force-https-links?’ (Vorgabe: ‘#t’)
          Ob auf den Webseiten von Patchwork die Verweise auf andere
          Seiten HTTPS verwenden sollen.

          Dies ist eine Patchwork-Einstellung.

     ‘extra-settings’ (Vorgabe: ‘""’)
          Zusätzlicher Code, der am Ende des
          Patchwork-Einstellungsmoduls platziert werden soll.

 -- Datentyp: patchwork-database-configuration
     Der Datentyp, der die Datenbankkonfiguration für Patchwork
     repräsentiert.

     ‘engine’ (Vorgabe: ‘"django.db.backends.postgresql_psycopg2"’)
          Welcher Datenbanktreiber („Engine“) benutzt werden soll.

     ‘name’ (Vorgabe: ‘"patchwork"’)
          Der Name der zu benutzenden Datenbank.

     ‘user’ (Vorgabe: ‘"httpd"’)
          Der Benutzer, als der sich Patchwork mit der Datenbank
          verbindet.

     ‘password’ (Vorgabe: ‘""’)
          Das Passwort, das zum Herstellen einer Verbindung zur
          Datenbank verwendet werden soll.

     ‘host’ (Vorgabe: ‘""’)
          Der Rechner, mit dem die Datenbankverbindung hergestellt wird.

     ‘port’ (Vorgabe: ‘""’)
          Der Port, auf dem sich Patchwork mit der Datenbank verbindet.

Mumi
....

Mumi (https://git.elephly.net/gitweb.cgi?p=software/mumi.git) ist eine
Weboberfläche für Debbugs, einem System, um Fehlerberichte zu verwalten.
Nach Vorgabe zeigt es die bei GNU angebotene Debbugs-Instanz
(https://bugs.gnu.org). Mumi ist ein Web-Server, er lädt aber auch
E-Mails von Debbugs herunter und indiziert diese.

 -- Scheme-Variable: mumi-service-type
     Dies ist der Diensttyp für Mumi.

 -- Datentyp: mumi-configuration
     Der Datentyp, der die Konfiguration des Mumi-Dienstes
     repräsentiert. Dieser Typ hat die folgenden Felder:

     ‘mumi’ (Vorgabe: ‘mumi’)
          Das zu verwendende Mumi-Paket.

     ‘mailer?’ (Vorgabe: ‘#true’)
          Ob die Komponente zum Mailversand aktiviert sein soll oder
          nicht.

     ‘mumi-configuration-sender’
          Die E-Mail-Adresse, die bei Kommentaren als Absender angegeben
          wird.

     ‘mumi-configuration-smtp’
          Eine URI, um die SMTP-Einstellungen für Mailutils
          einzurichten. Hierfür könnte etwas wie
          ‘sendmail:///path/to/bin/msmtp’ angegeben werden, oder eine
          beliebige andere URI, die von Mailutils unterstützt wird.
          Siehe *note SMTP-Postfächer: (mailutils)SMTP Mailboxes.

FastCGI
.......

FastCGI ist eine Schnittstelle zwischen den Anwendungen im Vordergrund
(„Front-End“) und Hintergrund („Back-End“) eines Webdienstes. Die Rolle,
die es ausübt, ist nicht mehr ganz aktuell, weil neue Webdienste im
Allgemeinen einfach über HTTP zwischen Vorder- und Hintergrund
kommunizieren sollten. Allerdings gibt es eine Menge von
Hintergrunddiensten wie PHP oder den optimierten Git-Repository-Zugang
über HTTP, welche FastCGI benutzen, also wird es auch in Guix
unterstützt.

   Um FastCGI zu benutzen, konfigurieren Sie den Webserver im
Vordergrund (z.B. nginx) so, dass er eine Teilmenge der Anfragen an die
fastcgi-Hintergrundanwendung weiterleitet, dass auf einem lokalen TCP-
oder Unix-Socket lauscht. Ein dazwischenliegendes ‘fcgiwrap’-Programm
sitzt zwischen dem eigentlichen Hintergrundprozess und dem Webserver.
Vom Vordergrund wird angezeigt, welches Hintergrundprogramm ausgeführt
werden soll. Diese Informationen werden an den ‘fcgiwrap’-Prozess
übermittelt.

 -- Scheme-Variable: fcgiwrap-service-type
     Ein Diensttyp für den ‘fcgiwrap’-FastCGI-Proxy.

 -- Datentyp: fcgiwrap-configuration
     Der Datentyp, der die Konfiguration des ‘fcgiwrap’-Dienstes
     repräsentiert. Dieser Typ hat die folgenden Parameter:
     ‘package’ (Vorgabe: ‘fcgiwrap’)
          Welches fcgiwrap-Paket benutzt werden soll.

     ‘socket’ (Vorgabe: ‘tcp:127.0.0.1:9000’)
          Der Socket, auf dem der ‘fcgiwrap’-Prozess lauschen soll, als
          eine Zeichenkette. Gültige Werte für SOCKET wären unter
          anderem ‘unix:/PFAD/ZUM/UNIX/SOCKET’,
          ‘tcp:VIER.TEILE.GEPUNKT.ET:PORT’ und
          ‘tcp6:[IPV6-ADRESSE]:Port’.

     ‘user’ (Vorgabe: ‘fcgiwrap’)
     ‘group’ (Vorgabe: ‘fcgiwrap’)
          Die Benutzerkonten- und Gruppennamen als Zeichenketten, unter
          denen der ‘fcgiwrap’-Prozess ausgeführt werden soll. Der
          ‘fastcgi’-Dienst wird sicherstellen, dass, wenn der Nutzer den
          Benutzer- oder Gruppennamen ‘fcgiwrap’ verlangt, der
          entsprechende Benutzer und/oder Gruppe auch auf dem System
          existiert.

          Es ist möglich, einen FastCGI-gestützten Webdienst so zu
          konfigurieren, dass er HTTP-Authentisierungsinformationen vom
          Vordergrundserver an das Hintergrundsystem weiterreicht und es
          ‘fcgiwrap’ möglich macht, den Hintergrundprozess als ein
          entsprechender lokaler Nutzer auszuführen. Um dem
          Hintergrundsystem diese Funktionalität anzubieten, lassen Sie
          ‘fcgiwrap’ als der Administratornutzer ‘root’ mit selbiger
          Gruppe ausführen. Beachten Sie, dass die Funktionalität auch
          auf dem Vordergrundsystem erst eingerichtet werden muss.

   PHP-FPM (FastCGI Process Manager) ist eine alternative
PHP-FastCGI-Implementierung, die über einige zusätzliche
Funktionalitäten verfügt, die für Webauftritte jeder Größe nützlich
sind.

   Zu diesen Funktionalitäten gehören:
   • Prozesserzeugung nach Bedarf
   • Grundlegende Statistiken (ähnlich wie Apaches mod_status)
   • Fortschrittliche Prozessverwaltung mit sanftem Stoppen und Starten
   • Die Möglichkeit, Arbeiter-Threads mit verschiedenen UIDs, GIDs,
     Chroot- oder Umgebungseinstellungen zu starten und mit
     verschiedener php.ini (als Ersatz für safe_mode)
   • Protokollierung der Standard- und Standardfehlerausgabe
   • Neustart im Notfall einer ungewollten Zerstörung des
     Befehlscode-Zwischenspeichers
   • Unterstützung für beschleunigtes Hochladen
   • Unterstützung für „langsames Protokollieren“ („slowlog“)
   • Verbesserungen gegenüber FastCGI, wie z.B. fastcgi_finish_request()
     — eine besondere Funktion, um eine Anfrage fertig abzuarbeiten und
     alle Daten zu Ende zu verarbeiten, während etwas Zeitintensives
     abläuft (Videokonvertierung, Statistikverarbeitung usw.)
   … und vieles mehr.

 -- Scheme-Variable: php-fpm-service-type
     Ein Diensttyp für ‘php-fpm’.

 -- Datentyp: php-fpm-configuration
     Datentyp für die Konfiguration des php-fpm-Dienstes.
     ‘php’ (Vorgabe: ‘php’)
          Das zu benutzende PHP-Paket.
     ‘socket’ (Vorgabe: ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")’)
          Die Adresse, auf der FastCGI-Anfragen angenommen werden.
          Gültige Syntax hierfür ist:
          ‘"ip.ad.res.se:Port"’
               Lässt auf einem TCP-Socket auf der angegebenen Adresse
               auf dem angegebenen Port lauschen.
          ‘"port"’
               Lässt auf einem TCP-Socket auf allen Adressen auf dem
               angegebenen Port lauschen.
          ‘"/pfad/zum/unix/socket"’
               Lässt auf einem Unix-Socket lauschen.

     ‘user’ (Vorgabe: ‘php-fpm’)
          Der Benutzer, dem die PHP-Arbeiterprozesse gehören werden.
     ‘group’ (Vorgabe: ‘php-fpm’)
          Die Gruppe für die Arbeiterprozesse.
     ‘socket-user’ (Vorgabe: ‘php-fpm’)
          Der Benutzer, der mit dem php-fpm-Socket kommunizieren kann.
     ‘socket-group’ (Vorgabe: ‘nginx’)
          Die Gruppe, die mit dem php-fpm-Socket kommunizieren kann.
     ‘pid-file’ (Vorgabe: ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")’)
          Der Prozessidentifikator des php-fpm-Prozesses wird in diese
          Datei geschrieben, sobald der Dienst gestartet wurde.
     ‘log-file’ (Vorgabe: ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")’)
          Wohin das Protokoll für den php-fpm-Hauptprozess geschrieben
          wird.
     ‘process-manager’ (Vorgabe: ‘(php-fpm-dynamic-process-manager-configuration)’)
          Detaillierte Einstellungen für die php-fpm-Prozessverwaltung.
          Sie müssen eines der Folgenden sein:
          ‘<php-fpm-dynamic-process-manager-configuration>’
          ‘<php-fpm-static-process-manager-configuration>’
          ‘<php-fpm-on-demand-process-manager-configuration>’
     ‘display-errors’ (Vorgabe: ‘#f’)
          Legt fest, ob PHP-Fehler und Warnungen an Clients geschickt
          und in ihren Browsern angezeigt werden. Dies ist nützlich für
          lokale PHP-Entwicklung, aber ein Sicherheitsrisiko für
          öffentliche Webauftritte, weil Fehlermeldungen Passwörter und
          Passwortdaten offenlegen können.
     ‘timezone’ (Vorgabe: ‘#f’)
          Legt den Parameter ‘php_admin_value[date.timezone]’ fest.
     ‘workers-logfile’ (Vorgabe: ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")’)
          In dieser Datei werden ‘stderr’-Ausgaben von
          PHP-Arbeiterprozessen protokolliert. Das Feld kann auf ‘#f’
          gesetzt werden, damit nicht protokolliert wird.
     ‘file’ (Vorgabe: ‘#f’)
          Optional kann hier ein vorrangig benutzter Ersatz für die
          gesamte Konfigurationsdatei angegeben werden. Sie können dafür
          die ‘mixed-text-file’-Funktion oder einen absoluten Dateipfad
          verwenden.
     ‘php-ini-file’ (Vorgabe: ‘#f’)
          Hier können optional die PHP-Voreinstellungen geändert werden.
          Geben Sie dazu eine beliebige Art von „dateiartigem“ Objekt an
          (siehe *note dateiartige Objekte: G-Ausdrücke.). Sie können
          dafür die ‘mixed-text-file’-Funktion oder einen absoluten
          Dateipfad verwenden.

          Bei der Entwicklung mit dem lokalen Rechner bietet es sich an,
          die Zeit- und Speicherbegrenzung erzeugter PHP-Prozesse
          anzuheben. Benutzen Sie dazu folgndes Code-Schnipsel in Ihrer
          Betriebssystemkonfiguration:
               (define %local-php-ini
                 (plain-file "php.ini"
                             "memory_limit = 2G
               max_execution_time = 1800"))

               (operating-system
                 ;; …
                 (services (cons (service php-fpm-service-type
                                          (php-fpm-configuration
                                           (php-ini-file %local-php-ini)))
                                 %base-services)))

          Umfassende Dokumentation dazu, welche Direktiven Sie in der
          ‘php.ini’ verwenden dürfen, sollten Sie unter den
          php.ini-Kerndirektiven
          (https://www.php.net/manual/en/ini.core.php) nachschlagen.

 -- Datentyp: php-fpm-dynamic-process-manager-configuration
     Datentyp für die _dynamische_ Prozessverwaltung durch php-fpm. Bei
     der _dynamischen_ Prozessverwaltung bleiben Arbeiterprozesse nach
     Abschluss ihrer Aufgabe weiterhin erhalten, solange die
     konfigurierten Beschränkungen eingehalten werden.
     ‘max-children’ (Vorgabe: ‘5’)
          Die maximale Anzahl an Arbeiterprozessen.
     ‘start-servers’ (Vorgabe: ‘2’)
          Wie viele Arbeiterprozesse gleich zu Beginn gestartet werden
          sollen.
     ‘min-spare-servers’ (Vorgabe: ‘1’)
          Wie viele untätige Arbeiterprozesse mindestens weiterhin
          vorgehalten bleiben sollen.
     ‘max-spare-servers’ (Vorgabe: ‘3’)
          Wie viele untätige Arbeiterprozesse höchstens weiterhin
          vorgehalten bleiben sollen.

 -- Datentyp: php-fpm-static-process-manager-configuration
     Datentyp für die _statische_ Prozessverwaltung durch php-fpm. Bei
     der _statischen_ Prozessverwaltung wird eine unveränderliche Anzahl
     an Arbeiterprozessen erzeugt.
     ‘max-children’ (Vorgabe: ‘5’)
          Die maximale Anzahl an Arbeiterprozessen.

 -- Datentyp: php-fpm-on-demand-process-manager-configuration
     Datentyp für die Prozessverwaltung _nach Bedarf_ durch php-fpm. Bei
     der Prozessverwaltung _nach Bedarf_ werden Arbeiterprozesse erst
     erzeugt, wenn Anfragen vorliegen.
     ‘max-children’ (Vorgabe: ‘5’)
          Die maximale Anzahl an Arbeiterprozessen.
     ‘process-idle-timeout’ (Vorgabe: ‘10’)
          Die Zeit in Sekunden, nach der ein Prozess ohne Anfragen
          abgewürgt wird.

 -- Scheme-Prozedur: nginx-php-location [#:nginx-package nginx]  [socket
          (string-append "/var/run/php" (version-major (package-version
          php))  "-fpm.sock")] Eine Hilfsfunktion,
     mit der in kurzer Zeit PHP zu einer ‘nginx-server-configuration’
     hinzugefügt werden kann.

   Eine einfache Art, die Dienste für nginx mit PHP einzurichten, kann
so aussehen:
     (services (cons* (service dhcp-client-service-type)
                      (service php-fpm-service-type)
                      (service nginx-service-type
                               (nginx-server-configuration
                                (server-name '("example.com"))
                                (root "/srv/http/")
                                (locations
                                 (list (nginx-php-location)))
                                (listen '("80"))
                                (ssl-certificate #f)
                                (ssl-certificate-key #f)))
                      %base-services))

   Der Cat Avatar Generator („Katzenavatargenerator“) ist ein einfacher
Dienst, um die Nutzung von php-fpm in ‘Nginx’ zu demonstrieren. Mit ihm
können Katzenavatarbilder aus einem Startwert („Seed“) heraus erzeugt
werden, zum Beispiel aus dem Hash der E-Mail-Adresse eines Benutzers.

 -- Scheme-Prozedur: cat-avatar-generator-service [#:cache-dir
          "/var/cache/cat-avatar-generator"]  [#:package
     cat-avatar-generator]  [#:configuration
     (nginx-server-configuration)] Liefert ein
     nginx-server-configuration-Objekt, das von der in ‘configuration’
     angegebenen Konfiguration erbt. Es erweitert die
     Nginx-Konfiguration, indem es einen Server-Block hinzufügt, der die
     in ‘package’ angegebene Version vom cat-avatar-generator anbietet.
     Bei der Ausführung wird dem cat-avatar-generator Zugriff auf sein
     in ‘cache-dir’ angegebenes Zwischenspeicherverzeichnis gewährt.

   Eine einfache Konfiguration des cat-avatar-generator kann so
aussehen:
     (services (cons* (cat-avatar-generator-service
                       #:configuration
                       (nginx-server-configuration
                         (server-name '("example.com"))))
                      ...
                      %base-services))

Hpcguix-web
...........

Das Programm hpcguix-web (https://github.com/UMCUGenetics/hpcguix-web/)
ist eine anpassbare Weboberfläche, um Guix-Pakete zu suchen. Am Anfang
war es für Nutzer von Hochleistungs-Rechenclustern gedacht
(„High-Performance Computing“, kurz HPC).

 -- Scheme-Variable: hpcguix-web-service-type
     Der Diensttyp für ‘hpcguix-web’.

 -- Datentyp: hpcguix-web-configuration
     Datentyp für die Konfiguration des hpcguix-web-Dienstes.

     ‘specs’
          Ein G-Ausdruck (siehe *note G-Ausdrücke::), der die
          Konfiguration des hpcguix-web-Dienstes festlegt. In dieser
          Spezifikation („Spec“) sollten vor allem diese Sachen
          angegeben werden:

          ‘title-prefix’ (Vorgabe: ‘"hpcguix | "’)
               Das Präfix der Webseitentitel.

          ‘guix-command’ (Vorgabe: ‘"guix"’)
               Der ‘guix’-Befehl.

          ‘package-filter-proc’ (Vorgabe: ‘(const #t)’)
               Eine Prozedur, die festlegt, wie anzuzeigende Pakete
               gefiltert werden.

          ‘package-page-extension-proc’ (Vorgabe: ‘(const '())’)
               Erweiterungspaket für ‘hpcguix-web’.

          ‘menu’ (Vorgabe: ‘'()’)
               Zusätzlicher Eintrag auf der Menüseite.

          ‘channels’ (Vorgabe: ‘%default-channels’)
               Liste der Kanäle, aus denen die Paketliste erstellt wird
               (siehe *note Kanäle::).

          ‘package-list-expiration’ (Vorgabe: ‘(* 12 3600)’)
               Nach wie viel Zeit in Sekunden die Paketliste aus den
               neuesten Instanzen der angegebenen Kanäle neu erzeugt
               wird.

          Siehe das Repository von hpcguix-web für ein vollständiges
          Beispiel
          (https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm).

     ‘package’ (Vorgabe: ‘hpcguix-web’)
          Das hpcguix-web-Paket, was benutzt werden soll.

   Eine typische Deklaration eines hpcguix-web-Dienstes sieht so aus:

     (service hpcguix-web-service-type
              (hpcguix-web-configuration
               (specs
                #~(define site-config
                    (hpcweb-configuration
                     (title-prefix "Guix-HPC - ")
                     (menu '(("/about" "ABOUT"))))))))

     Anmerkung: Der hpcguix-web-Dienst aktualisiert die Liste der
     Pakete, die er veröffentlicht, periodisch, indem er die Kanäle über
     einen Git-„Pull“ lädt. Dazu muss er auf X.509-Zertifikate
     zugreifen, damit Git-Server authentifiziert werden können, wenn mit
     diesen über HTTPS kommuniziert wird, wofür der Dienst davon
     ausgeht, dass sich jene Zertifikate in ‘/etc/ssl/certs’ befinden.

     Stellen Sie also sicher, dass ‘nss-certs’ oder ein anderes
     Zertifikatspaket im ‘packages’-Feld ihrer Konfiguration steht.
     Siehe *note X.509-Zertifikate:: für weitere Informationen zu
     X.509-Zertifikaten.

gmnisrv
.......

Das Programm gmnisrv (https://git.sr.ht/~sircmpwn/gmnisrv) ist ein
einfacher Server für das Gemini-Protokoll
(https://gemini.circumlunar.space/).

 -- Scheme-Variable: gmnisrv-service-type
     Dies ist der Diensttyp des gmnisrv-Dienstes, dessen Wert ein
     ‘gmnisrv-configuration’-Objekt wie in diesem Beispiel sein sollte:

          (service gmnisrv-service-type
                   (gmnisrv-configuration
                     (config-file (local-file "./my-gmnisrv.ini"))))

 -- Datentyp: gmnisrv-configuration
     Datentyp, der die Konfiguration von gmnisrv repräsentiert.

     ‘package’ (Vorgabe: GMNISRV)
          Das Paketobjekt des gmnisrv-Servers.

     ‘config-file’ (Vorgabe: ‘%default-gmnisrv-config-file’)
          Ein dateiartiges Objekt mit der zu nutzenden
          gmnisrv-Konfigurationsdatei. Die Vorgabekonfiguration lauscht
          auf Port 1965 und bietet die Dateien in ‘/srv/gemini’ an.
          Zertifikate werden in ‘/var/lib/gemini/certs’ gespeichert.
          Führen Sie für mehr Informationen ‘man gmnisrv’ und ‘man
          gmnisrv.ini’ aus.

Agate
.....

Das Programm Agate (gemini://qwertqwefsday.eu/agate.gmi) (GitHub-Seite
über HTTPS (https://github.com/mbrubeck/agate)) ist ein einfacher Server
für das Gemini-Protokoll (https://gemini.circumlunar.space/), der in
Rust geschrieben ist.

 -- Scheme-Variable: agate-service-type
     Dies ist der Diensttyp des agate-Dienstes, dessen Wert ein
     ‘agate-configuration’-Objekt wie in diesem Beispiel sein sollte:

          (service agate-service-type
                   (agate-configuration
                     (content "/srv/gemini")
                     (cert "/srv/cert.pem")
                     (key "/srv/key.rsa")))

     Das obige Beispiel steht für die minimalen Abänderungen, um Agate
     lauffähig zu machen. Den Pfad zum Zertifikat und zum Schlüssel
     anzugeben, ist auf jeden Fall nötig, denn das Gemini-Protokoll
     setzt standardmäßig TLS voraus.

     Um ein Zertifikat und einen Schlüssel zu bekommen, können Sie zum
     Beispiel OpenSSL benutzen. Das ginge mit einem Befehl ähnlich zu
     diesem Beispiel hier:

          openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem \
              -days 3650 -nodes -subj "/CN=beispiel.com"

     Natürlich müssen Sie statt beispiel.com Ihren eigenen Domainnamen
     angeben und dann die Konfiguration von Agate auf den Pfad des damit
     erzeugten Schlüssels und Zertifikats verweisen lassen.

 -- Datentyp: agate-configuration
     Der Datentyp, der die Konfiguration von Agate repräsentiert.

     ‘package’ (Vorgabe: ‘agate’)
          Das Paketobjekt des Agate-Servers.

     ‘content’ (Vorgabe: ‘"/srv/gemini"’)
          Aus welchem Verzeichnis Agate Dateien anbieten soll.

     ‘cert’ (Vorgabe: ‘#f’)
          Der Pfad zur PEM-Datei mit dem TLS-Zertifikat, das
          verschlüsselte Verbindungen ermöglicht. Hier muss ein Wert
          angegeben werden.

     ‘key’ (Vorgabe: ‘#f’)
          Dateipfad zur Datei mit dem privaten PKCS8-Schlüssel, der für
          verschlüsselte Verbindungen benutzt wird. Hier muss ein Wert
          angegeben werden.

     ‘addr’ (Vorgabe: ‘'("0.0.0.0:1965" "[::]:1965")’)
          Liste der Adressen, auf denen gelauscht werden soll.

     ‘hostname’ (Vorgabe: ‘#f’)
          Der Domainname dieses Gemini-Servers. Optional.

     ‘lang’ (Vorgabe: ‘#f’)
          RFC-4646-Sprachcode(s) für Dokumente des Typs text/gemini.
          Optional.

     ‘silent?’ (Vorgabe: ‘#f’)
          Setzen Sie dies auf ‘#t’, um Protokollausgaben auszuschalten.

     ‘serve-secret?’ (Vorgabe: ‘#f’)
          Setzen Sie dies auf ‘#t’, um geheime Dateien (mit einem Punkt
          beginnende Dateien und Verzeichnisse) anzubieten.

     ‘log-ip?’ (Vorgabe: ‘#t’)
          Ob in die Protokolle auch IP-Adressen geschrieben werden
          sollen.

     ‘user’ (Vorgabe: ‘"agate"’)
          Besitzer des ‘agate’-Prozesses.

     ‘group’ (Vorgabe: ‘"agate"’)
          Gruppe des Besitzers des ‘agate’-Prozesses.

     ‘log-file’ (Vorgabe: ‘"/var/log/agate.log"’)
          Die Datei, in die die Protokollierung von Agate ausgegeben
          werden soll.


File: guix.de.info,  Node: Zertifikatsdienste,  Next: DNS-Dienste,  Prev: Web-Dienste,  Up: Dienste

10.8.19 Zertifikatsdienste
--------------------------

Das Modul ‘(gnu services certbot)’ stellt einen Dienst zur Verfügung, um
automatisch ein gültiges TLS-Zertifikat von der Zertifikatsautorität
Let’s Encrypt zu beziehen. Mit diesen Zertifikaten können Informationen
sicher über HTTPS oder andere TLS-basierte Protokolle übertragen werden,
im Wissen, dass der Client die Authentizität des Servers überprüfen wird
können.

   Let’s Encrypt (https://letsencrypt.org/) macht das ‘certbot’-Werkzeug
verfügbar, mit dem der Zertifizierungsvorgang automatisiert werden kann.
Das Werkzeug erzeugt zunächst auf sichere Weise einen Schlüssel auf dem
Server und stellt dann eine Anfrage an die
Let’s-Encrypt-Zertifikatsautorität („Certificate Authority“, kurz CA),
den Schlüssel zu signieren. Die Zertifikatsautorität prüft mit einem
Challenge-Response-Protokoll, dass die Anfrage auch wirklich vom
fraglichen Rechner (auch „Host“ genannt) kommt, wozu der Server über
HTTP seine Antwort geben muss. Wenn dieses Protokoll erfolgreich befolgt
wurde, signiert die Zertifikatsautorität den Schlüssel, woraus sich ein
Zertifikat ergibt. Dieses Zertifikat ist eine begrenzte Zeit lang
gültig, daher muss der Server für eine andauernde Bereitstellung von
TLS-Leistungen immer wieder neu der Zertifikatsautorität eine Bitte um
die Erneuerung der Signatur zukommen lassen.

   Mit dem certbot-Dienst wird dieser Prozess automatisiert. Er sorgt
dafür, dass am Anfang Schlüssel erzeugt werden und eine erste
Zertifizierungsanfrage an den Dienst von Let’s Encrypt gestellt wird.
Weiterhin ist das Challenge-/Response-Verfahren per Web-Server
integriert. Das Zertifikat wird auf die Platte geschrieben und
automatisch periodisch erneuert und bei der Erneuerung anfallende
Aufgaben werden erledigt (z.B. das Neuladen von Diensten und das
Kopieren von Schlüsseln mit entsprechenden Berechtigungen).

   Certbot wird zweimal täglich zu einer zufälligen Minute der Stunde
ausgeführt. Es tut so lange nichts, bis eine Erneuerung Ihrer
Zertifikate fällig wird oder sie gesperrt wurden, durch regelmäßige
Ausführung bekommen Sie aber die Chance, dass Ihr Server am Netz bleibt,
wenn Let’s Encrypt eine Sperrung aus irgendeinem Grund anordnet.

   Durch die Nutzung dieses Dienstes stimmen Sie dem „ACME Subscriber
Agreement“ zu, das Sie hier finden::
<https://acme-v01.api.letsencrypt.org/directory>.

 -- Scheme-Variable: certbot-service-type
     Ein Diensttyp für den ‘certbot’-Client für Let’s Encrypt. Sein Wert
     muss ein ‘certbot-configuration’-Verbundsobjekt wie in diesem
     Beispiel sein:

          (define %nginx-deploy-hook
            (program-file
             "nginx-deploy-hook"
             #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read)))
                 (kill pid SIGHUP))))

          (service certbot-service-type
                   (certbot-configuration
                    (email "foo@example.net")
                    (certificates
                     (list
                      (certificate-configuration
                       (domains '("example.net" "www.example.net"))
                       (deploy-hook %nginx-deploy-hook))
                      (certificate-configuration
                       (domains '("bar.example.net")))))))

     Siehe unten für Details zur ‘certbot-configuration’.

 -- Datentyp: certbot-configuration
     Datentyp, der die Konfiguration des ‘certbot’-Dienstes
     repräsentiert. Dieser Typ verfügt über die folgenden Parameter:

     ‘package’ (Vorgabe: ‘certbot’)
          Das certbot-Paket, das benutzt werden soll.

     ‘webroot’ (Vorgabe: ‘/var/www’)
          Das Verzeichnis, aus dem heraus die Dateien für den
          Challenge-/Response-Prozess von Let’s Encrypt angeboten werden
          sollen.

     ‘certificates’ (Vorgabe: ‘()’)
          Eine Liste der ‘certificates-configuration’-Objekte, für die
          Zertifikate und Anfragesignaturen erzeugt werden. Für jedes
          Zertifikat gibt es einen ‘name’-Eintrag und mehrere ‘domains’.

     ‘email’ (Vorgabe: ‘#f’)
          Optional die E-Mail-Adresse, die als Kontakt für die
          Registrierung und das Wiedererlangen dienen soll. Es wird
          empfohlen, sie anzugeben, weil Sie darüber wichtige
          Mitteilungen über Ihr Konto und ausgestellte Zertifikate
          mitbekommen können.

     ‘server’ (Vorgabe: ‘#f’)
          Optional eine andere URL des ACME-Servers. Wenn sie festgelegt
          wird, ersetzt sie die Voreinstellung von Certbot, nämlich die
          URL des Let’s-Encrypt-Servers.

     ‘rsa-key-size’ (Vorgabe: ‘2048’)
          Wie groß der RSA-Schlüssel sein soll.

     ‘default-location’ (Vorgabe: siehe unten)
          Die vorgegebene ‘nginx-location-configuration’. Weil ‘certbot’
          „Challenges“ und „Responses“ anbieten muss, muss durch ihn ein
          Web-Server ausgeführt werden können. Das tut er, indem er den
          ‘nginx’-Webdienst mit einer ‘nginx-server-configuration’
          erweitert, die auf den DOMAINS auf Port 80 lauscht und eine
          ‘nginx-location-configuration’ für den URI-Pfad-Teilraum
          ‘/.well-known/’ umfasst, der von Let’s Encrypt benutzt wird.
          Siehe *note Web-Dienste:: für mehr Informationen über diese
          nginx-Konfigurationsdatentypen.

          Anfragen an andere URL-Pfade werden mit der ‘default-location’
          abgeglichen. Wenn sie angegeben wurde, wird sie zu jeder
          ‘nginx-server-configuration’ hinzugefügt.

          Nach Vorgabe stellt die ‘default-location’ eine Weiterleitung
          von ‘http://DOMAIN/…’ nach ‘https://DOMAIN/…’ her. Sie müssen
          dann nur noch festlegen, was Sie auf Ihrem Webauftritt über
          ‘https’ anbieten wollen.

          Übergeben Sie ‘#f’, um keine ‘default-location’ vorzugeben.

 -- Datentyp: certificate-configuration
     Der Datentyp, der die Konfiguration eines Zertifikats
     repräsentiert. Dieser Typ hat die folgenden Parameter:

     ‘name’ (Vorgabe: siehe unten)
          Dieser Name wird vom Certbot intern zum Aufräumen und in
          Dateipfaden benutzt; er hat keinen Einfluss auf den Inhalt des
          erzeugten Zertifikats. Um Zertifikatsnamen einzusehen, führen
          Sie ‘certbot certificates’ aus.

          Die Vorgabe ist die erste angegebene Domain.

     ‘domains’ (Vorgabe: ‘()’)
          Die erste angegebene Domain wird als Name des
          Zertifikatseigentümers („Subject CN“) benutzt und alle Domains
          werden als alternative Namen („Subject Alternative Names“) auf
          dem Zertifikat stehen.

     ‘challenge’ (Vorgabe: ‘#f’)
          Welche Art von Challenge durch den Certbot ausgeführt wird.
          Wenn ‘#f’ angegeben wird, wird die HTTP-Challenge
          voreingestellt. Wenn ein Wert angegeben wird, wird das Plugin
          benutzt, das auch bei manuellen Ausführungen benutzt wird
          (siehe ‘authentication-hook’, ‘cleanup-hook’ und die
          Dokumentation unter
          <https://certbot.eff.org/docs/using.html#hooks>), und Let’s
          Encrypt wird dazu berechtigt, die öffentliche IP-Adresse der
          anfordernden Maschine in seinem Protokoll zu speichern.

     ‘authentication-hook’ (Vorgabe: ‘#f’)
          Welcher Befehl in einer Shell zum Antworten auf eine
          Zertifikats-„Challenge“ einmalig ausgeführt wird. Für diesen
          Befehl wird die Shell-Variable ‘$CERTBOT_DOMAIN’ die Domain
          enthalten, für die sich der Certbot authentisiert,
          ‘$CERTBOT_VALIDATION’ enthält die Validierungs-Zeichenkette
          und ‘$CERTBOT_TOKEN’ enthält den Dateinamen der bei einer
          HTTP-01-Challenge angefragten Ressource.

     ‘cleanup-hook’ (Vorgabe: ‘#f’)
          Welcher Befehl in einer Shell für jede Zertifikat-„Challenge“
          einmalig ausgeführt wird, die vom ‘auth-hook’ beantwortet
          wurde. Für diesen Befehl bleiben die Shell-Variablen weiterhin
          verfügbar, die im ‘auth-hook’-Skript zur Verfügung standen,
          und außerdem wird ‘$CERTBOT_AUTH_OUTPUT’ die Standardausgabe
          des ‘auth-hook’-Skripts enthalten.

     ‘deploy-hook’ (Vorgabe: ‘#f’)
          Welcher Befehl in einer Shell für jedes erfolgreich
          ausgestellte Zertifikat einmalig ausgeführt wird. Bei diesem
          Befehl wird die Shell-Variable ‘$RENEWED_LINEAGE’ auf das
          Unterverzeichnis für die aktuelle Konfiguration zeigen (zum
          Beispiel ‘"/etc/letsencrypt/live/example.com"’), in dem sich
          die neuen Zertifikate und Schlüssel befinden. Die
          Shell-Variable ‘$RENEWED_DOMAINS’ wird eine
          leerzeichengetrennte Liste der erneuerten Zertifikatsdomänen
          enthalten (zum Beispiel ‘"example.com www.example.com"’.

   Für jede ‘certificate-configuration’ wird das Zertifikat in
‘/etc/letsencrypt/live/NAME/fullchain.pem’ und der Schlüssel in
‘/etc/letsencrypt/live/NAME/privkey.pem’ gespeichert.
