meillo@0: % chaos seminar talk about masqmail meillo@0: % meillo@0: % markus schnalke meillo@0: % since 2009-02-24 meillo@0: meillo@0: meillo@0: \documentclass{beamer} meillo@0: meillo@0: \title{masqmail} meillo@0: \author{markus schnalke} meillo@0: \date{2009-03-09} meillo@0: meillo@0: \usepackage[utf8]{inputenc} meillo@0: \usepackage{url} meillo@0: \usepackage{graphicx} meillo@0: \setlength{\parskip}{2.0ex plus 1.0ex minus 0.5ex} meillo@0: meillo@0: \newcommand{\secframe}[1]{ meillo@0: \section{#1} meillo@0: \frame{ \vfill\vfill \centerline{ \huge #1 } \vfill } meillo@0: } meillo@0: meillo@0: \newcommand{\ft}[1]{ meillo@0: \frametitle{#1} meillo@0: } meillo@0: meillo@1: \newcommand{\oneline}[1]{ meillo@1: \frame{ meillo@1: \vfill\vfill meillo@3: \centerline{#1} meillo@1: \vfill meillo@1: } meillo@1: } meillo@1: meillo@1: meillo@0: meillo@0: \begin{document} meillo@0: meillo@0: meillo@0: \frame{ meillo@0: meillo@0: \vspace{8em} meillo@0: \begin{center} meillo@0: meillo@0: {\huge\bf masqmail} meillo@0: meillo@0: a mail transfer agent for workstations and small networks meillo@0: meillo@0: \vspace{6em} meillo@0: meillo@0: { \tiny meillo@0: markus schnalke \textless{}meillo@marmaro.de\textgreater{} meillo@0: } meillo@0: meillo@0: \end{center} meillo@0: } meillo@0: meillo@0: meillo@0: meillo@2: \secframe{about me} meillo@0: meillo@0: meillo@2: \frame{\ft{markus schnalke} meillo@0: meillo@2: \textbf{past} meillo@0: meillo@2: Business Information Systems\\ meillo@2: at University of Applied Sciences, Ulm meillo@2: meillo@2: Diploma Thesis about masqmail meillo@2: meillo@2: meillo@2: \textbf{future} meillo@2: meillo@2: Master in Informatics\\ meillo@2: here at University, Ulm meillo@0: meillo@0: } meillo@0: meillo@0: meillo@2: \frame{\ft{I am interested in} meillo@0: meillo@2: Unix Philosophy meillo@0: meillo@2: suckless software meillo@0: meillo@0: Free Software meillo@0: meillo@0: Debian meillo@0: meillo@2: } meillo@0: meillo@2: meillo@2: meillo@2: meillo@2: \secframe{this talk} meillo@2: meillo@2: meillo@2: \frame{ \ft{overview} meillo@2: meillo@2: 1) prerequisites (xx\%) meillo@2: meillo@2: 2) about masqmail (xx\%) meillo@2: meillo@2: 3) the thesis (xx\%) meillo@2: meillo@2: 4) help me to help masqmail (xx\%) meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@2: meillo@2: meillo@3: \secframe{email? MTA? \dots} meillo@2: meillo@2: meillo@2: \frame{\ft{What are MTAs} meillo@2: meillo@2: MTA = Mail Transfer Agent meillo@2: meillo@2: the post offices of email meillo@2: meillo@3: MTAs transfer mail from senders to recipients meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: \frame{\ft{mail agents} meillo@2: meillo@2: \begin{center} meillo@2: \includegraphics[width=0.8\textwidth]{fig/mail-agents.eps} meillo@2: \end{center} meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: \oneline{questions?} meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@3: meillo@3: meillo@3: meillo@3: meillo@3: meillo@0: \secframe{about masqmail} meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \ft{what is masqmail} meillo@0: meillo@2: an MTA meillo@0: meillo@1: a small one meillo@0: meillo@2: one for special setups meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \ft{masqmail's niche} meillo@0: meillo@0: non-permanent online connections meillo@0: meillo@0: over multiple providers meillo@0: meillo@1: especially for workstations and small networks meillo@1: meillo@2: also notebooks meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \ft{history} meillo@0: meillo@0: written by Oliver Kurth meillo@0: meillo@2: 1999 -- 2003 meillo@0: meillo@2: GPL meillo@0: meillo@2: about 9\,000 SLOC meillo@0: meillo@0: } meillo@0: meillo@0: meillo@2: \frame{\ft{guessed} meillo@2: meillo@2: initially written to use masqdialer-controlled online connections meillo@2: meillo@2: thus: source of the name (``masq\dots'') (not ``\dots qmail'') meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: meillo@0: \frame{ \ft{masqmail today} meillo@0: meillo@0: development stopped in 2003 meillo@0: meillo@0: not maintained meillo@0: meillo@0: even its website is down meillo@0: meillo@1: but included in Debian, Ubuntu, Arch, Mandriva, FreeBSD meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \ft{value of masqmail} meillo@0: meillo@0: covers a niche meillo@0: meillo@0: has unique features meillo@0: meillo@0: has users! meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \ft{problems of masqmail} meillo@0: meillo@0: no further development meillo@0: meillo@0: unfixed bugs meillo@0: meillo@0: emailing has changed meillo@0: meillo@0: } meillo@0: meillo@0: meillo@3: \oneline{questions?} meillo@0: meillo@0: meillo@1: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@3: \secframe{when I met masqmail} meillo@1: meillo@1: meillo@1: \frame{\ft{using unmaintained software} meillo@0: meillo@0: Fall 2007: started to use masqmail meillo@0: meillo@0: Spring 2008: realized it is unmaintained in Debian meillo@0: meillo@1: A situation to be changed ... but by whom? meillo@0: meillo@1: ... me? No! meillo@0: meillo@0: } meillo@0: meillo@0: meillo@3: \frame{\ft{solving two problems} meillo@0: meillo@0: Summer 2008: meillo@0: meillo@1: problem: find a topic for the diploma thesis meillo@0: meillo@3: the great idea: solve both problems in once meillo@0: meillo@3: - \textbf{use the diploma thesis to revive masqmail} meillo@3: meillo@3: - \textbf{use masqmail to do a great diploma thesis} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@1: \frame{\ft{advising professor} meillo@1: meillo@1: Professor Sch\"affter meillo@1: meillo@1: thanks! meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: meillo@2: meillo@2: \frame{\ft{motivation} meillo@2: meillo@2: \textbf{motivation} meillo@2: meillo@2: - for myself meillo@2: meillo@2: - for the community meillo@2: meillo@2: \textbf{thus} meillo@2: meillo@2: - in English meillo@2: meillo@2: - free available meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: meillo@0: \frame{\ft{guiding principle} meillo@0: meillo@0: \begin{center} meillo@2: \it meillo@2: Do what you think is interesting,\\ meillo@2: do something that you think is fun and worthwhile,\\ meillo@2: because otherwise you won't do it well anyway. meillo@0: meillo@2: ---Brian~W.\ Kernighan--- meillo@0: \end{center} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@1: meillo@1: meillo@1: meillo@2: \secframe{the thesis in short} meillo@0: meillo@0: meillo@0: meillo@4: %\frame{\ft{planned was} meillo@4: % meillo@4: %1) purpose and structure of an MTA/of masqmail meillo@4: % meillo@4: %2) security analysis meillo@4: % meillo@4: %3) code improvements meillo@4: % meillo@4: %4) documentation, test, distribution meillo@4: % meillo@4: %With the goal to release a new version and get it into Debian meillo@4: % meillo@4: %} meillo@4: % meillo@4: % meillo@4: %\frame{\ft{however, it resulted in} meillo@4: % meillo@4: %1) introduction meillo@4: % meillo@4: %2) market analysis meillo@4: % meillo@4: %3) mail transfer agents meillo@4: % meillo@4: %4) masqmail's present and future meillo@4: % meillo@4: %5) improvement plans meillo@4: % meillo@4: %Became pretty theoretic (I don't worry) meillo@4: % meillo@4: %} meillo@1: meillo@1: meillo@1: meillo@1: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \ft{ch01: introduction} meillo@0: meillo@0: general prerequisites meillo@0: meillo@0: the masqmail project meillo@0: meillo@0: value and problems of masqmail meillo@0: meillo@1: \textbf{$\Rightarrow$ reasons to do this thesis} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \ft{ch02: market analysis} meillo@0: meillo@0: classification, life cycle, and trends of electronic communication meillo@0: meillo@0: SWOT and trends for email meillo@0: meillo@1: \textbf{$\Rightarrow$ show that email is expected to survive} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \ft{ch03: mail transfer agents} meillo@0: meillo@0: classification of MTAs meillo@0: meillo@0: masqmail's competitors meillo@0: meillo@0: short comparison meillo@0: meillo@1: \textbf{$\Rightarrow$ provide knowledge for following chapters} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \ft{ch04: masqmail's present and future} meillo@0: meillo@0: the goal (revive masqmail) meillo@0: meillo@0: requirements meillo@0: meillo@0: \quad\quad fulfilled requirements meillo@0: meillo@0: \quad\quad work to do meillo@0: meillo@0: ways for further development meillo@0: meillo@0: result meillo@0: meillo@1: \textbf{$\Rightarrow$ the core of the thesis: a plan to revive masqmail} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@1: \frame{ \ft{ch05: improvement plans} meillo@1: meillo@1: more detailed descriptions of the work tasks meillo@1: meillo@1: \textbf{$\Rightarrow$ recommendations how to do the proposed changes} meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: \oneline{questions?} meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: \secframe{in detail: ch03 MTAs} meillo@2: meillo@2: meillo@1: meillo@1: \frame{\ft{MTAs} meillo@1: meillo@1: - relay-only MTAs (forwarders): nullmailer, ssmtp meillo@1: meillo@1: - groupware: Lotus Notes, Exchange, opengroupware.org meillo@1: meillo@1: - ``real'' MTAs: sendmail, exim, qmail, postfix, masqmail meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: meillo@1: \frame{\ft{market shares} meillo@1: meillo@4: \input{tbl/mta-market-share.tbl} meillo@4: meillo@4: } meillo@4: meillo@4: meillo@4: meillo@4: \frame{\ft{comparison} meillo@4: meillo@4: \input{tbl/mta-comparison.tbl} meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: meillo@1: \frame{\ft{why not sendmail} meillo@1: meillo@1: - too large meillo@1: meillo@1: - too complex meillo@1: meillo@1: - structurally insecure meillo@1: meillo@1: - simply obsolete meillo@1: meillo@1: } meillo@1: meillo@1: \frame{\ft{why not exim} meillo@1: meillo@1: - too large meillo@1: meillo@1: - designed for always online hosts meillo@1: meillo@1: } meillo@1: meillo@1: \frame{\ft{why not qmail} meillo@1: meillo@1: - outdated meillo@1: meillo@1: - designed for always online hosts with fast connections meillo@1: meillo@1: } meillo@1: meillo@1: \frame{\ft{why not postfix} meillo@1: meillo@1: - too large meillo@1: meillo@1: - not designed for masqmail's scenario meillo@1: meillo@1: } meillo@1: meillo@1: \frame{\ft{in summary} meillo@1: meillo@1: - other MTAs are bad substitutes for masqmail meillo@1: meillo@1: - though they seem to be generally able to be substitutes meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: \oneline{comments and annotations?} meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@1: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: \secframe{in detail: ch04 present and future} meillo@2: meillo@2: meillo@2: \frame{\ft{functional requirements} meillo@2: meillo@4: \input{tbl/func-requirements.tbl} meillo@4: meillo@2: } meillo@2: meillo@2: \frame{\ft{non-functional requirements} meillo@2: meillo@4: \input{tbl/nonf-requirements.tbl} meillo@2: meillo@2: } meillo@2: meillo@4: \frame{\ft{work tasks} meillo@4: meillo@4: TODO\,1: Encryption meillo@4: meillo@4: TODO\,2: Authentication meillo@4: meillo@4: TODO\,3: Security meillo@4: meillo@4: TODO\,4: Reliability meillo@4: meillo@4: TODO\,5: Spam handling meillo@4: meillo@4: TODO\,6: Extendability meillo@4: meillo@2: meillo@2: } meillo@2: meillo@4: meillo@4: \frame{\ft{further development} meillo@4: meillo@4: - improve existing code meillo@4: meillo@4: - add wrappers and interposition filters meillo@4: meillo@4: - redesign and rewrite from scratch meillo@2: meillo@2: } meillo@2: meillo@2: meillo@4: \frame{\ft{architecture} meillo@4: meillo@4: \begin{center} meillo@4: \includegraphics[width=0.8\textwidth]{fig/callgraph.eps} meillo@4: \end{center} meillo@2: meillo@2: } meillo@2: meillo@2: meillo@4: meillo@1: \frame{\ft{the result} meillo@0: meillo@0: ``one fits all'' is not possible meillo@0: meillo@0: hence: different strategies for different goals meillo@0: meillo@0: short-term goal: keep masqmail usable\\ meillo@0: \quad\quad$\rightarrow$ improve existing code meillo@0: meillo@0: long-term goal: make masqmail future-proof\\ meillo@0: \quad\quad$\rightarrow$ recreate it from scratch meillo@0: meillo@0: disadvantage: more work meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@2: \secframe{in detail: ch05.1 existing code} meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: \frame{\ft{masqmail's code base} meillo@2: meillo@2: C meillo@2: meillo@2: ~ 9,000 SLOC meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: \secframe{in detail: ch05.2 new design} meillo@2: meillo@2: \frame{\ft{FIXME} meillo@2: meillo@2: } meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: meillo@2: \secframe{HELP!} meillo@2: meillo@2: meillo@2: \frame{\ft{FIXME} meillo@2: meillo@2: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ meillo@0: \vfill\vfill meillo@0: \centerline{\textbf{Thanks for your attention}} meillo@0: \vfill meillo@0: } meillo@0: meillo@0: meillo@1: \frame{\ft{links} meillo@1: meillo@1: --all urls-- meillo@1: meillo@1: } meillo@1: meillo@1: meillo@1: meillo@0: meillo@0: \frame{ \ft{software used} meillo@0: meillo@0: Debian GNU/Linux meillo@0: meillo@0: \LaTeX\ with the beamer classes meillo@0: meillo@0: Vim, latexmk, and Mercurial meillo@0: meillo@0: \vfill meillo@0: meillo@0: {\scriptsize The slides are available on \url{http://marmaro.de/docs} \hfill 2009-03-09 } meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \end{document} meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \url{http://ulm.ccc.de/ChaosSeminar/2009/03_masqmail}