[snapshot]
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Sun, 11 May 2014 10:55:34 +0200
changeset 16 a5163d6645bf
parent 15 94cf6ae85bc3
child 17 823b583c7f72
[snapshot]
conf/acl-example.conf
conf/acl.conf
frames/acl.tex
frames/logging.tex
frames/testing.tex
mk2014.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/conf/acl-example.conf	Sun May 11 10:55:34 2014 +0200
@@ -0,0 +1,33 @@
+begin acl
+
+
+  acl_check_rcpt:
+
+    accept  domains = +local_domains
+            local_parts = postmaster
+
+    require message = sender verification failed
+		        verify = sender
+
+    accept  authenticated = *
+
+    require message = relaying denied
+            domains = +local_domains
+
+    require message = recipient verification failed
+            verify = recipient
+
+    accept
+
+  acl_check_data:
+
+    deny    message = malware: $malware_name
+            malware = *
+
+    deny    message = spam score: $spam_score
+            spam = nobody
+            condition = ${if >={$spam_score_int}{60}}
+
+    accept
+
+
--- a/conf/acl.conf	Sun May 11 10:55:24 2014 +0200
+++ b/conf/acl.conf	Sun May 11 10:55:34 2014 +0200
@@ -1,39 +1,21 @@
 begin acl
 
-    acl_check_connect:
-        
-        deny    ratelimit = 10/1m
-                log_message = $sender_rate/$sender_rate_period > $sender_rate_limit
-
-        accept
+  acl_check_connect:
+    …
 
-    acl_check_rcpt:
-
-        accept  domains = +local_domains
-                local_parts = postmaster
-
-        require message = sender verification failed
-                verify = sender
-
-        accept  authenticated = *
+  acl_check_rcpt:
 
-        require message = relaying denied
-                domains = +local_domains
-
-        require message = recipient verification failed
-                verify = recipient
-
-        accept
-
-    acl_check_data:
+    accept  domains = +local_domains
+            local_parts = postmaster
+    ….
+    require message = relaying denied
+            domains = +local_domains
+    …
+    accept
 
-        deny    message = sorry, $malware_name
-                malware = *
+  acl_check_data:
 
