--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/acl.conf Wed May 07 19:11:06 2014 +0200
@@ -0,0 +1,39 @@
+begin acl
+
+ acl_check_connect:
+
+ deny ratelimit = 10/1m
+ log_message = $sender_rate/$sender_rate_period > $sender_rate_limit
+
+ accept
+
+ 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 = sorry, $malware_name
+ malware = *
+
+ deny message = sorry, filtered
+ spam = nobody
+ condition = ${if >={$spam_score_int}{60}}
+
+ accept
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/global.conf Wed May 07 19:11:06 2014 +0200
@@ -0,0 +1,6 @@
+ALIASES = /etc/aliases
+domainlist local_domains = localhost : @[]
+
+acl_smtp_connect = acl_check_connect
+acl_smtp_rcpt = acl_check_rcpt
+acl_smtp_data = acl_check_data
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mainlog.tt Wed May 07 19:11:06 2014 +0200
@@ -0,0 +1,23 @@
+14:13:04 1Wi0ie-0005e8-Q7 <= wwwrun@emarsys.net H=mx.net.schlittermann.de [84.19.194.2] I=[84.19.194.3]:587
+ P=esmtps X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
+ S=51433 id=0.1.B1.FAE.1CF69EDB12C0806.0@pmta40192.emarsys.net
+14:13:05 1Wi0ie-0005e8-Q7 => raabe@example.com
+ F=<wwwrun@emarsys.net>
+ R=domain_forward T=smtp
+ H=mail.example.com [71.81.118.92] X=TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128
+ C="250 OK id=1Wi0if-0008Kc-Et"
+ QT=1s DT=1s
+14:13:05 1Wi0ia-0005dq-Ha => cwinkler@example.org F=<agent@ukrs939471.pur3.net>
+ R=domain_forward T=smtp
+ H=diw.vpn.schlittermann.de [10.10.10.18] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
+ C="250 OK id=1Wi0ig-00035h-Iq" QT=7s DT=7s
+14:13:05 1Wi0ie-0005e8-Q7 Completed QT=1s
+14:13:07 1Wi0ia-0005dq-Ha Completed QT=7s
+14:13:07 1Wi0ih-0005ew-Lw <= agent@ukrs394971.pur3.net H=mx.net.schlittermann.de [84.19.194.2] I=[84.19.194.3]:587
+ P=esmtps X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
+ S=17836 id=0.0.C9.E5D.1CF69EDAA039062.0@mta20135.pur3.net
+14:13:13 1Wi0ih-0005ew-Lw => info@diw-bau.de F=<agent@ukrs394971.pur3.net>
+ R=domain_forward T=smtp
+ H=diw.vpn.schlittermann.de [10.10.10.18] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
+ C="250 OK id=1Wi0in-00035n-Ht" QT=6s DT=6s
+14:13:13 1Wi0ih-0005ew-Lw Completed QT=6s
--- a/minimal.conf Wed May 07 11:54:17 2014 +0200
+++ b/minimal.conf Wed May 07 19:11:06 2014 +0200
@@ -1,6 +1,3 @@
-ALIASES = /etc/aliases
-domainlist local_domains = localhost : @[]
-
begin routers
remote:
--- a/mk2014.tex Wed May 07 11:54:17 2014 +0200
+++ b/mk2014.tex Wed May 07 19:11:06 2014 +0200
@@ -15,9 +15,6 @@
\begin{document}
-% sicheres logging
-% einmal angenommen - verantwortugn
-
\begin{frame}
\titlepage
\end{frame}
@@ -28,13 +25,11 @@
\section{Positionierung}
-\begin{frame}[<+->][fragile]{Wie positioniert Exim sich gegenüber anderen MTA}
+\begin{frame}[<+->][fragile]{Exim}{Entwicklung}
\begin{itemize}
- \item seit 1995 Phil Hazel, seit ca. 2007 ca. 5…8 Aktive
- \item Lego vs. Playmobil (P. Heinlein)
+ \item \textbf{Ex}perimental \textbf{I}nternet \textbf{M}ailer
+ \item seit 1995 Phil Hazel, seit ca. 2007 ca. 5…8 Aktive Entwickler
\item Klassisch Unix: Traditionelle Konfiguration und traditionelles Prozess-Management
- \item Flexibilität
- \item Sicherheit (sicher und zuverlässig)
\item mehr als 90\% der Nachrichten werden sofort weitergeleitet bzw. ausgeliefert
\begin{verbatim}
Time spent on the queue: messages with at least one remote delivery
@@ -47,21 +42,42 @@
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}
\end{frame}
+\begin{frame}[<+->][fragile]{Exim}{Position}
+Ja, das ist Religionskrieg :-)
+\pause
+\begin{itemize}
+ \item Lego vs. Playmobil (P. Heinlein)
+ \item Anpassbarkeit
+ \begin{itemize}
+ \item keine Klassifizierung von Adressen
+ \item keine \verb=mydestinations=
+ \item Router sind Funktionsblöcke
+ \item Intensiver Gebrauch von Expansionsmechanismen zur Laufzeit
+ \end{itemize}
+ \item Stabilität
+ \item Sicherheit
+ \item Definierte Dokumentation (Referenz-Handbuch mit Beispielen)
+ \item Hervorragendes Debugging
+\end{itemize}
+\pause
+Nachteile? Klar - das Abarbeiten der Queue ist nicht sonderlich
+effizient gelöst.
+\end{frame}
+
\section{Anatomie}
-\begin{frame}{Arbeitsweise und Anatomie}{Überblick}
+\begin{frame}[<+->]{Arbeitsweise und Anatomie}{Überblick}
\begin{itemize}
-\item Binary ist ein ca 1MB großer Universalklumpen
+\item Binary ist ein ca 1\,MB großer Universalklumpen
\item Einfache Struktur der operativen Daten - Verzeichnis, 2 Files je
Message, Spool/Message-Log in 16 Verzeichnissen
\item Dokument
\item Keine aufwändigen IPC - nichts, außer fork(2) oder exec(3)
\item Wenig gemeinsam genutzte Daten - nur „Hint“-Files (z.B. retry info)
+\item Ohoh - setuid 0!
\end{itemize}
\end{frame}
@@ -69,8 +85,9 @@
\includegraphics[width=0.8\textwidth,angle=270]{procs}
\end{frame}
-\begin{frame}{Arbeitsweise und Anatomie}{IN, OUT, Retry}
-Es gibt im wesentlichen 3 Phasen der Verarbeitung
+\begin{frame}[<+->]{Arbeitsweise und Anatomie}{IN, OUT, Retry}
+Es gibt im wesentlichen 3 Phasen der Verarbeitung.
+\pause
\begin{enumerate}
\item Empfang
\begin{itemize}
@@ -91,7 +108,7 @@
\subsection{File}
-\begin{frame}[fragile]{Konfiguration}{File}
+\begin{frame}[<+->][fragile]{Konfiguration}{File}
\begin{itemize}
\item Debian geht einen sonder(baren) Weg
\item \verb=/dev/null= ist eine gültige Konfiguration
@@ -103,10 +120,11 @@
\subsection{Struktur}
-\begin{frame}[fragile]{Konfiguration}{Struktur}
+\begin{frame}[<+->][fragile]{Konfiguration}{Struktur}
Strukturiertes Konfigurationsfile mit mehreren Abschnitten, teilweise
miteinander verlinkt (Router referenziert Tranports, globaler Teil
referenziert ACL)
+\pause
\begin{description}
\item[global] Etwa 240 allgemeine Direktiven
\item[acl] Access Control Lists für SMTP
@@ -119,7 +137,6 @@
\end{description}
\end{frame}
-
\subsection{Syntax}
\begin{frame}[fragile]{Konfiguration}{Syntax}
@@ -130,6 +147,7 @@
BASE = dc=example,dc=com
\end{verbatim}
\end{exampleblock}
+\pause
\begin{exampleblock}{Bedingte Konfiguration}
\begin{verbatim}
@@ -140,6 +158,7 @@
.endif
\end{verbatim}
\end{exampleblock}
+\pause
\begin{exampleblock}{Versteckte Optionen}
Wegen \verb=exim -bP …=:
@@ -197,18 +216,22 @@
Etwa die Hälfte der Konfigurationsdirektiven erlaubt
Variablensubstitution (Expansion) zur Laufzeit.
Testen kann man diese sehr einfach:
-\begin{verbatim}
- $ exim -be '$primary_hostname'
+\begin{alltt}
+ $ 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'
+ \pause
+ $ exim -be -oMi 1.1.1.1 -oMa 2.2.2.2 '$sender\_host\_address $received\_ip\_address'
2.2.2.2 1.1.1.1
- $ exim -be '${lookup passwd{nobody}{${extract{5}{:}{$value}}}}'
+ \pause
+ $ exim -be '$\{lookup passwd\{nobody\}\{$\{extract\{5\}\{:\}\{$value\}\}\}\}'
/nonexistent
- $ exim -be '${lookup{root}lsearch{/etc/aliases}}'
+ \pause
+ $ exim -be '$\{lookup\{root\}lsearch\{/etc/aliases\}\}'
heiko
- $ exim -be '${lookup dnsdb{mx=heise.de}}'
+ \pause
+ $ exim -be '$\{lookup dnsdb\{mx=heise.de\}\}'
10 relay.heise.de
-\end{verbatim}
+\end{alltt}
\end{frame}
\begin{frame}[fragile]{Expansion}{Übersicht}
@@ -327,6 +350,28 @@
\end{exampleblock}
\end{frame}
+\begin{frame}[fragile]{String-Expansion}{Wenn nichts mehr geht}
+Als letzter Hilfe gibt es die Möglichkeit, Sockets auszulesen, externe
+Kommandos aufzurufen oder Perl-Funktionen zu nutzen.
+\begin{exampleblock}{Sockets}
+\begin{verbatim}
+ condition = ${readsocket{<socket>}{<request>}}
+\end{verbatim}
+\end{exampleblock}
+\begin{exampleblock}{Kommandos}
+\begin{verbatim}
+ domains = ${run{<command>[<arg>]…}}
+\end{verbatim}
+\end{exampleblock}
+\begin{exampleblock}{Perl}
+\begin{verbatim}
+ perl_startup = do '/etc/exim/foo.pl'
+ …
+ domains = ${perl{<sub>}[{<arg>}…]}
+\end{verbatim}
+\end{exampleblock}
+\end{frame}
+
%\begin{frame}{ACL (SMTP-Phasen, Address-Überprüfung, Rate-Limiting, Content-Scan)}
%\begin{itemize}
@@ -350,9 +395,11 @@
%
\section{Routing}
+\subsection{Ablauf}
\begin{frame}[fragile]{Routing}{Allgemein}
\begin{itemize}
+\item Adresse wird an eine Kette von Routern übergeben (Reihenfolge!)
\item Router entscheiden über den Fortgang der Bearbeitung
\item Vorbedingungen entscheiden, ob der Router „befragt“ wird
\item Router liefern für eine gegebene Adresse
@@ -365,11 +412,31 @@
\item[error] Panik
\end{description}
\item werden auch von ACL genutzt (Adressüberpüfung)
+\item Router: dnslookup, manualroute, queryprogram, redirect, accept
\item einfache Tests sind möglich mit \verb=exim -bt= (Adresstest -
Routing) bzw. \verb=exim -bv= (Adressüberprüfung - ACL)
\end{itemize}
\end{frame}
+\subsection{Konfiguration}
+
+\begin{frame}[fragile]{Routing}{Konfiguration}
+Für jeden Router-Block
+\begin{itemize}
+\item Treiber
+\item Vorbedingungen (\verb=check_local_user=, \verb=domains=, \verb=condition=, …)
+\item Generische Optionen (\verb=caseful_local_part=, \verb=local_part_prefix=, …)
+\end{itemize}
+%\scriptsize
+\verbatiminput{routers.conf}
+\end{frame}
+
+\begin{frame}{Routing}{Schema}
+\includegraphics[width=0.8\textwidth,angle=270]{routing}
+\end{frame}
+
+\subsection{Test}
+
\begin{frame}[fragile]{Routing}{Test}
\begin{verbatim}
$ exim -bt hans@example.com
@@ -391,14 +458,6 @@
\end{verbatim}
\end{frame}
-\begin{frame}[fragile]{Routing}{Konfiguration}
-\verbatiminput{routers.conf}
-\end{frame}
-
-\begin{frame}{Routing}{Schema}
-\includegraphics[width=0.8\textwidth,angle=270]{routing}
-\end{frame}
-
\begin{frame}[fragile]{Routing}{Remote}
\scriptsize
\begin{alltt}
@@ -420,19 +479,175 @@
\end{alltt}
\end{frame}
-%
-%\begin{frame}{Transports (allg. Optionen und die einzelnen Transports smtp, appendfile, …)}
-%\end{frame}
-%
-%\begin{frame}{Logging (mainlog, rejectlog, paniclog)}
-%\end{frame}
-%
-%\begin{frame}{Test und Betrieb}
-%\end{frame}
-%
-%\begin{frame}{Sicherheitsbetrachtungen (Funktionssicherheit (Verlust von Mails), Einbruchssicherheit, Schreibrechte, Root-Rechte)}
-%\end{frame}
-%
+\section{Transport}
+
+\begin{frame}[fragile]{Transports}
+Die Router referenzieren ggf. einen „transport“.
+\begin{itemize}
+\item Reihenfolge egal
+\item Generische Optionen: \verb=headers_remove=,
+\verb=envelope_to_add=, \verb=transport_filter=, \verb=user=
+\item Treiber hat weitere Optionen
+\item Transports: appendfile, autoreply, lmtp, pipe, smtp
+\item Default TLS, wenn STARTTLS geboten wird
+\end{itemize}
+\begin{alltt}
+\input{transports.conf}
+\end{alltt}
+\end{frame}
+
+\section{Access Control Lists}
+\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.
+\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[defer] temporärer Fehler
+\end{description}
+\pause
+Verweis auf Blöcke im ACL-Abschnitt der Konfiguration
+\begin{verbatim}
+ acl_smtp_connect = acl_check_connect
+ acl_smtp_rcpt = acl_check_rcpt
+ acl_smtp_data = acl_check_data
+\end{verbatim}
+\end{frame}
+
+\begin{frame}[fragile]{Access Control Lists}{Konfiguration}
+\tiny
+\verbatiminput{acl.conf}
+\end{frame}
+
+\subsection{Features}
+
+\begin{frame}[<+->][fragile]{Access Control Lists}{Features}
+\begin{itemize}
+ \item Zugriff auf alles, was an Information verfügbar ist
+ \item Ratelimit mit beliebigen Keys
+ \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 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}
+
+\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}
+
+\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}
+
+\section{Ausblick}
+
+\begin{frame}[<+->]{Was fehlt}
+Noch einige Dinge vergessen?
+\begin{itemize}
+ \item TLS
+ \item Header-Rewriting
+ \item Retry-Rules
+ \item SMTP-Authentication
+ \item Cut-Through-Routing, PRDR, DANE, Enhanced Status Codes
+\end{itemize}
+\end{frame}
+
+\begin{frame}{DANKE}
+DANKE
+\end{frame}
+
%\begin{frame}{Möglichkeiten zur Leistungsverbesserung (Warteschlange, Parallelisierung, Blockierung, Ratelimit)}
%\end{frame}
%
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/msglog.tt Wed May 07 19:11:06 2014 +0200
@@ -0,0 +1,8 @@
+$ exim -Mvl 1Whwqz-00019E-Hg
+2014-05-07 10:05:25 Received from a.bohl@example.com H=mout.foobar.com
+ (wotan.wgnd.lokal) [12.8.252.26]
+ I=[84.19.194.3]:587 P=esmtps X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
+ S=3995 id=5369E8CA.1030704@foobar.com T="Monte Timaro"
+2014-05-07 10:06:28 gmail.de [173.194.70.18] Connection timed out
+…
+2014-05-07 10:09:38 hans@gmail.de R=dnslookup T=smtp defer (110): Connection timed out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rejectlog.tt Wed May 07 19:11:06 2014 +0200
@@ -0,0 +1,26 @@
+06:30:13 1WhtSh-0004KX-Ta H=(ete4g.com) [174.36.30.154] I=[84.19.194.2]:25
+ F=<ete39@ete4g.com> rejected after DATA: spam 9
+Envelope-from: <ete39@ete4g.com>
+Envelope-to: <info@example-dresden.de>
+P Received: from [174.36.30.154] (helo=ete4g.com)
+ by mx.net.schlittermann.de with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256)
+ (Exim 4.80)
+ (envelope-from <ete39@ete4g.com>)
+ id 1WhtSh-0004KX-Ta
+ for info@example-dresden.de; Wed, 07 May 2014 06:28:08 +0200
+P Received: from [58.61.157.29] (port=55782 helo=WIN-5JAQ6OH8L0P)
+ by spoon.arvixe.com with esmtpa (Exim 4.80.1)
+ (envelope-from <ete39@ete4g.com>)
+ id 1WhtSa-0002vh-7B
+ for info@example-dresden.de; Tue, 06 May 2014 21:28:01 -0700
+ Disposition-Notification-To: winni@ttm-group.com.cn
+ MIME-Version: 1.0
+F From: winni <winni@ttm-group.com.cn>
+S Sender: ete39@ete4g.com
+T To: info@example-dresden.de
+R Reply-To: winni@ttm-group.com.cn
+ Date: 7 May 2014 12:27:48 +0800
+ Subject: Fw: cooperation for plastic and Metal parts
+ Content-Type: text/html; charset=utf-8
+ Content-Transfer-Encoding: base64
+
--- a/routers.conf Wed May 07 11:54:17 2014 +0200
+++ b/routers.conf Wed May 07 19:11:06 2014 +0200
@@ -1,5 +1,3 @@
-ALIASES = /etc/aliases
-domainlist local_domains = localhost : @[]
begin routers
--- a/routing.dia Wed May 07 11:54:17 2014 +0200
+++ b/routing.dia Wed May 07 19:11:06 2014 +0200
@@ -645,7 +645,7 @@
<dia:point val="6.32366,9"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="6.01086,9;6.50923,10.2831"/>
+ <dia:rectangle val="6.01087,9;6.50923,10.2831"/>
</dia:attribute>
<dia:attribute name="conn_endpoints">
<dia:point val="6.32366,9"/>
@@ -1130,5 +1130,137 @@
<dia:connection handle="0" to="O3" connection="13"/>
</dia:connections>
</dia:object>
+ <dia:object type="Standard - Text" version="1" id="O28">
+ <dia:attribute name="obj_pos">
+ <dia:point val="15.145,9.84"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="14.1275,9.51125;16.1625,10.1687"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#decline#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="15.145,10.0362"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O29">
+ <dia:attribute name="obj_pos">
+ <dia:point val="14,4.82269"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.7915,4.82269;14.2913,6.39358"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="14,4.82269"/>
+ <dia:point val="14.045,6.39"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="16"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="13"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O30">
+ <dia:attribute name="obj_pos">
+ <dia:point val="15.395,5.59"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="14.3611,5.23659;16.4125,5.94341"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#decline#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="15.395,5.77803"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O31">
+ <dia:attribute name="obj_pos">
+ <dia:point val="12.295,6.24"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="11.1225,5.91125;13.4675,6.56875"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#no more#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="12.295,6.43625"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
</dia:layer>
</dia:diagram>
--- a/transports.conf Wed May 07 11:54:17 2014 +0200
+++ b/transports.conf Wed May 07 19:11:06 2014 +0200
@@ -1,8 +1,8 @@
begin transports
remote_smtp:
- driver = smtp
+ driver = smtp
local_mbox:
- driver = appendfile
- file = /var/mail/$local_part
+ driver = appendfile
+ file = /var/mail/$local_part