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