[snapshot]
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Mon, 22 Dec 2014 00:15:40 +0100
changeset 1 8ca8d1b61947
parent 0 1a57317575ca
child 2 130fc78aac2a
[snapshot]
Makefile
appendix.txt
config.txt
exim.txt
operation.txt
--- a/Makefile	Mon Dec 08 21:15:10 2014 +0100
+++ b/Makefile	Mon Dec 22 00:15:40 2014 +0100
@@ -1,4 +1,4 @@
-TXT = exim.txt
+TXT = exim.txt operation.txt config.txt appendix.txt
 PDF = ${TXT:.txt=.pdf}
 HTML = ${TXT:.txt=.html}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appendix.txt	Mon Dec 22 00:15:40 2014 +0100
@@ -0,0 +1,10 @@
+= Anhang =
+
+[[spec-file]]
+== Exim Spezifikation
+
+Die ultimative Exim-Referenz ist das „Spec-File“. Dies finden Sie im
+Dokumentationsverzeichnis ihrer Linux-Distribution, oder auch auf der 
+link:http://www.exim.org/[Exim-Webseite].
+
+// vim:ft=asciidoc
--- /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
+
--- a/exim.txt	Mon Dec 08 21:15:10 2014 +0100
+++ b/exim.txt	Mon Dec 22 00:15:40 2014 +0100
@@ -1,84 +1,49 @@
-Exim
-====
-Heiko Schlittermann
+= Exim - Konfiguration und Betrieb =
+:Author:    Heiko Schlittermann
+:Email:	    hs@schlittermann.de
+:Date:	    2014-12-21
+:Revision:  0.1
 :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.
+:toc:
 
-
-=== Format der Konfigurationsdatei
-
-Die Konfigurationsdatei beginnt mit einem globalen Teil, es folgen
-Abschnitte für ACL, Router, Transports, Address-Rewriting,
-Retry-Verhalten und Authentifizierung.
+[[preface]]
+= Vorwort =
 
-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:
+SMTP-Server gehören neben Webservern vermutlich zur am häufigsten
+genutzen Art von Servern. Sie treten jedoch deutlich selterner in
+Erscheinung, jedoch beruht ein Großteil dessen, was wir als _Internet_
+bezeichnen auf der Funktion von SMTP-Servern.
 
-. Kommentarzeilen werden entfernt
-. Fortsetzungszeilen werden zusammengesetzt
-
-Es ist also möglich, auch innerhalb von Fortsetzungszeilen Kommentare zu
-verwenden:
+Seit etwa 1996 beschäftige ich mich mit dem Betrieb von SMTP-Servern,
+seit etwa 1997 ist es der Exim. Durch meine Arbeit konnte ich viel über
+die Interna des Exim lernen. 
 
-----
-    domainlist local_domains = example.com \
-			       # foo bar comment
-			       : example.org \
-			       : example.net
-----
-
+.Für wen ist dieses Buch?
+Sie möchten Ihrem Exim konfigurieren und betreiben und Sie möchten dabei
+verstehen, was Sie tun. Dieses Buch soll kein Ersatz für die überaus
+hervorragende <<spec-file,Exim-Spezifikation>> sein, sondern eine
+Ergänzung.
 
-==== Macros
-
-In der Konfigurationsdatei dürfen Macros enthalten sein. Macros bestehen
-ausschließlich aus Großbuchstaben und Ziffern.
+.Referenz
+Dieses Buch bezieht sich auf die Exim-Version 4.85.  An einigen Stellen
+wurden die Darstellungen vereinfacht. Die ultimative Informationsquelle
+ist immer das <<spec-file,Spec-File>>
 
-----
-    FOOBAR = foo bar
-    FOO = bar
-----
+== Typographische Konventionen
+
+Folgende Konventionen werden im folgenden verwendet:
 
-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:
+'exim.conf'::
+    verwenden wir für Pfad- und Dateinamen.
 
-----
-    FOO = bar
-    …
-    FOO == foobar
-----
+`ls -l`::
+    verwenden wir für Kommandos.
 
-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.]
+*router*::
+    verwenden wir für Namen von Exim-Routern, -Transports und -Authenticators
 
-    exim -DFOO=bar …
-
-==== Includes
+include::operation.txt[]
+include::config.txt[]
+include::appendix.txt[]
 
-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.
+// vim:ft=asciidoc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/operation.txt	Mon Dec 22 00:15:40 2014 +0100
@@ -0,0 +1,6 @@
+= Funktionsweise =
+
+In diesem Teil wird der Nachrichtenfluss und die Zusammenarbeit der
+einzelnen Exim-Komponenten erklärt. 
+
+// vim:ft=asciidoc: