--- 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