annotate ch03.roff @ 83:99ab58dc891f

New macro: .VF to read verbatim text from file. Outsourced the MH session.
author markus schnalke <meillo@marmaro.de>
date Wed, 06 Jun 2012 18:11:35 +0200
parents ff4537327162
children c35ec2b7de5d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1 .H0 "Discussion
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
2 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
3 This main chapter discusses the practical work done in the mmh project.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
4 It is structured along the goals to achieve. The concrete work done
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
5 is described in the examples of how the general goals were achieved.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
6
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
7
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
8
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
9
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
10 .H1 "Stream-lining
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
11
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
12 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
13 MH had been considered an all-in-one system for mail handling.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
14 The community around nmh has a similar understanding.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
15 In fundamental difference, should be a MUA only.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
16 I believe that all-in-one mail systems are obsolete.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
17 There are excellent specialized MTAs, like Postfix;
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
18 there are specialized MDAs, like Procmail; there are specialized
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
19 MRAs, like Fetchmail. I believe it's best to use them instead of
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
20 providing the same function ourselves. Doing something well, requires to
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
21 focus on a small set of aspects. The more
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
22 it is possible to focus, the better the result in this particular
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
23 area will be. Usually, the limiting resource in Free Software
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
24 community development is man power.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
25 If the development power is even spread over a large
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
26 development area, it becomes more difficult to
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
27 compete with the specialists in the various fields. This is even
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
28 increased, given the small community \(en developers and users \(en
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
29 that MH-based mail systems have. In consequence, I believe that the
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
30 available resources should be focused to the point where MH is
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
31 most unique. This is clearly the MUA part.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
32 .P
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
33 The goal for mmh was to remove peripheral parts and stream-line
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
34 it for the MUA task.
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
35
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
36
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
37 .H2 "Removal of Mail Transfer Facilities
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
38 .P
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
39 In contrast to nmh, which also provides mail submission and mail retrieval
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
40 facilities, mmh is a MUA only.
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
41 This general difference in the view on the character of nmh
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
42 initiated the development of mmh.
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
43 Removing the mail transfer facilities had been the first work task
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
44 in the mmh project.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
45 .P
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
46 The MSA is called \fIMessage Transfer Service\fP (MTS) in nmh.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
47 The facility established network connections and spoke SMTP to submit
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
48 messages for relay to the outside world.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
49 This part was implemented by the
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
50 .Pn post
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
51 command.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
52 The changes in emailing
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
53 demanded changes in this part of nmh in the last years.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
54 Encryption and authetication for network connections
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
55 needed to be supported, hence TLS and SASL were introduced
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
56 into nmh. This added complexity to the nmh without improving it in
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
57 its core functions. Also, keeping up with recent developments in
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
58 this field requires development power and specialists.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
59 For mmh this whole facility was cut off.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
60 .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
61 .Ci fecd5d34f65597a4dfa16aeabea7d74b191532c3
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
62 .Ci 156d35f6425bea4c1ed3c4c79783dc613379c65b
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
63 Instead, mmh depends on an external MTA.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
64 The only outgoing interface available to mmh is the
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
65 .Pn sendmail
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
66 command.
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
67 Almost any MTA provides a
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
68 .Pn sendmail
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
69 command.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
70 If not, any program can be substituted if it reads the
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
71 message from the standard input, extracts the recipient addresses
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
72 from the message header and does not conflict
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
73 with sendmail-specific command line options.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
74 .P
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
75 To retrieve mail, the
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
76 .Pn inc
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
77 command established network connections
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
78 and spoke POP3 to retrieve mail from remote servers.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
79 As with mail submission, the network connections required encryption and
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
80 authentication, thus TLS and SASL was added.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
81 As POP3 becomes more and more superseded by IMAP, support for message
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
82 retrieval through IMAP will become necessary to be added soon, too.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
83 Mmh has dropped the support for retrieving mail from remote locations.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
84 .Ci ab7b48411962d26439f92f35ed084d3d6275459c
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
85 Instead, it depends on an external tool to cover this task.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
86 There exist two paths for messages to enter mmh's mail storage:
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
87 They can be incorporate with
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
88 .Pn inc
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
89 from the system maildrop, or
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
90 .Pn rcvstore
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
91 reads them from the standard input.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
92 .P
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
93 With the removal of the MSA and MRA, mmh converted from an all-in-one
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
94 mail system to being only a MUA.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
95 Following the Unix philosophy, it focuses on one job and
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
96 tries to do that one well.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
97 Not only the programs follow that tenet but also the project itself does so.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
98 Now, of course, mmh depends on third-party software.
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
99 An external MTA/MSA is required to transfer mail to the outside world;
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
100 an external MRA is required to retrieve mail from remote machines.
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
101 There exist excellent implementations of such software,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
102 which do this specific task likely better than the internal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
103 versions had done it. Also, the best suiting programs can be freely chosen.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
104 .P
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
105 As it had already been possible to use an external MSA or MRA,
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
106 why not keep the internal version for convenience?
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
107 The question whether there is sense in having a fall-back pager in all
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
108 the command line tools, for the cases when
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
109 .Pn more
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
110 or
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
111 .Pn less
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
112 aren't available, appears to be ridiculous.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
113 Now, an MSA or MRA is clearly more complex than a text pager,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
114 and not necessarily available but still the concept holds:
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
115 design the system orthogonally.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
116 If it is conceptionally more elegant to have the MTA to be a separate tool
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
117 \(en as the RFCs propose this split, this is likely the case \(en
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
118 then separate.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
119 .P
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
120 Further more, if programs become complex, they should be split;
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
121 and if projects become complex, they should be split, too.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
122 Essential complexity is defined by the problem.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
123 Decades ago, emailing had been small and simple.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
124 (\c
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
125 .Pn /bin/mail
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
126 had once covered anything there was to email and still had been small
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
127 and simple.)
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
128 Then the essential complexity of email increased.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
129 Email tools needed to react.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
130 In nmh, for instance, the POP server, which the original MH had included,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
131 was removed.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
132 Now is the time to go one step further and remove the MSA and MRA.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
133 Not only does it decrease the code amount of the project,
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
134 but more important, it removes the whole field of message transfer
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
135 with all its implications for the project.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
136 It removes the need to adjust to any changes concerning network transfer.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
137 This independence is received by depending on an external program
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
138 that covers the field.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
139 Today, this is a reasonable exchange.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
140 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
141 To add some kind of function, there's always the choice
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
142 among implementing the function in the project directly,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
143 depending on a library that provides the function, or depending on
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
144 a program that provides the function.
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
145 Whereas adding the function directly to the project increases the
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
146 code size most and requires most maintenance and development work,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
147 it makes the project most independent.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
148 Using libraries or external programs require less
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
149 maintenance work.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
150 Programs have the smallest interfaces, providing the most separation
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
151 but possibly limiting the information exchange.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
152 External libraries are stronger connected than external programs but
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
153 allow better information exchange.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
154 Adding more code to a project does always increase maintenance work.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
155 Implementing complex functions directly in the project will add
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
156 a lot of code. This should be avoided if possible.
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
157 Hence, the dependencies only change in kind, not in their existence.
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
158 In mmh, library dependencies on
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
159 .Pn libsasl2
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
160 and
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
161 .Pn libcrypto /\c
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
162 .Pn libssl
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
163 were treated against program dependencies on an MSA and an MRA.
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
164 Besides program dependencies providing the stronger separation
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
165 and being more flexible, they also allowed
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
166 over 6\|000 lines of code to be removed from mmh.
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
167 This made mmh's code base about 12\|% smaller.
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
168 Reducing the projects code size by such an amount without actually
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
169 losing function is a convincing argument.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
170 Actually, as external MSAs and MRAs are likely better
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
171 than the project's internal version, the user even gains functionality.
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
172 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
173 Users of MH should not have problems to set up an external MSA and MRA.
60
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
174 Also, the popular MSAs and MRAs have large communities and a lot
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
175 of documentation available.
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
176 Choices for MSAs range from the full-featured
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
177 .I Postfix
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
178 over mid-size solutions like
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
179 .I masqmail
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
180 and
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
181 .I dma
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
182 to small forwarders like
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
183 .I ssmtp
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
184 and
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
185 .I nullmailer .
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
186 Choices for MRAs include
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
187 .I fetchmail ,
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
188 .I getmail ,
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
189 .I mpop
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
190 and
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
191 .I fdm .
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
192
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
193
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
194 .H2 "Removal of non-MUA Tools
6a92e0208de0 Wrote about the removal of the mail transfer facilities.
markus schnalke <meillo@marmaro.de>
parents: 58
diff changeset
195 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
196 Some MH tools were removed because they didn't add to the MUA's job.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
197 It is a design goal of mmh to remove the parts that are rarely used.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
198 The project shall become more stream-lined and focused.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
199 Rarely used and loosely related tools distract from the lean appearance.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
200 They require maintenance work without adding to the core task.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
201 In mmh the following tools are not available anymore:
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
202 .BU
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
203 .Pn conflict
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
204 was removed because it is a mail system maintenance tool.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
205 .Ci 8b235097cbd11d728c07b966cf131aa7133ce5a9
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
206 Besides, it even checks
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
207 .Fn /etc/passwd
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
208 and
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
209 .Fn /etc/group
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
210 for consistency, which has nothing at all to do with emailing.
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
211 The tool might be useful, but it should not be shipped with mmh.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
212 .\" XXX historic reasons?
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
213 .BU
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
214 .Pn rcvtty
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
215 was removed because its usecase of writing to the user's terminal
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
216 on receiving of mail is obsolete.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
217 .Ci 14767c94b3827be7c867196467ed7aea5f6f49b0
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
218 If users like to be
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
219 informed of new mail, the shell's
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
220 .Ev MAILPATH
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
221 variable or graphical notifications are more appealing.
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
222 Writing directly to a terminals is hardly ever wanted today.
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
223 If though one wants to have it this way, the standard tool
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
224 .Pn write
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
225 can be used in a way similar to:
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
226 .VS
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
227 scan -file - | write `id -un`
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
228 VE
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
229 .BU
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
230 .Pn viamail
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
231 was removed when the new attachment system was activated, because
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
232 .Pn forw
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
233 could then cover the task itself.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
234 .Ci eda72d6a7a7c20ff123043fb7f19c509ea01f932
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
235 The program
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
236 .Pn sendfiles
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
237 was rewritten as a shell script wrapper around
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
238 .Pn forw .
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
239 .Ci 0e82199cf3c991a173e0ac8aa776efdb3ded61e6
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
240 .BU
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
241 .Pn msgchk
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
242 was removed, because it lost its use case when POP support was removed.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
243 .Ci bb9360ead7eb7a3fedcce2eeedfc660014e41dbe
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
244 A call to
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
245 .Pn msgchk
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
246 provided hardly more information than
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
247 .VS
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
248 ls -l /var/mail/meillo
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
249 VE
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
250 though it distinguished between old and new mail.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
251 This detail information and can be retrieved with
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
252 .Pn stat (1),
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
253 too.
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
254 A very small shell script could be written to output the information
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
255 in a similar way, if truly necessary.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
256 As mmh's
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
257 .Pn inc
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
258 only incorporates mail from the user's local maildrop
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
259 and thus no data transfers over slow networks are involved,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
260 there's hardly any need to check for new mail before incorporating it.
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
261 .BU
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
262 .Pn msh
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
263 was removed because the tool was in conflict with the philosophy of MH.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
264 .Ci 916690191222433a6923a4be54b0d8f6ac01bd02
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
265 It provided an interactive shell to access the features of MH,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
266 but it wasn't just a shell, tailored to the needs of mail handling.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
267 Instead it was one large program that had several MH tools built in.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
268 This conflicts with the major feature of MH of being a tool chest.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
269 .Pn msh 's
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
270 main use case had been accessing Bulletin Boards, which have seized to
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
271 be popular.
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
272 .P
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
273 Removing
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
274 .Pn msh ,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
275 together with the truly archaic code relicts
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
276 .Pn vmh
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
277 and
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
278 .Pn wmh ,
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
279 saved more than 7\|000 lines of C code \(en
66
4c9f4d05d90e Rework and extension of text from yesterday.
markus schnalke <meillo@marmaro.de>
parents: 63
diff changeset
280 about 15\|% of the project's original source code amount.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
281 .P
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
282 Having less code (with equal readability, of course)
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
283 for the same functionality is an advantage.
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
284 Less code means less bugs and less maintenance work.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
285 As
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
286 .Pn rcvtty
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
287 and
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
288 .Pn msgchk
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
289 are rarely used and can be implemented in different ways,
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
290 then why should one keep them?
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
291 Removing them stream-lines mmh.
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
292 .Pn viamail 's
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
293 use case is now partly obsolete and partly covered by
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
294 .Pn forw ,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
295 hence there's no reason to still maintain it.
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
296 .Pn conflict
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
297 is not related to the mail client, and
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
298 .Pn msh
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
299 conflicts with the basic concept of MH.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
300 Theses two tools might still be useful, but they should not be part of mmh.
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
301 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
302 Finally, there's
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
303 .Pn slocal .
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
304 .Pn slocal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
305 is an MDA and thus not directly MUA-related.
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
306 It should be removed, because including it is a violation
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
307 of the idea that mmh is a MUA only.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
308 It should become a separate project.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
309 But
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
310 .Pn slocal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
311 provides rule-based processing of messages, like filing them into
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
312 different folders, which is otherwise not available in mmh.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
313 Further more,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
314 .Pn slocal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
315 does neither pull dependencies nor a whole new technical area
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
316 into the project.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
317 (See section XXX for the removing of the ndbm dependency.)
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
318 Still,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
319 .Pn slocal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
320 accounts for about 1\|000 lines of code that need to be maintained.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
321 As
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
322 .Pn slocal
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
323 is almost self-standing, it should be split off into a separate project.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
324 This would cut the strong connection between the MUA mmh and the MDA
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
325 .Pn slocal .
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
326 The MDA would become an alternative to
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
327 .I procmail ,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
328 as it would no longer be the need to install a complete MH system, too.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
329 Likewise, mmh users could decide to use
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
330 .I procmail
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
331 without having a second, unused MDA (\c
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
332 .Pn slocal )
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
333 installed.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
334 That's conceptionally the best solution.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
335 Yet,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
336 .Pn slocal
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
337 was not removed.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
338 I feel unsure with the removal.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
339 Hence, the decision over
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
340 .Pn slocal
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
341 is deferred.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
342 This does not hurt because
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
343 .Pn slocal
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
344 is completely unrelated to the rest of mmh.
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
345
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
346
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
347 .H2 "\fLshow\fP and \fPmhshow\fP
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
348 .P
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
349 Since the very beginning \(en already in the first concept paper \(en
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
350 .Pn show
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
351 had been MH's message display program.
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
352 .Pn show
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
353 mapped message numbers and sequences to files and invoked
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
354 .Pn mhl
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
355 to have the files formated.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
356 For MIME, this approach wasn't sufficient anymore.
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
357 MIME messages can consist of multiple parts, some of which aren't
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
358 directly displayable, and text content might be encoded in
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
359 foreign charsets.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
360 .Pn show 's
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
361 understanding of messages and
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
362 .Pn mhl 's
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
363 limited display facilities couldn't cope with the task any longer.
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
364 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
365 Instead of extending these tools, additional tools were written from scratch
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
366 and then added to the MH tool chest. Doing so is encouraged by the
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
367 tool chest approach. The new tools could be added without interfering
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
368 with the existing ones.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
369 Modular design is a great advantage for extending a system.
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
370 First, the new MIME features were added in form of the single program
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
371 .Pn mhn .
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
372 The command
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
373 .Cl "mhn -show 42
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
374 would show the MIME message numbered 42.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
375 With the 1.0 release of nmh in February 1999, Richard Coleman finished
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
376 the split of
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
377 .Pn mhn
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
378 into a set of specialized programs, which together covered the
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
379 multiple aspects of MIME. One of these resulting tools was
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
380 .Pn mhshow ,
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
381 which replaced the
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
382 .Cl "mhn -show
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
383 call.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
384 It was capable to display a MIME message appropriately.
62
24aabbfe5794 Minor rework of larger text areas.
markus schnalke <meillo@marmaro.de>
parents: 60
diff changeset
385 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
386 From then on, two message display tools were part of nmh:
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
387 .Pn show
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
388 and
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
389 .Pn mhshow .
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
390 Because the user should not need to invoke the right tool
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
391 whether the message uses MIME or not,
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
392 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
393 was extended to automatically hand the job over to
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
394 .Pn mhshow
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
395 if displaying the message would be beyond
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
396 .Pn show 's
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
397 abilities.
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
398 In consequence, the user would invoke
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
399 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
400 (possibly through
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
401 .Pn next
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
402 or
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
403 .Pn prev )
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
404 and get the message printed with either
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
405 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
406 or
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
407 .Pn mhshow ,
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
408 whatever was more appropriate.
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
409 (There was also a switch for
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
410 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
411 to never invoke
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
412 .Pn mhshow .
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
413 .Pn show
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
414 was able to display MIME messages if they contained only a single text
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
415 part.)
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
416 .P
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
417 Having two similar tools for essentially the same task is redundant.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
418 The development of both programs needed to be in sync,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
419 to ensure that the programs behaved in a similar way,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
420 because they were used like a single tool.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
421 Different behavior would have surprised the user.
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
422 .P
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
423 Today, non-MIME messages are rather seen to be a special case of
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
424 MIME messages, than MIME messages are seen to be an extension to
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
425 original email.
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
426 As
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
427 .Pn mhshow
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
428 had already be able to display non-MIME messages, it was natural
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
429 to drop
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
430 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
431 in favor of using
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
432 .Pn mhshow
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
433 exclusively.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
434 This decision followed the idea of orthogonal design.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
435 For convenience,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
436 .Pn mhshow
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
437 was then renamed to
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
438 .Pn show .
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
439 .Ci 4c1efddfd499300c7e74263e57d8aa137e84c853
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
440 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
441 To prepare for this transition,
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
442 .Pn mhshow
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
443 was reworked to behave more like
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
444 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
445 first.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
446 (Section XXX describes this rework from a different perspective.)
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
447 Once the tools behaved similar, the replacing became a natural decision.
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
448 In mmh,
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
449 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
450 is the one single message display program again, but it handles
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
451 MIME messages as well as non-MIME messages.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
452 Now, there's only one program to maintain, and users don't need to deal
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
453 with the existance of two display programs.
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
454 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
455 There's one reason why removing the old
69
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
456 .Pn show
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
457 hurts: It had been such a simple program.
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
458 Its lean elegance is missing to
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
459 .Pn mhshow ,
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
460 i.e. the new
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
461 .Pn show .
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
462 But there is no chance, because supporting MIME causes essentially
f80ced4e749b Wrote more about the show-mhshow merge.
markus schnalke <meillo@marmaro.de>
parents: 66
diff changeset
463 higher complexity.
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
464
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
465
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
466 .H2 "Removal of Configure Options
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
467 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
468 Customization is a double-edged sword.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
469 It allows better suiting setups, but not for free.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
470 There is the cost of code complexity to be able to customize.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
471 There is the cost of less tested setups, because there are
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
472 more possible setups and especially corner-cases.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
473 And, there is the cost of choice itself.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
474 The code complexity directly affects the developers.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
475 Less tested code affects both, users and developers.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
476 The problem of choice affects the users, for once by having to
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
477 choose, but also by complexer interfaces that require more documentation.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
478 Whenever options add little advantages, they should be considered for
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
479 removal.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
480 I have reduced the number of project-specific configure options from
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
481 fifteen to three.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
482
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
483 .U3 "Mail Transfer Facilities
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
484 .P
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
485 With the removal of the mail transfer facilities five option vanished:
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
486 .IP \f(CW--with-mts=[smtp|sendmail]\fP
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
487 Specified the default mail transport service, which now is sendmail always.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
488 .IP \f(CW--with-smtpservers=[server1...]\fP
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
489 Specified the default SMTP servers for the smtp mail transfer service.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
490 .Ci 128545e06224233b7e91fc4c83f8830252fe16c9
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
491 .IP \f(CW--with-cyrus-sasl\fP
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
492 Enabled SASL support for mail transfer.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
493 .IP \f(CW--with-tls\fP
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
494 Enabled TLS support for mail transfer.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
495 .IP \f(CW--enable-pop\fP
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
496 Enabled the message retrieval facility.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
497
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
498 .U3 "Backup Prefix
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
499 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
500 The backup prefix is the string that was prepended to message
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
501 filenames to tag them as deleted.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
502 By default it had been the comma character `\f(CW,\fP'.
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
503 In July 2000, Kimmo Suominen introduced
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
504 the configure option
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
505 .Sw --with-hash-backup
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
506 to change the default to the hash symbol `\f(CW#\fP'.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
507 The choice was probably personal preference, because first, the
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
508 option was named
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
509 .Sw --with-backup-prefix.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
510 and had the prefix symbol as argument.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
511 Because giving the hash symbol as argument caused to many problems
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
512 for configure,
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
513 the option was limited to use the hash symbol as the default prefix.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
514 This makes me believe, that the choice for the hash was personal preference.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
515 Being it related or not, words that start with the hash symbol
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
516 introduce a comment in the Unix shell.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
517 Thus, the command line
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
518 .Cl "rm #13 #15
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
519 calls
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
520 .Pn rm
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
521 without arguments because the first hash symbol starts the comment
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
522 that reaches until the end of the line.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
523 To delete the backup files,
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
524 .Cl "rm ./#13 ./#15"
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
525 needs to be used.
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
526 Using the hash as backup prefix can be seen as a precaution agains
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
527 data loss.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
528 .P
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
529 I removed the configure option but added the profile entry
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
530 .Pe backup-prefix ,
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
531 which allows to specify an arbitrary string as backup prefix.
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
532 .Ci 6c40d481d661d532dd527eaf34cebb6d3f8ed086
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
533 Profile entries are the common method to change mmh's behavior.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
534 This change did not remove the choice but moved it to a location where
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
535 it suited better.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
536 .P
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
537 Eventually, however, the new trash folder concept
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
538 .Cf "Sec. XXX
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
539 obsoleted the concept of the backup prefix completely.
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
540 .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
541 (Well, there still are corner-cases to remove until the backup
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
542 prefix can be layed to rest, eventually.)
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
543 .\" FIXME: Do this work in the code!
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
544
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
545 .U3 "Editor and Pager
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
546 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
547 The two configure options
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
548 .CW --with-editor=EDITOR
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
549 .CW --with-pager=PAGER
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
550 were used to specify the default editor and pager at configure time.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
551 Doing so at configure time made sense in the Eighties,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
552 when the set of available editors and pagers varied much across
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
553 different systems.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
554 Today, the situation is more homegeneic.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
555 The programs
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
556 .Pn vi
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
557 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
558 .Pn more
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
559 can be expected to be available on every Unix system,
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
560 as they are specified by POSIX since two decades.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
561 (The specifications for
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
562 .Pn vi
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
563 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
564 .Pn more
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
565 appeared in
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
566 .[
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
567 posix 1987
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
568 .]
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
569 and,
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
570 .[
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
571 posix 1992
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
572 .]
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
573 respectively.)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
574 As a first step, these two tools were hard-coded as defaults.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
575 .Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
576 Not changed were the
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
577 .Pe editor
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
578 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
579 .Pe moreproc
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
580 profile entries, which allowed the user to override the system defaults.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
581 Later, the concept was reworked to respect the standard environment
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
582 variables
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
583 .Ev VISUAL
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
584 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
585 .Ev PAGER
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
586 if they are set.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
587 Today, mmh determines the editor to use in the following order,
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
588 taking the first available and non-empty item:
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
589 .IP (1)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
590 Environment variable
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
591 .Ev MMHEDITOR
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
592 .IP (2)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
593 Profile entry
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
594 .Pe Editor
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
595 .IP (3)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
596 Environment variable
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
597 .Ev VISUAL
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
598 .IP (4)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
599 Environment variable
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
600 .Ev EDITOR
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
601 .IP (5)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
602 Command
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
603 .Pn vi .
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
604 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
605 .Ci f85f4b7ae62e3d05a945dcd46ead51f0a2a89a9b
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
606 .P
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
607 The pager to use is deteminded in a similar order,
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
608 also taking the first available and non-empty item:
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
609 .IP (1)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
610 Environment variable
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
611 .Ev MMHPAGER
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
612 .IP (2)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
613 Profile entry
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
614 .Pe Pager
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
615 (replaces
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
616 .Pe moreproc )
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
617 .IP (3)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
618 Environment variable
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
619 .Ev PAGER
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
620 .IP (4)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
621 Command
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
622 .Pn more .
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
623 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
624 .Ci 0c4214ea2aec6497d0d67b436bbee9bc1d225f1e
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
625 .P
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
626 By respecting the
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
627 .Ev VISUAL /\c
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
628 .Ev EDITOR
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
629 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
630 .Ev PAGER
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
631 environment variables,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
632 the new behavior confirms better to the common style on Unix systems.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
633 Additionally, the new approach is more uniform and clearer to users.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
634
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
635 .U3 "Locale
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
636 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
637 The configure option
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
638 .Sw --disable-locale
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
639 was removed because today there's hardly any need to disable locale
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
640 support.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
641 .Ci ccf4f175ef4c4e7522f9510a4a1149c15d810dd9
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
642
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
643 .U3 "ndbm
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
644 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
645 .Pn slocal
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
646 used to depend on
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
647 .I ndbm ,
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
648 a database library.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
649 The database is used to store the `\fLMessage-ID\fP's of all
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
650 messages delivered.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
651 This enables
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
652 .Pn slocal
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
653 to suppress delivering the same message to the same user twice.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
654 (This features was enabled by the
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
655 .Sw -suppressdup
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
656 switch.)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
657 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
658 A variety of version of the database library exist.
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
659 .[
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
660 wolter unix incompat notes dbm
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
661 .]
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
662 Complicated autoconf code was needed to detect them correctly.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
663 Further more, the configure switches
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
664 .Sw --with-ndbm=ARG
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
665 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
666 .Sw --with-ndbmheader=ARG
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
667 were added to help with difficult setups that would
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
668 not be detected automatically or correctly.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
669 .P
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
670 By removing the suppress duplicates feature of
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
671 .Pn slocal ,
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
672 the dependency on
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
673 .I ndbm
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
674 vanished and 120 lines of complex autoconf code could be saved.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
675 .Ci ecd6d6a20cb7a1507e3a20d6c4cb3a1cf14c6bbf
78
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
676 The change removed funtionality too, but that is minor to the
64f177ca2af1 Text rework.
markus schnalke <meillo@marmaro.de>
parents: 76
diff changeset
677 improvement by dropping the dependency and the complex autoconf code.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
678
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
679 .U3 "mh-e Support
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
680 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
681 The configure option
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
682 .Sw --disable-mhe
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
683 was removed when the mh-e support was reworked.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
684 Mh-e is the Emacs front-end to MH.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
685 It requires MH to provide minor additional functions.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
686 The
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
687 .Sw --disable-mhe
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
688 configure option could switch these extensions off.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
689 After removing the support for old versions of mh-e,
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
690 only the
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
691 .Sw -build
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
692 switches of
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
693 .Pn forw
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
694 and
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
695 .Pn repl
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
696 are left to be mh-e extensions.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
697 They are now always built in because they add little code and complexity.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
698 In consequence, the
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
699 .Sw --disable-mhe
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
700 configure option was removed
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
701 .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
702 Removing the option removed a second code setup that would have
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
703 needed to be tested.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
704 This change was first done in nmh and thereafter merged into mmh.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
705 .P
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
706 The interface changes in mmh require mh-e to be adjusted in order
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
707 to be able to use mmh as back-end.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
708 This will require minor changes to mh-e, but removing the
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
709 .Sw -build
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
710 switches would require more rework.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
711
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
712 .U3 "Masquerading
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
713 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
714 The configure option
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
715 .Sw --enable-masquerade
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
716 could take up to three arguments:
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
717 `draft_from', `mmailid', and `username_extension'.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
718 They activated different types of address masquerading.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
719 All of them were implemented in the SMTP-speaking
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
720 .Pn post
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
721 command, which provided an MSA.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
722 Address masquerading is an MTA's task and mmh does not cover
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
723 this field anymore.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
724 Hence, true masquerading needs to be implemented in the external MTA.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
725 .P
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
726 The
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
727 .I mmailid
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
728 masquerading type is the oldest one of the three and the only one
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
729 available in the original MH.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
730 It provided a
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
731 .I username
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
732 to
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
733 .I fakeusername
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
734 mapping, based on the password file's GECOS field.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
735 The man page
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
736 .Mp mh-tailor(5)
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
737 described the use case as being the following:
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
738 .QP
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
739 This is useful if you want the messages you send to always
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
740 appear to come from the name of an MTA alias rather than your
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
741 actual account name. For instance, many organizations set up
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
742 `First.Last' sendmail aliases for all users. If this is
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
743 the case, the GECOS field for each user should look like:
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
744 ``First [Middle] Last <First.Last>''
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
745 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
746 As mmh sends outgoing mail via the local MTA only,
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
747 the best location to do such global rewrites is there.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
748 Besides, the MTA is conceptionally the right location because it
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
749 does the reverse mapping for incoming mail (aliasing), too.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
750 Further more, masquerading set up there is readily available for all
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
751 mail software on the system.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
752 Hence, mmailid masquerading was removed.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
753 .Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
754 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
755 The
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
756 .I username_extension
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
757 masquerading type did not replace the username but would append a suffix,
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
758 specified by the
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
759 .Ev USERNAME_EXTENSION
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
760 environment variable, to it.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
761 This provided support for the
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
762 .I user-extension
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
763 feature of qmail and the similar
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
764 .I "plussed user
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
765 processing of sendmail.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
766 The decision to remove this username_extension masquerading was
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
767 motivated by the fact that
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
768 .Pn spost
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
769 hadn't supported it already.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
770 .Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
771 Username extensions are possible in mmh, but less convenient to use.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
772 .\" XXX format file %(getenv USERNAME_EXTENSION)
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
773 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
774 The
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
775 .I draft_from
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
776 masquerading type instructed
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
777 .Pn post
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
778 to use the value of the `From:' header as SMTP envelope sender.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
779 Sender addresses could be replaced completely.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
780 .Ci b14ea6073f77b4359aaf3fddd0e105989db9
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
781 Mmh offers a kind of masquerading similar in effect, but
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
782 with technical differences.
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
783 As mmh does not transfer messages itself, the local MTA has final control
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
784 over the sender's address. Any masquerading mmh introduces may be reverted
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
785 by the MTA.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
786 In times of pedantic spam checking, an MTA will take care to use
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
787 sensible envelope sender addresses to keep its own reputation up.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
788 Nonetheless, the MUA can set the `From:' header and thereby propose
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
789 a sender address to the MTA.
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
790 The MTA may then decide to take that one or generate the canonical sender
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
791 address for use as envelope sender address.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
792 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
793 In mmh, the MTA will always extract the recipient and sender from the
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
794 message headers (\c
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
795 .Pn sendmail 's
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
796 .Sw -t
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
797 switch).
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
798 The `From:' header of the draft may be set arbitrary by the user.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
799 If it is missing, the canonical sender address will be generated by the MTA.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
800
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
801 .U3 "Remaining Options
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
802 .P
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
803 Two configure options remain in mmh.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
804 One is the locking method to use:
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
805 .Sw --with-locking=[dot|fcntl|flock|lockf] .
76
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
806 The idea of removing all methods except the portable dot locking
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
807 and having that one as the default is appealing, but this change
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
808 requires deeper technical investigation into the topic.
2e61e0004a8f Rework of existing text.
markus schnalke <meillo@marmaro.de>
parents: 74
diff changeset
809 The other option,
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
810 .Sw --enable-debug ,
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
811 compiles the programs with debugging symbols and does not strip them.
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
812 This option is likely to stay.
72
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
813
bae9273b5802 Wrote about configure options (not finished yet).
markus schnalke <meillo@marmaro.de>
parents: 69
diff changeset
814
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
815
63
abbaca05ee8e More text.
markus schnalke <meillo@marmaro.de>
parents: 62
diff changeset
816
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
817 .H2 "Removal of switches
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
818 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
819
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
820
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
821
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
822
74
cefaa856d431 A lot of new text about configure switches.
markus schnalke <meillo@marmaro.de>
parents: 72
diff changeset
823 .H1 "Modernizing
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
824
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
825
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
826 .H2 "Removal of Code Relicts
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
827 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
828 The code base of mmh originates from the late Seventies,
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
829 had been extensively
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
830 worked on in the mid Eighties, and had been partly reorganized and extended
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
831 in the Nineties. Relicts of all those times had gathered in the code base.
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
832 My goal was to remove any ancient code parts. One part of the task was
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
833 converting obsolete code constructs to standard constructs, the other part
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
834 was dropping obsolete functions.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
835 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
836 As I'm not even thirty years old and have no more than seven years of
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
837 Unix experience, I needed to learn about the history in retrospective.
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
838 Older people likely have used those ancient constructs themselves
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
839 and have suffered from their incompatibilities and have longed for
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
840 standardization. Unfortunately, I have only read that others had done so.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
841 This put me in a much more difficult positions when working on the old
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
842 code. I needed to recherche what other would have known by heart from
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
843 experience. All my programming experience comes from a time past ANSI C
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
844 and past POSIX. Although I knew about the times before, I took the
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
845 current state implicitly for granted most of the time.
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
846 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
847 Being aware of
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
848 these facts, I rather let people with more historic experience solve the
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
849 task of converting the ancient code constructs to standardized ones.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
850 Luckily, Lyndon Nerenberg focused on this task at the nmh project.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
851 He converted large parts of the code to POSIX constructs, removing
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
852 the conditionals compilation for now standardized features.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
853 I'm thankful for this task being solved. I only pulled the changes into
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
854 mmh.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
855 .P
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
856 The other task \(en dropping ancient functionality to remove old code \(en
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
857 I did myself, though. My position to strip mmh to the bare minimum of
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
858 frequently used features is much more revolutional than the nmh community
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
859 likes it. Without the need to justify my decisions, I was able to quickly
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
860 remove functionality I considered ancient.
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
861 The need to discuss my decisions with
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
862 peers likely would have slowed this process down. Of course, I researched
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
863 if a particular feature really should be dropped. Having not had any
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
864 contact to this feature within my computer life was a first indicator to
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
865 drop it, but I also asked others and searched the literature for modern
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
866 usage of the feature. If it appeared to be truly ancient, I dropped it.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
867 The reason for dropping is always part of the commit message in the
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
868 version control system. Thus, it is easy for others to check their
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
869 view on the topic with mine and possibly to argue for reinclusion.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
870
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
871 .U2 "MMDF maildrop support
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
872 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
873 I did drop any support for the MMDF maildrop format. This type of format
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
874 is conceptionally similar to the mbox format, but uses four bytes with
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
875 value 1 (\fL^A^A^A^A\fP) as message delimiter,
18
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
876 instead of the string ``\fLFrom\ \fP''.
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
877 Due to the similarity and mbox being the de-facto standard maildrop
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
878 format on Unix, but also due to the larger influence of Sendmail than MMDF,
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
879 the MMDF maildrop format had vanished.
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
880 .P
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
881 The simplifications within the code were only moderate. Switches could
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
882 be removed from tools like
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
883 .L packf ,
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
884 which generate packed mailboxes. Only one packed mailbox format remained:
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
885 mbox.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
886 The most important changes affect the equally named mail parsing routine in
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
887 .L sbr/m_getfld.c .
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
888 The direct MMDF code had been removed, but as now only one packed mailbox
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
889 format is left, code structure simplifications are likely possible.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
890 The reason why they are still outstanding is the heavily optimized code
18
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
891 of
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
892 .Fu m_getfld() .
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
893 Changes beyond a small local scope \(en
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
894 which restructuring in its core is \(en cause a high risk of damaging
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
895 the intricate workings of the optimized code. This problem is know
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
896 to the developers of nmh, too. They also avoid touching this minefield
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
897 if possible.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
898
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
899 .U2 "UUCP Bang Paths
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
900 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
901 More questionably than the former topic is the removal of support for the
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
902 UUCP bang path address style. However, the user may translate the bang
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
903 paths on retrieval to Internet addresses and the other way on posting
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
904 messages. The former can be done my an MDA like procmail; the latter
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
905 by a sendmail wrapper. This would ensure that any address handling would
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
906 work as expected. However, it might just work well without any
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
907 such modifications, as mmh does not touch addresses much, in general.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
908 But I can't ensure as I have never used an environment with bang paths.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
909 Also, the behavior might break at any point in further development.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
910
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
911 .U2 "Hardcopy terminal support
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
912 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
913 More of a funny anecdote is the remaining of a check for printing to a
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
914 hardcopy terminal until Spring 2012, when I finally removed it.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
915 I surely would be very happy to see such a terminal in action, maybe
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
916 actually being able to work on it, but I fear my chances are null.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
917 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
918 The check only prevented a pager to be placed between the outputting
18
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
919 program (\c
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
920 .Pn mhl )
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
921 and the terminal. This could have been ensured with
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
922 the
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
923 .Sw -nomoreproc
18
db3567c9cc3f style: Added format macros for files, functions, switches, etc.
markus schnalke <meillo@marmaro.de>
parents: 17
diff changeset
924 at the command line statically, too.
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
925
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
926 .U2 "Removed support for header fields
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
927 .P
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
928 The `Encrypted' header had been introduced by RFC\^822, but already
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
929 marked legacy in RFC 2822. It was superseded by FIXME.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
930 Mmh does no more support this header.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
931 .P
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
932 Native support for `Face' headers
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
933 had been removed, as well.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
934 The feature is similar to the `X-Face' header in its intent,
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
935 but takes a different approach to store the image.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
936 Instead of encoding the image data directly into the header,
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
937 the the header contains the hostname and UDP port where the image
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
938 date could be retrieved.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
939 Neither `X-Face' nor the here described `Face' system
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
940 \**
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
941 .FS
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
942 There is also a newer but different system, invented 2005,
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
943 using `Face' headers.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
944 It is the successor of `X-Face' providing colored PNG images.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
945 .FE
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
946 became well used in the large scale.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
947 It's still possible to use a Face systems,
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
948 although mmh does not provide support for any of the different systems
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
949 anymore. It's fairly easy to write a small shell script to
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
950 extract the embedded or fetch the external Face data and display the image.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
951 Own Face headers can be added into the draft template files.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
952 .P
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
953 `Content-MD5' headers were introduced by RFC\^1864. They provide only
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
954 a verification of data corruption during the transfer. By no means can
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
955 they ensure verbatim end-to-end delivery of the contents. This is clearly
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
956 stated in the RFC. The proper approach to provide verificationability
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
957 of content in an end-to-end relationship is the use of digital cryptography
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
958 (RFCs FIXME). On the other hand, transfer protocols should ensure the
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
959 integrity of the transmission. In combinations these two approaches
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
960 make the `Content-MD5' header field useless. In consequence, I removed
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
961 the support for it. By this removal, MD5 computation is not needed
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
962 anywhere in mmh. Hence, over 500 lines of code were removed by this one
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
963 change. Even if the `Content-MD5' header field is useful sometimes,
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
964 I value its usefulnes less than the improvement in maintainability, caused
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
965 by the removal.
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
966
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
967 .U2 "Prompter's Control Keys
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
968 .P
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
969 The program
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
970 .Pn prompter
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
971 queries the user to fill in a message form. When used by
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
972 .Pn comp
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
973 as:
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
974 .VS
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
975 comp -editor prompter
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
976 VE
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
977 the resulting behavior is similar to
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
978 .Pn mailx .
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
979 Apparently,
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
980 .Pn prompter
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
981 hadn't been touched lately. Otherwise it's hardly explainable why it
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
982 still offered the switches
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
983 .Sw "-erase \f(CIchr\fP
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
984 and
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
985 .Sw "-kill \f(CIchr\fP
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
986 to name the characters for command line editing.
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
987 The times when this had been necessary are long time gone.
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
988 Today these things work out-of-the-box, and if not, are configured
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
989 with the standard tool
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
990 .Pn stty .
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
991
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
992 .U2 "Vfork and Retry Loops
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
993 .P
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
994 MH creates many processes, which is a consequence of the tool chest approach.
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
995 In earlier times
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
996 .Fu fork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
997 had been an expensive system call, as the process's whole image needed
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
998 to be duplicated. One common case is replacing the image with
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
999 .Fu exec()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1000 right after having forked the child process.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1001 To speed up this case, the
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1002 .Fu vfork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1003 system call was invented at Berkeley. It completely omits copying the
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1004 image. If the image gets replaced right afterwards then unnecessary
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1005 work is omited. On old systems this results in large speed ups.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1006 MH uses
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1007 .Fu vfork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1008 whenever possible.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1009 .P
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1010 Memory management units that support copy-on-write semantics make
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1011 .Fu fork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1012 almost as fast as
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1013 .Fu vfork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1014 in the cases when they can be exchanged.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1015 With
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1016 .Fu vfork()
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
1017 being more error-prone and hardly faster, it's preferable to simply
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1018 use
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1019 .Fu fork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1020 instead.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1021 .P
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1022 Related to the costs of
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1023 .Fu fork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1024 is the probability of its success.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1025 Today on modern systems, the system call will succeed almost always.
51
49cf68506b5d Spell checking.
markus schnalke <meillo@marmaro.de>
parents: 49
diff changeset
1026 In the Eighties on heavy loaded systems, as they were common at
21
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1027 universities, this had been different. Thus, many of the
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1028 .Fu fork()
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1029 calls were wrapped into loops to retry to fork several times in
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1030 short intervals, in case of previous failure.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1031 In mmh, the program aborts at once if the fork failed.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1032 The user can reexecute the command then. This is expected to be a
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1033 very rare case on modern systems, especially personal ones, which are
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1034 common today.
bb8a8be49024 Wrote about Face support and vfork().
markus schnalke <meillo@marmaro.de>
parents: 20
diff changeset
1035
12
7ca384d68edc Wrote some text for removal of old code.
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
1036
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1037 .H2 "Attachments
22
99409e4546d2 Wrote about the removal of tools.
markus schnalke <meillo@marmaro.de>
parents: 21
diff changeset
1038 .P
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1039 MIME
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1040
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1041
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1042 .H2 "Digital Cryptography
22
99409e4546d2 Wrote about the removal of tools.
markus schnalke <meillo@marmaro.de>
parents: 21
diff changeset
1043 .P
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1044 Signing and encryption.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1045
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1046
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1047 .H2 "Good Defaults
22
99409e4546d2 Wrote about the removal of tools.
markus schnalke <meillo@marmaro.de>
parents: 21
diff changeset
1048 .P
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1049 foo
22
99409e4546d2 Wrote about the removal of tools.
markus schnalke <meillo@marmaro.de>
parents: 21
diff changeset
1050
99409e4546d2 Wrote about the removal of tools.
markus schnalke <meillo@marmaro.de>
parents: 21
diff changeset
1051
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1052
14
55ec590cfa07 Wrote about the draft folder.
markus schnalke <meillo@marmaro.de>
parents: 12
diff changeset
1053
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1054 .H1 "Code style
16
81f703140554 Wrote about the trash folder.
markus schnalke <meillo@marmaro.de>
parents: 14
diff changeset
1055 .P
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1056 foo
16
81f703140554 Wrote about the trash folder.
markus schnalke <meillo@marmaro.de>
parents: 14
diff changeset
1057
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1058
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1059 .H2 "Standard Code
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1060 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1061 POSIX
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1062
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1063
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1064 .H2 "Separation
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1065
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1066 .U2 "MH Directory Split
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1067 .P
19
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1068 In MH and nmh, a personal setup had consisted of two parts:
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1069 The MH profile, named
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1070 .Fn \&.mh_profile
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1071 and being located directly in the user's home directory.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1072 And the MH directory, where all his mail messages and also his personal
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1073 forms, scan formats, other configuration files are stored. The location
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1074 of this directory could be user-chosen. The default was to name it
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1075 .Fn Mail
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1076 and have it directly in the home directory.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1077 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1078 I've never liked the data storage and the configuration to be intermixed.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1079 They are different kinds of data. One part, are the messages,
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1080 which are the data to operate on. The other part, are the personal
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1081 configuration files, which are able to change the behavior of the operations.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1082 The actual operations are defined in the profile, however.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1083 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1084 When storing data, one should try to group data by its type.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1085 There's sense in the Unix file system hierarchy, where configuration
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1086 file are stored separate (\c
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1087 .Fn /etc )
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1088 to the programs (\c
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1089 .Fn /bin
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1090 and
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1091 .Fn /usr/bin )
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1092 to their sources (\c
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1093 .Fn /usr/src ).
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1094 Such separation eases the backup management, for instance.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1095 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1096 In mmh, I've reorganized the file locations.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1097 Still there are two places:
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1098 There's the mail storage directory, which, like in MH, contains all the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1099 messages, but, unlike in MH, nothing else.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1100 Its location still is user-chosen, with the default name
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1101 .Fn Mail ,
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1102 in the user's home directory. This is much similar to the case in nmh.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1103 The configuration files, however, are grouped together in the new directory
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1104 .Fn \&.mmh
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1105 in the user's home directory.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1106 The user's profile now is a file, named
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1107 .Fn profile ,
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1108 in this mmh directory.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1109 Consistently, the context file and all the personal forms, scan formats,
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1110 and the like, are also there.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1111 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1112 The naming changed with the relocation.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1113 The directory where everything, except the profile, had been stored (\c
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1114 .Fn $HOME/Mail ),
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1115 used to be called \fIMH directory\fP. Now, this directory is called the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1116 user's \fImail storage\fP. The name \fImmh directory\fP is now given to
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1117 the new directory
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1118 (\c
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1119 .Fn $HOME/.mmh ),
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1120 containing all the personal configuration files.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1121 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1122 The separation of the files by type of content is logical and convenient.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1123 There are no functional differences as any possible setup known to me
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1124 can be implemented with both approaches, although likely a bit easier
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1125 with the new approach. The main goal of the change had been to provide
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1126 sensible storage locations for any type of personal mmh file.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1127 .P
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1128 In order for one user to have multiple MH setups, he can use the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1129 environment variable
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1130 .Ev MH
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1131 the point to a different profile file.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1132 The MH directory (mail storage plus personal configuration files) is
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1133 defined by the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1134 .Pe Path
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1135 profile entry.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1136 The context file could be defined by the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1137 .Pe context
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1138 profile entry or by the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1139 .Ev MHCONTEXT
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1140 environment variable.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1141 The latter is useful to have a distinct context (e.g. current folders)
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1142 in each terminal window, for instance.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1143 In mmh, there are three environment variables now.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1144 .Ev MMH
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1145 may be used to change the location of the mmh directory.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1146 .Ev MMHP
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1147 and
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1148 .Ev MMHC
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1149 change the profile and context files, respectively.
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1150 Besides providing a more consistent feel (which simply is the result
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1151 of being designed anew), the set of personal configuration files can
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1152 be chosen independently from the profile (including mail storage location)
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1153 and context, now. Being it relevant for practical use or not, it
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1154 de-facto is an improvement. However, the main achievement is the
ab5253e48c74 Wrote about the directory split.
markus schnalke <meillo@marmaro.de>
parents: 18
diff changeset
1155 split between mail storage and personal configuration files.
17
b3c37947764e Several minor text improvements.
markus schnalke <meillo@marmaro.de>
parents: 16
diff changeset
1156
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1157
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1158 .H2 "Modularization
20
7a100c80fa91 Some new text (show/mhshow; prompter).
markus schnalke <meillo@marmaro.de>
parents: 19
diff changeset
1159 .P
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1160 whatnowproc
0
dc2bfef4cda7 Initial commit: Basic structure, macros and fonts.
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1161 .P
49
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1162 The \fIMH library\fP
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1163 .Fn libmh.a
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1164 collects a bunch of standard functions that many of the MH tools need,
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1165 like reading the profile or context files.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1166 This doesn't hurt the separation.
d3a02f5e63b3 Various rework.
markus schnalke <meillo@marmaro.de>
parents: 23
diff changeset
1167
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1168
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1169 .H2 "Style
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1170 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1171 Code layout, goto, ...
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1172
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1173
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1174
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1175
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1176 .H1 "Concept Exploitation/Homogeniety
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1177
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1178
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1179 .H2 "Draft Folder
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1180 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1181 Historically, MH provided exactly one draft message, named
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1182 .Fn draft
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1183 and
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1184 being located in the MH directory. When starting to compose another message
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1185 before the former one was sent, the user had been questioned whether to use,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1186 refile or replace the old draft. Working on multiple drafts at the same time
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1187 was impossible. One could only work on them in alteration by refiling the
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1188 previous one to some directory and fetching some other one for reediting.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1189 This manual draft management needed to be done each time the user wanted
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1190 to switch between editing one draft to editing another.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1191 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1192 To allow true parallel editing of drafts, in a straight forward way, the
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1193 draft folder facility exists. It had been introduced already in July 1984
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1194 by Marshall T. Rose. The facility was deactivated by default.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1195 Even in nmh, the draft folder facility remained deactivated by default.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1196 At least, Richard Coleman added the man page
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1197 .Mp mh-draft(5)
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1198 to document
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1199 the feature well.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1200 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1201 The only advantage of not using the draft folder facility is the static
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1202 name of the draft file. This could be an issue for MH frontends like mh-e.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1203 But as they likely want to provide working on multiple drafts in parallel,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1204 the issue is only concerning compatibility. The aim of nmh to stay compatible
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1205 prevented the default activation of the draft folder facility.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1206 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1207 On the other hand, a draft folder is the much more natural concept than
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1208 a draft message. MH's mail storage consists of folders and messages,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1209 the messages named with ascending numbers. A draft message breaks with this
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1210 concept by introducing a message in a file named
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1211 .Fn draft .
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1212 This draft
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1213 message is special. It can not be simply listed with the available tools,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1214 but instead requires special switches. I.e. corner-cases were
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1215 introduced. A draft folder, in contrast, does not introduce such
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1216 corner-cases. The available tools can operate on the messages within that
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1217 folder like on any messages within any mail folders. The only difference
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1218 is the fact that the default folder for
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1219 .Pn send
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1220 is the draft folder,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1221 instead of the current folder, like for all other tools.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1222 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1223 The trivial part of the change was activating the draft folder facility
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1224 by default and setting a default name for this folder. Obviously, I chose
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1225 the name
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1226 .Fn +drafts .
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1227 This made the
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1228 .Sw -draftfolder
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1229 and
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1230 .Sw -draftmessage
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1231 switches useless, and I could remove them.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1232 The more difficult but also the part that showed the real improvement,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1233 was updating the tools to the new concept.
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1234 .Sw -draft
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1235 switches could
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1236 be dropped, as operating on a draft message became indistinguishable to
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1237 operating on any other message for the tools.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1238 .Pn comp
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1239 still has its
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1240 .Sw -use
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1241 switch for switching between its two modes: (1) Compose a new
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1242 draft, possibly by taking some existing message as a form. (2) Modify
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1243 an existing draft. In either case, the behavior of
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1244 .Pn comp is
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1245 deterministic. There is no more need to query the user. I consider this
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1246 a major improvement. By making
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1247 .Pn send
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1248 simply operate on the current
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1249 message in the draft folder by default, with message and folder both
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1250 overridable by specifying them on the command line, it is now possible
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1251 to send a draft anywhere within the storage by simply specifying its folder
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1252 and name.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1253 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1254 All theses changes converted special cases to regular cases, thus
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1255 simplifying the tools and increasing the flexibility.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1256
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1257
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1258 .H2 "Trash Folder
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1259 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1260 Similar to the situation for drafts is the situation for removed messages.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1261 Historically, a message was deleted by renaming. A specific
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1262 \fIbackup prefix\fP, often comma (\c
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1263 .Fn , )
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1264 or hash (\c
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1265 .Fn # ),
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1266 being prepended to the file name. Thus, MH wouldn't recognize the file
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1267 as a message anymore, as only files whose name consists of digits only
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1268 are treated as messages. The removed messages remained as files in the
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1269 same directory and needed some maintenance job to truly delete them after
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1270 some grace time. Usually, by running a command similar to
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1271 .VS
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1272 find /home/user/Mail -ctime +7 -name ',*' | xargs rm
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1273 VE
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1274 in a cron job. Within the grace time interval
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1275 the original message could be restored by stripping the
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1276 the backup prefix from the file name. If however, the last message of
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1277 a folder is been removed \(en say message
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1278 .Fn 6
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1279 becomes file
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1280 .Fn ,6
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1281 \(en and a new message enters the same folder, thus the same
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1282 numbered being given again \(en in our case
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1283 .Fn 6
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1284 \(en, if that one
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1285 is removed too, then the backup of the former message gets overwritten.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1286 Thus, the ability to restore removed messages does not only depend on
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1287 the ``sweeping cron job'' but also on the removing of further messages.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1288 This is undesirable, because the real mechanism is hidden from the user
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1289 and the consequences of further removals are not always obvious.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1290 Further more, the backup files are scattered within the whole mail
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1291 storage, instead of being collected at one place.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1292 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1293 To improve the situation, the profile entry
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1294 .Pe rmmproc
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1295 (previously named
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1296 .Pe Delete-Prog )
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1297 was introduced, very early.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1298 It could be set to any command, which would care for the mail removal
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1299 instead of taking the default action, described above.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1300 Refiling the to-be-removed files to some garbage folder was a common
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1301 example. Nmh's man page
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1302 .Mp rmm(1)
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1303 proposes
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1304 .Cl "refile +d
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1305 to move messages to the garbage folder and
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1306 .Cl "rm `mhpath +d all`
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1307 the empty the garbage folder.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1308 Managing the message removal this way is a sane approach. It keeps
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1309 the removed messages in one place, makes it easy to remove the backup
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1310 files, and, most important, enables the user to use the tools of MH
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1311 itself to operate on the removed messages. One can
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1312 .Pn scan
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1313 them,
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1314 .Pn show
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1315 them, and restore them with
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1316 .Pn refile .
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1317 There's no more
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1318 need to use
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1319 .Pn mhpath
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1320 to switch over from MH tools to Unix tools \(en MH can do it all itself.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1321 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1322 This approach matches perfect with the concepts of MH, thus making
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1323 it powerful. Hence, I made it the default. And even more, I also
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1324 removed the old backup prefix approach, as it is clearly less powerful.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1325 Keeping unused alternative in the code is a bad choice as they likely
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1326 gather bugs, by not being constantly tested. Also, the increased code
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1327 size and more conditions crease the maintenance costs. By strictly
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1328 converting to the trash folder approach, I simplified the code base.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1329 .Pn rmm
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1330 calls
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1331 .Pn refile
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1332 internally to move the to-be-removed
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1333 message to the trash folder (\c
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1334 .Fn +trash
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1335 by default). Messages
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1336 there can be operated on like on any other message in the storage.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1337 The sweep clean, one can use
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1338 .Cl "rmm -unlink +trash a" ,
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1339 where the
82
ff4537327162 Mayor rework: Replaced .DS with .VS, a better verbatim environment.
markus schnalke <meillo@marmaro.de>
parents: 78
diff changeset
1340 .Sw -unlink
58
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1341 switch causes the files to be truly unliked instead
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1342 of moved to the trash folder.
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1343
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1344
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1345 .H2 "Path Notations
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1346 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1347 foo
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1348
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1349
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1350 .H2 "MIME Integration
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1351 .P
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1352 user-visible access to whole messages and MIME parts are inherently
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1353 different
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1354
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1355
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1356 .H2 "Of One Cast
814c33b96d89 Restructured the content in ch03.
markus schnalke <meillo@marmaro.de>
parents: 51
diff changeset
1357 .P