[snapshot]
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Tue, 06 May 2014 16:09:49 +0200
changeset 4 ce986267138d
parent 3 40a385bb9b7e
child 5 5c175e3d9aa6
[snapshot]
Makefile
mk2014.tex
--- a/Makefile	Mon May 05 22:48:21 2014 +0200
+++ b/Makefile	Tue May 06 16:09:49 2014 +0200
@@ -1,7 +1,12 @@
 IMAGES = procs.pdf routing.pdf
 ALL = mk2014.pdf
+.PHONY: clean
 
 all:		$(ALL)
+clean:
+	rubber -d --clean mk2014.tex
+	-rm -f *.vrb $(IMAGES)
+
 mk2014.pdf:	$(IMAGES)
 
 %.pdf:	%.tex
--- a/mk2014.tex	Mon May 05 22:48:21 2014 +0200
+++ b/mk2014.tex	Tue May 06 16:09:49 2014 +0200
@@ -1,5 +1,5 @@
 %\documentclass[draft]{beamer}
-\documentclass{beamer}
+\documentclass[9pt]{beamer}
 \usepackage[ngerman]{babel}
 \usepackage[utf8x]{inputenc}
 \usepackage{xmpmulti}
@@ -10,6 +10,7 @@
 \author[H. Schlittermann]{Heiko Schlittermann}
 \institute{schlittermann - internet \& unix support, Dresden}
 
+
 \begin{document}
 
 % sicheres logging
@@ -32,7 +33,6 @@
 	\item Flexibilität
 	\item Sicherheit (sicher und zuverlässig)
 	\item mehr als 90\% der Nachrichten werden sofort weitergeleitet bzw. ausgeliefert
-	\scriptsize{
 \begin{verbatim}
 Time spent on the queue: messages with at least one remote delivery
 -------------------------------------------------------------------
@@ -44,7 +44,6 @@
         6h        2   0.0%  100.0%
 Over    1d        1   0.0%  100.0%
 \end{verbatim}
-	}
 	\item Saubere Dokumentation (spec.txt)
 	\item Dokumentiertes Protokollformat
 \end{itemize}
@@ -104,20 +103,59 @@
 \end{frame}
 
 \begin{frame}[fragile]{Konfiguration}{Syntax}
-\begin{exampleblock}{Macros}\scriptsize\begin{verbatim}
+\begin{exampleblock}{Macros}\begin{verbatim}
 	CF = /etc/exim4/
 	USER_BASE = ou=users,BASE
 	BASE = dc=example,dc=com
 \end{verbatim}\end{exampleblock}
 
-\begin{exampleblock}{Listen}\scriptsize\begin{verbatim}
-	domainlist local_domains = example.com : example.org
-	domains = +local_domains
+\begin{exampleblock}{Bedingte Konfiguration}
+\begin{verbatim}
+	.ifdef SMALL_MEM
+	message_size_limit = 50M
+	.else
+	message_size_limit = 500M
+	.endif
+\end{verbatim}
+\end{exampleblock}
+
+\begin{exampleblock}{Versteckte Optionen}
+Wegen \verb=exim -bP …=:
+\begin{verbatim}
+	hide mysql_servers = localhost/mail/exim/secret
+\end{verbatim}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]{Konfiguration}{Options-Typen}
+Es existieren ca. 580 Direktiven (Optionen). Exim kennt mehrere Datentypen.
+\begin{exampleblock}{Bool}\begin{verbatim}
+	more = yes
+	more = no
+	more
+	no_more
 \end{verbatim}\end{exampleblock}
 
-\begin{exampleblock}{Direktiven (ca. 580)}\scriptsize\begin{verbatim}
+\begin{exampleblock}{Numerisch: Integer, Fixed-Point, Zeitintervalle}\begin{verbatim}
+	message_size_limit = 100k
+	queue_only_load = 1.5
+	retry_data_expire = 4d2h
+\end{verbatim}\end{exampleblock}
+\begin{exampleblock}{Zeichenketten}\begin{verbatim}
 	primary_hostname = mail.example.com
-	smtp_active_hostname = ${lookup{$received_ip_address}lsearch{CF/hostnames}}
+\end{verbatim}\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]{Konfiguration}{Options-Typen 2}
+\begin{exampleblock}{Listen}\begin{verbatim}
+	local_parts = hans : fred : detlef
+	interfaces = <;  192.168.123.123 ; 2001:db8::42
+\end{verbatim}\end{exampleblock}
+
+\begin{exampleblock}{Frei definierte Listen}
+\begin{verbatim}
+	domainlist local_domains = example.com : example.org
+	hostlist relay_from_hosts = 127.0.0.1 : fred.example.com
 \end{verbatim}\end{exampleblock}
 
 \end{frame}
@@ -126,7 +164,7 @@
 Etwa die Hälfte der Konfigurationsdirektiven erlaubt
 Variablensubstitution (Expansion) zur Laufzeit.
 Testen kann man diese sehr einfach:
-\begin{scriptsize}\begin{verbatim}
+\begin{verbatim}
 	$ exim -be '$primary_hostname'
 	jumper.schlittermann.de
 	$ exim -be -oMi 1.1.1.1 -oMa 2.2.2.2 '$sender_host_address $received_ip_address'
@@ -137,12 +175,11 @@
 	heiko
 	$ exim -be '${lookup dnsdb{mx=heise.de}}'
 	10 relay.heise.de
-\end{verbatim}\end{scriptsize}
+\end{verbatim}
 \end{frame}
 
 \begin{frame}[fragile]{Expansion}{Übersicht}
 Expansion als „working horse“ der Flexibilität
