27 |
27 |
28 \begin{frame}{Inhalt} |
28 \begin{frame}{Inhalt} |
29 \tableofcontents |
29 \tableofcontents |
30 \end{frame} |
30 \end{frame} |
31 |
31 |
32 \section{Exim - Entwicklung und Positionierung} |
32 % -- |
33 \input{frames/exim.tex} |
33 \input{frames/exim.tex} |
34 |
34 |
35 \section{Arbeitsweise und Anatomie} |
35 % -- |
36 \input{frames/anatomie.tex} |
36 \input{frames/anatomie.tex} |
37 |
37 |
38 % -- |
38 % -- Config |
39 \input{frames/konfiguration.tex} |
39 \input{frames/konfiguration.tex} |
40 |
40 |
41 \section{Routing} |
41 % -- Routing |
42 \subsection{Ablauf} |
42 \input{frames/routing.tex} |
43 |
43 |
44 \begin{frame}[fragile]{Routing}{Allgemein} |
44 % -- Transport |
45 \begin{itemize} |
45 \input{frames/transport.tex} |
46 \item Adresse wird an eine Kette von Routern übergeben (Reihenfolge!) |
|
47 \item Router entscheiden über den Fortgang der Bearbeitung |
|
48 \item Vorbedingungen entscheiden, ob der Router „befragt“ wird |
|
49 \item Router liefern für eine gegebene Adresse |
|
50 \begin{description} |
|
51 \item[accept] Zuordnung zu Transport oder erzeugung neuer Adressen |
|
52 \item[pass] Weitergabe an anderen Router |
|
53 \item[decline] Verweigerung |
|
54 \item[fail] Bounce wird generiert |
|
55 \item[defer] falscher Augenblick |
|
56 \item[error] Panik |
|
57 \end{description} |
|
58 \item werden auch von ACL genutzt (Adressüberpüfung) |
|
59 \item Router: dnslookup, manualroute, queryprogram, redirect, accept |
|
60 \item einfache Tests sind möglich mit \verb=exim -bt= (Adresstest - |
|
61 Routing) bzw. \verb=exim -bv= (Adressüberprüfung - ACL) |
|
62 \end{itemize} |
|
63 \end{frame} |
|
64 |
46 |
65 \subsection{Konfiguration} |
47 % -- ACL |
|
48 % \input{frames/acl.tex} |
66 |
49 |
67 \begin{frame}[fragile]{Routing}{Konfiguration} |
50 % -- Example Emil |
68 Für jeden Router-Block |
51 \input{frames/emil.tex} |
69 \begin{itemize} |
|
70 \item Treiber |
|
71 \item Vorbedingungen (\verb=check_local_user=, \verb=domains=, \verb=condition=, …) |
|
72 \item Generische Optionen (\verb=caseful_local_part=, \verb=local_part_prefix=, …) |
|
73 \end{itemize} |
|
74 %\scriptsize |
|
75 \verbatiminput{routers.conf} |
|
76 \end{frame} |
|
77 |
52 |
78 \begin{frame}{Routing}{Schema} |
53 % -- Example multiple smarthosts |
79 \includegraphics[width=0.8\textwidth,angle=270]{routing} |
54 % \input{frames/smarthost.tex} |
80 \end{frame} |
|
81 |
55 |
82 \subsection{Test} |
|
83 |
|
84 \begin{frame}[fragile]{Routing}{Test} |
|
85 \begin{verbatim} |
|
86 $ exim -bt hans@example.com |
|
87 hans@example.com |
|
88 router = remote, transport = remote_smtp |
|
89 host example.com [2606:2800:220:6d:26bf:1447:1097:aa7] |
|
90 host example.com [93.184.216.119] |
|
91 |
|
92 $ exim -bt hans@localhost |
|
93 hans@example.com |
|
94 <-- hans@localhost |
|
95 router = remote, transport = remote_smtp |
|
96 host example.com [2606:2800:220:6d:26bf:1447:1097:aa7] |
|
97 host example.com [93.184.216.119] |
|
98 |
|
99 $ exim -bt heiko@localhost |
|
100 heiko@localhost |
|
101 router = mbox, transport = local_mbox |
|
102 \end{verbatim} |
|
103 \end{frame} |
|
104 |
|
105 \begin{frame}[fragile]{Routing}{Remote} |
|
106 \scriptsize |
|
107 \begin{alltt} |
|
108 \input{routingremote.tt} |
|
109 \end{alltt} |
|
110 \end{frame} |
|
111 |
|
112 \begin{frame}[fragile]{Routing}{Alias} |
|
113 \scriptsize |
|
114 \begin{alltt} |
|
115 \input{routingalias.tt} |
|
116 \end{alltt} |
|
117 \end{frame} |
|
118 |
|
119 \begin{frame}[fragile]{Routing}{Local} |
|
120 \scriptsize |
|
121 \begin{alltt} |
|
122 \input{routinglocal.tt} |
|
123 \end{alltt} |
|
124 \end{frame} |
|
125 |
|
126 \section{Transport} |
|
127 |
|
128 \begin{frame}[fragile]{Transports} |
|
129 Die Router referenzieren ggf. einen „transport“. |
|
130 \begin{itemize} |
|
131 \item Reihenfolge egal |
|
132 \item Generische Optionen: \verb=headers_remove=, |
|
133 \verb=envelope_to_add=, \verb=transport_filter=, \verb=user= |
|
134 \item Treiber hat weitere Optionen |
|
135 \item Transports: appendfile, autoreply, lmtp, pipe, smtp |
|
136 \item Default TLS, wenn STARTTLS geboten wird |
|
137 \end{itemize} |
|
138 \begin{alltt} |
|
139 \input{transports.conf} |
|
140 \end{alltt} |
|
141 \end{frame} |
|
142 |
|
143 \section{Access Control Lists} |
|
144 \subsection{Konfiguration} |
|
145 |
|
146 \begin{frame}[<+->][fragile]{Acess Control Lists} |
|
147 Für jede Phase der SMTP-Kommunikation gibt es einen ACL-Einstiegspunkt. |
|
148 Abarbeitung der Regeln bis zur Entscheidung. |
|
149 \pause |
|
150 \begin{description} |
|
151 \item[accept] alles gut, keine weiteren Regeln |
|
152 \item[deny] permanenter Fehler und passender Text dazu |
|
153 \item[require] permanenter Fehler oder nächste Regel |
|
154 \item[warn] Protokollierung und nächste Regel |
|
155 \item[defer] temporärer Fehler |
|
156 \end{description} |
|
157 \pause |
|
158 Verweis auf Blöcke im ACL-Abschnitt der Konfiguration |
|
159 \begin{verbatim} |
|
160 acl_smtp_connect = acl_check_connect |
|
161 acl_smtp_rcpt = acl_check_rcpt |
|
162 acl_smtp_data = acl_check_data |
|
163 \end{verbatim} |
|
164 \end{frame} |
|
165 |
|
166 \begin{frame}[fragile]{Access Control Lists}{Konfiguration} |
|
167 \tiny |
|
168 \verbatiminput{acl.conf} |
|
169 \end{frame} |
|
170 |
|
171 \subsection{Features} |
|
172 |
|
173 \begin{frame}[<+->][fragile]{Access Control Lists}{Features} |
|
174 \begin{itemize} |
|
175 \item Zugriff auf alles, was an Information verfügbar ist |
|
176 \item Ratelimit mit beliebigen Keys |
|
177 \item Überprüfung von Adressen \verb+verify = recipient+ |
|
178 \item Callout zur Überprüfung \verb+verify = recipient/callout=use_sender,defer_ok+ |
|
179 \item DNS-Blacklists \verb+dnslists = sbl.spamhaus.org+ |
|
180 \item Verschlüsselte Verbindung \verb+encrypted = *+ |
|
181 \item Content-Scan \verb+malware = *+, \verb+spam = …+ |
|
182 \item Header-Syntax \verb+verify = header_syntax+ |
|
183 \item Reverse-DNS \verb+verify = reverse_host_lookup+ |
|
184 \item ACL-Variablen für spätere Verarbeitung \verb+set acl_m_foo = bar+ |
|
185 \item Sub-ACL \verb+acl = foo_acl+ |
|
186 \item Generische Bedingung \verb+condition =+ |
|
187 \end{itemize} |
|
188 \end{frame} |
|
189 |
56 |
190 \section{Logging} |
57 \section{Logging} |
191 |
58 |
192 \begin{frame}[fragile]{Logging} |
59 \begin{frame}[fragile]{Logging} |
193 Sicherheit heißt auch Logging. Auskunft über das Verarbeiten der |
60 Sicherheit heißt auch Logging. Auskunft über das Verarbeiten der |