--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/frames/konfiguration.tex Fri May 09 10:38:05 2014 +0200
@@ -0,0 +1,116 @@
+% konfiguration
+\section{Konfiguration}
+\subsection{File}
+
+\begin{frame}[<+->][fragile]{Konfiguration}{File}
+\begin{itemize}
+ \item Debian geht einen sonder(baren) Weg
+ \item Beispiel-Konfig \verb=example.conf.gz= als Ausgangspunkt
+ \item \verb=exim -bV= listet die verwendete Konfigurationsdatei und
+ einkompilierte Features
+ \begin{scriptsize}
+ \ttinput{exim_bV.tt}
+ \end{scriptsize}
+ \end{itemize}
+\end{frame}
+
+\subsection{Struktur}
+
+\begin{frame}[<+->][fragile]{Konfiguration}{Struktur}
+Strukturiertes Konfigurationsfile mit mehreren Abschnitten, teilweise
+miteinander verlinkt (Router referenziert Tranports, globaler Teil
+referenziert ACL)
+\pause
+\begin{scriptsize}
+\begin{verbatim}
+ …
+ begin acl
+ …
+ begin routers
+ …
+\end{verbatim}
+\end{scriptsize}
+\begin{description}
+ \item[global] knapp 240 allgemeine Direktiven
+ \item[acl] Access Control Lists für SMTP
+ \item[routers] Routing-Regeln (genutzt auch von ACL)
+ \item[transports] Transport-Mechanismen
+ \item[retry] Regeln für Wiederholungsversuche
+ \item[rewrite] Adress-Manipulation in Envelope und Header
+ \item[authenticators] SMTP-Authentifizierung
+\end{description}
+\end{frame}
+
+\subsection{Syntax}
+
+\begin{frame}[fragile]{Konfiguration}{Syntax}
+\begin{exampleblock}{Macros, Kommentar, lange Zeilen}
+\begin{verbatim}
+ # Super!
+ CF = /etc/exim4/
+ USER_BASE = ou=users,BASE
+ BASE = dc=example,dc=com
+ received_header_text = Received: ${if def:sender_rcvhost \
+ from $sender_rcvhost\n\t}{${if def:sender_ident {from \
+ …
+ def:received_for {\n\tfor $received_for}}
+\end{verbatim}
+\end{exampleblock}
+\pause
+Der Rest ist einfach :)
+\begin{alltt}
+ primary_hostname = foo.example.com
+\end{alltt}
+\pause
+… solange keine \$-Zeichen dazu kommen. Dann haben wir Expansion in
+allen Spielarten.
+\end{frame}
+
+\subsection{String-Expansion}
+
+\begin{frame}[<+->][fragile]{Konfiguration}{Expansion}
+ Etwa die Hälfte der Konfigurationsdirektiven erlaubt Variablensubstitution (Expansion)
+ zur Laufzeit.
+\pause
+\begin{verbatim}
+ message_size_limit = ${if =={$received_port}{587} {200M}{50M}}
+ headers_add = X-Authenticated: ${if def:authenticated_id \
+ {$authenticated_id}{unknown}}
+\end{verbatim}
+\pause
+\begin{description}
+\item[Variablen] \verb=$local_part=, \verb=${local_part}=
+\item[Operatoren] \verb=${md5:$local_part}=, \verb=${uc:$domain}=
+\item[Manipulation] \verb=${sg{$local_part}{.laus}{XXX}}=
+\item[Bedingungen] \verb=${if eq{$local_part}{x}{~/mbox}{~/.mail}}=
+\item[Lookup/Key] \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
+\item[Lookup/Query] \verb+${lookup dnsdb{mx=example.com}}+
+\end{description}
+\end{frame}
+
+\begin{frame}[fragile]{String-Expansion}{Wenn nichts mehr geht}
+Als letzte Hilfe gibt es die Möglichkeit, Sockets auszulesen, Perl zu
+integrieren, oder externe Kommandos aufzurufen
+\pause
+\begin{verbatim}
+ ${readsocket{<socket>}{<request>}}
+ ${run{<command>[<arg>]…}}
+ ${perl{<sub>}[{<arg>}…]}
+\end{verbatim}
+\pause
+\begin{exampleblock}{Greylisting}
+\begin{verbatim}
+ GREYKEY = $sender_address/$local_part@$domain
+ perl_startup = do '/etc/exim4/exim-exigrey.pl'
+ acl_smtp_rcpt = acl_check_rcpt
+ …
+ begin acl
+ cl_check_rcpt:
+ …
+ defer condition = ${perl{unseen}{GREYKEY}{1d}}
+ …
+\end{verbatim}
+\end{exampleblock}
+\end{frame}
+
+