Macros fuer var: und opt: v1.2
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Tue, 21 Apr 2015 22:15:16 +0200
changeset 16 47972dce0be0
parent 15 f0138e72be4e
child 17 763647471039
Macros fuer var: und opt:
Makefile
short.conf
short.txt
--- a/Makefile	Mon Apr 20 23:49:11 2015 +0200
+++ b/Makefile	Tue Apr 21 22:15:16 2015 +0200
@@ -11,17 +11,17 @@
 .PHONY:	all clean pdf html
 
 
-all:	html pdf
+all:	html pdf 
 clean:	; rm -f ${HTML} ${PDF}
 
 pdf:	${PDF}
 html:	${HTML}
 
-out/%.pdf:		%.txt
+out/%.pdf:		%.txt $(MAKEFILE_LIST) short.conf
 		@mkdir -p ${dir $@}
-		a2x --asciidoc-opts="${AOPTS}" -D ${dir $@} $<
+		a2x -k --asciidoc-opts="${AOPTS}" -D ${dir $@} $<
 
-out/%.html:		%.txt
+out/%.html:		%.txt $(MAKEFILE_LIST) short.conf
 		@mkdir -p ${dir $@}
 #		asciidoc -a revision="${REVISION}" -a date="${DATE}" -o $@ $<
 		asciidoc ${AOPTS} -o $@ $<
--- a/short.conf	Mon Apr 20 23:49:11 2015 +0200
+++ b/short.conf	Tue Apr 21 22:15:16 2015 +0200
@@ -2,8 +2,19 @@
 #subs=verbatim,quotes
 
 
-[quotes]
-#$|=vars
+[eximvar-inlinemacro]
+<em><code>{target}</code></em>
+
+ifdef::backend-docbook[]
+[eximvar-inlinemacro]
+<emphasis><code>{target}</code></emphasis>
+endif::backend-docbook[]
 
-[tags]
-#vars=<code><em>$|</em></code>
+
+[eximopt-inlinemacro]
+<code>{target}</code>
+
+
+[macros]
+(?u)\b(var):(?P<target>[\$\w]+)=eximvar[]
+(?u)\b(opt):(?P<target>[\w]+)=eximopt[]
--- a/short.txt	Mon Apr 20 23:49:11 2015 +0200
+++ b/short.txt	Tue Apr 21 22:15:16 2015 +0200
@@ -1,23 +1,25 @@
 Exim - Kurzer Konfigurationsüberblick
 =====================================
-:Author: Heiko Schlittermann
+:Author: Heiko Schlittermann hs@schlittermann.de
 :toc:
 :data-uri:
 :icons:
 :numbered:
 :ascii-ids:
 
+Die Quelle dieses Dokuments ist: https://ssl.schlittermann.de/hg/doc/exim
+
 ////
 _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+
+opt:fixed::
+    Kommandos, Code-Beispiele, Exim-Konfigurations-Optionen: opt:primary_hostname
 *+fixed bold+*::
     Hervorhebung von Kommandos, Nutzereingaben: *+exim -bV+*
-'+slanted+'::
-    Exim-Variablen im Text: '+$local_part+' oder '+$sender_address+'
+var:slanted::
+    Exim-Variablen im Text: var:$local_part oder var:$sender_address
 ////
 
 == Konfiguration
@@ -44,7 +46,7 @@
 * re-exec for verschiedene Zwecke
 
 CAUTION: Inhalt der Datei _exim.conf_
-und eventuell über +.include+ eingelesener Files
+und eventuell über opt:.include eingelesener Files
 ist statisch. Dynamisch sind dann Expansionen, Lookups.
 
 === Syntax
@@ -149,7 +151,8 @@
  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+
+(also kein '$'). Um ein Caching zu erwzingen, kann dem Listentyp ein
+opt:_cache
 nachgesetzt werden:
 
  domainlist_cache local_domain = ${lookup …}
@@ -161,18 +164,19 @@
 
 * 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.
+  Optionen, die das Verhalten des jeweiligen Routers, Transports oder
+  Authenticators bestimmen.
 
+.Beispiel
  begin transports

  remote_smtp:
     driver = smtp
     command_timeout = 20s
 
-=== ACL und Rewrite-Regeln
+=== ACL, Retry- und Rewrite-Regeln
 
-Diese beiden Teile der Konfiguration haben ihre eigene Syntax.
+Diese Teile der Konfiguration haben ihre jeweils eigene Syntax.
 
 [[types]]
 == Werte und ihre Typen
@@ -189,8 +193,8 @@
 Werte vom Typ _bool_ sind einfache Schalter.
 
 .Format 
- <option> = true
- <option> = false
+ <option> = true|yes
+ <option> = false|no
  <option>
  no_<option>
  not_<option>
@@ -210,7 +214,7 @@
         = 0<oct digts>[<suffix>]
         = 0x<hex digts>[<suffix>]
 
