annotate thesis/tex/4-MasqmailsFuture.tex @ 133:653ff21b89be

the last commit had a bad message better is: tagged person names new content for MTA comparison reworked some more content
author meillo@marmaro.de
date Wed, 10 Dec 2008 16:56:37 +0100
parents a83a29e10b10
children c60b164bfd3c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
de590ff06051 changes suggested by schaeffter
meillo@marmaro.de
parents: 99
diff changeset
1 \chapter{\masqmail's present and future}
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
2
132
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
3 \section{Existing features}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
4 This overview regards \masqmail\ version 0.2.21, the state this document starts off.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
5
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
6 \masqmail\ is an \MTA, therefor it accepts mail on the command line and via \SMTP. Mail queueing and alias expansion is supported. \masqmail\ is able to deliver mail to local mailboxes (in \name{mbox} or \name{maildir} format) or pass it to a \name{mail delivery agent} (like \name{procmail}). Mail destinated to remote locations is sent via \SMTP. Outgoing \SMTP\ connections feature \name{SMTP-Auth} and \name{SMTP-after-POP} authentication, but incoming \SMTP\ does not.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
7
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
8 As \masqmail\ is focused on non-permanent Internet connections, online state can be queried by three methods: reading from a file, reading the output of a command, or by asking an \name{mserver}. Each method may return a string indicating one of the available routes being online, or returning nothing to indicate offline state.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
9
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
10 Delivery to recipients on the local host or in local nets is done at once; delivery to recipients on the Internet is only done when being online, and queued otherwise. Each online route may have a different mail server to which mail is relayed. Return address headers are modified appropriate if wished.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
11
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
12 Additional to the \mta\ job, \masqmail\ also offers mail retrieval services with being a \NAME{POP3} client. Thus it can fetch mail from remote locations, dependent on the active online route.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
13
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
14
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
15
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
16 The \masqmail\ executable can be called under various names for \name{sendmail-compatibility} reasons. This is commonly organized by creating symbolic links with with different names to the \masqmail\ executable. These are \path{/usr/lib/sendmail} and \path{/usr/sbin/sendmail} because many programs expect a \mta\ to be located there. Further more \sendmail\ provides shortcuts by calling it with a different name instead of supplying command line arguments. The best known of it is \path{mailq}, which is equivilent to calling the \MTA\ with the argument \verb+-bq+. \masqmail\ reacts to the names \path{mailq}, \path{smtpd}, \path{mailrm}, \path{runq}, \path{rmail}, and \path{in.smtpd}. The last four are an addition to \sendmail. Not implemented is the name \path{newaliases} because it is not relevant to \masqmail. To provide the command nonetheless, one may write a shell script located at \path{/usr/bin/newaliases}, that simply invokes \verb+masqmail -bi+.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
17
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
18 %masqmail: mailq, mailrm, runq, rmail, smtpd/in.smtpd
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
19 %sendmail: hoststat, mailq, newaliases, purgestat, smtpd
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
20
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
21 \masqmail\ is written in the \NAME{C} programming language. The program, as of version 0.2.21, consists of 34 source code and eight header files, containing about 9,000 lines of code\footnote{Measured with \name{sloccount} by David A.\ Wheeler.}. Additionally, it includes a \name{base64} implementation (about 300 lines) and \name{md5} code (about 150 lines). For systems that do not provide \name{libident}, this library is distributed as well (circa 600 lines); an available shared library however has higher precedence in linking.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
22
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
23 The only mandatory dependency is \name{glib}---a cross-platform software utility library, originated in the \NAME{GTK+} project. It provides safer replacements for many standard library functions. (The unsafe \verb+sprintf()+ is one example.) Also it offers handy data containers, easy-to-use implementations of data structures, and much more.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
24
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
25 With \masqmail\ comes the small tool \path{mservdetect}; it helps setting up a configuration that uses the \name{mserver} system to detect the online state. Two other binaries get compiled for testing purposes: \path{readtest} and \path{smtpsend}. All three programms use \masqmail\ source code; they only add a file with a \verb+main()+ function each.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
26
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
27 \masqmail\ does not provide an interface for modules with additional functionality. There exists no add-on or module system. But the code is separated by function to the various source files, and some functional parts can be included or excluded by defining symbols. This means adding some argument (like \verb+--enable-maildir+) to the \verb+configure+ call. Thus the concerning code gets not removed by the preprocessor.
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
28
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
29
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
30
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
31
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
32
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
33 \section{Discussion/Ideas}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
34
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
35
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
36 << plans to get masqmail more popular again (if that is the goal) >> %FIXME
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
37
132
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
38
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
39 \subsection{Architecture}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
40
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
41 << architecture diagram >>
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
42
129
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
43 (ssl) -> msg-in (local or remote protocol handlers) -> spam-filter (and more) -> queue -> msg-out (local-delivery by MDA, or remote-protocol-handlers) -> (ssl)
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
44
132
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
45 A design from scratch?
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
46
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
47 << what would be needed (effort) >> %FIXME
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
48
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
49 << would one create it at all? >> %FIXME
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
50
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
51 << should it be done? >> %FIXME
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
52
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
53
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
54
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
55 \subsection{local mail delivery}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
56 But for example delivery of mail to local users is \emph{not} what \mta{}s should care about, although most \MTA\ are able to deliver mail, and many do. (\name{mail delivery agents}, like \name{procmail} and \name{maildrop}, are the right programs for this job.)
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
57
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
58
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
59
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
60 \subsection{various protocols}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
61 protocols like \NAME{SMTP} and \NAME{UUCP}, between which mail is transferred.\footnote{\sendmail{}'s initial purpose was moving mail between \NAME{UUCP}, \NAME{SMTP}, and \name{Berknet}.}
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
62
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
63
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
64
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
65
a83a29e10b10 new books
meillo@marmaro.de
parents: 129
diff changeset
66
129
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
67
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
68 http://fanf.livejournal.com/50917.html %how not to design an mta - the sendmail command
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
69 http://fanf.livejournal.com/51349.html %how not to design an mta - partitioning for security
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
70 http://fanf.livejournal.com/61132.html %how not to design an mta - local delivery
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
71 http://fanf.livejournal.com/64941.html %how not to design an mta - spool file format
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
72 http://fanf.livejournal.com/65203.html %how not to design an mta - spool file logistics
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
73 http://fanf.livejournal.com/65911.html %how not to design an mta - more about log-structured MTA queues
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
74 http://fanf.livejournal.com/67297.html %how not to design an mta - more log-structured MTA queues
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
75 http://fanf.livejournal.com/70432.html %how not to design an mta - address verification
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
76 http://fanf.livejournal.com/72258.html %how not to design an mta - content scanning
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
77
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
78
5a122d28f1ca moved some comment lines
meillo@marmaro.de
parents: 117
diff changeset
79
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
80 << concrete decisions based on results of the last 2 chapters >> %FIXME
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
81
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
82
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
83
109
de590ff06051 changes suggested by schaeffter
meillo@marmaro.de
parents: 99
diff changeset
84
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
85
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
86
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
87 \section{Directions to go}
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
88
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
89 \subsection{\masqmail\ in five years}
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
90 \label{sec:masqmail-in-5-years}
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
91 Now how could \masqmail\ be like in, say, five years?
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
92
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
93 << requirements >> %FIXME
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
94
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
95 << which parts to do >> %FIXME
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
96
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
97 << how to make masqmail future-safe >> %FIXME
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
98
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
99 << how to advertise masqmail >> %FIXME
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
100
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
101 << difference for free software >> %FIXME
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
102
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
103 << why is it worth to revive masqmail? >> %FIXME
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
104
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
105
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
106
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
107
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
108
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
109
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
110 \section{Work to do}
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
111
99
d24fdd3d5990 added lots of comments and annotations about what to do
meillo@marmaro.de
parents: 93
diff changeset
112 << which parts to take out and do within the thesis >> %FIXME
93
a6f8a93abd64 new chapter 4 (split ch5); added lots of annotations
meillo@marmaro.de
parents:
diff changeset
113
133
653ff21b89be the last commit had a bad message better is:
meillo@marmaro.de
parents: 132
diff changeset
114