frames/konfiguration.tex
changeset 11 3d9bb718ac1c
child 14 0f80f11be279
equal deleted inserted replaced
10:310001890766 11:3d9bb718ac1c
       
     1 % konfiguration
       
     2 \section{Konfiguration}
       
     3 \subsection{File}
       
     4 
       
     5 \begin{frame}[<+->][fragile]{Konfiguration}{File}
       
     6 \begin{itemize}
       
     7 	\item Debian geht einen sonder(baren) Weg
       
     8 	\item Beispiel-Konfig \verb=example.conf.gz= als Ausgangspunkt
       
     9 	\item \verb=exim -bV= listet die verwendete Konfigurationsdatei und
       
    10 			  einkompilierte Features
       
    11 	\begin{scriptsize}
       
    12 	\ttinput{exim_bV.tt}
       
    13 	\end{scriptsize}
       
    14 	\end{itemize}
       
    15 \end{frame}
       
    16 
       
    17 \subsection{Struktur}
       
    18 
       
    19 \begin{frame}[<+->][fragile]{Konfiguration}{Struktur}
       
    20 Strukturiertes Konfigurationsfile mit mehreren Abschnitten, teilweise
       
    21 miteinander verlinkt (Router referenziert Tranports, globaler Teil
       
    22 referenziert ACL)
       
    23 \pause
       
    24 \begin{scriptsize}
       
    25 \begin{verbatim}
       
    26
       
    27 	begin acl
       
    28
       
    29 	begin routers
       
    30
       
    31 \end{verbatim}
       
    32 \end{scriptsize}
       
    33 \begin{description}
       
    34 	\item[global] knapp 240 allgemeine Direktiven
       
    35 	\item[acl] Access Control Lists für SMTP
       
    36 	\item[routers] Routing-Regeln (genutzt auch von ACL)
       
    37 	\item[transports] Transport-Mechanismen
       
    38 	\item[retry] Regeln für Wiederholungsversuche
       
    39 	\item[rewrite] Adress-Manipulation in Envelope und Header
       
    40 	\item[authenticators] SMTP-Authentifizierung
       
    41 \end{description}
       
    42 \end{frame}
       
    43 
       
    44 \subsection{Syntax}
       
    45 
       
    46 \begin{frame}[fragile]{Konfiguration}{Syntax}
       
    47 \begin{exampleblock}{Macros, Kommentar, lange Zeilen}
       
    48 \begin{verbatim}
       
    49 	# Super!
       
    50 	CF = /etc/exim4/
       
    51 	USER_BASE = ou=users,BASE
       
    52 	BASE = dc=example,dc=com
       
    53 	received_header_text = Received: ${if def:sender_rcvhost \
       
    54 	  from $sender_rcvhost\n\t}{${if def:sender_ident {from \
       
    55
       
    56 	  def:received_for {\n\tfor $received_for}}
       
    57 \end{verbatim}
       
    58 \end{exampleblock}
       
    59 \pause
       
    60 Der Rest ist einfach :)
       
    61 \begin{alltt}
       
    62 	primary_hostname = foo.example.com
       
    63 \end{alltt}
       
    64 \pause
       
    65 … solange keine \$-Zeichen dazu kommen. Dann haben wir Expansion in
       
    66 allen Spielarten.
       
    67 \end{frame}
       
    68 
       
    69 \subsection{String-Expansion}
       
    70 
       
    71 \begin{frame}[<+->][fragile]{Konfiguration}{Expansion}
       
    72 	Etwa die Hälfte der Konfigurationsdirektiven erlaubt Variablensubstitution (Expansion) 
       
    73 	zur Laufzeit.
       
    74 \pause
       
    75 \begin{verbatim}
       
    76   message_size_limit = ${if =={$received_port}{587} {200M}{50M}}
       
    77   headers_add = X-Authenticated: ${if def:authenticated_id \
       
    78 	              {$authenticated_id}{unknown}}
       
    79 \end{verbatim}
       
    80 \pause
       
    81 \begin{description}
       
    82 \item[Variablen] \verb=$local_part=, \verb=${local_part}=
       
    83 \item[Operatoren] \verb=${md5:$local_part}=, \verb=${uc:$domain}=
       
    84 \item[Manipulation] \verb=${sg{$local_part}{.laus}{XXX}}=
       
    85 \item[Bedingungen] \verb=${if eq{$local_part}{x}{~/mbox}{~/.mail}}=
       
    86 \item[Lookup/Key] \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
       
    87 \item[Lookup/Query] \verb+${lookup dnsdb{mx=example.com}}+
       
    88 \end{description}
       
    89 \end{frame}
       
    90 
       
    91 \begin{frame}[fragile]{String-Expansion}{Wenn nichts mehr geht}
       
    92 Als letzte Hilfe gibt es die Möglichkeit, Sockets auszulesen, Perl zu
       
    93 integrieren, oder externe Kommandos aufzurufen
       
    94 \pause
       
    95 \begin{verbatim}
       
    96 	${readsocket{<socket>}{<request>}}
       
    97 	${run{<command>[<arg>]…}}
       
    98 	${perl{<sub>}[{<arg>}…]}
       
    99 \end{verbatim}
       
   100 \pause
       
   101 \begin{exampleblock}{Greylisting}
       
   102 \begin{verbatim}
       
   103 	GREYKEY = $sender_address/$local_part@$domain
       
   104 	perl_startup = do '/etc/exim4/exim-exigrey.pl'
       
   105 	acl_smtp_rcpt = acl_check_rcpt
       
   106
       
   107 	begin acl
       
   108 	  cl_check_rcpt:
       
   109
       
   110 	      defer	condition = ${perl{unseen}{GREYKEY}{1d}}
       
   111
       
   112 \end{verbatim}
       
   113 \end{exampleblock}
       
   114 \end{frame}
       
   115 
       
   116