-Erlaubte Suffixe sind 'k' (2^10^) und 'm' (2^20^).
+Erlaubte Suffixe sind 'K' (2^10^) und 'M' (2^20^).
 
 .Beipiel
  check_spool_space = 10M
@@ -251,7 +255,7 @@
 
 .Format
  … = <string>
- … = <"string">
+ … = "<string>"
 
 Die gequotete Form ist notwendig, wenn die Zeichenkette mit Leerzeichen enden
 oder beginnen soll, oder wenn eine der folgenden Sequenzen interpretiert
@@ -269,10 +273,10 @@
 === Listen
 
 * Listen sind immer zuerst eine _einzige_ Zeichenkette, unterliegen also
-den Zeichenketten-Interpretationsregeln.  
+  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.)
+  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.
 
@@ -300,9 +304,9 @@
 === 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. 
+  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.
+  werden.
 
 .Format
  … = ^<regexp>
@@ -311,7 +315,7 @@
  domains = example.com : ^\\d{3}
  domains = example.com : \N^\d{3}\N
 
-Im Beispiel wird der Backslash verdoppelt, da die +domains+ Option zuerst
+Im Beispiel wird der Backslash verdoppelt, da die opt:domains Option zuerst
 expandiert wird.
 
 == Expansion von Zeichenketten
@@ -323,9 +327,9 @@
 binding“). 
 
 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
+wird der Wert der globalen Option opt:message_size_limit expandiert, aber bereits
 während der Antwort auf das SMTP-HELO. In dieser Phase gibt es noch keinen
-'+$local_part+').
+var:$local_part).
 
 .Debugging
  exim -be [<string>]
@@ -356,6 +360,15 @@
     http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html#SECTexpop[spec]
 
  ${hex2b64:<string>}
+ ${length_3:<string>}
+
+
+Funktionen::
+    Komplexere Umwandlungen mit mehreren Eingangsparametern
+    http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html#SECTexpansionitems[spec]
+
+ ${readsocket{<socket>}{<request>}}
+ ${length{<string>}{<string>}}
 
 Bedingungen::
     Fluss-Steuerung
@@ -363,12 +376,6 @@
 
  ${if <condition>…}
 
-Funktionen::
-    Komplexere Umwandlungen mit mehreren Eingangsparametern
-    http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html#SECTexpansionitems[spec]
-
- ${readsocket{<socket>}}
-
 Lookups::
     Informationsgewinnung aus externen Quellen (Files, Datenbanken)
     http://www.exim.org/exim-html-current/doc/html/spec_html/ch-file_and_database_lookups.html[spec]
@@ -383,15 +390,16 @@
 
 Syntax::
  Es gibt implizite und explizite Loookups.
-Stil:::
+Stil::
  Es gibt Single-Key und Query-Style Lookups.
 
 === Syntax
 
-==== explizite Syntax
+==== Explizite Syntax
 
 * 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.
+  String-Expansion. Als Resultat wird das Ergebnis des Lookups zurückgeliefert.
+* Analogie: +value(<$key>)+
 
 .Format
  … = ${lookup{<key>}<type>{<file>}}
@@ -411,11 +419,12 @@
 diese muss dann eventuell massiert werden, damit die Feldtrenner den Erwartungen 
 von Exim entsprechen.
 
-==== implizite Syntax
+==== 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
-der Key zurückgeliefert, nicht ein eventuell vorhandener Wert!
+* 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 : ''+
 
 .Format
  … = <type>;<file> 
@@ -435,13 +444,17 @@
 http://www.exim.org/exim-html-current/doc/html/spec_html/ch-file_and_database_lookups.html#SECTsinglekeylookups[spec]
 
 .Wichtige Single Key Lookups
+
 _lsearch_::
     Lineare Suche in einer Datei. Suche nach einem Default-Wert mit _lsearch*_,
     Suche nach Teilzeichenketten (Domain) mit _partial-lsearch_.
+
 _dsearch_::
     Verzeichnis-Lookup: Suche nach einem spezifischen Verzeichniseintrag
+
 _iplsearch_::
     Suche nach IP-Adressen oder Netzen unter Beachtung von Netzmasken
+
 _dbm_::
     Suche in Berkeley-DBM Files
 
@@ -454,6 +467,7 @@
 http://www.exim.org/exim-html-current/doc/html/spec_html/ch-file_and_database_lookups.html#SECTquerystylelookups[spec]
 
 .Wichtige Query-Style Lookups
+
 _mysql_::
     Eben MySQL…
 
@@ -486,7 +500,7 @@
 == Acess Control Lists
 
 ACL wirken für alle Phasen der SMTP-Session. Im globalen Teil werden die