-\begin{scriptsize}
 \begin{description}
 \item[Variablen] \verb=$local_part=, \verb=${local_part}=
 \item[Operatoren] \verb=${sha1:$local_part}=, \verb=${uc:$domain}=
@@ -151,13 +188,15 @@
 \item[Lookup/Key] \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
 \item[Lookup/Query] \verb+${lookup dnsdb{mx=heise.de}}+
 \end{description}
-\end{scriptsize}
 \end{frame}
 
 \begin{frame}[fragile]{Expansion}{Variablen}
-Es gibt knapp 200 Variablen, Referenzierung als \verb=$<var>= oder
-\verb=${<var>}=.
-\begin{scriptsize}
+Es gibt knapp 200 Variablen, die Information über Zustände, Limits, …
+enthalten:
+\begin{verbatim}
+	… = $<var>
+	… = ${<var>}
+\end{verbatim}
 \begin{description}
 \item[Envelope] \verb=$local_part=, \verb=$domain=, \verb=$local_part_prefix=,
 	\verb=$sender_local_part=, \verb=$recipients=
@@ -165,51 +204,54 @@
 \verb=$message_headers=, \verb=$h_subject:=
 \item[Content] \verb=$spam_score_int=, \verb=$malware_name=
 \item[Routing] \verb=$original_domain=
-\item[System] \verb=$load_average=, \verb=$log_space=, \verb=$pid=
-\item[Operation] \verb=$received_interface_address=, \verb=$tls_out_peerdn=, \verb=$tls_out_bits=
+\item[Delivery] \verb=$host_address=, \verb=$home=,
+	\verb=$qualify_recipient=
+\item[Operation] \verb=$load_average=, \verb=$log_space=, \verb=$pid=
+	\verb=$received_interface_address=, \verb=$tls_out_peerdn=,
+	\verb=$message_age=
 \end{description}
-\end{scriptsize}
 \end{frame}
 
-\begin{frame}[fragile]{String-Expansion}{String-Operationen}
-Einfache Manipulation von Zeichenketten sind möglich:
-\verb=${<op>:<string>}=
-\begin{scriptsize}
+\begin{frame}[fragile]{Expansion}{String-Operationen}
+Einfache Operationen auf Zeichenketten sind möglich:
+\begin{verbatim}
+	… = ${<op>:<string>}
+\end{verbatim}
 \begin{description}
 \item[Konvertierung] \verb=${uc:$local_part}=, \verb=${sha1:$domain}=, \verb=${time_eval:2d4h}=
 \item[Extraktion] \verb=${length_3:$domain}=, \verb=${substr_1_3:$domain}=, \verb=${addresses:$h_from}=
 \item[Arithmetik] \verb=${eval:40 + 2}=, \verb=${eval:40 + 2k}=, \verb=${eval:8 << 2}=
 \item[Filesystem] \verb=${stat:/etc/hosts}=
 \end{description}
-\end{scriptsize}
 \end{frame}
 
-\begin{frame}[fragile]{String-Expansion}{Bedingte Expansion}
-Expansion kann von Bedingungen abhängig gemacht werden:
+\begin{frame}[fragile]{Expansion}{Bedingte Expansion}
+Expansion kann von Bedingungen abhängig gemacht werden.
 \begin{verbatim}
-	${if <op>[{arg}…]}
+	${if <op>:<arg>}
 	${if <op>[{arg}…] {<value1>}[{<value2>}]}
 	${if <op>[{arg}…] {<value1>}fail}
 \end{verbatim}
-\begin{itemize}
-\item Definiert? \verb=def:tls_cipher=
-\item Vergleiche \verb=eq{foo}{bar}=, \verb+=={1}{1}+
-\item Matching \verb=match{$local_part}{^h\d+}=
-\item Authentication \verb=pam{$user:$pass}=
-\item Status \verb=first_delivery=
-\item Verknüpfungen \verb=and{{…}{…}{…}}=
-\end{itemize}
+\begin{description}
+\item[Negation] \verb=! <op>=
+\item[Verknüpfungen] \verb=and{{…}{…}{…}}=
+\item[Definiert] \verb=def:tls_cipher=
+\item[Vergleiche] \verb=eq{foo}{bar}=, \verb+=={1}{2}+
+\item[Matching] \verb=match{$local_part}{^h\d+}=
+\item[Authentication] \verb=pam{$user:$pass}=
+\item[Status] \verb=first_delivery=
+\end{description}
 \end{frame}
 
 \begin{frame}[fragile]{String-Expansion}{Listen}
 An vielen Stellen werden Listen verwendet, Trenner in literalen
 Listen ist „:“, es können aber auch Listen aus Textfiles, DBM-Files und
 Directories erstellt werden:
-\begin{itemize}
+\begin{description}
 \item Literale Liste: \verb=example.com : foo.bar : example.org=,
 	\verb=<; 2001:db8::10 ; 2001:db8::12=
 \item Liste aus Datei: \verb=lsearch;/etc/mailnames=,
-	\verb=dbm:/etc/mailnames=
+	\verb=dbm;/etc/mailnames=
 \item Liste aus Verzeichnisinhalt: \verb=dsearch;/etc/vmail/domains=
 \end{itemize}
 \end{frame}
@@ -253,7 +295,7 @@
 %\item Eingehende SMTP-Verbindungen (und in Grenzen auch
 %	nicht-SMTP)-Verbindungen müssen ACL überwinden.
 %\item Für jede Phase der SMTP-Kommunikation gibt es einen
-%ACL-Einstiegspunkt, z.B.:\scriptsize\begin{verbatim}
+%ACL-Einstiegspunkt, z.B.:\begin{verbatim}
 %	acl_smtp_connect = <name of connect acl>
 %	acl_smtp_rcpt = <name of recipient acl>
 %	acl_smtp_data = <name of recipient acl>