docs/master
diff ch03.roff @ 60:6a92e0208de0
Wrote about the removal of the mail transfer facilities.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Fri, 01 Jun 2012 15:33:37 +0200 |
parents | 814c33b96d89 |
children | 24aabbfe5794 |
line diff
1.1 --- a/ch03.roff Fri Jun 01 12:42:52 2012 +0200 1.2 +++ b/ch03.roff Fri Jun 01 15:33:37 2012 +0200 1.3 @@ -9,8 +9,6 @@ 1.4 1.5 .H1 "Stream-lining 1.6 1.7 - 1.8 -.H2 "Removal of non-MUA Tools 1.9 .P 1.10 MH had been considered an all-in-one system for mail handling. 1.11 The community around nmh has a similar understanding. 1.12 @@ -31,6 +29,120 @@ 1.13 available resources should be concentrated at the point where MH is 1.14 most unique. This is clearly the MUA part. 1.15 .P 1.16 +The goal for mmh was to remove peripheral parts and stream-line 1.17 +it for the MUA task. 1.18 + 1.19 + 1.20 +.H2 "Removal of Mail Transfer Facilities 1.21 +.P 1.22 +In contrast to nmh, which also provides mail submission and mail retrieval 1.23 +facilities, mmh is a MUA only. 1.24 +.P 1.25 +The MSA is called ``Message Transfer Service'' (MTS) in nmh. 1.26 +The facility establishes TCP/IP connections and speaks SMTP to submit 1.27 +messages for relay to the outside world. 1.28 +This part is implemented in the 1.29 +.Pn post 1.30 +command. 1.31 +Demanded by the changes in 1.32 +emailing, this part of nmh required changes in the last years. 1.33 +Encrypted connections needed to be supported, hence SASL was introduced 1.34 +into nmh. This added complexity to the nmh without improving it in 1.35 +its core functions. Also, keeping up with recent developments in 1.36 +this field needs requires development power and specialists. 1.37 +Mmh cuts this whole facility off and depends on an external MTA instead. 1.38 +The only outgoing interface available to mmh is the 1.39 +.Pn sendmail 1.40 +command. 1.41 +Almost any MTA provides a 1.42 +.Pn sendmail 1.43 +command. 1.44 +It not, any program can be substituted if it reads the 1.45 +message from the standard input, extracts the recipient addresses 1.46 +from the message header and does not conflict 1.47 +with sendmail-specific command line arguments. 1.48 +.P 1.49 +To retrieve mail, the 1.50 +.Pn inc 1.51 +command in nmh has the ability to establish TCP/IP connections 1.52 +and speaks POP3 to retrieve mail from remote servers. 1.53 +As with mail submission, here encrypted connections are required 1.54 +today, thus SASL support was added. 1.55 +As POP3 is superseded by IMAP more and more, support for message 1.56 +retrieval through IMAP will become necessary to be added soon. 1.57 +Mmh has no support for retrieving mail from remote locations. 1.58 +It depends on an external tool to cover this task. 1.59 +There are two ways for messages to enter mmh's mail storage: 1.60 +Incorporate them with 1.61 +.Pn inc 1.62 +from the system maildrop, or with 1.63 +.Pn rcvstore 1.64 +from the standard input. 1.65 +.P 1.66 +In consequence, mmh includes neither networking nor SASL code anymore. 1.67 +Two large separate functional units are removed. 1.68 +They account for about XXX lines of code and XXX libraries. 1.69 +.P 1.70 +With the removal of the MSA and MRA, mmh converted from an all-in-one 1.71 +mail system to the core: the MUA. 1.72 +Following the Unix philosophy, it focuses on one job and to do that well. 1.73 +Now, of course, mmh depends on third-party software. 1.74 +An external MTA/MSA is required to transfer mail to the outside world; 1.75 +an external MRA is required to retrieve mail from remote machines. 1.76 +There exist excellent implementations of such software, 1.77 +which do this specific task likely much better than the internal 1.78 +versions of nmh do it. Also, this provides the choice for the best 1.79 +suiting one of the available implementation. 1.80 +.P 1.81 +As it had already been possible to use an external MSA or MRA, 1.82 +why not keep the internal version for convenience? 1.83 +If this would question the sense in having a fall-back pager in all 1.84 +the command line tools, in case 1.85 +.Pn more 1.86 +or 1.87 +.Pn less 1.88 +wouldn't be available, the answer is intuitively seen. 1.89 +Now, an MSA or MRA is clearly more complex than a text pager, but 1.90 +still the concept holds: If programs become complex, split them; 1.91 +if projects become complex, split them. 1.92 +Complexity is demanded by the problem to solve. Decades ago, 1.93 +emailing had been small and simple. 1.94 +(Remember, 1.95 +.Pn /bin/mail 1.96 +had once covered anything there was to email.) 1.97 +As the complexity in emailing increased, MH remainded mostly unchanged. 1.98 +Nontheless, in nmh the POP server, which the original MH had included, 1.99 +was removed. Now is the time to take one step further and remove 1.100 +the MSA and MRA. 1.101 +Not only does it decrease the code amount of the project, 1.102 +but more important, it removes the whole field of message transfer 1.103 +with all its implications from the project. 1.104 +.P 1.105 +Users of MH are usually able to set up an external MSA and MRA. 1.106 +Also, the popular MSAs and MRAs have large communities and a lot 1.107 +of documentation available. 1.108 +.P 1.109 +Choices for MSAs range from the full-featured 1.110 +.I Postfix 1.111 +over mid-size solutions like 1.112 +.I masqmail 1.113 +and 1.114 +.I dma 1.115 +to small forwarders like 1.116 +.I ssmtp 1.117 +and 1.118 +.I nullmailer . 1.119 +Choices for MRAs include 1.120 +.I fetchmail , 1.121 +.I getmail , 1.122 +.I mpop 1.123 +and 1.124 +.I fdm . 1.125 + 1.126 + 1.127 + 1.128 +.H2 "Removal of non-MUA Tools 1.129 +.P 1.130 Several of nmh's tools were removed from mmh because they didn't 1.131 match the main focus of adding to the MUA's task. 1.132 .P 1.133 @@ -99,9 +211,6 @@ 1.134 .Pn wmh , 1.135 saved more than 7\|000 lines of C code \(en a major achievement. 1.136 1.137 -.U2 "Removal of the MTS 1.138 -.P 1.139 - 1.140 1.141 .H2 "mhshow show Merge 1.142 .P