diff -r 1a57317575ca -r 8ca8d1b61947 config.txt --- /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 <>, 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 +