# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1429538434 -7200 # Node ID 9058434052575c551f26503e9ddd87171b52c09b # Parent 57a706b1a320257fb2aeada07cd0c2356901a743 snapshot diff -r 57a706b1a320 -r 905843405257 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Mon Apr 20 16:00:34 2015 +0200 @@ -0,0 +1,2 @@ +syntax:glob +out/ diff -r 57a706b1a320 -r 905843405257 Makefile --- a/Makefile Fri Apr 17 15:43:36 2015 +0200 +++ b/Makefile Mon Apr 20 16:00:34 2015 +0200 @@ -1,7 +1,8 @@ TXT = abstract.txt HTML = out/abstract.html -REVISION = ${shell hg id -tibB} +#REVISION = ${shell hg id -tibB} +REVISION = ${shell hg log -r . --template '{latesttag}-{latesttagdistance}-{node|short}'} DATE = ${shell date -I} diff -r 57a706b1a320 -r 905843405257 abstract.conf --- a/abstract.conf Fri Apr 17 15:43:36 2015 +0200 +++ b/abstract.conf Mon Apr 20 16:00:34 2015 +0200 @@ -2,3 +2,10 @@ subs=verbatim,quotes +[quotes] +$|=vars + +[paradef-literal] + +[tags] +vars=$| diff -r 57a706b1a320 -r 905843405257 abstract.txt --- a/abstract.txt Fri Apr 17 15:43:36 2015 +0200 +++ b/abstract.txt Mon Apr 20 16:00:34 2015 +0200 @@ -1,264 +1,313 @@ Kurzer Konfigurationsritt ========================= :Author: Heiko Schlittermann -:Toc: +:toc: :data-uri: :icons: :numbered: - -== Konfig im Detail == +_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 -Welche Konfiguration wird eingelesen? Je nach Installation kann das -ein anderes File sind. +== Konfiguration + +=== File -.aktive Konfiguration ermitteln: ----- -> exim -bV | tail -n 1 -> exim -bP configure_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 + + exim -bP configure_file -.aktive Konfiguration ändern ----- -> exim -C `pwd`/test.config … ----- +Das aktive Konfigurationsfile kann auch auf der Kommandozeile festgelegt +werden. Für einige Operationen muss der Pfad ein absoluter sein. Auch +_/dev/null_ ist eine gültige Konfiguration. -Die Konfiguration öfter gelesen, als vielleicht erwartet: + exim -C … -* Klar - beim Start +Die Konfiguration wird öfter gelesen als vielleicht erwartet: + +* Beim Start * Aber - wann wird gestartet? ** Start des Daemon - ** Signal HUP + ** Signal _HUP_ ** re-exec for verschiedene Zwecke -* Achtung: - ** exim4.conf + .include ist "statisch" - ** lists, lookups, … "dynamisch" -Der Config-Parser ist ziemlich einfach. +CAUTION: Inhalt der Datei _exim.conf_ footnote:[Debian verwendet hier _exim4.conf_] +und eventuell über +.include+ eingelesener Files +ist statisch. Dynamisch sind dann Expansionen, Lookups. + +=== Syntax -* einfache Syntax-Checks -* Erst „de-comment“, dann „trimm“, dann Fortsetzungszeilen mit `\` - am Ende - -== Syntax der Konfiguration == +Der Parser der Konfigurationsdatei ist ziemlich einfach. -Es gibt Macros. +. Kommentarzeilen werden entfernt +. Führende und anhängige Leerzeichen werden entfernt +. Forsetzungszeilen („\“ am Zeilenende) werden zusammengefasst +. einfache Syntax-Checks -* Macros - Text-Ersatz während des Einlesens, - ggf. bedingt über `.ifdef` -* `.include`, `.include_ifexists` +Die Konfiguration besteht aus mehreren Abschnitten. Nicht alle Abschnitte +sind identisch aufgebaut. -.Macro-Ersetzungen ----- -FOO = foo <1> -FOO == bar <2> -primary_hostname = FOO ----- -<1> Definition -<2> Re-Definition +Globale Optionen:: + Allgemeine Parameter wir Listendefinitionen, Optionen für den Mailempfang, + Datenbank-Verbindungsparameter +Access Control Lists:: + Kontrolle der Nachrichtenannahme +Router:: + Steuerung des Nachrichten-Routings (Ermittlung des Zielhosts und des + Transportmechanismus) +Transports:: + Konfiguration der Transportmechanismen +Rewrite:: + Umschreiben von Envelope und Kopfzeilen +Authentifizierung:: + Parameter für die SMTP-Authentifizierung (sowohl Client als auch Server) -Es gibt weitere Elemente: +== 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. -* Optionsnamen -* benamste Listen -* Instanzen von Routern, Transports, … - -== Werte == +=== 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. -Optionen und Listen haben Werte. Es gibt _bool_, _integer_, _fixed-point_, _time_ und _string_. + LDAP_BASE = ou=ousers,o=acme + LDAP = ldap:///LDAPBASE + … + data = ${lookup ldap{LDAP?mail?sub?uid=${quote_ldap:$local_part}}} + … + .ifdef TESTING + testrouter: + driver = dnslookup + … + .endif -=== Bool === +Und beim Aufruf: -_bool_ sind einfache Schalter. + exim -DTESTING … + exim -DFOO=bar … -.Format ----- -true -false -