# HG changeset patch # User meillo@marmaro.de # Date 1234014447 -3600 # Node ID 0d78755132b7377c5b4d0dd25915d7002fdf92cc # Parent 7d85fd0da3df379b573ee2c7fa997e6c384d9255 lots of small fixes and cleanups diff -r 7d85fd0da3df -r 0d78755132b7 thesis/bib/thesis.bib --- a/thesis/bib/thesis.bib Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/bib/thesis.bib Sat Feb 07 14:47:27 2009 +0100 @@ -499,4 +499,11 @@ - +@incollection{johnson79, + author = "Stephen~C. Johnson", + title = "\textit{YACC: Yet Another Compiler-Compiler}", + booktitle = "UNIX Programmer's Manual", + volume = "2", + year = "1979", + note = "Available on the Internet: {\small\url{http://dinosaur.compilertools.net/yacc/yacc.ps} (2009-02-07)}", +} diff -r 7d85fd0da3df -r 0d78755132b7 thesis/bib/websites.bib --- a/thesis/bib/websites.bib Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/bib/websites.bib Sat Feb 07 14:47:27 2009 +0100 @@ -341,3 +341,10 @@ howpublished = "{\small\url{http://en.wikipedia.org/w/index.php?title=HD_DVD&oldid=267253912} (2009-02-02)}", } + +@misc{ietf:homepage, + author = "Internet Engeneering Task Force, The", + title = "\textit{Homepage of the IETF}", + howpublished = "{\small\url{http://ietf.org} (2000-02-07)}", +} + diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/comm-classification.pic --- a/thesis/img/comm-classification.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/comm-classification.pic Sat Feb 07 14:47:27 2009 +0100 @@ -20,7 +20,7 @@ down row("email" "SMS", "voice mail" "video messages") -row("instant messaging" "chat", "VoIP" "video conferencing") +row("Instant Messaging" "chat", "VoIP" "video conferencing") marker_top(1st [].B1, "written") marker_top(1st [].B2, "recorded") diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/email-swot.pic --- a/thesis/img/email-swot.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/email-swot.pic Sat Feb 07 14:47:27 2009 +0100 @@ -19,8 +19,8 @@ down -row("standard" "modular" "extensible", "") -row("large data transfer" "too big for phone", "spam") +row("standard" "modular" "extensible", "\(em") +row("large data transfers" "complex networks", "spam") marker_bot(last [].B1, "" "opportunities" "of the market") marker_bot(last [].B2, "" "threats" "of the market") diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/masqmail-arch-new.pic --- a/thesis/img/masqmail-arch-new.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/masqmail-arch-new.pic Sat Feb 07 14:47:27 2009 +0100 @@ -8,9 +8,9 @@ I: [ down -I1: ellipse "sendmail" +I1: ellipse "smtpd" move 0.2 -I2: ellipse "smtpd" +I2: ellipse "sendmail" move 0.2 I3: ellipse "..." ] @@ -31,9 +31,9 @@ O: [ down -O1: ellipse "pipe" +O1: ellipse "smtp" move 0.2 -O2: ellipse "smtp" +O2: ellipse "pipe" move 0.2 O3: ellipse "..." ] diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/masqmail-typical-usage.pic --- a/thesis/img/masqmail-typical-usage.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/masqmail-typical-usage.pic Sat Feb 07 14:47:27 2009 +0100 @@ -39,7 +39,7 @@ move to last [].e -move +move 0.5 [ diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/proxy-setup.pic --- a/thesis/img/proxy-setup.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/proxy-setup.pic Sat Feb 07 14:47:27 2009 +0100 @@ -12,7 +12,7 @@ P25: box wid 0.3 ht 0.3 with .e at 0.40 "25" left -line <- externlen from P25.w "SMTP" "from extern" +line <- externlen from P25.w "SMTP" "from remote " right line -> right from P25.e "SMTP" "" @@ -25,13 +25,13 @@ M2: box "masqmail" arrow linewid*1.8 from 0.20 "SMTP" "" box wid 0.3 ht 0.3 "" -line -> externlen "SMTP" "to extern" +line -> externlen "SMTP" "to remote" arrow linewid*2/3 from 0.50 box "pipe" ht 0.16 wid 0.4 arrow right from 0.80 then down 0.2 "" "mailbox" -line <- down left from 0.75 "stdin" +line <- down left from 0.75 "" "" " stdin" box invis ht 0.3 "" "sendmail" "command" diff -r 7d85fd0da3df -r 0d78755132b7 thesis/img/stunnel.pic --- a/thesis/img/stunnel.pic Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/img/stunnel.pic Sat Feb 07 14:47:27 2009 +0100 @@ -12,7 +12,7 @@ line <- 1.0 left from P465.w "SMTP over TLS" "(encrypted)" box dashed "remote" "host" -spline -> from P465.e right 0.4 then to 0.5 then to P25.w-(0.4,0) then to P25.w "stunnel" +spline -> from P465.e right 0.4 then to 0.5 then to P25.w-(0.4,0) then to P25.w "" "stunnel " right line -> 0.5 right from P25.e "SMTP" "(unencrypted)" diff -r 7d85fd0da3df -r 0d78755132b7 thesis/tbl/mta-market-share.tbl --- a/thesis/tbl/mta-market-share.tbl Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/tbl/mta-market-share.tbl Sat Feb 07 14:47:27 2009 +0100 @@ -1,7 +1,7 @@ \begin{tabular}[hbt]{| r || p{0.16\textwidth} r | p{0.16\textwidth} r | p{0.16\textwidth} r |} \hline \# & -Bernstein & 2001 & +\person{Bernstein} & 2001 & O'ReillyNet & 2007 & MailRadar & ? \\ \hline \hline diff -r 7d85fd0da3df -r 0d78755132b7 thesis/tex/2-MarketAnalysis.tex --- a/thesis/tex/2-MarketAnalysis.tex Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/tex/2-MarketAnalysis.tex Sat Feb 07 14:47:27 2009 +0100 @@ -22,19 +22,19 @@ Electronic communication technologies can be divided in synchronous and asynchronous communication. Synchronous communication is direct dialog with little delay. Telephone conversation is an example. Asynchronous communication consists of independent messages. Dialogs are possible as well, but not in the same direct fashion. These two groups can also be split by the time which is needed for data delivery. Synchronous communication requires nearly real-time delivery, whereas for asynchronous communication message delivery times of several seconds or minutes are sufficient. \index{electronic communication!classification of} -Another possible separation is to distinguish recorded and written information. Recorded information, like audio or video data, is accessible only in a linear way by spooling and replay. Written information, on the other hand, can be accessed in arbitrary sequence, detail and speed. +Another possible separation is to distinguish recorded and written information. Recorded information, like audio or video data, is accessible only in a linear way by spooling and replay. Written information, on the other hand, can be accessed in arbitrary sequence, detail, and speed. \person{Lenke} and \person{Schmitz} use the same criteria to classify \emph{new media} \cite{lenke95}. They additionally divide into local and remote communication---the latter is presumed here---and by the number of communication participants. A classification by participant structure is omitted here, as communication technologies for many-to-many communication (like chat rooms) are usable for one-to-one (private chat) too, and ones for one-to-one (email) are usable for many-to-many (mailing lists). -Figure~\ref{fig:comm-classification} shows a classification of communication technologies by the properties synchronous/asynchronous and written/recorded. Email and \NAME{SMS} are examples for written and asynchronous communication; \NAME{IM} and chats are ones for written but synchronous communication. Voice mail and video messages stand as examples for recorded asynchronous communication. VoIP represents recorded synchronous communication. +Figure~\ref{fig:comm-classification} shows a classification of communication technologies by the properties synchronous/asynchronous and written/recorded. Email and \NAME{SMS} are examples for written and asynchronous communication; \NAME{IM} and chats are ones for written but synchronous communication. Voice mail and video messages stand as examples for recorded asynchronous communication. \NAME{VoIP} represents recorded synchronous communication. \begin{figure} \begin{center} \includegraphics[scale=0.75]{img/comm-classification.eps} \end{center} - \caption{Classification of electronic communication} + \caption{Classification of electronic communication technologies} \label{fig:comm-classification} - \index{figure!Classification of electronic communication} + \index{figure!Classification of electronic communication technologies} \end{figure} One might be surprised to find Instant \emph{Messaging} not in the group of \emph{message} communication. Instant Messaging could be put in both groups because it allows asynchronous communication additional to being a chat system. The reasons why it is classified as dialog communication are its primary use for dialog communication and the very fast---instant---delivery time. @@ -174,9 +174,9 @@ \subsubsection*{Opportunities} -Opportunities of the market are large data transfers, originating in multimedia content, which becomes popular. If email is used as basis for Unified Messaging, lots of voice and video mail will be transferred. Email is weak related to this kind of data: The data needs to be encoded to \NAME{ASCII} which stresses mail servers a lot. -%fixme: ref to store-and-forward +Opportunities of the market are large data transfers, originating in multimedia content, which becomes popular. If email is used as basis for Unified Messaging, lots of voice and video mail will be transferred. Email is weak related to this kind of data: The data needs to be encoded to \NAME{ASCII} which stresses mail servers a lot. Additionally a lot of traffic is generated by the \name{store-and-forward} transfer, which \SMTP\ uses. \index{um} +\index{store-and-forward} The use of different hardware to access mail is another opportunity of the market. But as more hardware gets involved, the networks become more complex. Thus the need for more software and infrastructure to transfer mail within the growing network might be a weakness of the email system. %fixme: think about that diff -r 7d85fd0da3df -r 0d78755132b7 thesis/tex/4-MasqmailsFuture.tex --- a/thesis/tex/4-MasqmailsFuture.tex Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/tex/4-MasqmailsFuture.tex Sat Feb 07 14:47:27 2009 +0100 @@ -73,7 +73,7 @@ \label{fig:mta-channels} \end{figure} -An overview on incoming and outgoing channels which are required for an \MTA, gives figure~\ref{fig:mta-channels}. +An overview on incoming and outgoing channels which are required for an \MTA, gives figure~\ref{fig:mta-channels}. The reader may want to compare this diagram with \masqmail's incoming and outgoing channels, which are depicted in figure~\ref{fig:masqmail-channels} on page~\pageref{fig:masqmail-channels}. %fixme: write about submission (port 587) @@ -128,7 +128,7 @@ \index{open relay} \index{spam} -Several ways to restrict access are available. The most simple one is restriction by the \NAME{IP} address. No extra complexity is added this way but the \NAME{IP} addresses need to be static or within known ranges. This approach is often used to allow relaying for local nets. The access check can be done by the \MTA\ or by a guard (e.g.\ \NAME{TCP} \name{Wrappers}) before. The main advantage here is the minimal setup and maintenance work needed. This kind of access restriction is important to be implemented. +Several ways to restrict access are available. The most simple one is restriction by the \NAME{IP} address. No extra complexity is added this way but the \NAME{IP} addresses need to be static or within known ranges. This approach is often used to allow relaying for local nets. The access check can be done by the \MTA\ or by a guard (e.g.\ \NAME{TCP} \name{Wrappers} \cite{venema92}) before. The main advantage here is the minimal setup and maintenance work needed. This kind of access restriction is important to be implemented. \index{access restriction} This authentication based on \NAME{IP} addresses is impossible in situations where hosts with changing \NAME{IP} addresses, that are not part of a known sub net, need access. Then a authentication mechanism based on some \emph{secret} is required. Three common approaches exist: @@ -283,7 +283,7 @@ \paragraph{\RG\,6: Testability} \index{testability} -Good testability make maintenance easier too, because functionality is directly verifiable when changes are done, thus removing the uncertainty. Modularized software makes testing easier, because parts can be tested without external influences. \person{Spinellis} sees testability as a sub-quality of maintainability. +Good testability make maintenance easier too, because functionality is directly verifiable when changes are done, thus removing the uncertainty. Modularized software makes testing easier, because parts can be tested without external influences. \person{Spinellis} sees testability as a sub-quality of maintainability \cite{spinellis06}. \paragraph{\RG\,7: Performance} @@ -307,7 +307,7 @@ \paragraph{\RG\,10: Usability} \index{usability} -Usability, not mentioned by \person{Hafiz} (he focuses on architecture) but by \person{Spinellis} and \person{Kan}, is a property which is very important from the user's point of view. Software with bad usability is rarely used, no matter how good it is. If substitutes with better usability exist, the user will switch to one of them. Here, usability includes setting up and configuring; the term ``users'' includes administrators. Having \MTA{}s on home servers and workstations requires easy and standardized configuration. The common setups should be configurable with little action by the user. Complex configuration should be possible, but the focus should be on the most common form of configuration: choosing one of several common setups. +Usability, not mentioned by \person{Hafiz} \cite{hafiz05} (he focuses on architecture) but by \person{Spinellis} \cite{spinellis06} and \person{Kan} \cite{kan03}, is a property which is very important from the user's point of view. Software with bad usability is rarely used, no matter how good it is. If substitutes with better usability exist, the user will switch to one of them. Here, usability includes setting up and configuring; the term ``users'' includes administrators. Having \MTA{}s on home servers and workstations requires easy and standardized configuration. The common setups should be configurable with little action by the user. Complex configuration should be possible, but the focus should be on the most common form of configuration: choosing one of several common setups. %fixme: << masqmail as portable app? >> diff -r 7d85fd0da3df -r 0d78755132b7 thesis/tex/5-Improvements.tex --- a/thesis/tex/5-Improvements.tex Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/tex/5-Improvements.tex Sat Feb 07 14:47:27 2009 +0100 @@ -23,10 +23,10 @@ This work requires changes mainly in three source files: \path{smtp_in.c}, \path{smtp_out.c}, and \path{conf.c}. -The first file includes the functionality for the \SMTP\ server. It needs to offer \NAME{STARTTLS} support to clients and needs to initiate the encryption when the client requests it. Additionally, the server should be able to insist on encryption before it accepts any message, if this is wished by the administrator. %fixme +The first file includes the functionality for the \SMTP\ server. It needs to offer \NAME{STARTTLS} support to clients and needs to initiate the encryption when the client requests it. Additionally, the server should be able to insist on encryption before it accepts any message \index{smtp} -The second file includes the functionality for the \SMTP\ client. It should start the encryption by issuing the \NAME{STARTTLS} keyword if the server supports it. It should be possible to send messages only over encrypted channels, if the administrator wants so. %fixme +The second file includes the functionality for the \SMTP\ client. It should start the encryption by issuing the \NAME{STARTTLS} keyword if the server supports it. It should be possible to send messages over encrypted channels only. The third file controls the configuration files. New configuration options need to be added. The encryption policy for incoming connections needs to be defined. Three choices seem necessary: no encryption, offer encryption, insist on encryption. The encryption policy for outgoing connections should be part of each route setup. The options are the same: never encrypt, encrypt if possible, insist on encryption. @@ -282,7 +282,7 @@ \qmail\ has the principle of ``don't parse'' which propagates the avoidance of parsing as much as possible. The reason is that parsing is a highly complex task which likely makes code exploitable. \index{qmail} -In \masqmail's new design, mail should be stored into the queue without parsing. A scanning module should then parse the message with high care. It seems best to use a \name{parser generator} for this work. The parsed data should then get modified if needed and written into a second queue. This approach has several advantages. First, the receiving parts of the system are independent from content, they simply store it into the queue. Second, one single module does the parsing and generates new messages that contain only valid data. Third, the sending parts of the system will thus only work on messages that consist of valid data. Of course, it must be ensured that each message passes through the \name{scanning} module, but this is already required for spam and malware scanning. +In \masqmail's new design, mail should be stored into the queue without parsing. A scanning module should then parse the message with high care. It seems best to use a \name{parser generator}\footnote{\person{Stephen~C.\ Johnson}'s paper about \name{yacc} is a good introduction into \name{parser generators} \cite{johnson79}.} for this work. The parsed data should then get modified if needed and written into a second queue. This approach has several advantages. First, the receiving parts of the system are independent from content, they simply store it into the queue. Second, one single module does the parsing and generates new messages that contain only valid data. Third, the sending parts of the system will thus only work on messages that consist of valid data. Of course, it must be ensured that each message passes through the \name{scanning} module, but this is already required for spam and malware scanning. %fixme: ref for parser generator \index{parser generator} diff -r 7d85fd0da3df -r 0d78755132b7 thesis/tex/rfcs.tex --- a/thesis/tex/rfcs.tex Sat Feb 07 12:06:30 2009 +0100 +++ b/thesis/tex/rfcs.tex Sat Feb 07 14:47:27 2009 +0100 @@ -1,6 +1,6 @@ \chapter*{Requests for Comments} -\name{Requests for Comments} are the documents that propose or define Internet standards and best practices. They are controlled by the \name{Internet Engeneering Task Force} (short: \NAME{IETF}) and are available on their website: {\small\url{http://ietf.org}}\,. +\name{Requests for Comments} are the documents that propose or define Internet standards and best practices. They are controlled by the \name{Internet Engeneering Task Force} (short: \NAME{IETF}) \citeweb{ietf:homepage}. A particular \RFC\ is located at {\small\url{http://tools.ietf.org/rfc/rfcNNNN.txt}}\,, where ``\texttt{NNNN}'' is the four-digit number of that \RFC. For example is \RFC\,821 located at {\small\url{http://tools.ietf.org/rfc/rfc0821.txt}}\,.