changeset 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 4e1715537e2f
children 0927d38589af
files bib ch03.roff
diffstat 2 files changed, 289 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/bib	Mon Jun 04 21:49:47 2012 +0200
+++ b/bib	Mon Jun 04 22:51:53 2012 +0200
@@ -222,3 +222,20 @@
 %I Pearson Education
 %D 2006
 %O \s-1ISBN\s0: 0-321-16607-8
+
+%L XVS87
+%K posix
+%B X/Open Portability Guide
+%D January 1987
+%V 1
+%T XVS Commands and Utilities
+%O \s-1ISBN\s0: 0-444-70174-5
+
+%L XCU92
+%K posix
+%B CAE Specification
+%D July 1992
+%I The Open Group
+%T Commands and Utilities (XCU), Issue 4
+%O \s-2ISBN\s0: 1-872630-48-0
+
--- a/ch03.roff	Mon Jun 04 21:49:47 2012 +0200
+++ b/ch03.roff	Mon Jun 04 22:51:53 2012 +0200
@@ -399,7 +399,9 @@
 .P
 I have reduced the number of project-specific configure options from 
 fifteen to three.
-.BU
+
+.U3 "Mail Transfer Facility Options
+.P
 With the removal of the mail transfer facilities five option vanished:
 .IP \f(CW--with-mts=[smtp|sendmail]\fP
 Specified the default mail transport service, which now is sendmail always.
@@ -412,11 +414,9 @@
 Enabled TLS support for mail transfer.
 .IP \f(CW--enable-pop\fP
 Enabled the message retrieval facility.
-.BU
---with-ndbm=ARG         use -lARG to link with ndbm
---with-ndbmheader=ARG   #include <ARG> to use ndbm
 
-.BU
+.U3 "Backup Prefix
+.P
 The default backup prefix, i.e. the string that was prepended to message
 filenames to tag them as deleted, had been the comma `\f(CW,\fP'.
 There was a configure option to change the default to the hash symbol
@@ -451,21 +451,278 @@
 (Well, there still are corner-cases to remove until the backup
 prefix can be layed to rest, eventually.)
 .\" FIXME: Do this work in the code!
-
-
+.P
+The two configure options
+.CW --with-editor=EDITOR
+.CW --with-pager=PAGER
+were used to specify the default editor and pager at configure time.
+Doing so at configure time made sense in the Eighties,
+when the available editors and pagers varied more across different systems.
+Today, the situation is much more homegenic.
+The programs
+.Pn vi
+and
+.Pn more
+can be expected to be available anywhere on every Unix system,
+as they are specified by POSIX since two decades.
+(The specifications for
+.Pn vi
+and
+.Pn more
+appeared in
+.[
+posix 1987
+.]
+and,
+.[
+posix 1992
+.]
+respectively.)
+As a first step, these two tools were hard-coded as defaults.
+.Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f
+Not changed were the
+.Pe editor
+and
+.Pe moreproc
+profile entries, which allowed the user to change the default
+by personal preference.
+Later, the concept was reworked to respect the standard environment
+variables
+.Ev VISUAL
+and
+.Ev PAGER
+if they were set.
+Today, mmh determines the editor to use in the following order,
+taking the first available and non-empty item:
+.IP (1)
+Environment variable
+.Ev MMHEDITOR
+.IP (2)
+Profile entry
+.Pe Editor
+.IP (3)
+Environment variable
+.Ev VISUAL
+.IP (4)
+Environment variable
+.Ev EDITOR
+.IP (5)
+Command
+.Pn vi .
 .P
---with-editor=EDITOR    specify the default editor
---with-pager=PAGER      specify the default pager
-.Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f
+The pager to use is deteminded in the following order,
+also taking the first available and non-empty item:
+.IP (1)
+Environment variable
+.Ev MMHPAGER
+.IP (2)
+Profile entry
+.Pe Pager
+(replaces
+.Pe moreproc )
+.IP (3)
+Environment variable
+.Ev PAGER
+.IP (4)
+Command
+.Pn more .
+.P
+.Ci f85f4b7ae62e3d05a945dcd46ead51f0a2a89a9b
+.Ci 0c4214ea2aec6497d0d67b436bbee9bc1d225f1e
+.P
+The new behavior confirms better to the common behavior on Unix
+systems, as
+.Ev VISUAL /\c
+.Ev EDITOR
+and
+.Ev PAGER
+are respected.
+Additionally, the new approach is more uniform and
+without surprise for users.
 
+.U3 "Locale
+.P
+The configure option
+.Sw --disable-locale
+was removed because today there's hardly any need to disable locale
+support.
+.Ci ccf4f175ef4c4e7522f9510a4a1149c15d810dd9
+
+.U3 "\fLslocal\fP Supress Duplicates
+.P
+.Pn slocal
+is an MDA included in mmh.
+This is a violation of the idea that mmh is a MUA only.
+.Pn slocal
+should become a separate project.
+Nonetheless, ouf of convenience and due to lack of convincement,
+yet it remains being part of mmh.
+This is likely to change in the future.
+Already,
+.Pn slocal was stripped down.
+It used to depend on
+.I ndbm ,
+a database library.
+The database is used to store the message ids of all messages delivered.
+This enables
+.Pn slocal
+to suppress delivering the same message to the same user twice.
+(This features was enabled by the
+.Sw -suppressdup
+switch.)
+.P
+A variety of version of the database library exist.
+Complicated autoconf code was needed to detect them correctly.
+Further more, the configure switches
+.Sw --with-ndbm=ARG
+and
+.Sw --with-ndbmheader=ARG
+were added to help with difficult setups that would
+not be detected automatically.
 .P
---disable-mhe           disable mhe support
+By removing the suppress duplicates feature of
+.Pn slocal ,
+the dependency on
+.I ndbm
+was removed and 120 lines of complex autoconf could be saved.
+.Ci ecd6d6a20cb7a1507e3a20d6c4cb3a1cf14c6bbf
+The change removed funtionality too, but the value it would have added
+is minor to the weight loss by dropping the dependency and 
+the complex autoconf code.
+
+.U3 "mh-e Support
+.P
+The configure option
+.Sw --disable-mhe
+was removed when the mh-e support was reworked. 
+Mh-e is the Emacs front-end to MH.
+It requires MH to act different in some minor ways.
+The configure option could switch the extension off.
+After removing support for old versions of mh-e,
+only the
+.Sw -build
+switches for
+.Pn forw
+and
+.Pn repl
+are left to be mh-e-specific.
+They are now always available because they add little code and complexity.
+This change was first done in nmh and thereafter merged into mmh.
+The interface changes in mmh require mh-e to be adjusted to use mmh
+as the back-end. This requires minor changes to mh-e, though removing
+the
+.Sw -build
+switches would require larger adjustments.
+The
+.Sw --disable-mhe
+configure option was removed and the remaining support for mh-e is always
+built in.
 .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643
+Removing the option removed a second code setup that would have
+needed to be tested.
 
+.U3 "Masquerading
+.P
+The configure option
+.Sw --enable-masquerade
+could take up to three items: draft_from, mmailid, username_extension.
+They activated different types of address masquerading.
+All of them were implemented in the SMTP-speaking
+.Pn post
+command.
+Mmh no longer speaks SMTP and the replacing
+.Pn spost
+command no longer does MTA jobs like this one.
+Because address masquerading is an MTA's task and mmh does not cover
+this field anymore, the funtion needs to be implemented in the
+external MTA used.
 .P
---enable-masquerade='draft_from mmailid username_extension' enable up to 3 types of address masquerading
---with-locking=[dot|fcntl|flock|lockf] specify the file locking method
---disable-locale        turn off locale features
+The
+.I mmailid
+masquerading type is the oldest one of the three and the only one
+available in the original MH.
+It provided a
+.I username
+to
+.I fakeusername
+mapping, based on the value of the password file's GECOS field.
+The man page
+.Mp mh-tailor(5)
+described the use case as being the following:
+.QP
+This is useful if you want the messages you send to always
+appear to come from the name of an MTA alias rather than your
+actual account name.  For instance, many organizations set up
+`First.Last' sendmail aliases for all users.  If this is
+the case, the GECOS field for each user should look like:
+``First [Middle] Last <First.Last>''
+.P
+As mmh sends outgoing mail via the local MTA only,
+it is the best location to do such global rewrites.
+Besides, the MTA is conceptionally the right location because it
+does the reverse mapping for incoming mail (aliasing), too.
+The masquerading set up there is set up once for all
+mail software on the system.
+.Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f
+.P
+The
+.I username_extension
+masquerading type did not replace the username but could append a suffix
+to it.
+The suffix needed to be specified by the
+.Ev USERNAME_EXTENSION
+environment variable.
+It provided support for the
+.I user-extension
+feature of qmail and the similar
+.I "plussed user
+processing of sendmail.
+The decision to remove this username_extension masquerading was
+motivated by the fact that
+.Pn spost
+hadn't supported it.
+.Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9_username_extension
+Mmh now provides a more general, though in this case less convenient,
+kind of masquerading.
+.P
+The
+.I draft_from
+masquerading type instructed
+.Pn post
+to use the value of the `From:' header as SMTP envelope sender.
+This allowes to replace the sender address completely.
+.Ci b14ea6073f77b4359aaf3fddd0e105989db9
+Mmh now offers a kind of masquerading similar in effect, but
+with technical differences.
+As mmh does not transfer messages itself, the local MTA has full control
+over the sending address. Any masquerading mmh introduces may be reverted
+by the MTA. In times of pedantic spam checking, an MTA will likely do so
+to keep its own reputation up.
+Nonetheless, the MUA can set the `From:' header and thus propose
+a sender address to be used to the MTA.
+The MTA may then decide to take that one or generate the canonical sender
+address for use as envelope sender address.
+.P
+In mmh, the MTA will always extract the recipient and sender from the
+headers (\c
+.Pn sendmail 's
+.Sw -t
+switch).
+The `From:' header of the draft may be set arbitrary by the user.
+If it is missing, the canonical sender address will be generated by the MTA.
+
+.U3 "Remaining Options
+.P
+Two configure options remain in mmh.
+One is the locking method to use:
+.Sw --with-locking=[dot|fcntl|flock|lockf] .
+Removing all other methods except the portable dot locking and having
+that as default is appealing, but requires deeper investigation into the
+topic.
+The other,
+.Sw --enable-debug ,
+compiles the programs with debugging symbols and does not strip them.
+This option is likely to stay.
 
 
 
@@ -476,7 +733,7 @@
 
 
 
-.H1 "Moderizing
+.H1 "Modernizing
 
 
 .H2 "Removal of Code Relicts