diff -r 000000000000 -r 1a57317575ca exim.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/exim.txt Mon Dec 08 21:15:10 2014 +0100 @@ -0,0 +1,84 @@ +Exim +==== +Heiko Schlittermann +:doctype: book + +Im folgenden nehme ich Bezug auf Exim 4.85. +Ultimative Referenz ist immer das Spec-File, also die +Referenzdokumentation, die den Exim begleitet. Einige Details werden +hier ausgelassen werden. + +== Konfigurationsdatei + +Exim sucht beim Start nach genau einer Konfigurationsdatei. +Diese lässt sich mit + + exim -bP configure_file + +anzeigen. + + +=== Format der Konfigurationsdatei + +Die Konfigurationsdatei beginnt mit einem globalen Teil, es folgen +Abschnitte für ACL, Router, Transports, Address-Rewriting, +Retry-Verhalten und Authentifizierung. + +Kommentare sind erlaubt - das sind Zeilen, die mit dem Rautenzeichen (#) +beginnen. Vor der Raute ist lediglich Whitespace erlaubt. Rautenzeichen +an anderen Stellen sind *kein* Kommentar. + +Der Parser der Konfigurationsdatei ist relativ simpel: + +. Kommentarzeilen werden entfernt +. Fortsetzungszeilen werden zusammengesetzt + +Es ist also möglich, auch innerhalb von Fortsetzungszeilen Kommentare zu +verwenden: + +---- + domainlist local_domains = example.com \ + # foo bar comment + : example.org \ + : example.net +---- + + +==== Macros + +In der Konfigurationsdatei dürfen Macros enthalten sein. Macros bestehen +ausschließlich aus Großbuchstaben und Ziffern. + +---- + FOOBAR = foo bar + FOO = bar +---- + +Die Macros sind ein sehr einfacher Textersetzungsmechanismus, der +während des Einlesens der der Konfiguration stattfindet. Die Gültigkeit +der Macros beginnt an der Stelle ihrer Definition. Macro-Namen dürfen +nicht in später definierten Macro-Namen enthalten sein. Eine +Neudefinition von Macros ist jederzeit möglich: + +---- + FOO = bar + … + FOO == foobar +---- + +Macros, die auf der Kommandozeile beim Aufruf des Exim gesetzt werden, +haben Vorrang vor denen, die in der Konfiguration definiert sind. Aus +Sicherheitsgründen legt Exim aber seine setuid-Rechte ab, sobald auf der +Kommandozeile Macros definiert sind. +footnote:[Mit Ausnahme von Macros, die in einer zur Build-Zeit +definierten Whitelist stehen.] + + exim -DFOO=bar … + +==== Includes + +Die Konfigurationsdatei darf weitere Konfigurationsdateien +referenzieren. Diese werden mit `.include` oder mit +`.include_if_exists` eingelesen. Ebenso ist ein bedingtes Lesen von +Teilen der Konfiguration möglich: `.ifdef` erlaubt hier den Test von +Macros.