diff -r 86e315be5b57 -r 95ecb62b93e6 short.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/short.txt Mon Apr 20 23:07:59 2015 +0200 @@ -0,0 +1,1565 @@ +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 +