some corrections
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Mon, 20 Apr 2015 23:49:11 +0200
changeset 15 f0138e72be4e
parent 14 3b662aa211f7
child 16 47972dce0be0
some corrections
short.txt
--- a/short.txt	Mon Apr 20 23:08:26 2015 +0200
+++ b/short.txt	Mon Apr 20 23:49:11 2015 +0200
@@ -1,5 +1,5 @@
-Kurzer Konfigurationsritt
-=========================
+Exim - Kurzer Konfigurationsüberblick
+=====================================
 :Author: Heiko Schlittermann
 :toc:
 :data-uri:
@@ -7,26 +7,27 @@
 :numbered:
 :ascii-ids:
 
+////
 _italic_::
     Namen von Dateien, Programmen, Hosts, Domains, Mail-Header, URLS: _example.com_, _From:_
 *bold*::
     Namen von Exim-Routern, Transports, Authenticators: *dnslookup*-Router
 +fixed+::
     Kommandos, Code-Beispiele, Exim-Konfigurations-Optionen: +primary_hostname+
-
 *+fixed bold+*::
     Hervorhebung von Kommandos, Nutzereingaben: *+exim -bV+*
-
 '+slanted+'::
     Exim-Variablen im Text: '+$local_part+' oder '+$sender_address+'
+////
 
 == Konfiguration
 
 === File
 
-Das Konfigurationsfile wird in der Build-Konfiguration (_EDITME_) festgelegt.
-Es ist auch eine Liste von Konfigurationsfiles möglich, der erste Treffer gewinnt.
-Das verwendete File läßt sich ermitteln mit
+* Das Konfigurationsfile wird in der Build-Konfiguration (_EDITME_) festgelegt.
+* Es ist auch eine Liste von Konfigurationsfiles möglich, der erste Treffer gewinnt.
+
+Das verwendete File läßt sich ermitteln mit:
 
  exim -bP configure_file
 
@@ -38,14 +39,11 @@
 
 Die Konfiguration wird öfter gelesen als vielleicht erwartet:
 
-* Beim Start
-* Aber - wann wird gestartet?
-    ** Start des Daemon
-    ** Signal _HUP_ 
-    ** re-exec for verschiedene Zwecke
+* Start des Daemon
+* Signal _HUP_ 
+* re-exec for verschiedene Zwecke
 
-CAUTION: Inhalt der Datei _exim.conf_ footnote:[Debian verwendet häufig exim4 an
-stelle von exim.]
+CAUTION: Inhalt der Datei _exim.conf_
 und eventuell über +.include+ eingelesener Files
 ist statisch. Dynamisch sind dann Expansionen, Lookups.
 
@@ -65,29 +63,37 @@
     Allgemeine Parameter wir Listendefinitionen, Optionen für den Mailempfang,
     Datenbank-Verbindungsparameter
 Access Control Lists::
-    Kontrolle der Nachrichtenannahme
+    Kontrolle des Nachrichten-Empfangs
 Router::
     Steuerung des Nachrichten-Routings (Ermittlung des Zielhosts und des
     Transportmechanismus)
 Transports::
-    Konfiguration der Transportmechanismen
+    Konfiguration der Transportmechanismen (SMTP, LMTP, o.a.)
 Rewrite::
     Umschreiben von Envelope und Kopfzeilen
+Retry::
+    Regeln für Wiederholungsversuche bei der Zustellung
 Authentifizierung::
     Parameter für die SMTP-Authentifizierung (sowohl Client als auch Server)
 
 == Syntax der Konfiguration
 
 === Kommentare
-Alle Zeilen, die mit einem „#“ beginnen (nach optionalem Whitespace), sind Kommentarzeilen.
-An anderen Stellen der Konfiguration hat das „#“-Zeichen keine besondere Bedeutung.
+
+* Alle Zeilen, die mit einem „#“ beginnen (nach optionalem Whitespace), sind Kommentarzeilen.
+* An anderen Stellen der Konfiguration hat das „#“-Zeichen keine besondere Bedeutung.
 
 === Macros
-Macros sind für einen einfachen statischen Textersetzungsmechanismus 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
-einige Besonderheiten zu beachten.) Macros werden generell groß geschrieben.
 