-        deny    message = sorry, filtered
-                spam = nobody
-                condition = ${if >={$spam_score_int}{60}}
-
-        accept
-
-
+   accept   hosts = +relay_from_hosts
+   deny     message = sorry, size matters
+            condition = ${if >{$message_size}{20M}
+   accept 
--- a/frames/acl.tex	Sun May 11 10:55:24 2014 +0200
+++ b/frames/acl.tex	Sun May 11 10:55:34 2014 +0200
@@ -2,28 +2,29 @@
 \subsection{Konfiguration}
 
 \begin{frame}[<+->][fragile]{Acess Control Lists}
-Für jede Phase der SMTP-Kommunikation gibt es einen ACL-Einstiegspunkt. 
-Abarbeitung der Regeln bis zur Entscheidung.
+Für jede Phase der SMTP-Kommunikation gibt es einen ACL-Block 
+mit Regeln.  Abarbeitung der Regeln erfolgt bis zur Entscheidung.
 \pause
 \begin{description}
-\item[accept] alles gut, keine weiteren Regeln
-\item[deny] permanenter Fehler und passender Text dazu
-\item[require] permanenter Fehler oder nächste Regel
-\item[warn] Protokollierung und nächste Regel
+\item[accept] alles gut, weitermachen
+\item[deny] permanenter Fehler
+\item[require] „deny“ oder weitermachen
 \item[defer] temporärer Fehler
 \end{description}
 \pause
-Verweis auf Blöcke im ACL-Abschnitt der Konfiguration
+Die Zuordnung der SMTP-Phasen zu den ACL-Blöcken ist frei.
 \begin{verbatim}
-	acl_smtp_connect = acl_check_connect
+	acl_smtp_connect = …
+	…
 	acl_smtp_rcpt = acl_check_rcpt
-	acl_smtp_data = acl_check_data
+	acl_smtp_data = …
+	…
 \end{verbatim}
 \end{frame}
 
 \begin{frame}[fragile]{Access Control Lists}{Konfiguration}
 \tiny
-\verbatiminput{acl.conf}
+\verbatiminput{conf/acl.conf}
 \end{frame}
 
 \subsection{Features}
@@ -35,12 +36,11 @@
 	\item Überprüfung von Adressen \verb+verify = recipient+
 	\item Callout zur Überprüfung \verb+verify = recipient/callout=use_sender,defer_ok+
 	\item DNS-Blacklists \verb+dnslists = sbl.spamhaus.org+
+	\item Authentifizierte Verbindung \verb+authenticated = *+
 	\item Verschlüsselte Verbindung \verb+encrypted = *+
 	\item Content-Scan \verb+malware = *+, \verb+spam = …+
 	\item Header-Syntax \verb+verify = header_syntax+
 	\item Reverse-DNS \verb+verify = reverse_host_lookup+
-	\item ACL-Variablen für spätere Verarbeitung \verb+set acl_m_foo = bar+
-	\item Sub-ACL \verb+acl = foo_acl+
 	\item Generische Bedingung \verb+condition =+
 \end{itemize}
 \end{frame}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frames/logging.tex	Sun May 11 10:55:34 2014 +0200
@@ -0,0 +1,30 @@
+\section{Logging}
+
+\begin{frame}[fragile]{Logging}
+Sicherheit heißt auch Logging. Auskunft über das Verarbeiten der
+Nachricht. Gesteuert wird u.a. über \verb=log_selector=, \verb=log_write=,
+\verb=debug_print=.
+\begin{description}
+\item[mainlog] alle relevanten Transaktionen, dokumentiertes,
+	maschinenlesbares Format
+\item[rejectlog] Details zu abgewiesenen Nachrichten
+\item[paniclog] Konfigurationsfehler, schwere Probleme
+\item[messagelog] Transaktionen zu einer spezifischen Nachricht
+\item[syslog] Fallback, wenn nicht mal mehr paniclog geht
+\end{description}
+\scriptsize
+\begin{alltt}
+\input{msglog.tt}
+\end{alltt}
+\end{frame}
+
+\begin{frame}[fragile]{Logging}{mainlog}
+\scriptsize
+\verbatiminput{mainlog.tt}
+\end{frame}
+
+\begin{frame}[fragile]{Logging}{rejectlog}
+\scriptsize
+\verbatiminput{rejectlog.tt}
+\end{frame}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frames/testing.tex	Sun May 11 10:55:34 2014 +0200
@@ -0,0 +1,57 @@
+\section{Test und Betrieb}
+\subsection{Konfiguration}
+
+\begin{frame}[fragile]{Test und Betrieb}{Konfiguration}
+Viele Möglichkeiten, die bestehende Konfiguration zu überprüfen:
+\begin{alltt}
+	$ exim -bV -C test.conf
+	Configuration file is test.conf
+	$ exim -bP primary\_hostname
+	mail.example.com
+	$ exim -bP routers
+	… (ca 200 Zeilen)
+\end{alltt}
+\end{frame}
+
+\begin{frame}[fragile]{Test und Betrieb}{Routing, Expansion}
+\begin{verbatim}
+	$ exim -d-all+route -bt hans@example.com
+	…
+	$ exim -d-all+expand -be '$lookup{root}lsearch{/etc/aliases}}'
+	search_open: lsearch "/etc/aliases"
+	search_find: file="/etc/aliases"
+		key="root" partial=-1 affix=NULL starflags=0
+	LRU list:
+		:/etc/aliases
+		End
+	internal_search_find: file="/etc/aliases"
+		type=lsearch key="root"
+	file lookup required for root
+		in /etc/aliases
+	lookup yielded: heiko
+	heiko
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]{Test und Betrieb}{ACL}
+Fake-SMTP-Session mit \verb=exim -bh 1.1.1.1=, aber einfacher noch mit swaks.
+\scriptsize
+\begin{verbatim}
+	$ swaks --pipe 'exim -bh 1.1.1.1' --from … --to …
+	=== Trying pipe to exim -bh 1.1.1.1…
+	=== Connected to exim -bh 1.1.1.1.
+	>>> looking up host name for 1.1.1.1
+	…
+	<-  **** SMTP testing session as if from host 1.1.1.1
+	<-  **** This is not for real!
+	…
+	>>> processing "deny"
+	>>> deny: condition test succeeded in ACL "acl_check_rcpt"
+	LOG: [1967] H=(jumper.schlittermann.de) [1.1.1.1]
+	F=<hs@schlittermann.de> rejected RCPT <hans@example.com>: relay not
+	permitted
+	<** 550 relay not permitted
+	 -> QUIT
+	 <-  221 jumper.schlittermann.de closing connection
+\end{verbatim}
+\end{frame}
--- a/mk2014.tex	Sun May 11 10:55:24 2014 +0200
+++ b/mk2014.tex	Sun May 11 10:55:34 2014 +0200
@@ -45,105 +45,20 @@
 % -- Transport
 \input{frames/transport.tex}
 
-% -- ACL
-% \input{frames/acl.tex}
-
-% -- Example Emil
+% -- Example Emig
 \section{Beispiele}
 \input{frames/emig.tex}
+% -- Example Smarthosts
 \input{frames/smart.tex}
 
