diff -r 310001890766 -r 3d9bb718ac1c frames/konfiguration.tex --- /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{}{}} + ${run{[]…}} + ${perl{}[{}…]} +\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} + +