Mercurial > docs > diploma
comparison thesis/tex/1-Introduction.tex @ 306:7f33aa4eb791
added some last missing texts in ch01
author | meillo@marmaro.de |
---|---|
date | Tue, 20 Jan 2009 19:00:32 +0100 |
parents | 5e788fee62a8 |
children | f3a86ce788ec |
comparison
equal
deleted
inserted
replaced
305:eec6edda98e6 | 306:7f33aa4eb791 |
---|---|
1 \chapter{Introduction} | 1 \chapter{Introduction} |
2 \label{chap:introduction} | 2 \label{chap:introduction} |
3 | 3 |
4 << say what you want to say >> | 4 This chapter first introduces some basic email concepts that are essential to understand the rest of the thesis. Then \masqmail---the program of interest---is presented. History, typical usage, and the function it provides are described. After an explaination of \masqmail's worth, its problems are pointed out. These problems which are to solve are the topics that are covered throughout this thesis. |
5 | |
6 << the overall goal of the document >> | |
7 | |
8 | 5 |
9 | 6 |
10 | 7 |
11 | 8 |
12 | 9 |
13 \section{Email prerequisites} | 10 \section{Email prerequisites} |
14 | 11 |
15 email and everything is defined in RFCs | 12 Electronic mail is a service on the Internet and thus, like other Internet services, defined and standardized by \RFC{}s under management of the \name{Internet Engeneering Task Force} (short: \NAME{IETF}). \RFC{}s are highly technical documents and it is not expected that the readers of this thesis are familiar with them. |
13 | |
14 This section gives an introduction into the basic internals of the email system in a low-technical language. It is intended to make the reader familiar with the essential concepts of email. They are assumed to be known in the rest of the thesis. | |
16 | 15 |
17 | 16 |
18 \subsubsection{Mail agents} | 17 \subsubsection{Mail agents} |
19 | 18 |
20 This thesis will frequently use the three terms: \MTA, \NAME{MUA}, and \NAME{MDA}. The name the three different kinds of software that are the nodes of the email infrastructure. Here they are explained with references to the snail mail system which is known from everyday's life. Figure \ref{fig:mail-agents} shows the relation between those three mail agents and the way an email message takes trough the system. | 19 This thesis will frequently use the three terms: \MTA, \NAME{MUA}, and \NAME{MDA}. The name the three different kinds of software that are the nodes of the email infrastructure. Here they are explained with references to the snail mail system which is known from everyday's life. Figure \ref{fig:mail-agents} shows the relation between those three mail agents and the way an email message takes trough the system. |
57 | 56 |
58 | 57 |
59 | 58 |
60 \subsubsection{Mail messages} | 59 \subsubsection{Mail messages} |
61 | 60 |
62 Mail messages consist of two parts with defined format. This format is specified in \RFC822, and the successors \RFC2822 and \RFC5322. | 61 Mail messages consist of text in a specific format. This format is specified in \RFC822, and the successors \RFC2822 and \RFC5322. |
63 | 62 |
64 The two parts of a message are the \name{header} and the \name{body}. The header of an email message is similar to the header of a (formal) letter. It spans the first lines of the message up to the first empty line. The header consists of several lines, called \name{header lines} or simply \name{headers}. They specify the sender, the address(es) of the recipient(s), the date, and possibly further information. Their order is irrelevant. Headers are named after the colon separated start of those lines, for example the ``\texttt{Date:}'' header. A user may write the header himself, but normally the \NAME{MUA} does this job. | 63 A message has two parts, the \name{header} and the \name{body}. The header of an email message is similar to the header of a (formal) letter. It spans the first lines of the message up to the first empty line. The header consists of several lines, called \name{header lines} or simply \name{headers}. They specify the sender, the address(es) of the recipient(s), the date, and possibly further information. Their order is irrelevant. Headers are named after the colon separated start of those lines, for example the ``\texttt{Date:}'' header. A user may write the header himself, but normally the \NAME{MUA} does this job. |
65 | 64 |
66 The body is the payload of the message. It is under full control of the user. From the view point of the \SMTP\ protocol, it must consist of only 7-bit \NAME{ASCII} text. But arbitrary content can be included by encoding it to 7-bit \NAME{ASCII}. \NAME{MIME} is the common \SMTP\ extension to handle such convertion automatically in \NAME{MUA}s. | 65 The body is the payload of the message. It is under full control of the user. From the view point of the \SMTP\ protocol, it must consist of only 7-bit \NAME{ASCII} text. But arbitrary content can be included by encoding it to 7-bit \NAME{ASCII}. \NAME{MIME} is the common \SMTP\ extension to handle such convertion automatically in \NAME{MUA}s. |
67 | 66 |
68 Following is a sample mail message with four header lines (\texttt{From:}, \texttt{To:}, \texttt{Date:}, and \texttt{Subject:}) and three lines of message body. | 67 Following is a sample mail message with four header lines (\texttt{From:}, \texttt{To:}, \texttt{Date:}, and \texttt{Subject:}) and three lines of message body. |
69 | 68 |
184 Here regarded is version 0.2.21 of \masqmail. This is the last version released by \person{Oliver Kurth}, and the basis for my thesis. | 183 Here regarded is version 0.2.21 of \masqmail. This is the last version released by \person{Oliver Kurth}, and the basis for my thesis. |
185 | 184 |
186 | 185 |
187 \subsubsection*{The source code} | 186 \subsubsection*{The source code} |
188 | 187 |
189 \masqmail\ is written in the 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 has higher precedence in linking, though. | 188 \masqmail\ is written in the 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 \citeweb{sloccount}.}. 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 has higher precedence in linking, though. |
190 | 189 |
191 The only mandatory dependency is \name{glib}---a cross-platform software utility library, originated in the \NAME{GTK+} project. It provides safe replacements for many standard library functions, especially for the string functions. It also offers handy data containers, easy-to-use implementations of data structures, and much more. | 190 The only mandatory dependency is \name{glib}---a cross-platform software utility library, originated in the \NAME{GTK+} project. It provides safe replacements for many standard library functions, especially for the string functions. It also offers handy data containers, easy-to-use implementations of data structures, and much more. |
192 | 191 |
193 Some functionality of \masqmail\ can be included or excluded at compile time by defining symbols. To enable maildir support for example, one has to add \verb_--enable-maildir_ to the configure call. Otherwise the concerning code gets removed during preprocessing. | 192 Some functionality of \masqmail\ can be included or excluded at compile time by defining symbols. To enable maildir support for example, one has to add \verb_--enable-maildir_ to the configure call. Otherwise the concerning code gets removed during preprocessing. |
194 | 193 |
211 | 210 |
212 Outgoing \SMTP\ connections feature \SMTP-\NAME{AUTH} and \SMTP-after-\NAME{POP} authentication, but incoming connections do not. Using wrappers for outgoing connections is supported. This allows encrypted communication through a gateway application like \name{openssl}. | 211 Outgoing \SMTP\ connections feature \SMTP-\NAME{AUTH} and \SMTP-after-\NAME{POP} authentication, but incoming connections do not. Using wrappers for outgoing connections is supported. This allows encrypted communication through a gateway application like \name{openssl}. |
213 | 212 |
214 Mail queuing is essential for \masqmail\ and supported of course, alias expansion is also supported. | 213 Mail queuing is essential for \masqmail\ and supported of course, alias expansion is also supported. |
215 | 214 |
216 The \masqmail\ executable can be called under various names for sendmail-compatibility reasons (see section \ref{sec:sendmail-compat}). This is organized by symbolic links with different names pointing to the \masqmail\ executable. The \sendmail\ names are \path{/usr/lib/sendmail} and \path{/usr/sbin/sendmail} because many programs expect the \mta\ to be located there. Further more \sendmail\ supports calling it with a different name instead of supplying command line arguments. The best known of this shortcuts is \path{mailq}, which is equivalent to calling it with the argument \verb+-bq+. \masqmail\ recognizes the shortcuts \path{mailq}, \path{smtpd}, \path{mailrm}, \path{runq}, \path{rmail}, and \path{in.smtpd}. The first two are inspired by \sendmail. Not implemented is the shortcut \path{newaliases} because \masqmail\ does not generate binary representations of the alias file.\footnote{A shell script named \path{newaliases}, that invokes \texttt{masqmail -bi}, can provide the command to satisfy other software needing it.} \path{hoststat} and \path{purgestat} are missing for complete sendmail-compatibility. | 215 The \masqmail\ executable can be called under various names for sendmail-compatibility reasons. As many programs expect the \MTA\ to be located at \path{/usr/lib/sendmail} or \path{/usr/sbin/sendmail}, symbolic links are pointing from there to the \masqmail\ executable. Further more does \sendmail\ supports calling it with a different name instead of supplying command line arguments. The best known of this shortcuts is \path{mailq}, which is equivalent to calling it with the argument \verb+-bq+. \masqmail\ recognizes the shortcuts \path{mailq}, \path{smtpd}, \path{mailrm}, \path{runq}, \path{rmail}, and \path{in.smtpd}. The first two are inspired by \sendmail. Not implemented is the shortcut \path{newaliases} because \masqmail\ does not generate binary representations of the alias file.\footnote{A shell script named \path{newaliases}, that invokes \texttt{masqmail -bi}, can provide the command to satisfy other software needing it.} \path{hoststat} and \path{purgestat} are missing for complete sendmail-compatibility. |
217 %masqmail: mailq, mailrm, runq, rmail, smtpd/in.smtpd | 216 %masqmail: mailq, mailrm, runq, rmail, smtpd/in.smtpd |
218 %sendmail: hoststat, mailq, newaliases, purgestat, smtpd | 217 %sendmail: hoststat, mailq, newaliases, purgestat, smtpd |
219 | 218 |
220 Additional to the \mta\ job, \masqmail\ also offers mail retrieval services by being a \NAME{POP3} client. It can fetch mail from different remote locations, dependent on the active online connection. | 219 Additional to the \mta\ job, \masqmail\ also offers mail retrieval services by being a \NAME{POP3} client. It can fetch mail from different remote locations, dependent on the active online connection. |
221 | 220 |
302 | 301 |
303 | 302 |
304 | 303 |
305 \section{Delimitation} | 304 \section{Delimitation} |
306 | 305 |
307 << limit against stuff not covered here >> | 306 This thesis is neigher a installation guide for \masqmail\ nor a bit by bit explanation of \masqmail's source code. Installation and setup guides can be found on \masqmail's homepage \citeweb{masqmail:homepage}. |
308 | 307 |
309 No installation guide for \masqmail. | 308 Also not regarded is the \NAME{POP3} functionality of \masqmail. |
310 | 309 |
311 No description of \masqmail's source code, bit by bit. | 310 |
312 | 311 |
313 The \NAME{POP3} functionality of \masqmail\ is not regareded. | |
314 | |
315 | |
316 |