frames/konfiguration.tex
changeset 11 3d9bb718ac1c
child 14 0f80f11be279
--- /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}
+
+