comparison 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
comparison
equal deleted inserted replaced
73:4e1715537e2f 74:cefaa856d431
397 Whenever options add little advantages, they should be considered for 397 Whenever options add little advantages, they should be considered for
398 removal. 398 removal.
399 .P 399 .P
400 I have reduced the number of project-specific configure options from 400 I have reduced the number of project-specific configure options from
401 fifteen to three. 401 fifteen to three.
402 .BU 402
403 .U3 "Mail Transfer Facility Options
404 .P
403 With the removal of the mail transfer facilities five option vanished: 405 With the removal of the mail transfer facilities five option vanished:
404 .IP \f(CW--with-mts=[smtp|sendmail]\fP 406 .IP \f(CW--with-mts=[smtp|sendmail]\fP
405 Specified the default mail transport service, which now is sendmail always. 407 Specified the default mail transport service, which now is sendmail always.
406 .IP \f(CW--with-smtpservers=[server1...]\fP 408 .IP \f(CW--with-smtpservers=[server1...]\fP
407 Specified the default SMTP servers for the smtp mail transfer service. 409 Specified the default SMTP servers for the smtp mail transfer service.
410 Enabled SASL support for mail transfer. 412 Enabled SASL support for mail transfer.
411 .IP \f(CW--with-tls\fP 413 .IP \f(CW--with-tls\fP
412 Enabled TLS support for mail transfer. 414 Enabled TLS support for mail transfer.
413 .IP \f(CW--enable-pop\fP 415 .IP \f(CW--enable-pop\fP
414 Enabled the message retrieval facility. 416 Enabled the message retrieval facility.
415 .BU 417
416 --with-ndbm=ARG use -lARG to link with ndbm 418 .U3 "Backup Prefix
417 --with-ndbmheader=ARG #include <ARG> to use ndbm 419 .P
418
419 .BU
420 The default backup prefix, i.e. the string that was prepended to message 420 The default backup prefix, i.e. the string that was prepended to message
421 filenames to tag them as deleted, had been the comma `\f(CW,\fP'. 421 filenames to tag them as deleted, had been the comma `\f(CW,\fP'.
422 There was a configure option to change the default to the hash symbol 422 There was a configure option to change the default to the hash symbol
423 `\f(CW#\fP': 423 `\f(CW#\fP':
424 .CW --with-hash-backup . 424 .CW --with-hash-backup .
449 Eventually, the new trash folder obsoleted the concept of the 449 Eventually, the new trash folder obsoleted the concept of the
450 backup prefix completely. 450 backup prefix completely.
451 (Well, there still are corner-cases to remove until the backup 451 (Well, there still are corner-cases to remove until the backup
452 prefix can be layed to rest, eventually.) 452 prefix can be layed to rest, eventually.)
453 .\" FIXME: Do this work in the code! 453 .\" FIXME: Do this work in the code!
454 454 .P
455 455 The two configure options
456 .P 456 .CW --with-editor=EDITOR
457 --with-editor=EDITOR specify the default editor 457 .CW --with-pager=PAGER
458 --with-pager=PAGER specify the default pager 458 were used to specify the default editor and pager at configure time.
459 Doing so at configure time made sense in the Eighties,
460 when the available editors and pagers varied more across different systems.
461 Today, the situation is much more homegenic.
462 The programs
463 .Pn vi
464 and
465 .Pn more
466 can be expected to be available anywhere on every Unix system,
467 as they are specified by POSIX since two decades.
468 (The specifications for
469 .Pn vi
470 and
471 .Pn more
472 appeared in
473 .[
474 posix 1987
475 .]
476 and,
477 .[
478 posix 1992
479 .]
480 respectively.)
481 As a first step, these two tools were hard-coded as defaults.
459 .Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f 482 .Ci 5d43a99db70c12a673028c7758c20cbe3e13ef5f
460 483 Not changed were the
461 .P 484 .Pe editor
462 --disable-mhe disable mhe support 485 and
486 .Pe moreproc
487 profile entries, which allowed the user to change the default
488 by personal preference.
489 Later, the concept was reworked to respect the standard environment
490 variables
491 .Ev VISUAL
492 and
493 .Ev PAGER
494 if they were set.
495 Today, mmh determines the editor to use in the following order,
496 taking the first available and non-empty item:
497 .IP (1)
498 Environment variable
499 .Ev MMHEDITOR
500 .IP (2)
501 Profile entry
502 .Pe Editor
503 .IP (3)
504 Environment variable
505 .Ev VISUAL
506 .IP (4)
507 Environment variable
508 .Ev EDITOR
509 .IP (5)
510 Command
511 .Pn vi .
512 .P
513 The pager to use is deteminded in the following order,
514 also taking the first available and non-empty item:
515 .IP (1)
516 Environment variable
517 .Ev MMHPAGER
518 .IP (2)
519 Profile entry
520 .Pe Pager
521 (replaces
522 .Pe moreproc )
523 .IP (3)
524 Environment variable
525 .Ev PAGER
526 .IP (4)
527 Command
528 .Pn more .
529 .P
530 .Ci f85f4b7ae62e3d05a945dcd46ead51f0a2a89a9b
531 .Ci 0c4214ea2aec6497d0d67b436bbee9bc1d225f1e
532 .P
533 The new behavior confirms better to the common behavior on Unix
534 systems, as
535 .Ev VISUAL /\c
536 .Ev EDITOR
537 and
538 .Ev PAGER
539 are respected.
540 Additionally, the new approach is more uniform and
541 without surprise for users.
542
543 .U3 "Locale
544 .P
545 The configure option
546 .Sw --disable-locale
547 was removed because today there's hardly any need to disable locale
548 support.
549 .Ci ccf4f175ef4c4e7522f9510a4a1149c15d810dd9
550
551 .U3 "\fLslocal\fP Supress Duplicates
552 .P
553 .Pn slocal
554 is an MDA included in mmh.
555 This is a violation of the idea that mmh is a MUA only.
556 .Pn slocal
557 should become a separate project.
558 Nonetheless, ouf of convenience and due to lack of convincement,
559 yet it remains being part of mmh.
560 This is likely to change in the future.
561 Already,
562 .Pn slocal was stripped down.
563 It used to depend on
564 .I ndbm ,
565 a database library.
566 The database is used to store the message ids of all messages delivered.
567 This enables
568 .Pn slocal
569 to suppress delivering the same message to the same user twice.
570 (This features was enabled by the
571 .Sw -suppressdup
572 switch.)
573 .P
574 A variety of version of the database library exist.
575 Complicated autoconf code was needed to detect them correctly.
576 Further more, the configure switches
577 .Sw --with-ndbm=ARG
578 and
579 .Sw --with-ndbmheader=ARG
580 were added to help with difficult setups that would
581 not be detected automatically.
582 .P
583 By removing the suppress duplicates feature of
584 .Pn slocal ,
585 the dependency on
586 .I ndbm
587 was removed and 120 lines of complex autoconf could be saved.
588 .Ci ecd6d6a20cb7a1507e3a20d6c4cb3a1cf14c6bbf
589 The change removed funtionality too, but the value it would have added
590 is minor to the weight loss by dropping the dependency and
591 the complex autoconf code.
592
593 .U3 "mh-e Support
594 .P
595 The configure option
596 .Sw --disable-mhe
597 was removed when the mh-e support was reworked.
598 Mh-e is the Emacs front-end to MH.
599 It requires MH to act different in some minor ways.
600 The configure option could switch the extension off.
601 After removing support for old versions of mh-e,
602 only the
603 .Sw -build
604 switches for
605 .Pn forw
606 and
607 .Pn repl
608 are left to be mh-e-specific.
609 They are now always available because they add little code and complexity.
610 This change was first done in nmh and thereafter merged into mmh.
611 The interface changes in mmh require mh-e to be adjusted to use mmh
612 as the back-end. This requires minor changes to mh-e, though removing
613 the
614 .Sw -build
615 switches would require larger adjustments.
616 The
617 .Sw --disable-mhe
618 configure option was removed and the remaining support for mh-e is always
619 built in.
463 .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643 620 .Ci a7ce7b4a580d77b6c2c4d980812beb589aa4c643
464 621 Removing the option removed a second code setup that would have
465 .P 622 needed to be tested.
466 --enable-masquerade='draft_from mmailid username_extension' enable up to 3 types of address masquerading 623
467 --with-locking=[dot|fcntl|flock|lockf] specify the file locking method 624 .U3 "Masquerading
468 --disable-locale turn off locale features 625 .P
626 The configure option
627 .Sw --enable-masquerade
628 could take up to three items: draft_from, mmailid, username_extension.
629 They activated different types of address masquerading.
630 All of them were implemented in the SMTP-speaking
631 .Pn post
632 command.
633 Mmh no longer speaks SMTP and the replacing
634 .Pn spost
635 command no longer does MTA jobs like this one.
636 Because address masquerading is an MTA's task and mmh does not cover
637 this field anymore, the funtion needs to be implemented in the
638 external MTA used.
639 .P
640 The
641 .I mmailid
642 masquerading type is the oldest one of the three and the only one
643 available in the original MH.
644 It provided a
645 .I username
646 to
647 .I fakeusername
648 mapping, based on the value of the password file's GECOS field.
649 The man page
650 .Mp mh-tailor(5)
651 described the use case as being the following:
652 .QP
653 This is useful if you want the messages you send to always
654 appear to come from the name of an MTA alias rather than your
655 actual account name. For instance, many organizations set up
656 `First.Last' sendmail aliases for all users. If this is
657 the case, the GECOS field for each user should look like:
658 ``First [Middle] Last <First.Last>''
659 .P
660 As mmh sends outgoing mail via the local MTA only,
661 it is the best location to do such global rewrites.
662 Besides, the MTA is conceptionally the right location because it
663 does the reverse mapping for incoming mail (aliasing), too.
664 The masquerading set up there is set up once for all
665 mail software on the system.
666 .Ci 0836c8000ccb34b59410ef1c15b1b7feac70ce5f
667 .P
668 The
669 .I username_extension
670 masquerading type did not replace the username but could append a suffix
671 to it.
672 The suffix needed to be specified by the
673 .Ev USERNAME_EXTENSION
674 environment variable.
675 It provided support for the
676 .I user-extension
677 feature of qmail and the similar
678 .I "plussed user
679 processing of sendmail.
680 The decision to remove this username_extension masquerading was
681 motivated by the fact that
682 .Pn spost
683 hadn't supported it.
684 .Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9_username_extension
685 Mmh now provides a more general, though in this case less convenient,
686 kind of masquerading.
687 .P
688 The
689 .I draft_from
690 masquerading type instructed
691 .Pn post
692 to use the value of the `From:' header as SMTP envelope sender.
693 This allowes to replace the sender address completely.
694 .Ci b14ea6073f77b4359aaf3fddd0e105989db9
695 Mmh now offers a kind of masquerading similar in effect, but
696 with technical differences.
697 As mmh does not transfer messages itself, the local MTA has full control
698 over the sending address. Any masquerading mmh introduces may be reverted
699 by the MTA. In times of pedantic spam checking, an MTA will likely do so
700 to keep its own reputation up.
701 Nonetheless, the MUA can set the `From:' header and thus propose
702 a sender address to be used to the MTA.
703 The MTA may then decide to take that one or generate the canonical sender
704 address for use as envelope sender address.
705 .P
706 In mmh, the MTA will always extract the recipient and sender from the
707 headers (\c
708 .Pn sendmail 's
709 .Sw -t
710 switch).
711 The `From:' header of the draft may be set arbitrary by the user.
712 If it is missing, the canonical sender address will be generated by the MTA.
713
714 .U3 "Remaining Options
715 .P
716 Two configure options remain in mmh.
717 One is the locking method to use:
718 .Sw --with-locking=[dot|fcntl|flock|lockf] .
719 Removing all other methods except the portable dot locking and having
720 that as default is appealing, but requires deeper investigation into the
721 topic.
722 The other,
723 .Sw --enable-debug ,
724 compiles the programs with debugging symbols and does not strip them.
725 This option is likely to stay.
469 726
470 727
471 728
472 729
473 .H2 "Removal of switches 730 .H2 "Removal of switches
474 .P 731 .P
475 732
476 733
477 734
478 735
479 .H1 "Moderizing 736 .H1 "Modernizing
480 737
481 738
482 .H2 "Removal of Code Relicts 739 .H2 "Removal of Code Relicts
483 .P 740 .P
484 The code base of mmh originates from the late Seventies, 741 The code base of mmh originates from the late Seventies,