docs/masqmail-cs

view masqmail.tex @ 6:00207c2995ae

some rework; added urls
author meillo@marmaro.de
date Fri, 06 Mar 2009 11:55:17 +0100
parents 282b52d9de09
children 3cd8b56b7494
line source
1 % chaos seminar talk about masqmail
2 %
3 % markus schnalke <meillo@marmaro.de>
4 % since 2009-02-24
7 \documentclass{beamer}
9 \title{masqmail}
10 \author{markus schnalke}
11 \date{2009-03-09}
13 \usepackage[utf8]{inputenc}
14 \usepackage{url}
15 \usepackage{graphicx}
16 \setlength{\parskip}{2.0ex plus 1.0ex minus 0.5ex}
18 \newcommand{\secframe}[1]{
19 \section{#1}
20 \frame{ \vfill\vfill \centerline{ \huge #1 } \vfill }
21 }
23 \newcommand{\ft}[1]{
24 \frametitle{#1}
25 }
27 \newcommand{\oneline}[1]{
28 \frame{
29 \vfill\vfill
30 \centerline{#1}
31 \vfill
32 }
33 }
37 \begin{document}
40 \frame{
42 \vspace{8em}
43 \begin{center}
45 {\huge\bf masqmail}
47 a mail transfer agent for workstations and small networks
49 \vspace{6em}
51 { \tiny
52 markus schnalke \textless{}meillo@marmaro.de\textgreater{}
53 }
55 \end{center}
56 }
60 \secframe{about me}
63 \frame{\ft{markus schnalke}
65 past:
67 \qquad Business Information Systems\\
68 \qquad at University of Applied Sciences, Ulm
70 \qquad Diploma Thesis about masqmail
73 future:
75 \qquad Master in Informatics\\
76 \qquad here at University, Ulm
78 }
81 \frame{\ft{I am interested in}
83 Unix Philosophy
85 suckless software
87 Free Software
89 Debian
91 }
96 \secframe{this talk}
99 \frame{ \ft{overview}
101 1) prerequisites (5\%) %3
103 2) about masqmail (25\%) %15
105 3) the thesis (60\%) %6 + 9 + 7 + 4 + 6 = 32
107 4) help wanted (10\%) %5
109 %== 55
111 }
120 \secframe{email? MTA? \dots}
123 \frame{\ft{What are MTAs}
125 MTA = Mail Transfer Agent
127 the post offices of email
129 MTAs transfer mail from senders to recipients
131 }
134 \frame{\ft{mail agents}
136 \begin{center}
137 \includegraphics[width=0.8\textwidth]{fig/mail-agents.eps}
138 \end{center}
140 }
143 \oneline{questions?}
155 \secframe{about masqmail}
159 \frame{ \ft{what is masqmail}
161 an MTA
163 a small one
165 one for special setups
167 }
170 \frame{ \ft{masqmail's niche}
172 non-permanent online connections
174 over multiple providers
176 especially for workstations and small networks
178 also notebooks
180 }
183 \frame{ \ft{history}
185 written by Oliver Kurth
187 1999 -- 2003
189 GPL
191 about 9\,000 lines of C
193 }
196 \frame{\ft{guessed}
198 initially written to use masqdialer-controlled online connections
200 thus: source of the name (``masq\dots'') (not ``\dots qmail'')
202 }
206 \frame{ \ft{masqmail today}
208 development stopped in 2003
210 not maintained
212 even its website is down
214 but included in Debian, Ubuntu, Arch, Mandriva, FreeBSD
216 }
219 \frame{ \ft{value of masqmail}
221 covers a niche
223 has unique features
225 has users!
227 }
230 \frame{ \ft{problems of masqmail}
232 no further development
234 unfixed bugs
236 emailing has changed
238 }
241 \oneline{questions?}
258 \secframe{when I met masqmail}
261 \frame{\ft{Fall 2007}
263 started to use masqmail
265 }
267 \frame{\ft{Spring 2008}
269 problem: realized it is unmaintained in Debian
271 A situation to be changed ... but by whom?
273 \dots me? No!
275 }
278 \frame{\ft{Summer 2008}
280 problem: find a topic for the diploma thesis
282 }
285 \frame{\ft{while lying in bed some night}
287 the great idea: solve both problems in once
289 1) \textbf{use the diploma thesis to revive masqmail}
291 2) \textbf{use masqmail to do a great diploma thesis}
293 }
296 \frame{\ft{advising professor}
298 professor Markus Sch\"affter
300 thanks!
302 }
307 \frame{\ft{logical decisions}
309 motivation:
311 \qquad for myself
313 \qquad for the community
315 thus:
317 \qquad write in English
319 \qquad make the thesis free available
321 }
325 \frame{\ft{guiding principle}
327 \begin{center}
328 \it
329 Do what you think is interesting,\\
330 do something that you think is fun and worthwhile,\\
331 because otherwise you won't do it well anyway.
333 ---Brian~W.\ Kernighan---
334 \end{center}
336 }
344 \secframe{the thesis in short}
348 %\frame{\ft{planned was}
349 %
350 %1) purpose and structure of an MTA/of masqmail
351 %
352 %2) security analysis
353 %
354 %3) code improvements
355 %
356 %4) documentation, test, distribution
357 %
358 %With the goal to release a new version and get it into Debian
359 %
360 %}
361 %
362 %
363 %\frame{\ft{however, it resulted in}
364 %
365 %1) introduction
366 %
367 %2) market analysis
368 %
369 %3) mail transfer agents
370 %
371 %4) masqmail's present and future
372 %
373 %5) improvement plans
374 %
375 %Became pretty theoretic (I don't worry)
376 %
377 %}
385 \frame{ \ft{ch01: introduction}
387 general prerequisites
389 the masqmail project
391 value and problems of masqmail
393 \textbf{$\Rightarrow$ reasons to do this thesis}
395 }
399 \frame{ \ft{ch02: market analysis}
401 classification, life cycle, and trends of electronic communication
403 SWOT and trends for email
405 \textbf{$\Rightarrow$ show that email is expected to survive}
407 }
410 \frame{ \ft{ch03: mail transfer agents}
412 classification of MTAs
414 masqmail's competitors
416 short comparison
418 \textbf{$\Rightarrow$ provide knowledge for following chapters}
420 }
425 \frame{ \ft{ch04: masqmail's present and future}
427 the goal (revive masqmail)
429 requirements
431 \quad\quad fulfilled requirements
433 \quad\quad work to do
435 ways for further development
437 result
439 \textbf{$\Rightarrow$ the core of the thesis: a plan to revive masqmail}
441 }
445 \frame{ \ft{ch05: improvement plans}
447 more detailed descriptions of the work tasks
449 \textbf{$\Rightarrow$ recommendations how to do the proposed changes}
451 }
454 \oneline{questions?}
461 \oneline{\it we're half way through :-) }
468 \secframe{in detail: ch03 MTAs}
472 \frame{\ft{MTAs}
474 relay-only MTAs (forwarders):
476 \qquad nullmailer, ssmtp
478 groupware:
480 \qquad Lotus Notes, Exchange, opengroupware.org
482 ``real'' MTAs:
484 \qquad sendmail, exim, qmail, postfix, masqmail
486 }
490 \frame{\ft{market shares}
492 \input{tbl/mta-market-share.tbl}
494 }
498 \frame{\ft{comparison}
500 \input{tbl/mta-comparison.tbl}
502 }
506 \frame{\ft{why not sendmail}
508 - too large
510 - too complex
512 - structurally insecure
514 - simply obsolete
516 }
518 \frame{\ft{why not exim}
520 - too large
522 - designed for always online hosts
524 }
526 \frame{\ft{why not qmail}
528 - outdated
530 - designed for always online hosts with fast connections
532 }
534 \frame{\ft{why not postfix}
536 - too large
538 - too complex
540 - not designed for masqmail's scenario
542 }
544 \frame{\ft{in summary}
546 - other MTAs are bad substitutes for masqmail
548 - though they seem to be generally able to be substitutes
550 }
553 \oneline{comments and annotations?}
569 \secframe{in detail: ch04 present and future}
572 \frame{\ft{functional requirements}
574 \input{tbl/func-requirements.tbl}
576 }
578 \frame{\ft{non-functional requirements}
580 \input{tbl/nonf-requirements.tbl}
582 }
584 \frame{\ft{work tasks}
586 TODO\,1: Encryption
588 TODO\,2: Authentication
590 TODO\,3: Security
592 TODO\,4: Reliability
594 TODO\,5: Spam handling
596 TODO\,6: Extendability
599 }
602 \frame{\ft{further development}
604 1) improve existing code
606 2) add wrappers and interposition filters
608 3) redesign and rewrite from scratch
610 \quad
612 $1) + 2) = 13$ \quad vs. \quad $3) = 17$
614 }
617 \frame{\ft{architecture}
619 \begin{center}
620 \includegraphics[width=0.8\textwidth]{fig/callgraph.eps}
621 \end{center}
623 }
627 \frame{\ft{the result}
629 ``one fits all'' is not possible
631 hence: different strategies for different goals
633 short-term goal: keep masqmail usable\\
634 \qquad $\rightarrow$ improve existing code
636 long-term goal: make masqmail future-proof\\
637 \qquad $\rightarrow$ recreate it from scratch
639 disadvantage: more work
641 }
644 \oneline{questions?}
652 \secframe{in detail: ch05.1 existing code}
657 \frame{\ft{TODO 1: Encryption}
659 STARTTLS
661 qmail patch as template
663 affected files: smtp\_in.c, smtp\_out.c, conf.c
665 }
669 \frame{\ft{TODO 2: Authentication}
671 static: TCP Wrapper
673 dynamic: SMTP-AUTH with SASL
675 affected files: smtp\_in.c, smtp\_out.c, conf.c
677 }
681 \frame{\ft{TODO 3: Security}
683 mail security layers
685 \begin{center}
686 \includegraphics[width=\textwidth]{fig/proxy-setup.eps}
687 \end{center}
689 }
692 \oneline{questions?}
700 \secframe{in detail: ch05.2 new design}
702 \frame{\ft{design goals}
704 throughout compartmentalization
706 free internal system from in and out channels
708 single point for scanning
710 concentrate on mail transfer
712 keep it simple, clear, and general
714 }
716 \frame{\ft{incoming and outgoing}
718 in/out:
720 \qquad arbitrary protocol handlers (incoming/outgoing)
722 \qquad one queue-in module; one queue-out module
724 \qquad no own MDA, only a pipe module
726 route management:
728 \qquad the thing special to masqmail
730 \qquad done just before the outgoing modules
732 }
735 \frame{\ft{within the queue}
737 mail sanitizing:
739 \qquad qmail: ``don't parse'' $\rightarrow$ parse very carefully
741 \qquad Jon Postel's robustness principle
743 spool files:
745 \qquad preferably in the system's native format
747 }
750 \frame{\ft{auth, enc, spam}
752 auth and enc:
754 \qquad in receiving and sending modules (?)
756 \qquad with library code
758 spam and malware:
760 \qquad receiving modules vs. a scanning module
762 \qquad in both places?
764 \qquad malware scanning is not the MTA's job
766 }
770 \frame{\ft{the proposed architecture}
772 \begin{center}
773 \includegraphics[width=0.9\textwidth]{fig/masqmail-arch-new.eps}
774 \end{center}
776 }
779 \oneline{questions?}
785 \secframe{help wanted!}
788 \frame{\ft{work to do}
790 add encryption, authentication, security
792 fix bugs
794 documentation
796 user guides and ``marketing''
798 create the new masqmail
800 }
803 \frame{\ft{current team}
805 \tiny me
807 }
810 \frame{\ft{}
812 project site:
814 \qquad \url{http://prog.marmaro.de/masqmail}
816 mailing list:
818 \qquad masqmail@marmaro.de
820 }
823 \frame{\ft{Debian}
825 I search for a DD to sponsor my masqmail work
827 please contact me!
829 }
832 \frame{\ft{you!}
834 I welcome your help!
836 I appreciate your advice!
838 I am thankful for your comments!
840 \quad
842 \textbf{help masqmail}
844 }
852 \frame{
853 \vfill\vfill
854 \centerline{\textbf{Thanks for your attention}}
855 \vfill
856 }
859 \frame{\ft{links}
861 \footnotesize
863 my diploma thesis\\
864 \qquad \url{http://marmaro.de/docs\#diploma}
867 masqmail's website\\
868 \qquad \url{http://prog.marmaro.de/masqmail}
871 masqmail mailing list\\
872 \qquad \url{masqmail@marmaro.de}\\
873 \qquad \url{minimalist@marmaro.de?subject=subscribe\%20masqmail}
876 suckless software\\
877 \qquad \url{http://www.suckless.org}
880 }
885 \frame{ \ft{software used}
887 Debian GNU/Linux
889 \LaTeX\ with the beamer classes
891 Vim, latexmk, and Mercurial
893 diagrams: PIC and groff
895 call graph: Egypt and dot
897 \vfill
899 {\scriptsize The slides are available on \url{http://marmaro.de/docs} \hfill 2009-03-09 }
901 }
906 \end{document}
912 \url{http://ulm.ccc.de/ChaosSeminar/2009/03_masqmail}