-Einstiegspunkte mit +acl_smtp_connect+ usw. definiert. Im ACL-Abschnitt der
+Einstiegspunkte mit opt:acl_smtp_connect usw. definiert. Im ACL-Abschnitt der
 Konfiguration muss dann ein entsprechend genannter Block existieren.
 
 Die häufigsten Einstiegspunkte sind
@@ -506,95 +520,105 @@
  accept  domains = +local_domains
          local_parts = postmaster : abuse
 
+ accept  domains = +relay_to_domains
+         verify = recipient/callout=use_sender
+
+ deny	 message = sorry
+
+
+
 .Mögliche ACL-Aktionen
 _accept_::
-    Alles ist ok. Es geht zur nächsten Phase der Verbindung
+    Alles ist ok. Es geht zur nächsten Phase der Verbindung.
 _deny_::
-    Fehler 5xx wird zurückgeliefert (nicht zwingend ein Ende der Verbindung!)
+    Fehler 5xx wird zurückgeliefert (nicht zwingend ein Ende der
+    Verbindung!).
 _defer_::
-    Fehler 4xx wird zurückgeliefert
+    Fehler 4xx wird zurückgeliefert.
 _drop_::
-    Fehler 5xx wird generiert und Verbindung wird abgebrochen
+    Fehler 5xx wird generiert und Verbindung wird abgebrochen.
 _warn_::
-    Keine finale Entscheidung, NOOP
+    Keine finale Entscheidung, NOOP.
+_discard_::
+    Wie _accept_, aber Empfänger, bzw. Nachricht wird verworfen!
 _require_::
     Wenn eine der Bedingungen *nicht* erfüllt ist, Abbruch mit 5xx, 
-    andernfalls weiter zum nächsten Block
-_discard_::
-    Wie _accept_, aber Empfänger, bzw. Nachricht wird verworfen!
+    andernfalls weiter zum nächsten Block. U.U. keine finale
+    Entscheidung.
 
 .Häufige ACL-Bedingungen
-+hosts+::
+opt:hosts::
     Sender-Host-IP wird geprüft
 
  hosts = +trusted_hosts
 
-+domains+::
+opt:domains::
     Empfänger-Domain wird geprüft
 
  domains = +local_domains
 
-+senders+::
+opt:senders::
     Absender-Mailadresse wird geprüft
 
  senders = postmaster@example.com : hans@foo.bar
 
-+malware+::
+opt:malware::
     Malware-Content-Scan liefert einen Treffer
 
  malware = *
 
-+spam+::
+opt:spam::
     SPAM-Content-Scan (_SpamAssassin_)
 
  spam = nobody/true
 
-+verify+::
+opt:verify::
     Empfänger- oder Absenderüberprüfung, eventuell auch mit _callout_.
 
  verify = recipient/callout=use_sender,defer_ok
 
-+ratelimit+::
+opt:ratelimit::
     Limitierungen aller Art (Menge, Größe, …)
 
  ratelimit = 10/1h/$sender_address
 
-+condition+::
+opt:condition::
     Sonstige Bedingungen aller Art
 
  condition = ${run{perl}{graylist}{$sender_address/$local_part@$domain}}
 
 .ACL-Modifier
-+message+::
+opt:message::
     Der Nachrichtenpuffer wird mit einem Text gefüllt.
 
  message = 550 Sorry
 
-+log_message+::
+opt:log_message::
+
     Der Nachritenpuffer für das Protokoll wird mit einem Text gefüllt.
     Sonst identisch zu +message+.
 
-+logwrite+:: 
+opt:logwrite:: 
     Sofort einen Log-Eintrag
 
-+control+::
+opt:control::
     Steuert das weitere Verhalten der Nachrichtenverarbeitung
 
  control = submission
 
-+set+:: 
+opt:set:: 
     ACL-Variablen setzen
 
  set acl_m_domain = $domain
  set acl_c_host = $sender_host_address
 
-+add_header+::
+opt:add_header::
     Header zum Hinzufügen vormerken    
 
-+remove_header+::
+opt:remove_header::
     Header zum Entfernen vormerken
     
-+delay+::
+opt:delay::
     Fügt eine kurze Verarbeitungspause ein
 
 Ziel der ACL-Operations sollte es sein, möglichst viele Dinge zur SMTP-Zeit zu
@@ -689,7 +713,7 @@
 
 +add+::
     Nutzer-Variable inkrementieren. Diese Variablen stehen dann später als
-    '+$sn1+' - '+$sn9+' in den Routern und Transports zur Verfügung
+    var:$sn1 - var:$sn9 in den Routern und Transports zur Verfügung
 
  add 27 to to n3
 
@@ -954,13 +978,12 @@
  exim -be '${lookup{root}lsearch{/etc/aliases}}'
 
 
+ifdef::backend-docbook[]
 [index]
+endif::backend-docbook[]
 
 ////
 
-    implizit "deny" am Ende jeder ACL!
-
-
 ## Test
 
    > exim -bh <ip>  # ohne callouts