|
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 |