-% -- Example multiple smarthosts
-% \input{frames/smarthost.tex}
-
-
-\section{Logging}
-
-\begin{frame}[fragile]{Logging}
-Sicherheit heißt auch Logging. Auskunft über das Verarbeiten der
-Nachricht. Gesteuert wird u.a. über \verb=log_selector=, \verb=log_write=,
-\verb=debug_print=.
-\begin{description}
-\item[mainlog] alle relevanten Transaktionen, dokumentiertes,
-	maschinenlesbares Format
-\item[rejectlog] Details zu abgewiesenen Nachrichten
-\item[paniclog] Konfigurationsfehler, schwere Probleme
-\item[messagelog] Transaktionen zu einer spezifischen Nachricht
-\item[syslog] Fallback, wenn nicht mal mehr paniclog geht
-\end{description}
-\scriptsize
-\begin{alltt}
-\input{msglog.tt}
-\end{alltt}
-\end{frame}
-
-\begin{frame}[fragile]{Logging}{mainlog}
-\scriptsize
-\verbatiminput{mainlog.tt}
-\end{frame}
-
-\begin{frame}[fragile]{Logging}{rejectlog}
-\scriptsize
-\verbatiminput{rejectlog.tt}
-\end{frame}
-
-\section{Test und Betrieb}
-\subsection{Konfiguration}
+% -- ACL
+\input{frames/acl.tex}
 
-\begin{frame}[fragile]{Test und Betrieb}{Konfiguration}
-Viele Möglichkeiten, die bestehende Konfiguration zu überprüfen:
-\begin{alltt}
-	$ exim -bV -C test.conf
-	Configuration file is test.conf
-	$ exim -bP primary\_hostname
-	mail.example.com
-	$ exim -bP routers
-	… (ca 200 Zeilen)
-\end{alltt}
-\end{frame}
+% -- logging
+\input{frames/logging.tex}
 
-\begin{frame}[fragile]{Test und Betrieb}{Routing, Expansion}
-\begin{verbatim}
-	$ exim -d-all+route -bt hans@example.com
-	…
-	$ exim -d-all+expand -be '$lookup{root}lsearch{/etc/aliases}}'
-	search_open: lsearch "/etc/aliases"
-	search_find: file="/etc/aliases"
-		key="root" partial=-1 affix=NULL starflags=0
-	LRU list:
-		:/etc/aliases
-		End
-	internal_search_find: file="/etc/aliases"
-		type=lsearch key="root"
-	file lookup required for root
-		in /etc/aliases
-	lookup yielded: heiko
-	heiko
-\end{verbatim}
-\end{frame}
-
-\begin{frame}[fragile]{Test und Betrieb}{ACL}
-Fake-SMTP-Session mit \verb=exim -bh 1.1.1.1=, aber einfacher noch mit swaks.
-\scriptsize
-\begin{verbatim}
-	$ swaks --pipe 'exim -bh 1.1.1.1' --from … --to …
-	=== Trying pipe to exim -bh 1.1.1.1…
-	=== Connected to exim -bh 1.1.1.1.
-	>>> looking up host name for 1.1.1.1
-	…
-	<-  **** SMTP testing session as if from host 1.1.1.1
-	<-  **** This is not for real!
-	…
-	>>> processing "deny"
-	>>> deny: condition test succeeded in ACL "acl_check_rcpt"
-	LOG: [1967] H=(jumper.schlittermann.de) [1.1.1.1]
-	F=<hs@schlittermann.de> rejected RCPT <hans@example.com>: relay not
-	permitted
-	<** 550 relay not permitted
-	 -> QUIT
-	 <-  221 jumper.schlittermann.de closing connection
-\end{verbatim}
-\end{frame}
+% -- Test und Betrieb
+\input{frames/testing.tex}
 
 \section{Ausblick}
 
@@ -153,13 +68,18 @@
 	\item TLS
 	\item Header-Rewriting
 	\item Retry-Rules
-	\item SMTP-Authentication
-	\item Cut-Through-Routing, PRDR, DANE, Enhanced Status Codes
+	\item SMTP-Authentifizierung (Client/Server)
+	\item Cut-Through-Routing, PRDR, DNSSEC, DANE, Enhanced Status Codes
 \end{itemize}
 \end{frame}
 
 \begin{frame}{DANKE}
-DANKE
+Fragen?
+\pause
+Ach so - ja, es ist ein MTA-Framework. Mit einem Minimum an Annahmen
+über das zu lösende Problem und über die Art der Lösung.
+\pause
+
 \end{frame}
 
 %\begin{frame}{Möglichkeiten zur Leistungsverbesserung (Warteschlange, Parallelisierung, Blockierung, Ratelimit)}