--- a/short.txt Sun Jul 05 22:52:36 2015 +0200
+++ b/short.txt Sun Jul 05 23:40:51 2015 +0200
@@ -17,15 +17,6 @@
== Typografische Konventionen
-////
-_italic_::
- Namen von Dateien, Programmen, Hosts, Domains, Mail-Header, URLS: _example.com_, _From:_
-o:fixed::
- Kommandos, Code-Beispiele, Exim-Konfigurations-Optionen: o:primary_hostname
-*+fixed bold+*::
- Hervorhebung von Kommandos, Nutzereingaben: *+exim -bV+*
-////
-
d:bold::
Exim Treibernamen im Text: Der driver:dnslookup Router
@@ -43,15 +34,14 @@
<<editme,Build Konfiguration>> und die <<runtime,Runtime Konfiguration>>.
[[editme]]
-== Build-Konfiguration _EDITME_
+=== Build-Konfiguration _EDITME_
* Maintainer pflegt die _EDITME_
* Je nach Distro unterschiedliche Konfigurationen, teilweise sogar
mehrere, wie 'fat', 'light', 'heavy'.
+* Wesentliche Daten der Features aus der Build-Konfiguration:
- $ exim -bV
-
-listet wesentliche in der Buildkonfiguration gewählte Features auf.
+ exim -bV
[[runtime]]
=== Runtime-Konfiguration _exim.conf_
@@ -61,7 +51,7 @@
Das verwendete File läßt sich ermitteln mit:
- $ exim -bP configure_file
+ exim -bP configure_file
Das aktive Konfigurationsfile kann auch auf der Kommandozeile festgelegt
werden. Für einige Operationen muss der Pfad ein absoluter sein. Auch
@@ -79,14 +69,7 @@
und eventuell über o:.include eingelesener Files
ist statisch. Dynamisch sind dann Expansionen, Lookups.
-=== Syntax
-
-Der Parser der Konfigurationsdatei ist ziemlich einfach.
-
-. Kommentarzeilen werden entfernt
-. Führende und anhängige Leerzeichen werden entfernt
-. Forsetzungszeilen („\“ am Zeilenende) werden zusammengefasst
-. einfache Syntax-Checks
+== Aufbau der Runtime-Konfiguration _exim.conf_
Die Konfiguration besteht aus mehreren Abschnitten. Nicht alle Abschnitte
sind identisch aufgebaut.
@@ -108,7 +91,12 @@
Authentifizierung::
Parameter für die SMTP-Authentifizierung (sowohl Client als auch Server)
-== Syntax der Konfiguration
+== Syntax der Runtime-Konfiguration _exim.conf_
+
+. Führende und anhängige Leerzeichen werden entfernt
+. Kommentarzeilen werden entfernt
+. Forsetzungszeilen („\“ am Zeilenende) werden zusammengefasst
+. Macros werden ersetzt
=== Kommentare
@@ -119,7 +107,7 @@
* Macros werden generell groß geschrieben.
* Macros sind ein einfache statischer Textersetzungsmechanismus (im Sinne
-* globaler „Konstanten“) und für das
+ globaler „Konstanten“) und für das
bedingte Parsen von Konfigurationsteilen.
* Macros können in der Konfiguration definiert werden, aber
auch auf der Kommandozeile. (Auf der Kommandozeile gibt es jedoch wegen eventueller Sicherheitsimplikationen
@@ -142,14 +130,15 @@
exim -DTESTING -DTRANSPORT=foo …
-Macros können neu definiert werden („==“ statt „=“). Macros von der Kommandozeile haben Vorrang.
+* Macros können neu definiert werden („==“ statt „=“).
+* Macros von der Kommandozeile haben Vorrang.
=== Optionen
* Optionen werden generell klein geschrieben.
* Es gibt ca. 250 globale Optionen, hinzu kommen noch weitere Optionen für Router,
Transports, Authenticators, usw.
-* Optionen haben einen bestimmten <<types,Datentyp>>.
+* Optionen haben einen Werte von bestimmten <<types,Datentypen>>.
.Beispiel
primary_hostname = foo.example.com
@@ -171,12 +160,12 @@
hostlist trusted_hosts = 192.168.0.0/24 : 127.0.0.1
Mail-Adressen::
- Mailadressen
+ Mail-Adressen von Absender oder Empfänger
addresslist blocked_senders = ad@bestholiday.de : *@mailgun.com
Local Parts::
- Local Parts von Mail-Adressen, z.B. von ACL-Checks ausgenommene lokale Empfänger
+ Local Parts von Mail-Adressen
localpartlist rfc = postmaster : abuse
@@ -190,12 +179,15 @@
.Beispiel Debugging
exim -bP +local_domains
-=== Instanzen von Routern, Transports, Authentificators
+=== Instanzen von Routern, Transports, Authenticators
-* Router, Transports und Authenificators werden in einzelnen „Funktionsblöcken“ definiert.
-* Diese Blöcke haben selbstgewählte Namen und eine Liste von
- Optionen, die das Verhalten des jeweiligen Routers, Transports oder
- Authenticators bestimmen.
+* Router, Transports und Authenticators werden in einzelnen „Funktionsblöcken“ definiert.
+* Diese Blöcke haben selbstgewählte Namen, einen Treiber, der das generelle
+ Verhalten des Blocks festlegt und Optionen,
+ die das Verhalten des jeweiligen Routers, Transports oder
+ Authenticators weiter bestimmen.
+* _Generische_ Optionen gelten für alle Router, Transports
+* Jeder Treiber hat zusätzlich spezifische Optionen
.Beispiel
begin transports
@@ -211,11 +203,11 @@
[[types]]
== Werte und ihre Typen
-ALle Optionen der Konfigurationsdatei haben einen spezifischen Daten-Typ.
+Alle Optionen der Konfigurationsdatei haben einen spezifischen Daten-Typ.
* _bool_, _integer_, _fixed-point_, _time_ und _string_
* Listen sind immer String-Listen
-* Werte, die der Expansion unterliegen, sind immer vom Typ _string_
+* Werte, die der späteren Expansion unterliegen, sind immer vom Typ _string_
=== Bool
@@ -223,8 +215,7 @@
Werte vom Typ _bool_ sind einfache Schalter.
.Format
- <option> = true|yes
- <option> = false|no
+ ... = true|yes|false|no
<option>
no_<option>
not_<option>
@@ -241,17 +232,17 @@
.Format
… = <digits>[<suffix>]
- = 0<oct digts>[<suffix>]
- = 0x<hex digts>[<suffix>]
+ … = 0<oct digts>[<suffix>]
+ … = 0x<hex digts>[<suffix>]
Erlaubte Suffixe sind 'K' (2^10^) und 'M' (2^20^).
.Beipiel
check_spool_space = 10M
-=== Fixed-Point
+=== Festkomma-Zahlen
-Fixkomma-Zahlen, maximal 3 Nachkommastellen
+Festkomma-Zahlen, maximal 3 Nachkommastellen
.Format
… = <digits>[.<max 3 digits>]
@@ -274,11 +265,9 @@
.Beispiel
auto_thaw = 3d12h
-CAUTION: Bei der Ausgabe von Intervall-Optionen werden die Zeiten normalisiert.
-
=== Zeichenketten
-* Zeichenketten gibt es in zwei Formen: Literale Zeichenketten und gequotete
+* Zeichenketten gibt es in zwei Formen: *literale* Zeichenketten und *gequotete*
Zeichenketten..
* Zeichenketten, die später noch expandiert werden, werden _immer_ als gequotete
Zeichenketten behandelt.
@@ -335,8 +324,11 @@
* Reguläre Ausdrücke werden durch 'libpcre' ausgewertet, sie sind also kompatibel
mit den von Perl bekannten regulären Ausdrücken.
-* Reguläre Ausdrücke werden immer zuerst als String evaluiert, eventuelle Backslash-Sequenzen müssen also ggf. geschützt
+* Reguläre Ausdrücke werden immer zuerst als String evaluiert und normalerweise
+ dort, wo Expansion stattfindet, eventuelle Backslash-Sequenzen müssen also ggf. geschützt
werden.
+* Dort wo Reguläre Ausdrücke mit anderen Syntaxelementen verwechselt werden
+ könnten, beginnen sie zwingend mit „^“.
.Format
… = ^<regexp>
@@ -350,11 +342,11 @@
== Expansion von Zeichenketten
-* Viele Stellen der Konfiguration verwenden String-Expansion (Typ 'string*' im
-_spec.txt_). String-Expansion wird von '$' getriggert. Das Ergebnis ist dann
-ein neuer String oder 'forced failure'.
-* Die Expansion der Strings erfolgt in der Regel erst im Bedarfsfall („late
-binding“).
+* Viele Stellen der Konfiguration verwenden Zeichenketten-Expansion (Typ 'string*' im
+_spec.txt_). Zeichenketten-Expansion wird von '$' getriggert. Das Ergebnis ist dann
+ein neuer String oder 'forced failure', dieses ist vergleichbar mit 'undef' oder
+'NULL'.
+* Die Expansion der Strings erfolgt erst im Bedarfsfall („late binding“).
CAUTION: Es stehen aber nicht in jeder Phase alle Expansions-Items zur Verfügung. (z.B.
wird der Wert der globalen Option o:message_size_limit expandiert, aber bereits
@@ -373,9 +365,11 @@
=== Expansions-Items
-* Aus Sicht des Expanders ist alles, was mit einem '$' beginnt, ein
+* Aus Sicht des Expanders ist jedes Token, das mit einem '$' beginnt, ein
Expansions-Item.
+Diese Expansions-Items lassen sich unterteilen:
+
Variablen::
Das sind operative Parameter, Information über die aktuelle Nachricht,
den aktuellen Systemzustand, Rückgabewerte.
@@ -453,8 +447,8 @@
* Der Key ergibt sich aus dem Kontext, das Lookup wird dennoch durch den
String-Expander behandelt. Wenn das Lookup erfolgreich ist, wird als Resultat
- der Key zurückgeliefert, nicht ein eventuell vorhandener Wert!
-* Analogie: +exists($key) ? $key : ''+
+ der Key zurückgeliefert, und *nicht* ein eventuell vorhandener Wert!
+* Analogie: ++exists($key) ? $key : ''++
.Format
… = <type>;<file>
@@ -468,7 +462,7 @@
==== Single Key
-Single-Key Lookups beziehen sich auf einfach (und meist schnelle) Key/Value
+Single-Key Lookups beziehen sich auf einfache (und meist schnelle) Key/Value
Daten. Das sind Dateien im Format der _/etc/aliases_, das sind Verzeichnisse und
DBM-Files.
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-file_and_database_lookups.html#SECTsinglekeylookups[spec]
@@ -655,6 +649,18 @@
entscheiden und dann die SMTP-Verbindung mit 5xx zu beenden. Damit bleibt die
Verantwortung für die Bounce beim Absender.
+.Beispiel
+
+ acl_check_recipient:
+
+ accept local_parts = postmaster
+ domains = +local_domains
+
+ require message = sender verification failed
+ verify = sender
+
+ …
+
== Router
Im Router-Abschnitt wird durch einzelne Blöcke das Routing-Verhalten gesteuert.
@@ -672,7 +678,7 @@
case FAIL: generate bounce
case DEFER: back to queue
case DECLINE: if (more?) goto NEXT ROUTER
- generate bounce
+ default: generate bounce
.Beispiel
external:
@@ -805,11 +811,10 @@
=== Prozesse
-Mit
+Für eine gute Übersicht über die aktuellen Aktivitäten des Exim:
exiwhat
-erhält man eine gute Übersicht über die aktuellen Aktivitäten des Exim.
=== Queue
@@ -902,7 +907,8 @@
'exim_tidydb'::
Wird regelmäßig über Cron aufgerufen um die Inhalte der Datenbankfiles
- aufzuräumen. Die Files werden dabei nicht zwangsläufig kleiner!
+ aufzuräumen. Die Files werden dabei nicht zwangsläufig kleiner, aber
+ es werden alte Einträge gelöscht.
== Debugging
@@ -921,8 +927,8 @@
Teile der Konfiguration können mit:
+ exim -bP
exim -bP <option>
- exim -bP
exim -bP transports
exim -bP routers
@@ -931,12 +937,11 @@
=== Routing im Trockentest
Das nützlichste Werkzeug ist sicher der Routing-Trockentest.
-Mit
+Ein Address-Test kann gestartet werden. Das entspricht dem Routing-Vorgang:
exim -bt <address>
-wird ein Address-Test gemacht. Das entspricht dem Routing-Vorgang. Im
-Unterschied zum echten Routing-Vorgang stehen diesem Test aber keine
+IUnterschied zum echten Routing-Vorgang stehen diesem Test aber keine
Header-Daten zur Verfügung. Die Absender-Adresse kann mit _-f <sender>_
eingesetzt werden:
@@ -1005,6 +1010,10 @@
exim -be <string>
+Ohne die Angabe eines zu expandierenden Strings wird eine interaktive
+Expander-Sitzung gestaret, wenn der Exim mit Readline-Unterstützung übersetzt
+wurde, steht diese hier zur Verfügung.
+
.Beispiel
exim -be '${lookup{root}lsearch{/etc/aliases}}'