+* Macros werden generell groß geschrieben.
+* Macros sind ein einfache  statischer Textersetzungsmechanismus (im Sinne
+* 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
+  einige Besonderheiten zu beachten.) 
+
+.Beispiel
  LDAP_BASE = ou=ousers,o=acme
  LDAP = ldap:///LDAPBASE

@@ -96,23 +102,28 @@
  .ifdef TESTING
  testrouter:
     driver = dnslookup
+    transport = TRANSPORT

  .endif
 
 Und beim Aufruf:
 
- exim -DTESTING …
- exim -DFOO=bar …
+ exim -DTESTING -DTRANSPORT=foo …
 
 Macros können neu definiert werden („==“ statt „=“). Macros von der Kommandozeile haben Vorrang.
 
 === Optionen
-Es gibt ca. 250 globale Optionen, hinzu kommen noch weitere Optionen für Router, Transports, …
-Optionen haben einen bestimmten <<types,Datentyp>>. Optionen werden generell klein geschrieben.
 
+* 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>>. 
+
+.Beispiel
  primary_hostname = foo.example.com
 
 === Listen
+
 Listen bestehen aus der Angabe des Listentypes, eines Namens und dem Listeninhalt.
 Es gibt 4 verschiedenen Listentypen. 
 
@@ -143,12 +154,15 @@
 
  domainlist_cache local_domain = ${lookup …}
 
+.Beispiel Debugging
+ exim -bP +local_domains
+
 === Instanzen von Routern, Transports, Authentificators
 
-Router, Transports und Authenificators werden in einzelnen „Funktionsblöcken“
-definiert.  Diese Blöcke haben selbstgewählte Namen und eine Liste von
+* 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
-Authenicators bestimmen.
+Authenticators bestimmen.
 
  begin transports

@@ -163,7 +177,7 @@
 [[types]]
 == Werte und ihre Typen
 
-ALle Optionen der Konfigurationsdatei haben einen spezifischen Werte-Typ.
+ALle Optionen der Konfigurationsdatei haben einen spezifischen Daten-Typ.
 
 * _bool_, _integer_, _fixed-point_, _time_ und _string_
 * Listen sind immer String-Listen
@@ -220,8 +234,8 @@
 .Format: 
  … = <digits><suffix>[<digits><suffix>]…
 
-Erlaubte Suffixe sind 's', 'm', 'h', 'd', 'w', also für
-Intervalle, die sich zweifelsfrei in Sekunden umrechnen lassen.
+Erlaubte Suffixe sind 's', 'm', 'h', 'd', 'w', also Intervalle, die sich
+zweifelsfrei in Sekunden umrechnen lassen.
 
 .Beispiel
  auto_thaw = 3d12h
@@ -230,9 +244,10 @@
 
 === Zeichenketten
 
-Zeichenketten gibt es in zwei Formen: Literale Zeichenketten und gequotet.
-Zeichenketten, die später noch expandiert werden, werden _immer_ als gequotete
-Zeichenketten behandelt.
+* Zeichenketten gibt es in zwei Formen: Literale Zeichenketten und gequotete
+  Zeichenketten..
+* Zeichenketten, die später noch expandiert werden, werden _immer_ als gequotete
+  Zeichenketten behandelt.
 
 .Format
  … = <string>
@@ -253,12 +268,13 @@
 
 === Listen
 
-Listen sind immer Listen zuerst eine _einzige_ Zeichenkette, unterliegen also
-den Zeichenketten-Interpretationsregeln.  Der Feldtrenner ist standardmäßig
+* Listen sind immer zuerst eine _einzige_ Zeichenkette, unterliegen also
+den Zeichenketten-Interpretationsregeln.  
+* Der Feldtrenner ist standardmäßig
 ein ':'. Wird der Feldtrenner als Teil eines Listenelements benötigt, muss er
 verdoppelt werden (oder es wird ein anderer Trenner gewält.)
-Umschließender Leerraum an den einzelnen Elementen wird ignoriert. Leere
-Elemente in der Liste und am _Ende_ der Liste werden ignoriert.
+* Umschließender Leerraum an den einzelnen Elementen wird ignoriert. 
+* Leere Elemente in der Liste und am _Ende_ der Liste werden ignoriert.
 
 .Format
  … = <item> : <item> …
