short.txt
changeset 22 6c2ec23b8f47
parent 21 a9bf9198340a
child 23 49b311800e28
equal deleted inserted replaced
21:a9bf9198340a 22:6c2ec23b8f47
     9 
     9 
    10 Die Quelle dieses Dokuments ist: https://ssl.schlittermann.de/hg/doc/exim, es
    10 Die Quelle dieses Dokuments ist: https://ssl.schlittermann.de/hg/doc/exim, es
    11 gibt auch eine http://schlittermann.de/doc/Exim_(de)/short.html[HTML] und eine
    11 gibt auch eine http://schlittermann.de/doc/Exim_(de)/short.html[HTML] und eine
    12 http://schlittermann.de/doc/Exim_(de)/short.pdf[PDF] Version.
    12 http://schlittermann.de/doc/Exim_(de)/short.pdf[PDF] Version.
    13 
    13 
       
    14 Nicht alles wurde zwanghaft ins Deutsche übersetzt, ein Router ist ein Router
       
    15 und kein Wegleiter.
       
    16 
       
    17 == Typografische Konventionen
       
    18 
       
    19 
    14 ////
    20 ////
    15 _italic_::
    21 _italic_::
    16     Namen von Dateien, Programmen, Hosts, Domains, Mail-Header, URLS: _example.com_, _From:_
    22     Namen von Dateien, Programmen, Hosts, Domains, Mail-Header, URLS: _example.com_, _From:_
    17 *bold*::
    23 o:fixed::
    18     Namen von Exim-Routern, Transports, Authenticators: *dnslookup*-Router
    24     Kommandos, Code-Beispiele, Exim-Konfigurations-Optionen: o:primary_hostname
    19 opt:fixed::
       
    20     Kommandos, Code-Beispiele, Exim-Konfigurations-Optionen: opt:primary_hostname
       
    21 *+fixed bold+*::
    25 *+fixed bold+*::
    22     Hervorhebung von Kommandos, Nutzereingaben: *+exim -bV+*
    26     Hervorhebung von Kommandos, Nutzereingaben: *+exim -bV+*
    23 var:slanted::
       
    24     Exim-Variablen im Text: var:$local_part oder var:$sender_address
       
    25 ////
    27 ////
    26 
    28 
    27 == Konfiguration
    29 d:bold::
    28 
    30     Exim Treibernamen im Text: Der driver:dnslookup Router
    29 === File
    31 
    30 
    32 o:fixed::
    31 * Das Konfigurationsfile wird in der Build-Konfiguration (_EDITME_) festgelegt.
    33     Exim Konfigurationoptionen im Text: o:primary_hostname
       
    34 
       
    35 i:slanted::
       
    36     Exim Expansionsitems im Text: i:$local_part oder i:$sender_address
       
    37     (Variablen, Lookups, …)
       
    38 
       
    39 
       
    40 == Konfigurationsfiles
       
    41 
       
    42 == Build-Konfiguration _EDITME_
       
    43 
       
    44 * Maintainer pflegt die _EDITME_
       
    45 * Je nach Distro unterschiedliche Konfigurationen, teilweise sogar 
       
    46 mehrere, wie 'fat', 'light', 'heavy'.
       
    47 
       
    48  $ exim -bV
       
    49 
       
    50 listet wesentliche in der Buildkonfiguration gewählte Features auf.
       
    51 
       
    52 === Runtime-Konfiguration _exim.conf_
       
    53 
       
    54 * Der Name der Runtime-Konfiguration wird in der Build-Konfiguration gestgelegt. 
    32 * Es ist auch eine Liste von Konfigurationsfiles möglich, der erste Treffer gewinnt.
    55 * Es ist auch eine Liste von Konfigurationsfiles möglich, der erste Treffer gewinnt.
    33 
    56 
    34 Das verwendete File läßt sich ermitteln mit:
    57 Das verwendete File läßt sich ermitteln mit:
    35 
    58 
    36  exim -bP configure_file
    59  $ exim -bP configure_file
    37 
    60 
    38 Das aktive Konfigurationsfile kann auch auf der Kommandozeile festgelegt
    61 Das aktive Konfigurationsfile kann auch auf der Kommandozeile festgelegt
    39 werden. Für einige Operationen muss der Pfad ein absoluter sein.  Auch
    62 werden. Für einige Operationen muss der Pfad ein absoluter sein.  Auch
    40 _/dev/null_ ist eine gültige Konfiguration.
    63 _/dev/null_ ist eine gültige Konfiguration.
    41 
    64 
    46 * Start des Daemon
    69 * Start des Daemon
    47 * Signal _HUP_ 
    70 * Signal _HUP_ 
    48 * re-exec for verschiedene Zwecke
    71 * re-exec for verschiedene Zwecke
    49 
    72 
    50 CAUTION: Inhalt der Datei _exim.conf_
    73 CAUTION: Inhalt der Datei _exim.conf_
    51 und eventuell über opt:.include eingelesener Files
    74 und eventuell über o:.include eingelesener Files
    52 ist statisch. Dynamisch sind dann Expansionen, Lookups.
    75 ist statisch. Dynamisch sind dann Expansionen, Lookups.
    53 
    76 
    54 === Syntax
    77 === Syntax
    55 
    78 
    56 Der Parser der Konfigurationsdatei ist ziemlich einfach.
    79 Der Parser der Konfigurationsdatei ist ziemlich einfach.
   152 
   175 
   153  localpartlist rfc = postmaster : abuse
   176  localpartlist rfc = postmaster : abuse
   154 
   177 
   155 Listen-Lookups werden nur gecacht, wenn die Liste keine Expansions-Items entält
   178 Listen-Lookups werden nur gecacht, wenn die Liste keine Expansions-Items entält
   156 (also kein '$'). Um ein Caching zu erwzingen, kann dem Listentyp ein
   179 (also kein '$'). Um ein Caching zu erwzingen, kann dem Listentyp ein
   157 opt:_cache
   180 o:_cache
   158 nachgesetzt werden:
   181 nachgesetzt werden:
   159 
   182 
   160  domainlist_cache local_domain = ${lookup …}
   183  domainlist_cache local_domain = ${lookup …}
   161 
   184 
   162 .Beispiel Debugging
   185 .Beispiel Debugging
   315 
   338 
   316 .Beispiel
   339 .Beispiel
   317  domains = example.com : ^\\d{3}
   340  domains = example.com : ^\\d{3}
   318  domains = example.com : \N^\d{3}\N
   341  domains = example.com : \N^\d{3}\N
   319 
   342 
   320 Im Beispiel wird der Backslash verdoppelt, da die opt:domains Option zuerst
   343 Im Beispiel wird der Backslash verdoppelt, da die o:domains Option zuerst
   321 expandiert wird.
   344 expandiert wird.
   322 
   345 
   323 == Expansion von Zeichenketten
   346 == Expansion von Zeichenketten
   324 
   347 
   325 * Viele Stellen der Konfiguration verwenden String-Expansion (Typ 'string*' im
   348 * Viele Stellen der Konfiguration verwenden String-Expansion (Typ 'string*' im
   327 ein neuer String oder 'forced failure'. 
   350 ein neuer String oder 'forced failure'. 
   328 * Die Expansion der Strings erfolgt in der Regel erst im Bedarfsfall („late
   351 * Die Expansion der Strings erfolgt in der Regel erst im Bedarfsfall („late
   329 binding“). 
   352 binding“). 
   330 
   353 
   331 CAUTION: Es stehen aber nicht in jeder Phase alle Expansions-Items zur Verfügung. (z.B.
   354 CAUTION: Es stehen aber nicht in jeder Phase alle Expansions-Items zur Verfügung. (z.B.
   332 wird der Wert der globalen Option opt:message_size_limit expandiert, aber bereits
   355 wird der Wert der globalen Option o:message_size_limit expandiert, aber bereits
   333 während der Antwort auf das SMTP-HELO. In dieser Phase gibt es noch keinen
   356 während der Antwort auf das SMTP-HELO. In dieser Phase gibt es noch keinen
   334 var:$local_part).
   357 i:$local_part).
   335 
   358 
   336 .Debugging
   359 .Debugging
   337  exim -be [<string>]
   360  exim -be [<string>]
   338  exim -bem <message-file> [<string>]
   361  exim -bem <message-file> [<string>]
   339  exim -be -Mset <spool-id> [<string>]
   362  exim -be -Mset <spool-id> [<string>]
   500 |=======================================================================
   523 |=======================================================================
   501 
   524 
   502 == Acess Control Lists
   525 == Acess Control Lists
   503 
   526 
   504 ACL wirken für alle Phasen der SMTP-Session. Im globalen Teil werden die
   527 ACL wirken für alle Phasen der SMTP-Session. Im globalen Teil werden die
   505 Einstiegspunkte mit opt:acl_smtp_connect usw. definiert. Im ACL-Abschnitt der
   528 Einstiegspunkte mit o:acl_smtp_connect usw. definiert. Im ACL-Abschnitt der
   506 Konfiguration muss dann ein entsprechend genannter Block existieren.
   529 Konfiguration muss dann ein entsprechend genannter Block existieren.
   507 
   530 
   508 Die häufigsten Einstiegspunkte sind
   531 Die häufigsten Einstiegspunkte sind
   509 
   532 
   510 +acl_smtp_rcpt+::
   533 +acl_smtp_rcpt+::
   547     Wenn eine der Bedingungen *nicht* erfüllt ist, Abbruch mit 5xx, 
   570     Wenn eine der Bedingungen *nicht* erfüllt ist, Abbruch mit 5xx, 
   548     andernfalls weiter zum nächsten Block. U.U. keine finale
   571     andernfalls weiter zum nächsten Block. U.U. keine finale
   549     Entscheidung.
   572     Entscheidung.
   550 
   573 
   551 .Häufige ACL-Bedingungen
   574 .Häufige ACL-Bedingungen
   552 opt:hosts::
   575 o:hosts::
   553     Sender-Host-IP wird geprüft
   576     Sender-Host-IP wird geprüft
   554 
   577 
   555  hosts = +trusted_hosts
   578  hosts = +trusted_hosts
   556 
   579 
   557 opt:domains::
   580 o:domains::
   558     Empfänger-Domain wird geprüft
   581     Empfänger-Domain wird geprüft
   559 
   582 
   560  domains = +local_domains
   583  domains = +local_domains
   561 
   584 
   562 opt:senders::
   585 o:senders::
   563     Absender-Mailadresse wird geprüft
   586     Absender-Mailadresse wird geprüft
   564 
   587 
   565  senders = postmaster@example.com : hans@foo.bar
   588  senders = postmaster@example.com : hans@foo.bar
   566 
   589 
   567 opt:malware::
   590 o:malware::
   568     Malware-Content-Scan liefert einen Treffer
   591     Malware-Content-Scan liefert einen Treffer
   569 
   592 
   570  malware = *
   593  malware = *
   571 
   594 
   572 opt:spam::
   595 o:spam::
   573     SPAM-Content-Scan (_SpamAssassin_)
   596     SPAM-Content-Scan (_SpamAssassin_)
   574 
   597 
   575  spam = nobody/true
   598  spam = nobody/true
   576 
   599 
   577 opt:verify::
   600 o:verify::
   578     Empfänger- oder Absenderüberprüfung, eventuell auch mit _callout_.
   601     Empfänger- oder Absenderüberprüfung, eventuell auch mit _callout_.
   579 
   602 
   580  verify = recipient/callout=use_sender,defer_ok
   603  verify = recipient/callout=use_sender,defer_ok
   581 
   604 
   582 opt:ratelimit::
   605 o:ratelimit::
   583     Limitierungen aller Art (Menge, Größe, …)
   606     Limitierungen aller Art (Menge, Größe, …)
   584 
   607 
   585  ratelimit = 10/1h/$sender_address
   608  ratelimit = 10/1h/$sender_address
   586 
   609 
   587 opt:condition::
   610 o:condition::
   588     Sonstige Bedingungen aller Art
   611     Sonstige Bedingungen aller Art
   589 
   612 
   590  condition = ${run{perl}{graylist}{$sender_address/$local_part@$domain}}
   613  condition = ${run{perl}{graylist}{$sender_address/$local_part@$domain}}
   591 
   614 
   592 .ACL-Modifier
   615 .ACL-Modifier
   593 opt:message::
   616 o:message::
   594     Der Nachrichtenpuffer wird mit einem Text gefüllt.
   617     Der Nachrichtenpuffer wird mit einem Text gefüllt.
   595 
   618 
   596  message = 550 Sorry
   619  message = 550 Sorry
   597 
   620 
   598 opt:log_message::
   621 o:log_message::
   599 
   622 
   600     Der Nachritenpuffer für das Protokoll wird mit einem Text gefüllt.
   623     Der Nachritenpuffer für das Protokoll wird mit einem Text gefüllt.
   601     Sonst identisch zu +message+.
   624     Sonst identisch zu +message+.
   602 
   625 
   603 opt:logwrite:: 
   626 o:logwrite:: 
   604     Sofort einen Log-Eintrag
   627     Sofort einen Log-Eintrag
   605 
   628 
   606 opt:control::
   629 o:control::
   607     Steuert das weitere Verhalten der Nachrichtenverarbeitung
   630     Steuert das weitere Verhalten der Nachrichtenverarbeitung
   608 
   631 
   609  control = submission
   632  control = submission
   610 
   633 
   611 opt:set:: 
   634 o:set:: 
   612     ACL-Variablen setzen
   635     ACL-Variablen setzen
   613 
   636 
   614  set acl_m_domain = $domain
   637  set acl_m_domain = $domain
   615  set acl_c_host = $sender_host_address
   638  set acl_c_host = $sender_host_address
   616 
   639 
   617 opt:add_header::
   640 o:add_header::
   618     Header zum Hinzufügen vormerken    
   641     Header zum Hinzufügen vormerken    
   619 
   642 
   620 opt:remove_header::
   643 o:remove_header::
   621     Header zum Entfernen vormerken
   644     Header zum Entfernen vormerken
   622     
   645     
   623 opt:delay::
   646 o:delay::
   624     Fügt eine kurze Verarbeitungspause ein
   647     Fügt eine kurze Verarbeitungspause ein
   625 
   648 
   626 Ziel der ACL-Operations sollte es sein, möglichst viele Dinge zur SMTP-Zeit zu
   649 Ziel der ACL-Operations sollte es sein, möglichst viele Dinge zur SMTP-Zeit zu
   627 entscheiden und dann die SMTP-Verbindung mit 5xx zu beenden. Damit bleibt die
   650 entscheiden und dann die SMTP-Verbindung mit 5xx zu beenden. Damit bleibt die
   628 Verantwortung für die Bounce beim Absender.
   651 Verantwortung für die Bounce beim Absender.
   650  external:                       
   673  external:                       
   651     driver = dnslookup
   674     driver = dnslookup
   652     domains = !+local_domains  
   675     domains = !+local_domains  
   653     transport = remote_smtp     
   676     transport = remote_smtp     
   654     ignore_target_hosts = <; 127.0.0.1 : ::1
   677     ignore_target_hosts = <; 127.0.0.1 : ::1
       
   678     more = no
   655 
   679 
   656 Eine Liste der konfigurierten Router erhält man mit:
   680 Eine Liste der konfigurierten Router erhält man mit:
   657 
   681 
   658  exim -bP router_list
   682  exim -bP router_list
   659 
   683 
   662 Die Transport-Blöcke werden von den Routern referenziert, ihre Reihenfolge ist
   686 Die Transport-Blöcke werden von den Routern referenziert, ihre Reihenfolge ist
   663 egal. Auch hier wird das grundlegende Verhalten eins Blocks durch den Treiber
   687 egal. Auch hier wird das grundlegende Verhalten eins Blocks durch den Treiber
   664 bestimmt. 
   688 bestimmt. 
   665 
   689 
   666 .Beispiel
   690 .Beispiel
   667  remote_smtp
   691  remote_smtp:
   668    driver = smtp
   692    driver = smtp
   669    command_timeout = 10s
   693    command_timeout = 10s
   670 
   694 
   671 Die Liste der konfigurierten Transports:
   695 Die Liste der konfigurierten Transports:
   672  
   696  
   713 
   737 
   714 === Filter-Kommandos
   738 === Filter-Kommandos
   715 
   739 
   716 +add+::
   740 +add+::
   717     Nutzer-Variable inkrementieren. Diese Variablen stehen dann später als
   741     Nutzer-Variable inkrementieren. Diese Variablen stehen dann später als
   718     var:$sn1 - var:$sn9 in den Routern und Transports zur Verfügung
   742     i:$sn1 - i:$sn9 in den Routern und Transports zur Verfügung
   719 
   743 
   720  add 27 to to n3
   744  add 27 to to n3
   721 
   745 
   722 +deliver+::
   746 +deliver+::
   723     Mail weiterleiten, Vorsicht mit den Absendern (SPF). Signifikant.
   747     Mail weiterleiten, Vorsicht mit den Absendern (SPF). Signifikant.