# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1429564079 -7200 # Node ID 95ecb62b93e6b87a6efdefbc25d1e58043b7b125 # Parent 86e315be5b5795c9d74b56172badc33ef0673682 renamed abstract -> short diff -r 86e315be5b57 -r 95ecb62b93e6 Makefile --- a/Makefile Mon Apr 20 23:07:09 2015 +0200 +++ b/Makefile Mon Apr 20 23:07:59 2015 +0200 @@ -1,6 +1,6 @@ -TXT = abstract.txt -HTML = out/abstract.html -PDF = out/abstract.pdf +TXT = short.txt +HTML = out/short.html +PDF = out/short.pdf #REVISION = ${shell hg id -tibB} REVISION = ${shell hg log -r . --template '{latesttag}-{latesttagdistance}-{node|short}'} diff -r 86e315be5b57 -r 95ecb62b93e6 abstract.conf --- a/abstract.conf Mon Apr 20 23:07:09 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -[blockdef-listing] -#subs=verbatim,quotes - - -[quotes] -#$|=vars - -[tags] -#vars=$| diff -r 86e315be5b57 -r 95ecb62b93e6 abstract.txt --- a/abstract.txt Mon Apr 20 23:07:09 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1565 +0,0 @@ -Kurzer Konfigurationsritt -========================= -:Author: Heiko Schlittermann -:toc: -:data-uri: -:icons: -: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 - - 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 -_/dev/null_ ist eine gültige Konfiguration. - - exim -C … - -Die Konfiguration wird öfter gelesen als vielleicht erwartet: - -* Beim Start -* Aber - wann wird gestartet? - ** 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.] -und eventuell über +.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 - -Die Konfiguration besteht aus mehreren Abschnitten. Nicht alle Abschnitte -sind identisch aufgebaut. - -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) - -== 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. - -=== 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. - - 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 - -Und beim Aufruf: - - exim -DTESTING … - exim -DFOO=bar … - -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 <>. Optionen werden generell klein geschrieben. - - primary_hostname = foo.example.com - -=== Listen -Listen bestehen aus der Angabe des Listentypes, eines Namens und dem Listeninhalt. -Es gibt 4 verschiedenen Listentypen. - -Domains:: - Liste von Domain-Namen. Es gibt einige spezielle Tokens, die in einer solchen - Liste auftauchen dürfen. - - domainlist local_domains = @ : schlittermann.de : @mx_primary - -Hosts:: - Hosts oder IP-Adressen, z.B. für vertrauenswürdige Absender-Netze - - hostlist trusted_hosts = 192.168.0.0/24 : 127.0.0.1 - -Mail-Adressen:: - Mailadressen - - addresslist blocked_senders = ad@bestholiday.de : *@mailgun.com - -Local Parts:: - Local Parts von Mail-Adressen, z.B. von ACL-Checks ausgenommene lokale Empfänger - - localpartlist rfc = postmaster : abuse - -Listen-Lookups werden nur gecacht, wenn die Liste keine Expansions-Items entält -(also kein '\$'). Um ein Caching zu erwzingen, kann dem Listentyp ein +_cache+ -nachgesetzt werden: - - domainlist_cache local_domain = ${lookup …} - -=== 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 -Optionen, die das Verhalten des jeweiligen Routers, Transports oder -Authenicators bestimmen. - - begin transports - … - remote_smtp: - driver = smtp - command_timeout = 20s - -=== ACL und Rewrite-Regeln - -Diese beiden Teile der Konfiguration haben ihre eigene Syntax. - -[[types]] -== Werte und ihre Typen - -ALle Optionen der Konfigurationsdatei haben einen spezifischen Werte-Typ. - -* _bool_, _integer_, _fixed-point_, _time_ und _string_ -* Listen sind immer String-Listen -* Werte, die der Expansion unterliegen, sind immer vom Typ _string_ - - -=== Bool - -Werte vom Typ _bool_ sind einfache Schalter. - -.Format -