@@ -275,16 +291,17 @@
 <1> leere Liste
 <2> Liste mit einem leeren Element
 
-.Debugging
+.Beispiel Debugging
  exim -be '${map{:a:b:c,}{<$item>}}'
  exim -be '${map{<,,a,b,c,}{<$item>}}'
  exim -C <(echo domainlist local_domains = 'a:b::c:d') -be '${listnamed:local_domains}'
+ exim -bP +local_domains
 
 === Reguläre Ausdrücke
 
-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 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
 werden.
 
 .Format
@@ -299,15 +316,15 @@
 
 == Expansion von Zeichenketten
 
-Viele Stellen der Konfiguration verwenden String-Expansion (Typ 'string*' im
-_spec.txt_). String-Expansion wird von '\$' getriggert.  Das Ergebnis ist dann
+* 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
+* Die Expansion der Strings erfolgt in der Regel erst im Bedarfsfall („late
 binding“). 
 
-CAUTION: Es stehen aber nicht in jeder Phase alle Items zur Verfügung. (z.B.
+CAUTION: Es stehen aber nicht in jeder Phase alle Expansions-Items zur Verfügung. (z.B.
 wird der Wert der globalen Option +message_size_limit+ expandiert, aber bereits
-während der Antwort auf das SMTP-HELO, in dieser Phase gibt es noch keinen
+während der Antwort auf das SMTP-HELO. In dieser Phase gibt es noch keinen
 '+$local_part+').
 
 .Debugging
@@ -315,13 +332,14 @@
  exim -bem <message-file> [<string>]
  exim -be -Mset <spool-id> [<string>]
  
- eg: exim -be '$primary_hostname'
-     exim -be '$tod_full'
-     exim -bem <(echo 'Subject: Hi') '$h_subject:'
+.Beispiel Debugging
+ exim -be '$primary_hostname'
+ exim -be '$tod_full'
+ exim -bem <(echo 'Subject: Hi') '$h_subject:'
 
 === Expansions-Items
 
-Aus Sicht des Expanders ist alles, was mit einem '\$' beginnt, ein
+* Aus Sicht des Expanders ist alles, was mit einem '$' beginnt, ein
 Expansions-Item.
 
 Variablen::
@@ -360,22 +378,19 @@
 
 == Lookups
 
-Mit Lookups werden Daten aus externen Quellen gewonnen. Lookups gibt es in zwei
-Syntaxvarianten und in zwei Stilen.
+* Mit Lookups werden Daten aus externen Quellen gewonnen. 
+* Lookups gibt es in zwei Syntaxvarianten und in zwei Stilen.
 
-* Syntax
-** implizit
-** explizit
-* Stil
-** Single-Key 
-** Query-Style
-
+Syntax::
+ Es gibt implizite und explizite Loookups.
+Stil:::
+ Es gibt Single-Key und Query-Style Lookups.
 
 === Syntax
 
-==== explizit
+==== explizite Syntax
 
-Der Key oder die Frage wird ausdrücklich formuliert, es ist eine gewöhnliche
+* Der Key oder die Frage wird ausdrücklich formuliert, es ist eine gewöhnliche
 String-Expansion. Als Resultat wird das Ergebnis des Lookups zurückgeliefert.
 
 .Format
@@ -383,17 +398,20 @@
  … = ${lookup <type>{<query>}}
 
 .Beispiel
- domainlist local_domains = ${lookup{$domain}dsearch{/etc/vmail/domains}}
- local_parts = ${lookup ldap{ldap:///o=foo?uid?sub?uid=${quote_ldap:$local_part}}}
+ domainlist local_domains = ${lookup{$domain}dsearch{/etc/vmail/domains}} <1>
+ localpartlist users = ${lookup ldap{ldap:///o=foo?uid?sub?uid=${quote_ldap:$local_part}}}
+ data = ${lookup{$local_part}lsearch{/etc/aliases}{$value}{root@localhost}}
+ data = ${lookup{$local_part}lsearch{/etc/aliases}{$value}\
+        {${lookup{…}}}}
 
-Im Beispiel wird der Umstand genutzt, dass in vielen Fällen lediglich 
+<1> Im Beispiel wird der Umstand genutzt, dass in vielen Fällen lediglich 
 die aktuell behandelte Adresse in der Liste vorhanden sein muss. 
 
 Die explizite Syntax kann natürlich auch eine komplette Liste zurückliefern,
 diese muss dann eventuell massiert werden, damit die Feldtrenner den Erwartungen 
 von Exim entsprechen.
 
-==== implizit
+==== implizite Syntax
 
 Der Key ergibt sich aus dem Kontext, das Lookup wird dennoch durch den
 String-Expander behandelt. Wenn das Lookup erfolgreich ist, wird als Resultat
@@ -422,7 +440,7 @@
     Suche nach Teilzeichenketten (Domain) mit _partial-lsearch_.
 _dsearch_::
     Verzeichnis-Lookup: Suche nach einem spezifischen Verzeichniseintrag
-_iplsearch::
+_iplsearch_::
     Suche nach IP-Adressen oder Netzen unter Beachtung von Netzmasken
 _dbm_::
     Suche in Berkeley-DBM Files
@@ -449,7 +467,7 @@
 
 _ldap_::
     Anfragen an LDAP. Erwartet wird ein Object (_ldap_) oder mehrere Objekte
-    (_ldap_)
+    (_ldapm_).
 
  ${lookup ldap{ldap:///ou=foo?mail?sub?uid=${quote_ldap:$local_part}}}
 
@@ -482,7 +500,7 @@
 Eine ACL ist eine Folge von Bedingungsblöcken. Sind _alle_ Bedingungen eines
 Blocks erfüllt, gilt die für diesen Block festgelegte Aktion.
 Die Bedingungen werden in der Reihenfolge ihres Auftretens bearbeitet. Sobald
-eine nicht zutrifft, wird der nächste Block untersucht.
+eine Bedingung nicht zutrifft, wird der nächste Block untersucht.
 
 .Beispiel
  accept  domains = +local_domains
@@ -560,7 +578,7 @@
     Sofort einen Log-Eintrag
 
 +control+::
-    Steuert das weitere Verhalten
+    Steuert das weitere Verhalten der Nachrichtenverarbeitung
 
  control = submission
 
@@ -603,10 +621,10 @@
                       generate bounce
 
 .Beispiel
- external:
+ external:                       
     driver = dnslookup
-    domains = !+local_domains
-    transport = remote_smtp
+    domains = !+local_domains  
+    transport = remote_smtp     
     ignore_target_hosts = <; 127.0.0.1 : ::1
 
 Eine Liste der konfigurierten Router erhält man mit:
@@ -745,13 +763,13 @@
  exim -bP spool_directory
 
 'input'::
-    Message-Spool. Wichtig! Je Message 2 Dateien.
+    Message-Spool. Je Message 2 Dateien.
 'db'::
-    Hint-Files, nicht wichtig. 
+    Hint-Files, Cache.
 'msglog'::
     Nachrichten-Logs, solange die Nachricht noch nicht 'completed' ist.
 
-Mit dem klassischen 'mailq' lässt sich die aktuelle Queue anzeichen. Oder auch
+Mit dem klassischen 'mailq' lässt sich die aktuelle Queue auflisten. Oder auch
 mit
 
  exim -bp
@@ -785,7 +803,7 @@
 'rejectlog'::
     Etwas mehr Details bei 5xx/4xx (Headerzeilen)
 'paniclog'::
-    ... wenn nichts mehr geht.
+    Wenn nichts mehr geht.
 
 Zum Suchen und Zusammenfassen dieser Informationen eignet sich 'exigrep' am besten.
 
@@ -805,14 +823,14 @@
 'exim_dumpdb'::
     Textdump der jeweiligen Datenbank, Ausgabeformat ist je nach DB-Format
     leicht unterschiedlich
-
++
 .Beispiel
  exim_dumpdb /var/spool/exim retry
 
 'exim_fixdb'::
     Mit diesem Werkzeug können gezielt einzelne Datensätze einer Hint-DB
     gelöscht werden
-
++
 .Beispiel
  # exim_fixdb /var/spool/exim4 retry
  Modifying Exim hints database /var/spool/exim4/db/retry
@@ -935,6 +953,9 @@
 .Beispiel
  exim -be '${lookup{root}lsearch{/etc/aliases}}'
 
+
+[index]
+
 ////
 
     implizit "deny" am Ende jeder ACL!