config.txt
changeset 1 8ca8d1b61947
child 2 130fc78aac2a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.txt	Mon Dec 22 00:15:40 2014 +0100
@@ -0,0 +1,115 @@
+= Konfiguration =
+
+Die Konfigurationsdatei des Exim ist der „magischste“ Teil des Exim.
+Viele Einstellungen in der Konfiguration werden erst zur Laufzeit
+interpretiert.  Ein Test, ob die Konfiguration syntaktisch
+korrekt ist, lässt sich ausführen mit:
+
+ > exim -bV
+
+Syntaktische Korrektheit allein ist jedoch nicht ausreichend. Fehler
+können auch später, z.B. durch durch <<expansion,Text-Expansion>>, auftreten.
+
+== Konfigurationsdatei
+
+Exim sucht beim Start nach genau einer Konfigurationsdatei.
+Je nach Build können mehrere Stellen in Frage kommen. Der Name der
+verwendeten Konfigurationsdatei läßt sich ermitteln:
+
+ > exim -bP configure_file
+
+Alternativ kann dem Exim auch der Name einer Konfigurationsdatei auf der
+Kommandozeile übergeben werden. Jedoch wird Exim einer solchen
+Konfiguration nur bedingt vertrauen und unter Umständen sofort auf seine
+setuid-Eigenschaften verzichten.
+
+Diese eine Konfigurationsdatei kann `.include`-Anweisungen enthalten, um
+weitere Teile einzulesen.
+
+=== Syntax der Konfigurationsdatei
+
+TIP: Eine leere Datei ist eine gültige Konfigurationsdatei, aber nicht
+zwingend eine brauchbare Konfiguration. Für kurze Tests ist dieser Fakt
+aber sehr brauchbar. Z.B: `exim -C /dev/null -bP primary_hostname`, um
+Exims Vorstellung über den aktuellen Hostnamen zu überprüfen.
+
+Es gelten folgende einfache Regeln beim Lesen der Konfiguration:
+
+.Whitespace
+Leer- und Tabulatorzeichen am Zeilenanfang und -ende werden ignoriert.
+
+.Kommentare
+Zeilen, die mit `#` beginnen, werden ignoriert. Wird an anderen Stellen
+ein `#` verwendet, hat dieses Zeichen *nicht* die Bedeutung eines
+Kommentarzeichens.
+
+.Fortsetzungzeilen
+Zeilen, die mit einem `\` enden, werden durch die Folgezeile fortgesetzt, 
+der Zeilenumbruch wird dabei entfernt.
+
+.Macrodefinitionen
+// spec:6.4
+Macros werden häufig verwendet, um sehr lange Konfigurationsausdrücke zu
+vereinfachen.  Makros ermöglichen eine einfach Textersetzung beim
+*Einlesen* der Konfiguration:
+
+----
+FOO = foo   <1>
+FOO == bar  <2>
+----
+<1> Definition des Macros
+<2> Neu-Definition des Macros
+
+Macros können auf der Kommandozeile mit `-DFOO=foobar` gesetzt werden.
+
+.Einbettung weiterer Files
+In das Hauptkonfigurations-File können weitere Dateien eingebetten
+werden:
+
+----
+.include other/file
+----
+
+Eine bedingte Einbettung ist mit `.include_if_exists` möglich.
+
+.Bedingtes Einlesen
+// spec:6.9
+In Abhängigkeit von definierten Macros können Teile der
+Konfigurationsdatei überprungen werden:
+
+----
+.ifdef FOO
+primary_hostname = foo
+.endif
+----
+
+Verwendbar sind `.ifdef`, `.ifndef`, `.elifdef`, `.elifndef`,
+`.else` und `.endif`. Dies Auswertung erfolgt während des Einlesens der
+Konfiguration, also noch *vor* dem Start des Exim.
+
+[[config.structure]]
+=== Aufbau der Konfigurationsdatei
+
+Die Konfiguration ist entsprechend der Funktionsweise des Exim neben dem
+globalen Teil in mehrere Abschnitte gegliedert:
+
+ACL::
+    Access Control Lists steuern während einer eingehenden Verbindung
+    die Akzeptanz der Nachricht
+
+Routers::
+    Router sind Regeln, nach denen die Nachrichten weitergeleitet
+    werden.
+
+Transports::
+    Im Transports-Abschnit wird festgelegt, wie die Nachrichten
+    weitergeleitet werden.
+
+Rewrite::
+    In diesem Abschnitt sind die Regeln beschrieben, nach denen
+    Adress-Umschreibungen vorgenommen werden sollen.
+
+Authentication::
+    Konfiguration der Authentifizierungsparameter als Client und als
+    Server
+