docs/diploma

view thesis/tex/5-Improvements.tex @ 232:1afdb3f85e69

reworked features and parts of functional requirements
author meillo@marmaro.de
date Sat, 10 Jan 2009 00:29:21 +0100
parents 711f0d3f5dfd
children 5cfea0d05e7f
line source
1 \chapter{Improvements}
3 << what to really implement within the thesis >>
9 \section{Implementation}
15 \subsection{Authentication for SMTP-in}
17 Several ways to restrict access are available. The most simple one is restrictiction by the \NAME{IP} address. No extra complexity is added this way, but static \NAME{IP} addresses are mandatory. This kind of restriction may be enabled using the operating system's \path{hosts.allow} and \path{hosts.deny} files. To allow only connections to port 25 from localhost or the local network \texttt{192.168.100.0/24} insert the line ``\texttt{25: ALL}'' into \path{hosts.deny} and ``\texttt{25: 127.0.0.1, 192.168.100.}'' into \path{hosts.allow}.
19 If static access restriction is not possible, for example if mail from locations with changing \NAME{IP} addresses wants to be accepted, some kind of authentication mechanism is required. Three common kinds exist:
20 \begin{enumerate}
21 \item \SMTP-after-\NAME{POP}: uses authenication on the \NAME{POP} protocol to permit incoming \SMTP\ connections for a limited time afterwards.
22 \item \SMTP authentication: is an extension to \SMTP. Authentication can be requested before mail is accepted.
23 \item Certificates: confirm the identity of someone.
24 \end{enumerate}
25 The first mechanism requires a \NAME{POP} (or \NAME{IMAP}) server running on the same host (or a trusted one), to enable the \SMTP\ server to use the login dates on the \NAME{POP} server. This is a common practice used by mail service providers, but is not adequate for the environments \masqmail\ is designed for.
27 Certificate based authentication, like provided by \NAME{TLS}, suffers from the overhead of certificate management. But \NAME{TLS} provides encryption too, so is useful anyway.
29 \SMTP\ authentication (also refered to as \NAME{SMTP-AUTH}) suppoert is easiest received by using a \name{Simple Authentication and Security Layer} implementation. \person{Dent} sees in \NAME{SASL} the best solution for authenticating dynamic users:
30 \begin{quote}
31 %None of these add-ons is an ideal solution. They require additional code compiled into your existing daemons that may then require special write accesss to system files. They also require additional work for busy system administrators. If you cannot use any of the nonauthenticating alternatives mentioned earlier, or your business requirements demand that all of your users' mail pass through your system no matter where they are on the Internet, SASL is probably the solution that offers the most reliable and scalable method to authenticate users.
32 None of these [authentication methods] is an ideal solution. They require additional code compiled into your existing daemons that may then require special write accesss to system files. They also require additional work for busy system administrators. If you cannot use any of the nonauthenticating alternatives mentioned earlier, or your business requirements demand that all of your users' mail pass through your system no matter where they are on the Internet, \NAME{SASL} is probably the solution that offers the most reliable and scalable method to authenticate users.
33 \hfill\cite[page 44]{dent04}
34 \end{quote}
36 %either by
37 %- network/ip address
38 % easiest: restricting by static IP addresses (Access control via hosts.allow/hosts.deny)
39 %or
40 %- some kind of auth (for dynamic remote hosts)
41 % adds complexity
42 % - SASL
43 % - POP/IMAP: pop-before-smtp, DRAC, WHOSON
44 % - TLS (certificates)
52 \subsection{Encryption}
54 Electronic mail is very weak to sniffing attacks, because all data transfer is unencrypted. This concerns the message's content, as well as the email addresses in header and envelope, but also authentication dialogs that may transfer plain text passwords (\NAME{PLAIN} and \NAME{LOGIN} are examples). Adding encryption is therefor wanted.
56 The common way to encrypt \SMTP\ dialogs is using \name{Transport Layer Security} (short: \TLS, successor of \NAME{SSL}). \TLS\ encrypts the datagrams of the \name{transport layer}. This means it works below the application protocols and can be used by any of them\citeweb{wikipedia:tls}.
58 \TLS\ allows to create secure tunnels through which arbitrary programs can communicate. Hence one can add secure communication afterwards to programs without changing them. \name{OpenSSL} for example---a free implementation---allows traffic to be piped into a command; a secure tunnel is created and the traffic is forwarded through it. Or a secure tunnel can be set up between a local and a remote port; this tunnel can then be used by any application.
60 The \NAME{POP} protocol, for example, is good suited for such tunneling, but \SMTP\ is is not generally. Outgoing \SMTP\ client connections can be tunneled without problem---\masqmail\ already provides a configure option called \texttt{wrapper} to do so. Tunneling incomming connections to a server leads to problems with \SMTP. As data comes encrypted through the tunnel to the receiving host and gets then decrypted and forwarded on local to the port the application listens on. From the \MTA's view, this makes all connections appear to come from localhost, unfortunately. Figure \ref{fig:stunnel} depicts the data flow.
62 For incoming connections, \NAME{STARTTLS}---defined in \RFC2487---is what \mta{}s implement.
64 \masqmail\ is already able to encrypt outgoing connections, but encryption of incoming connections, using \NAME{STARTTLS} should be implemented. This only affects the \SMTP\ server module.
66 %TLS/SSL prevents attackers to listen on the cable
67 %but it does not prevent man-in-the-middle attacks
68 %signed certificates help here
69 % or PGP encryption
72 %do not use stunnel wit SMTP:
73 %because all incoming mail would be from 127.0.0.1 !!
74 %use STARTTLS instead
76 %postfix: main.cf
77 %\begin{verbatim}
78 % smtpd_use_tls = yes
79 % smtpd_tls_received_header = no (does not log in received headers)
80 %
81 % smtpd_tls_key_file = /etc/postfix/key.pem
82 % smtpd_tls_cert_file = /etc/postfix/cert.pem
83 % smtpd_tls_CA_file = /etc/postfix/CAcert.pem
84 %
85 % smtp_use_tls = yes (use TLS for sending)
86 % smtp_tls_key_file = /etc/postfix/key.pem
87 % smtp_tls_cert_file = /etc/postfix/cert.pem
88 % smtp_tls_CA_file = /etc/postfix/CAcert.pem
89 %\end{verbatim}
94 \subsection{Various bug fixes}
101 \section{Test and validation}
104 \section{Documentation}
107 \section{Release}
109 Upstream and Debian