docs/master
diff ch03.roff @ 74:cefaa856d431
A lot of new text about configure switches.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Mon, 04 Jun 2012 22:51:53 +0200 |
parents | bae9273b5802 |
children | 2e61e0004a8f |
line diff
1.1 --- a/ch03.roff Mon Jun 04 21:49:47 2012 +0200 1.2 +++ b/ch03.roff Mon Jun 04 22:51:53 2012 +0200 1.3 @@ -399,7 +399,9 @@ 1.4 .P 1.5 I have reduced the number of project-specific configure options from 1.6 fifteen to three. 1.7 -.BU 1.8 + 1.9 +.U3 "Mail Transfer Facility Options 1.10 +.P 1.11 With the removal of the mail transfer facilities five option vanished: 1.12 .IP \f(CW--with-mts=[smtp|sendmail]\fP 1.13 Specified the default mail transport service, which now is sendmail always. 1.14 @@ -412,11 +414,9 @@ 1.15 Enabled TLS support for mail transfer. 1.16 .IP \f(CW--enable-pop\fP 1.17 Enabled the message retrieval facility. 1.18 -.BU 1.19 ---with-ndbm=ARG use -lARG to link with ndbm 1.20 ---with-ndbmheader=ARG #include <ARG> to use ndbm 1.21 1.22 -.BU 1.23 +.U3 "Backup Prefix 1.24 +.P 1.25 The default backup prefix, i.e. the string that was prepended to message 1.26 filenames to tag them as deleted, had been the comma `\f(CW,\fP'. 1.27 There was a configure option to change the default to the hash symbol 1.28 @@ -451,21 +451,278 @@ 1.29 (Well, there still are corner-cases to remove until the backup 1.30 prefix can be layed to rest, eventually.) 1.31 .\" FIXME: Do this work in the code! 1.32 +.P 1.33 +The two configure options 1.34 +.CW --with-editor=EDITOR 1.35 +.CW --with-pager=PAGER 1.36 +were used to specify the default editor and pager at configure time. 1.37 +Doing so at configure time made sense in the Eighties, 1.38 +when the available editors and pagers varied more across different systems. 1.39 +Today, the situation is much more homegenic. 1.40 +The programs 1.41 +.Pn vi 1.42 +and 1.43 +.Pn more 1.44 +can be expected to be available anywhere on every Unix system, 1.45 +as they are specified by POSIX since two decades. 1.46 +(The specifications for 1.47 +.Pn vi 1.48 +and 1.49 +.Pn more 1.50 +appeared in 1.51 +.[ 1.52 +posix 1987 1.53 +.] 1.54 +and, 1.55 +.[ 1.56 +posix 1992 1.57 +.] 1.58 +respectively.) 1.59 +As a first step, these two tools were hard-coded as defaults. 1.60 +.Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f 1.61 +Not changed were the 1.62 +.Pe editor 1.63 +and 1.64 +.Pe moreproc 1.65 +profile entries, which allowed the user to change the default 1.66 +by personal preference. 1.67 +Later, the concept was reworked to respect the standard environment 1.68 +variables 1.69 +.Ev VISUAL 1.70 +and 1.71 +.Ev PAGER 1.72 +if they were set. 1.73 +Today, mmh determines the editor to use in the following order, 1.74 +taking the first available and non-empty item: 1.75 +.IP (1) 1.76 +Environment variable 1.77 +.Ev MMHEDITOR 1.78 +.IP (2) 1.79 +Profile entry 1.80 +.Pe Editor 1.81 +.IP (3) 1.82 +Environment variable 1.83 +.Ev VISUAL 1.84 +.IP (4) 1.85 +Environment variable 1.86 +.Ev EDITOR 1.87 +.IP (5) 1.88 +Command 1.89 +.Pn vi . 1.90 +.P 1.91 +The pager to use is deteminded in the following order, 1.92 +also taking the first available and non-empty item: 1.93 +.IP (1) 1.94 +Environment variable 1.95 +.Ev MMHPAGER 1.96 +.IP (2) 1.97 +Profile entry 1.98 +.Pe Pager 1.99 +(replaces 1.100 +.Pe moreproc ) 1.101 +.IP (3) 1.102 +Environment variable 1.103 +.Ev PAGER 1.104 +.IP (4) 1.105 +Command 1.106 +.Pn more . 1.107 +.P 1.108 +.Ci f85f4b7ae62e3d05a945dcd46ead51f0a2a89a9b 1.109 +.Ci 0c4214ea2aec6497d0d67b436bbee9bc1d225f1e 1.110 +.P 1.111 +The new behavior confirms better to the common behavior on Unix 1.112 +systems, as 1.113 +.Ev VISUAL /\c 1.114 +.Ev EDITOR 1.115 +and 1.116 +.Ev PAGER 1.117 +are respected. 1.118 +Additionally, the new approach is more uniform and 1.119 +without surprise for users. 1.120 1.121 +.U3 "Locale 1.122 +.P 1.123 +The configure option 1.124 +.Sw --disable-locale 1.125 +was removed because today there's hardly any need to disable locale 1.126 +support. 1.127 +.Ci ccf4f175ef4c4e7522f9510a4a1149c15d810dd9 1.128 1.129 +.U3 "\fLslocal\fP Supress Duplicates 1.130 .P 1.131 ---with-editor=EDITOR specify the default editor 1.132 ---with-pager=PAGER specify the default pager 1.133 -.Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f 1.134 +.Pn slocal 1.135 +is an MDA included in mmh. 1.136 +This is a violation of the idea that mmh is a MUA only. 1.137 +.Pn slocal 1.138 +should become a separate project. 1.139 +Nonetheless, ouf of convenience and due to lack of convincement, 1.140 +yet it remains being part of mmh. 1.141 +This is likely to change in the future. 1.142 +Already, 1.143 +.Pn slocal was stripped down. 1.144 +It used to depend on 1.145 +.I ndbm , 1.146 +a database library. 1.147 +The database is used to store the message ids of all messages delivered. 1.148 +This enables 1.149 +.Pn slocal 1.150 +to suppress delivering the same message to the same user twice. 1.151 +(This features was enabled by the 1.152 +.Sw -suppressdup 1.153 +switch.) 1.154 +.P 1.155 +A variety of version of the database library exist. 1.156 +Complicated autoconf code was needed to detect them correctly. 1.157 +Further more, the configure switches 1.158 +.Sw --with-ndbm=ARG 1.159 +and 1.160 +.Sw --with-ndbmheader=ARG 1.161 +were added to help with difficult setups that would 1.162 +not be detected automatically. 1.163 +.P 1.164 +By removing the suppress duplicates feature of 1.165 +.Pn slocal , 1.166 +the dependency on 1.167 +.I ndbm 1.168 +was removed and 120 lines of complex autoconf could be saved. 1.169 +.Ci ecd6d6a20cb7a1507e3a20d6c4cb3a1cf14c6bbf 1.170 +The change removed funtionality too, but the value it would have added 1.171 +is minor to the weight loss by dropping the dependency and 1.172 +the complex autoconf code. 1.173 1.174 +.U3 "mh-e Support 1.175 .P 1.176 ---disable-mhe disable mhe support 1.177 +The configure option 1.178 +.Sw --disable-mhe 1.179 +was removed when the mh-e support was reworked. 1.180 +Mh-e is the Emacs front-end to MH. 1.181 +It requires MH to act different in some minor ways. 1.182 +The configure option could switch the extension off. 1.183 +After removing support for old versions of mh-e, 1.184 +only the 1.185 +.Sw -build 1.186 +switches for 1.187 +.Pn forw 1.188 +and 1.189 +.Pn repl 1.190 +are left to be mh-e-specific. 1.191 +They are now always available because they add little code and complexity. 1.192 +This change was first done in nmh and thereafter merged into mmh. 1.193 +The interface changes in mmh require mh-e to be adjusted to use mmh 1.194 +as the back-end. This requires minor changes to mh-e, though removing 1.195 +the 1.196 +.Sw -build 1.197 +switches would require larger adjustments. 1.198 +The 1.199 +.Sw --disable-mhe 1.200 +configure option was removed and the remaining support for mh-e is always 1.201 +built in. 1.202 .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643 1.203 +Removing the option removed a second code setup that would have 1.204 +needed to be tested. 1.205 1.206 +.U3 "Masquerading 1.207 .P 1.208 ---enable-masquerade='draft_from mmailid username_extension' enable up to 3 types of address masquerading 1.209 ---with-locking=[dot|fcntl|flock|lockf] specify the file locking method 1.210 ---disable-locale turn off locale features 1.211 +The configure option 1.212 +.Sw --enable-masquerade 1.213 +could take up to three items: draft_from, mmailid, username_extension. 1.214 +They activated different types of address masquerading. 1.215 +All of them were implemented in the SMTP-speaking 1.216 +.Pn post 1.217 +command. 1.218 +Mmh no longer speaks SMTP and the replacing 1.219 +.Pn spost 1.220 +command no longer does MTA jobs like this one. 1.221 +Because address masquerading is an MTA's task and mmh does not cover 1.222 +this field anymore, the funtion needs to be implemented in the 1.223 +external MTA used. 1.224 +.P 1.225 +The 1.226 +.I mmailid 1.227 +masquerading type is the oldest one of the three and the only one 1.228 +available in the original MH. 1.229 +It provided a 1.230 +.I username 1.231 +to 1.232 +.I fakeusername 1.233 +mapping, based on the value of the password file's GECOS field. 1.234 +The man page 1.235 +.Mp mh-tailor(5) 1.236 +described the use case as being the following: 1.237 +.QP 1.238 +This is useful if you want the messages you send to always 1.239 +appear to come from the name of an MTA alias rather than your 1.240 +actual account name. For instance, many organizations set up 1.241 +`First.Last' sendmail aliases for all users. If this is 1.242 +the case, the GECOS field for each user should look like: 1.243 +``First [Middle] Last <First.Last>'' 1.244 +.P 1.245 +As mmh sends outgoing mail via the local MTA only, 1.246 +it is the best location to do such global rewrites. 1.247 +Besides, the MTA is conceptionally the right location because it 1.248 +does the reverse mapping for incoming mail (aliasing), too. 1.249 +The masquerading set up there is set up once for all 1.250 +mail software on the system. 1.251 +.Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f 1.252 +.P 1.253 +The 1.254 +.I username_extension 1.255 +masquerading type did not replace the username but could append a suffix 1.256 +to it. 1.257 +The suffix needed to be specified by the 1.258 +.Ev USERNAME_EXTENSION 1.259 +environment variable. 1.260 +It provided support for the 1.261 +.I user-extension 1.262 +feature of qmail and the similar 1.263 +.I "plussed user 1.264 +processing of sendmail. 1.265 +The decision to remove this username_extension masquerading was 1.266 +motivated by the fact that 1.267 +.Pn spost 1.268 +hadn't supported it. 1.269 +.Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9_username_extension 1.270 +Mmh now provides a more general, though in this case less convenient, 1.271 +kind of masquerading. 1.272 +.P 1.273 +The 1.274 +.I draft_from 1.275 +masquerading type instructed 1.276 +.Pn post 1.277 +to use the value of the `From:' header as SMTP envelope sender. 1.278 +This allowes to replace the sender address completely. 1.279 +.Ci b14ea6073f77b4359aaf3fddd0e105989db9 1.280 +Mmh now offers a kind of masquerading similar in effect, but 1.281 +with technical differences. 1.282 +As mmh does not transfer messages itself, the local MTA has full control 1.283 +over the sending address. Any masquerading mmh introduces may be reverted 1.284 +by the MTA. In times of pedantic spam checking, an MTA will likely do so 1.285 +to keep its own reputation up. 1.286 +Nonetheless, the MUA can set the `From:' header and thus propose 1.287 +a sender address to be used to the MTA. 1.288 +The MTA may then decide to take that one or generate the canonical sender 1.289 +address for use as envelope sender address. 1.290 +.P 1.291 +In mmh, the MTA will always extract the recipient and sender from the 1.292 +headers (\c 1.293 +.Pn sendmail 's 1.294 +.Sw -t 1.295 +switch). 1.296 +The `From:' header of the draft may be set arbitrary by the user. 1.297 +If it is missing, the canonical sender address will be generated by the MTA. 1.298 + 1.299 +.U3 "Remaining Options 1.300 +.P 1.301 +Two configure options remain in mmh. 1.302 +One is the locking method to use: 1.303 +.Sw --with-locking=[dot|fcntl|flock|lockf] . 1.304 +Removing all other methods except the portable dot locking and having 1.305 +that as default is appealing, but requires deeper investigation into the 1.306 +topic. 1.307 +The other, 1.308 +.Sw --enable-debug , 1.309 +compiles the programs with debugging symbols and does not strip them. 1.310 +This option is likely to stay. 1.311 1.312 1.313 1.314 @@ -476,7 +733,7 @@ 1.315 1.316 1.317 1.318 -.H1 "Moderizing 1.319 +.H1 "Modernizing 1.320 1.321 1.322 .H2 "Removal of Code Relicts