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