You are previewing sendmail, 4th Edition.
O'Reilly logo
sendmail, 4th Edition

Book Description

A classic O'Reilly title since 1993, sendmail now covers Versions 8.10 through 8.14 of this email routing program, including dozens of new features, options, and macros. This edition also takes a more nuts-and-bolts approach than its predecessors. It includes both an administration handbook and a reference guide that provide you with clear options for installing, configuring and managing sendmail's latest versions and companion programs.

The sendmail program has withstood the test of time because of its ability to solve the mail-routing needs of all sites large or small, complex or simple. But it's also difficult to configure and even more difficult to understand. That's why this book has proven valuable since the dawn of email. With it, you will be able to configure the program to meet any need, so that you never again have to call in a sendmail guru to bail you out.

sendmail includes the following sections:

  • Some Basics is especially useful for people new to the program. It covers the basic concepts underlying mail delivery and the roles sendmail plays in that delivery

  • Administration covers all aspects of handling sendmail, from downloading and installing new releases to managing mailing lists and aliases

  • Configuration Reference contains a heavily cross-referenced guide for configuring and tuning sendmail. Every arcane detail of sendmail is listed alphabetically

  • Appendices contain more detail about sendmail than you may ever need

This edition also includes new material on SSL and AUTH and a new chapter on Mitlers. If you're interested in what has changed since the last edition, one appendix categorizes the many improvements of sendmail's intervening versions by chapter, complete with references to the appropriate sections and page numbers in the book.

With sendmail, system administrators, programmers, network engineers, and even inexperienced users will be able to match this challenging but necessary utility to the needs of their network.

Table of Contents

  1. sendmail, 4th Edition
  2. Dedication
  3. Preface
    1. Changes Since the Previous Edition
    2. Why This Book Is Necessary
    3. History
    4. Thoughts from Eric Allman
    5. Organization
    6. Audience and Assumptions
    7. Unix and sendmail Versions
    8. Conventions Used in This Book
    9. Using Code Examples
    10. Additional Sources of Information
    11. Other Books, Other Problems
    12. How to Contact Us
    13. Safari® Books Online
    14. Acknowledgments
  4. 1. Some Basics
    1. Email Basics
    2. Requests for Comments (RFCs)
    3. Email and sendmail
      1. Other MTAs
      2. Why sendmail Is So Complex
    4. Basic Parts of sendmail
      1. The Configuration File
      2. The Queue
      3. Aliases and Mailing Lists
    5. Basic Parts of a Mail Message
      1. Run sendmail by Hand
      2. The Header
      3. The Body
      4. The Envelope
    6. Basic Roles of sendmail
      1. Role in the Filesystem
      2. Role in the aliases File
      3. Role in Queue Management
      4. Role in Local Delivery
      5. Delivery to a Mailbox
      6. Delivery Through a Program
      7. Role in Network Transport
      8. Role in TCP/IP
      9. Role in UUCP
      10. Role in Other Protocols
      11. Role As a Daemon
    7. Basic Modes of sendmail
      1. How to Run sendmail
        1. Become a mode (-b)
        2. Daemon mode (-bd)
      2. Kill and Restart, Beginning with V8.7
        1. Kill and restart with V8.6
        2. Kill and restart, very old versions
        3. If you forget to kill the daemon
      3. Show Queue Mode (-bp)
      4. Rebuild Aliases Mode (-bi)
      5. Verify Mode (-bv)
      6. Verbose Mode (-v)
      7. Debugging Mode (-d)
    8. The sendmail.cf File
      1. Configuration Commands
      2. The version Command
      3. Comments
      4. A Quick Tour
        1. Mail delivery agents
        2. Macros
        3. Rules
        4. Rule sets
        5. Class macros
        6. File class macros
        7. Options
        8. Headers
        9. Priority
        10. Trusted users
        11. Keyed databases
        12. Environment variables
        13. Queues defined
        14. External filter programs
  5. I. Administration
    1. 2. Download, Build, and Install
      1. Vendor Versus Compiling
      2. Download the Source
      3. What's Where in the Source
        1. The Top-Level Build Script
        2. The contrib Directory
        3. The devtools Directory
        4. The doc Directory
        5. The include Directory
        6. The INSTALL File
        7. The KNOWNBUGS File
        8. The libmilter Directory
        9. The libsm Directory
        10. The libsmdb Directory
        11. The libsmutil Directory
        12. The LICENSE File
        13. The Makefile File
        14. The PGPKEYS File
        15. The README File
        16. The RELEASE_NOTES File
        17. The test Directory
      4. Build sendmail
        1. The Build Script
        2. Build with m4
        3. Run Build
        4. If You Change Your m4 Build File
        5. Use libresolv.a
        6. Badly Defined sys_errlist
        7. Error at or Near Variable
        8. Undefined Symbol strtoul
        9. warning: & before array
        10. Other Considerations
      5. Install sendmail
        1. Add smmsp to /etc/passwd
        2. Add smmsp to /etc/group
        3. Modify init Files
        4. The submit.cf File
        5. Error /etc/mail Not a Directory
        6. The MAIL_SETTINGS_DIR mc Macro
        7. The Wrong Symbolic Link
      6. Pitfalls
      7. Build m4 Macro Reference
        1. APPENDDEF( )
        2. confBEFORE
        3. confBLDVARIANT
        4. confBUILDBIN
        5. confCC
        6. confCCLINK
        7. confCCOPTS
        8. confCCOPTS_SO
        9. confCOPY
        10. confDEPEND_TYPE
        11. confDEPLIBS
        12. confDONT_INSTALL_CATMAN
        13. confEBINDIR
        14. confENVDEF and conf_prog_ENVDEF
        15. confFORCE_RMAIL
        16. confGBIN...
        17. confHFDIR
        18. confHFFILE
        19. confINCDIRS
        20. confINC...
        21. confINSTALL
        22. confINSTALL_RAWMAN
        23. confLD
        24. confLDOPTS
        25. confLDOPTS_SO
        26. confLIB...
        27. confLIBDIRS
        28. confLIBS and conf_prog_LIBS
        29. confLIBSEARCH
        30. confLIBSEARCHPATH
        31. confLN
        32. confLNOPTS
        33. confLINKS
        34. confMAN...
          1. The formatted source files
          2. Where to install the manuals
          3. Adding tags to the manual
          4. Permissions and ownership of the installed manuals
          5. Program and arguments used for formatting
          6. Which macro package to use when formatting
        35. confMAPDEF
        36. confMBIN...
        37. confMKDIR
        38. confMSPQOWN
        39. confMSP_QUEUE_DIR
        40. confMSP_STFILE
        41. confMTCCOPTS
        42. confMTLDOPTS
        43. confNO_HELPFILE_INSTALL
        44. confNO_MAN_BUILD
        45. confNO_MAN_INSTALL
        46. confNO_STATISTICS_INSTALL
        47. confOBJADD
        48. confOPTIMIZE
        49. confRANLIB
        50. confRANLIBOPTS
        51. confREQUIRE_LIBSM
        52. confSBINDIR
        53. confSBINGRP
        54. confSBINMODE
        55. confSBINOWN
        56. confSHAREDLIB...
        57. confSHELL
        58. confSM_OS_HEADER
        59. confSMOBJADD
        60. confSMSRCADD
        61. confSONAME
        62. conf_prog_OBJADD
        63. conf_prog_SRCADD
        64. confSRCDIR
        65. confSTDIOTYPE
        66. confSTDIR
        67. confSTFILE and confSTMODE
        68. confSTRIP
        69. confSTRIPOPTS
        70. confUBINDIR
        71. confUBINGRP
        72. confUBINMODE
        73. confUBINOWN
        74. PREPENDDEF( )
    2. 3. Tune sendmail with Compile-Time Macros
      1. Before You Begin, a Checklist
        1. The Sleepycat DB Library
        2. The regex Library
      2. To Port, Tune, or Debug
      3. Pitfalls
      4. Compile-Time Macro Reference
        1. AUTO_NIS_ALIASES
        2. BSD4_3
        3. BSD4_4
        4. DATA_PROGRESS_TIMEOUT
        5. DNSMAP
        6. DSN
        7. EGD
        8. ERRLIST_PREDEFINED
        9. FAST_PID_RECYCLE
        10. _FFR...
        11. FORK
        12. HAS...
        13. HESIOD
        14. HES_GETMAILHOST
        15. IDENTPROTO
        16. IP_SRCROUTE
        17. ...IS_BROKEN
        18. LA_TYPE
        19. LDAPMAP
        20. LOG
        21. MATCHGECOS
        22. MAX...
        23. MEMCHUNKSIZE
        24. MILTER
        25. MIME7TO8
        26. MIME8TO7
        27. NAMED_BIND
        28. MAP_NSD
        29. MAP_REGEX
        30. NDBM
        31. NEED...
        32. NET...
        33. NETINFO
        34. NEWDB
        35. NIS
        36. NISPLUS
        37. NOFTRUNCATE
        38. NO_GROUP_SET
        39. NOTUNIX
        40. _PATH...
        41. PH_MAP
        42. PICKY_HELO_CHECK
        43. PIPELINING
        44. PSBUFSIZ
        45. QUEUE
        46. QUEUESEGSIZE
        47. REQUIRES_DIR_FSYNC
        48. SASL
        49. SCANF
        50. SECUREWARE
        51. SFS_TYPE
        52. SHARE_V1
        53. SM_...
        54. SM_HEAP_CHECK
        55. SM_CONF_SHM
        56. SM_CONF_LDAP_INITIALIZE
        57. SMTP
        58. SMTPDEBUG
        59. SMTPLINELIM
        60. SOCKETMAP
        61. SPT_TYPE
        62. STARTTLS
        63. SUID_ROOT_FILES_OK
        64. SYSLOG_BUFSIZE
        65. SYSTEM5
        66. TCPWRAPPERS
        67. TLS_NO_RSA
        68. TOBUFSIZE
        69. TTYNAME
        70. ...T
        71. UDB_DEFAULT_SPEC
        72. USE_DOUBLE_FORK
        73. USE_ENVIRON
        74. USING_NETSCAPE_LDAP
        75. USERDB
        76. USESETEUID
        77. WILDCARD_SHELL
        78. XDEBUG
    3. 4. Maintain Security with sendmail
      1. Why root?
        1. Test seteuid and setreuid
      2. The Environment
        1. The E Configuration Command
      3. SMTP Probes
        1. SMTP Debug
        2. SMTP VRFY and EXPN
      4. The Configuration File
        1. The F Command—File Form
        2. The F Command—Program Form
        3. The P= of Delivery Agents
        4. StatusFile Option and the Statistics File
      5. Permissions
        1. Dangerous Write Permissions
        2. Permissions for :include:
        3. Permissions for ~/.forward Files
        4. Recommended Permissions
        5. Don't Blame sendmail
      6. The aliases File
        1. The Alias Database Files
      7. Forged Mail
        1. Forging with the Queue Directory
        2. Forging with SMTP
      8. Security Features
        1. Trusted Users
          1. Declare trusted users (ignored V8.1 through V8.6)
        2. Security Options
          1. The DefaultUser option
          2. The RunAsUser option (V8.8 and above)
          3. The TrustedUser option (V8.10 and above)
          4. The ForwardPath option
          5. The LogLevel option
          6. The PostmasterCopy option
          7. The PrivacyOptions option
          8. The SafeFileEnvironment option
          9. The TempFileMode and QueueFileMode options
        3. The /etc/shells File
      9. Other Security Information
      10. Pitfalls
    4. 5. Authentication and Encryption
      1. Support SMTP AUTH
        1. Get and Install the SASL Library
          1. Install Sendmail.conf
        2. Add SASL Support to sendmail
          1. Test SASL support in sendmail
          2. Watch authentication in action
        3. SASL and Your mc File
          1. Your server requires AUTH
          2. AUTH realm
          3. The AuthOptions option
        4. SASL and Rule Sets
        5. AUTH Running As a Client
          1. Authinfo and the access database (V8.12 and later)
          2. The default-auth-info file (V8.10 and V8.11)
        6. Additional SASL Help
      2. Public Key Cryptography
        1. Digital Signatures
        2. Locate the Public Key
        3. Authentication in Public-Key Systems
        4. X.509 Certificate Format
      3. STARTTLS
        1. Select a Random Number Generator
          1. SUNWski
          2. EGD
          3. PRNGD
          4. Roll your own
        2. Digital Certificate Acronyms
        3. Enable TLS with Build
        4. Set Up Your Certificates
          1. Create a certificate
          2. Revocation lists
          3. Sources of additional help
        5. Add STARTTLS Support to Your mc File
        6. Test STARTTLS
        7. Macros for Use with STARTTLS
        8. STARTTLS and the access Database
          1. The access database and Local_Relay_Auth
          2. The access database with tls_server and tls_client
          3. The tls_rcpt rule set
          4. Disable STARTTLS with the try_tls rule set
        9. Additional TLS Help
      4. Pitfalls
    5. 6. The sendmail Command Line
      1. Alternative argv[0] Names
        1. hoststat (V8.8 and Later)
        2. mailq
        3. newaliases
        4. purgestat (V8.8 or Later)
        5. smtpd
      2. Command-Line Switches
      3. List of Recipient Addresses
      4. Processing the Command Line
        1. First: Prescanning the Command Line
        2. Second: Processing Prior to the Switches
          1. Initialize the environment
          2. Initialize sendmail macros
        3. Third: Processing Switches
        4. Fourth: Reading the Configuration File
        5. Fifth: Collecting Recipients
      5. sendmail's exit( ) Status
        1. EX_CANTCREAT
        2. EX_CONFIG
        3. EX_IOERR
        4. EX_OK
        5. EX_OSERR
        6. EX_OSFILE
        7. EX_SOFTWARE
        8. EX_TEMPFAIL
        9. EX_UNAVAILABLE
        10. EX_USAGE
      6. Pitfalls
      7. Alphabetized Command-Line Switches
        1. -A
        2. -B
        3. -b
        4. -ba
        5. -bD
        6. -bd
        7. -bH
        8. -bh
        9. -bi
        10. -bm
        11. -bP
        12. -bp
        13. -bs
        14. -bt
        15. -bv
        16. -bz
        17. -C
        18. -c
        19. -D
        20. -d
        21. -E
        22. -e
        23. -F
        24. -f
        25. -G
        26. -h
        27. -I
        28. -i
        29. -J
        30. -L
        31. -M
        32. -m
        33. -N
        34. -n
        35. -O
        36. -o
        37. -p
        38. -Q
        39. -q
        40. -R
        41. -r
        42. -s
        43. -T
        44. -t
        45. -U
        46. -V
        47. -v
          1. The modified -v verbose switch with the MSP
        48. -X
        49. -x
    6. 7. How to Handle Spam
      1. The Local_check_ Rule Sets
        1. Local_check_relay and check_relay
        2. Local_check_mail and check_mail
        3. Local_check_rcpt and check_rcpt
        4. The check_eom Rule Set
        5. The check_compat Rule Set
      2. How DNSBL Works
        1. FEATURE(dnsbl)
        2. FEATURE(enhdnsbl)
      3. Check Headers with Rule Sets
        1. Virus Screening by Subject
        2. Check Validity of Received:
      4. Relaying
        1. Macros to Allow Relaying
          1. The RELAY_DOMAIN mc macro
          2. The RELAY_DOMAIN_FILE mc macro
        2. FEATURE(loose_relay_check)
        3. FEATURE(promiscuous_relay)
        4. FEATURE(relay_based_on_MX)
        5. FEATURE(relay_entire_domain)
        6. FEATURE(relay_hosts_only)
        7. FEATURE(relay_local_from)
        8. FEATURE(relay_mail_from)
        9. Risk with FEATURE(nouucp)
        10. FEATURE(accept_unresolvable_domains)
        11. FEATURE(accept_unqualified_senders)
      5. The access Database
        1. Enabling the access Database Generally
        2. Create the access Database
          1. OK
          2. RELAY
          3. REJECT
          4. DISCARD
          5. SKIP
          6. XYZ text
          7. ERROR:XYZ text
          8. ERROR:D.S.N:XYZ text
        3. Finer Control with V8.10
        4. Rejection Message for REJECT
        5. Reject per Recipient
        6. Accept and Reject per Recipient
        7. FEATURE(compat_check)—V8.12 and Later
        8. Screen by domain and .domain
        9. Choose Queue Groups Via the access Database
        10. Screen Based on STARTTLS and AUTH=
      6. Spam Suppression Features
        1. FEATURE(badmx)—V8.14 and Later
        2. FEATURE(block_bad_helo)—V8.14 and Later
        3. FEATURE(greet_pause)—V8.13 and Later
        4. FEATURE(mtamark)—V8.13 and Later, Experimental
        5. FEATURE(require_rdns)—V8.14 and Later
        6. FEATURE(use_client_ptr)—V8.13 and Later
      7. Pitfalls
    7. 8. Test Rule Sets with -bt
      1. Overview
      2. Configuration Lines
        1. Define a Macro with .D
        2. Add to a Class with .C
      3. Dump a sendmail Macro or Class
        1. Dump a Defined Macro with $
        2. Dump a Class Macro with $=
      4. Show an Item
        1. Show Rules in a Rule Set with =S
        2. Show Delivery Agents with =M
      5. Complex Actions Made Simple
        1. Canonify a Host with /canon
        2. Look Up MX Records with /mx
        3. Look Up a Database Item with /map
          1. The aliases database map
          2. The host map
          3. The dequote map
        4. Select Whom to /parse or /try with /tryflags
        5. Parse an Address with /parse
        6. Try a Delivery Agent with /try
      6. Process-Specified Addresses
        1. Syntax
        2. The Address
        3. Rule Set 3 Always Called First with -bt
        4. The Output
      7. Add Debugging for Detail
        1. A Trick
      8. Batch Rule-Set Testing
      9. Pitfalls
    8. 9. DNS and sendmail
      1. Overview
        1. Which BIND?
        2. Make sendmail DNS-Aware
      2. How sendmail Uses DNS
        1. Determine the Local Canonical Name
        2. Probe Network Interfaces
        3. Look Up a Remote Host's Name
        4. DNS Blacklist Lookups
        5. Look Up Addresses for Delivery
        6. The $[and $] Operators
        7. Broken IPv6 Name Servers
      3. Set Up MX Records
        1. Failover MX Servers Result in Spam
        2. MX Must Point to Host with an A or AAAA Record
        3. MX to CNAME Is Illegal
        4. MX Records Are Nonrecursive
        5. Wildcard MX Records
        6. What? They Ignore MX Records?
        7. Caching MX Records
        8. Ambiguous MX Records
      4. How to Use dig
        1. Look Up a Host by namewith dig(1)
        2. Reverse Look-Up IP Addresses with dig(1)
        3. Look Up MX Records with dig(1)
        4. Use a Different Name Server with dig(1)
      5. Pitfalls
    9. 10. Build and Use Companion Programs
      1. The Build Script
        1. -A
        2. -c
        3. -E
          1. M4=
          2. MAKE=
          3. DESTDIR=
        4. -f
        5. -I
        6. -L
        7. -M
        8. -m
        9. -n
        10. -O
        11. -Q
        12. -S
        13. -v
      2. The editmap Program
        1. editmap Command-Line Switches
          1. -C
          2. -f
          3. -N
          4. -q
          5. -u
          6. -x
      3. The mail.local Delivery Agent
        1. Build mail.local
        2. Set Up sendmail.cf for mail.local
        3. The mail.local Command-Line Switches
          1. −7
          2. -b
          3. -d
          4. -D
          5. -f
          6. -h
          7. -l (lowercase L)
          8. -r
      4. The mailstats Program
        1. The statistics File
        2. Viewing Statistics: mailstats
        3. Using cron for Daily and Weekly Statistics
        4. The mailstats Program's Switches
          1. -c
          2. -C
          3. -f
          4. -o
          5. -p
          6. -P
      5. The makemap Program
        1. makemap Command-Line Switches
          1. -c
          2. -C
          3. -d
          4. -D
          5. -e
          6. -f
          7. -l (lowercase L)
          8. -N
          9. -o
          10. -r
          11. -s
          12. -t
          13. -u
          14. -v
      6. The praliases Program
        1. Some Examples of Using praliases
        2. -C
        3. -f
      7. The rmail Delivery Agent
      8. The smrsh Program
        1. Build smrsh
        2. Configure to Use smrsh
        3. Populate Its Directory
        4. How smrsh Works
      9. The vacation Program
        1. Build the vacation Program
        2. Other Uses for vacation
          1. You are too busy to reply promptly
          2. Retire users with notification
          3. Manage your hours
        3. Exclusions and Assumptions
        4. The vacation Program's Command-Line Switches
          1. -a
          2. -C
          3. -d
          4. -f
          5. -i or -I
          6. -j
          7. -l (lowercase L)
          8. -m
          9. -R
          10. -r
          11. -s
          12. -t
          13. -U
          14. -x
          15. -z
      10. Pitfalls
    10. 11. Manage the Queue
      1. Overview of the Queue
      2. Parts of a Queued Message
        1. The Queue Identifier
        2. The Data (Message Body) File: df
        3. Queue File Locking
          1. Current-style file locking
          2. Locks shown when printing the queue
          3. Locks can get stuck
        4. The ID Creation File (Obsolete As of V5.62): nf
        5. The Queue Control File: qf
        6. The Temporary qf Rewrite Image: tf
        7. The Transcript File: xf
      3. Using Multiple Queue Directories
        1. Multiple Queue Directories
          1. Printing multiple queue directories
          2. Processing multiple queue directories
        2. Using qf, df, and xf Subdirectories
        3. Handle Deep Queues
        4. Recover from a Full Queue
      4. Queue Groups (V8.12 and Later)
        1. The Default Queue Group
        2. The Q Configuration Command
          1. The Flags= (F=) queue-group equate
          2. The Interval= (I=) queue-group equate
          3. The Jobs= (J=) queue-group equate
          4. The Nice= (N=) queue-group equate
          5. The Path= (P=) queue-group equate
          6. The recipients= (r=) queue-group equate
          7. The Runners= (R=) queue-group equate
        3. How to Declare Queue Groups with the m4 Technique
        4. The FEATURE(queuegroup) and the access Database
        5. Rule Set Queue Group Selection
        6. Queue Group Limitations
      5. Bogus qf Files
        1. Badly Formed qf Filename
        2. Bad qf Owner or Permissions
        3. Extra Data at End of qf File
        4. Unknown Control Character in qf File
        5. Funny Flag Bits in qf File
        6. Savemail Panic
        7. Handle Qf Files
      6. Printing the Queue
        1. Printing the Queue in Verbose Mode
        2. Print the Number of Messages in the Queue
      7. How the Queue Is Processed
        1. Processing a Single Message
      8. Cause Queues to Be Processed
        1. Periodically with -q
        2. From the Command Line
          1. Process the queue once: -q
          2. Combine -v with -q
          3. Process by identifier/recipient/sender: -q[ISR]
          4. Process by negated identifier/recipient/sender (V8.12 and later)
          5. Process by queue group with -qG (V8.12 and later)
          6. Process the queue via ESMTP ETRN
        3. Persistent Queue Runners with -qp
      9. Process Alternative Queues
        1. Handling a Down Site
          1. Move mail with qtool.pl
          2. Move mail with queue groups
      10. Queue Quarantining
        1. Overview of Quarantining
        2. Quarantine Command-Line Switches
          1. The -qQ command-line switch
          2. The -Q command-line switch
          3. The mailq command's display
          4. Use Milter to quarantine
          5. Use the access database to quarantine
          6. Use rule sets to quarantine
          7. Log quarantined messages
          8. Manage quarantined envelopes with qtool.pl
          9. The qf file's quarantine reason: q line
      11. Pitfalls
      12. The qf File Internals
        1. A line
        2. B line
        3. C line
        4. d line
        5. D line
        6. E line
        7. F line
        8. H line
        9. I line
        10. K line
        11. M line
        12. N line
        13. P line
        14. q line
        15. Q line
        16. r line
        17. R line
        18. S line
        19. T line
        20. V line
        21. Z line
        22. ! line
        23. $ line
        24. .line
    11. 12. Maintain Aliases
      1. The aliases(5) File
        1. The aliases(5) File's Location
        2. Local Must Be Local
        3. Alias Nonlocal Addresses
      2. Forms of Alias Delivery
        1. Delivery to Users
        2. Delivery to Files
        3. Delivery Via Programs
          1. Possible failures
      3. Write a Delivery Agent Script
        1. Duplicates Discarded
        2. Correct exit(2) Values
        3. Is It Really EX_OK?
      4. Special Aliases
        1. The Postmaster Alias
        2. RFC2142 Common Mailbox Names
        3. The MAILER-DAEMON Alias
        4. Plussed Detail Addressing
        5. Duplicate Entries and Automation
      5. The aliases Database
        1. Rebuild the Alias Database
        2. Check the Right Side of Aliases
        3. Use Trailing Dots
        4. Prevent Simultaneous Rebuilds
        5. No DBM Aliasing
      6. Prevent Aliasing with -n
        1. Is an Alias Bad?
        2. Filtering Recipients with a Shell Script
      7. Pitfalls
    12. 13. Mailing Lists and ~/.forward
      1. Internal Mailing Lists
      2. :include: Mailing Lists
        1. Comments in :include: Lists
        2. Trade-offs
      3. Defining a Mailing List Owner
      4. Exploder Mailing Lists
      5. Problems with Mailing Lists
        1. Reply Versus Bounce
        2. Gateway Lists to News
        3. A List-Bounced Alias
        4. Users Ignore list-request
        5. Precedence: bulk
        6. X.400 Addresses
      6. Mail List Etiquette
        1. Offer Subscription and Management Information
        2. Keep Messages Small
        3. Don't Pack Addresses in Headers
        4. Let Software Do the Job for You
        5. Maintain a Clear Policy
        6. Boot Off Offending Members
      7. Packages That Help
        1. Majordomo
        2. Mailman
        3. ListProcessor
        4. ListManager
      8. The User's ~/.forward File
        1. Unscrambling Forwards
        2. Forwarding Loops
        3. Appending to Files
        4. Piping Through Programs
        5. Specialty Programs for Use with ~/.forward
          1. The procmail program
          2. The slocal program
        6. Force Requeue on Error
      9. Pitfalls
    13. 14. Signals, Transactions, and Syslog
      1. Signal the Daemon
        1. SIGTERM
        2. SIGINT
        3. SIGKILL
        4. SIGHUP
        5. SIGUSR1
          1. --- open file descriptors: ---
          2. --- connection cache: ---
          3. --- ruleset debug_dumpstate returns stat ..., pv: ---
      2. Log Transactions with -X
      3. Log with syslog
        1. syslog(3)
        2. Tuning syslog.conf
        3. syslog's Output
        4. Gathering Statistics from syslog
          1. message_volume.sh
      4. Pitfalls
      5. Other Useful Logging
      6. Alphabetized syslog Equates
        1. action=
        2. arg1=
        3. bodytype=
        4. class=
        5. ctladdr=
        6. daemon=
        7. delay=
        8. dsn=
        9. from=
        10. intvl=
        11. len=
        12. mailer=
        13. milter=
        14. msgid=
        15. nrcpts=
        16. ntries=
        17. pri=
        18. proto=
        19. quarantine=
        20. reject=
        21. relay=
        22. ruleset=
        23. size=
        24. stat=
        25. to=
        26. xdelay=
    14. 15. Debug sendmail with -d
      1. The Syntax of -d
      2. The Behavior of -d
      3. Interpret the Output
      4. The -D Debug File Switch
      5. Table of All -d Categories
      6. Pitfalls
      7. Reference for -d in Numerical Order
        1. -d0.1
        2. -d0.4
        3. -d0.10
        4. -d0.12
        5. -d0.13
        6. -d0.15
        7. -d0.20
        8. -d2.1
        9. -d2.9
        10. -d4.80
        11. -d6.1
        12. -d8.1
        13. -d8.2
        14. -d8.3
        15. -d8.5
        16. -d8.7
        17. -d8.8
        18. -d11.1
        19. -d11.2
        20. -d12.1
        21. -d13.1
        22. -d20.1
        23. -d21.1
        24. -d21.2
        25. -d22.1
        26. -d22.11
        27. -d22.12
        28. -d25.1
        29. -d26.1
        30. -d27.1
        31. -d27.2
        32. -d27.3
        33. -d27.4
        34. -d27.5
        35. -d27.8
        36. -d27.9
        37. -d28.1
        38. -d29.1
        39. -d29.4
        40. -d31.2
        41. -d34.1
        42. -d34.11
        43. -d35.9
        44. -d37.1
        45. -d37.8
        46. -d38.2
        47. -d38.3
        48. -d38.4
        49. -d38.9
        50. -d38.10
        51. -d38.12
        52. -d38.19
        53. -d38.20
        54. -d44.4
        55. -d44.5
        56. -d48.2
        57. -d49.1
        58. -d52.1
        59. -d52.100
        60. -d60.1
        61. -d99.100
  6. II. Configuration Reference
    1. 16. Configuration File Overview
      1. Overall Syntax
      2. Comments
      3. V8 Comments
      4. Continuation Lines
      5. The V Configuration Command
        1. The V Configuration Command's Level Part
        2. The V Configuration Command's Vendor Part
      6. Pitfalls
    2. 17. Configure sendmail.cf with m4
      1. The m4 Preprocessor
        1. m4 Is Greedy
        2. m4 and dnl
        3. m4 and Arguments
        4. The DOL m4 Macro
      2. Configure with m4
        1. The _CF_DIR_ m4 Macro
        2. The Minimal mc File
          1. OSTYPE( ) m4 macro
          2. MAILER( ) m4 macro
          3. DOMAIN( ) m4 macro
          4. FEATURE( ) m4 macro
        3. The Order of mc Lines
          1. VERSIONID m4 macro
          2. HACK( ) m4 macro
      3. m4 Macros by Function
        1. Options
        2. Define sendmail Macros
        3. Rules and Rule Sets
          1. LOCAL_CONFIG mc macro
          2. LOCAL_RULE_0 mc macro
          3. LOCAL_RULE_1 and LOCAL_RULE_2 mc macros
          4. LOCAL_RULE_3 mc macro
          5. LOCAL_RULESETS mc macro
          6. SMART_HOST mc macro
          7. LOCAL_NET_CONFIG mc macro
      4. Masquerading
        1. EXPOSED_USER mc Macro
          1. EXPOSED_USER_FILE mc macro
        2. MASQUERADE_AS mc Macro
        3. MASQUERADE_DOMAIN mc Macro
        4. MASQUERADE_DOMAIN_FILE mc Macro
        5. MASQUERADE_EXCEPTION mc Macro
        6. MASQUERADE_EXCEPTION_FILE mc Macro
      5. Relays
        1. BITNET_RELAY mc Macro
        2. DECNET_RELAY mc Macro
        3. FAX_RELAY mc Macro
        4. LOCAL_RELAY mc Macro
        5. LOCAL_USER mc Macro
        6. LUSER_RELAY mc Macro
        7. MAIL_HUB mc Macro
        8. UUCP_RELAY mc Macro
      6. UUCP Support
        1. uucp-old (a.k.a. uucp)
        2. uucp-new (a.k.a. suucp)
        3. uucp-uudom
        4. uucp-dom
        5. The LOCAL_UUCP mc Macro
        6. SITE mc Macro (Obsolete)
        7. SITECONFIG mc Macro (Obsolete)
        8. UUCPSMTP mc Macro
      7. Pitfalls
      8. Configuration File Feature Reference
        1. FEATURE(accept_unqualified_senders)
        2. FEATURE(accept_unresolvable_domains)
        3. FEATURE(access_db)
        4. FEATURE(allmasquerade)
        5. FEATURE(always_add_domain)
        6. FEATURE(authinfo)
        7. FEATURE(badmx)
        8. FEATURE(bestmx_is_local)
        9. FEATURE(bitdomain)
        10. FEATURE(blacklist_recipients)
        11. FEATURE(block_bad_helo)
        12. FEATURE(compat_check)
        13. FEATURE(conncontrol)
          1. conncontrol and delay checks
          2. Terminate connections with 421
        14. FEATURE(delay_checks)
        15. FEATURE(dnsbl)
        16. FEATURE(domaintable)
        17. FEATURE(enhdnsbl)
        18. FEATURE(generics_entire_domain)
        19. FEATURE(genericstable)
          1. GENERICS_DOMAIN mc macro
          2. GENERICS_DOMAIN_FILE mc macro
        20. FEATURE(greet_pause)
        21. FEATURE(ldap_routing)
        22. FEATURE(limited_masquerade)
        23. FEATURE(local_lmtp)
        24. FEATURE(local_no_masquerade)
        25. FEATURE(local_procmail)
          1. Use another program instead of procmail
        26. FEATURE(lookupdotdomain)
        27. FEATURE(loose_relay_check)
        28. FEATURE(mailertable)
        29. FEATURE(masquerade_entire_domain)
        30. FEATURE(masquerade_envelope)
        31. FEATURE(mtamark)
        32. FEATURE(msp)
        33. FEATURE(nocanonify)
        34. FEATURE(nodns)
        35. FEATURE(no_default_msa)
        36. FEATURE(notsticky)
        37. FEATURE(nouucp)
        38. FEATURE(nullclient)
        39. FEATURE(promiscuous_relay)
        40. FEATURE(preserve_local_plus_detail)
        41. FEATURE(preserve_luser_host)
        42. FEATURE(queuegroup)
        43. FEATURE(ratecontrol)
          1. ratecontrol and delay checks
          2. Terminate connections with 421
        44. FEATURE(rbl)
        45. FEATURE(redirect)
        46. FEATURE(relay_based_on_MX)
        47. FEATURE(relay_entire_domain)
        48. FEATURE(relay_hosts_only)
        49. FEATURE(relay_local_from)
        50. FEATURE(relay_mail_from)
        51. FEATURE(require_rdns)
        52. FEATURE(smrsh)
        53. FEATURE(stickyhost)
        54. FEATURE(use_client_ptr)
        55. FEATURE(use_ct_file)
        56. FEATURE(use_cw_file)
        57. FEATURE(uucpdomain)
        58. FEATURE(virtuser_entire_domain)
        59. FEATURE(virtusertable)
          1. VIRTUSER_DOMAIN mc macro
          2. VIRTUSER_DOMAIN_FILE mc macro
    3. 18. The R (Rules) Configuration Command
      1. Why Rules?
      2. The R Configuration Command
        1. Macros in Rules
        2. Rules Are Treated Like Addresses
          1. As of V8.13, rules no longer need to balance
          2. Backslashes in rules
      3. Tokenizing Rules
        1. $-operators Are Tokens
        2. The Space Character Is Special
        3. Pasting Addresses Back Together
      4. The Workspace
      5. The Behavior of a Rule
      6. The LHS
        1. Minimum Matching
        2. Backup and Retry
      7. The RHS
        1. Copy by Position: $digit
        2. Rewrite Once Prefix: $:
        3. Rewrite-and-Return Prefix: $@
        4. Rewrite Through a Rule Set: $>set
        5. Return a Selection: $#
        6. Canonicalize Hostname: $[ and $]
          1. An example of canonicalization
          2. Default in canonicalization: $:
        7. Other Operators
      8. Pitfalls
      9. Rule Operator Reference
        1. $&
        2. $@
        3. $@
        4. $@
        5. $@
        6. $@
        7. $:
        8. $:
        9. $:
        10. $:
        11. $digit
        12. $=
        13. $>
        14. $[ $]
        15. $( $)
        16. $-
        17. $+
        18. $#
        19. $#
        20. $#
        21. $*
        22. $~
        23. $|
    4. 19. The S (Rule Sets) Configuration Command
      1. The S Configuration Command
        1. Rule Set Numbers
        2. Rule Set Names
        3. Associate Number with Name
        4. Macros in Rule Set Names
        5. Rule Sets and Lists of Rules
        6. Odds and Ends
        7. Rule Sets and m4
      2. The Sequence of Rule Sets
        1. V8 Enhancements
      3. The canonify Rule Set 3
        1. A Special Case: From:<>
        2. Basic Textual Canonicalization
        3. Handling Routing Addresses
        4. Handling Specialty Addresses
        5. Focusing for @ Syntax
      4. The final Rule Set 4
        1. Stripping Trailing Dots
        2. Restoring Source Routes
        3. Removing Focus
        4. Correcting Tags
      5. The parse Rule Set 0
        1. Further Processing: $:address
        2. Selecting S= and R=
        3. Delivering to Local Recipient
        4. Forwarding to a Knowledgeable Host
        5. Handling UUCP Locally
        6. Forwarding over the Network
        7. Handling Leftover Local Addresses
      6. The localaddr Rule Set 5
        1. The Local_localaddr Hook
      7. Rule Sets 1 and 2
        1. Rule Set 1
        2. Rule Set 2
      8. Pitfalls
      9. Policy Rule Set Reference
        1. check_data
        2. check_etrn
        3. check_vrfy and check_expn
          1. Use check_vrfy to change rejection message
          2. Use check_vrfy to select addresses to verify
        4. srv_features
    5. 20. The M (Mail Delivery Agent) Configuration Command
      1. The M Configuration Command
      2. The Symbolic Delivery Agent Name
        1. Required Symbolic Names
      3. The mc Configuration Syntax
        1. Choose Preferred Agents
          1. confSMTP_MAILER
          2. confUUCP_MAILER
          3. confLOCAL_MAILER
          4. confRELAY_MAILER
        2. Tuning Without an Appropriate Keyword
        3. Create a New mc Delivery Agent
          1. MAILER_DEFINITIONS
      4. Delivery Agents by Name
        1. cyrus
        2. cyrusv2
        3. discard
        4. error
          1. The $@ dsnstat part when used with the error delivery agent
          2. The $: part when used with the error delivery agent
        5. fax
        6. *file* and *include*
        7. local and prog
          1. The local delivery agent
          2. The prog delivery agent
        8. mail11
        9. ph
        10. pop
        11. procmail
        12. qpage
        13. smtp, etc.
          1. The smtp delivery agent
          2. The esmtp delivery agent
          3. The smtp8 delivery agent
          4. The dsmtp delivery agent
          5. The relay delivery agent
        14. usenet
        15. uucp
          1. The LOCAL_UUCP mc macro
      5. Delivery Agent Equates
        1. /=(forward slash)
        2. A=
          1. How to define A= with your mc configuration
          2. The use of $h in A=TCP
          3. The special case of $u in A=
          4. Deliver to a Unix domain socket
        3. C=
        4. D=
        5. E=
        6. F=
          1. The MODIFY_MAILER_FLAGS mc macro
          2. Pre-V8.10 mc modification of F=
        7. L=
        8. M=
          1. Modify M= using an mc configuration macro
        9. m=
          1. Modify m= using an mc configuration macro
        10. N=
        11. P=
          1. Modify P= using an mc configuration macro
        12. Q=
        13. R=
        14. r=
        15. S=
        16. T=
        17. U=
        18. W=
      6. How a Delivery Agent Is Executed
        1. The Fork
        2. The Child
      7. Pitfalls
      8. Delivery Agent F= Flags
        1. F=%
        2. F=0 (zero)
        3. F=1 (one)
        4. F=2
        5. F=3
        6. F=5
        7. F=6
        8. F=7
        9. F=8
        10. F=9
        11. F=: (colon)
        12. F=| (vertical bar)
        13. F=/ (forward slash)
        14. F=@
        15. F=a
        16. F=A
        17. F=b
        18. F=B
        19. F=c
        20. F=C
        21. F=d
        22. F=D
        23. F=e
        24. F=E
        25. F=f
        26. F=F
        27. F=g
        28. F=h
        29. F=i
        30. F=I (uppercase i)
        31. F=j
        32. F=k
        33. F=l (lowercase L)
        34. F=L
        35. F=m
        36. F=M
        37. F=n
        38. F=o
        39. F=p
        40. F=P
        41. F=q
        42. F=r
        43. F=R
        44. F=s
        45. F=S
        46. F=u
        47. F=U
        48. F=w
        49. F=W
        50. F=x
        51. F=X
        52. F=z
        53. F=Z
    6. 21. The D (Define a Macro) Configuration Command
      1. Preassigned sendmail Macros
        1. Macros and the System Identity
      2. Command-Line Definitions
        1. Syntax of the Command-Line Macro's Text
      3. Configuration-File Definitions
        1. Syntax of the Configuration-File Macro's Text
        2. Required Macros (V8.6 and Earlier)
      4. Macro Names
        1. Single-Character Names
        2. Multicharacter Names
      5. Macro Expansion: $ and $&
        1. Macro Expansion Is Recursive
        2. When Is a Macro Expanded?
        3. Use Value As Is with $&
      6. Macro Conditionals: $?, $|, and $.
        1. Conditionals Can Nest
        2. Macro Xtext Translations
      7. Macros with mc Configuration
      8. Pitfalls
      9. Alphabetized sendmail Macros
        1. $_
        2. $a
        3. ${addr_type}
        4. ${alg_bits}
        5. ${auth_authen}
        6. ${auth_author}
        7. ${auth_ssf}
        8. ${auth_type}
        9. $b
        10. ${bodytype}
        11. $B
        12. $c
        13. ${cert_issuer}
        14. ${cert_md5}
        15. ${cert_subject}
        16. ${cipher}
        17. ${cipher_bits}
        18. ${client_addr}
        19. ${client_connections}
        20. ${client_flags}
        21. ${client_name}
        22. ${client_port}
        23. ${client_ptr}
        24. ${client_rate}
        25. ${client_resolve}
        26. ${cn_issuer}
        27. ${cn_subject}
        28. ${currHeader}
        29. $C
        30. $d
        31. ${daemon_addr}
        32. ${daemon_family}
        33. ${daemon_flags}
        34. ${daemon_info}
        35. ${daemon_name}
        36. ${daemon_port}
        37. ${deliveryMode}
        38. ${dsn_envid}
        39. ${dsn_notify}
        40. ${dsn_ret}
        41. $D
        42. $e
        43. ${envid}
        44. $E
        45. $f
        46. $F
        47. $g
        48. $h
        49. ${hdr_name}
        50. ${hdrlen}
        51. $H
        52. $i
        53. ${if_addr}
        54. ${if_addr_out}
        55. ${if_family}
        56. ${if_family_out}
        57. ${if_name}
        58. ${if_name_out}
        59. $j
        60. $k
        61. $l (lowercase L)
        62. ${load_avg}
        63. $L
        64. $m
        65. ${mail_addr}
        66. ${mail_host}
        67. ${mail_mailer}
        68. ${msg_id}
        69. ${msg_size}
        70. $M
        71. ${MTAHost}
        72. $n
        73. ${nbadrcpts}
        74. ${nrcpts}
        75. ${ntries}
        76. $o
        77. ${opMode}
        78. $p
        79. $q
        80. ${quarantine}
        81. ${queue_interval}
        82. $r
        83. ${rcpt_addr}
        84. ${rcpt_host}
        85. ${rcpt_mailer}
        86. $R
        87. $s
        88. ${sendmailMTACluster}
        89. ${server_addr}
        90. ${server_name}
        91. $S
        92. $t
        93. ${time}
        94. ${tls_version}
        95. ${total_rate}
        96. $u
        97. $U
        98. $v
        99. ${verify}
        100. $V
        101. $w
        102. $W
        103. $x
        104. $X
        105. $y
        106. $Y
        107. $z
        108. $Z
    7. 22. The C and F (Class Macro) Configuration Commands
      1. Class Configuration Commands
        1. The C Class Command
          1. Append one class to another
        2. The F Class Command
          1. scanf(3) variations
        3. Class via Database-Map Lookups
          1. Class by replacing files with database lookups in mc macros
          2. Class via ldap map lookups
      2. Access Classes in Rules
        1. Matching Any in a Class: $=
        2. Matching Any Token Not in a Class: $~
        3. Back Up and Retry
        4. Class Name Hashing Algorithm
      3. Classes with mc Configuration
      4. Internal Class Macros
      5. Pitfalls
      6. Alphabetized Class Macros
        1. $=b
        2. $={checkMIMEFieldHeaders}
        3. $={checkMIMEHeaders}
        4. $={checkMIMETextHeaders}
        5. $=e
        6. $=k
        7. $=m
        8. $=n
        9. $={persistentMacros}
        10. $=q
        11. $={ResOk}
        12. $=R
        13. $={tls} and $={Tls}
        14. $=s
        15. $=t
        16. $=w
    8. 23. The K (Database-Map) Configuration Command
      1. Enable at Compile Time
        1. Create Files with makemap
      2. The K Configuration Command
        1. The name
        2. The type
        3. The args
      3. The K Command Switches
        1. -A
        2. -a
        3. -D
        4. -f
        5. -k
        6. -l (lowercase L)
        7. -m
        8. -N
        9. -O
        10. -o
        11. -q
        12. -S
        13. -T
        14. -t
        15. -v
        16. -z
      4. Use $( and $) in Rules
        1. Specify a Default with $:
        2. Specify Numbered Substitution with $@
        3. $[ and $]: A Special Case
      5. Database Maps with mc Configuration
        1. Set a Default Database-Map Type for Features
      6. Pitfalls
      7. Alphabetized Database-Map Types
        1. arith
        2. btree
        3. bestmx
        4. dbm
        5. dequote
        6. dns
          1. DNS database-map -B switch
          2. DNS database-map -Z switch
          3. DNS database-map -z switch
        7. hash
        8. hesiod
        9. host
        10. implicit
        11. ldap (was ldapx)
          1. LDAP default schema for aliases includes recursion
          2. LDAP default schema for classes includes recursion
          3. The −1 ldap database-map switch
          4. The -b ldap database-map switch
          5. The -d ldap database-map switch
          6. The -H ldap database-map switch
          7. The -h ldap database-map switch
          8. The -K ldap database-map switch (V8.14 and later)
          9. The -k ldap database-map switch
          10. The -M ldap database-map switch
          11. The -n ldap database-map switch
          12. The -P ldap database-map switch
          13. The -p ldap database-map switch
          14. The -R ldap database-map switch
          15. The -r ldap database-map switch
          16. The -s ldap database-map switch
          17. The -V ldap database-map switch
          18. The -v ldap database-map switch
          19. The -w ldap database-map switch
          20. The -z ldap database-map switch
          21. The -Z ldap database-map switch
          22. FEATURE(ldap_routing)
          23. LDAPROUTE_DOMAIN and LDAPROUTE_DOMAIN_FILE
          24. LDAPROUTE_EQUIVALENT and LDAPROUTE_EQUIVALENT_FILE
        12. macro
        13. netinfo
        14. nis
        15. nisplus
        16. nsd
        17. null
        18. ph
          1. The -h ph database-map switch
          2. The -k ph database-map switch
        19. program
        20. regex
          1. The -b regex database-map switch
          2. The -d regex database-map switch
          3. The -n regex database-map switch
          4. The -s regex database-map switch
        21. sequence
        22. socket
        23. stab
        24. switch
        25. syslog
          1. The -L syslog database-map switch
        26. text
        27. userdb
          1. Enable the User Database
          2. Create the User Database
          3. A :default outgoing hostname
        28. user
    9. 24. The O (Options) Configuration Command
      1. Overview
      2. Command-Line Options
        1. Pre-V8.7 Command-Line Option Declarations
        2. Multicharacter Command-Line Options
          1. Multicharacter name shorthand
        3. Appropriateness of Options
        4. Options That Are Safe
      3. Configuration File Options
        1. Pre-V8.7 Configuration File Declarations
        2. V8.7 Configuration File Declarations
      4. Options in the mc File
      5. Alphabetical Table of All Options
      6. Option Argument Types
      7. Interrelating Options
        1. File Locations
        2. The Queue
        3. Managing Aliases
        4. Controlling Machine Load
        5. Connection Caching
        6. Problem Solving
        7. Other Options
      8. Pitfalls
      9. Alphabetized Options
        1. AliasFile
        2. AliasWait
        3. AllowBogusHELO
        4. AuthMaxBits
        5. AuthMechanisms
        6. AuthOptions
        7. AuthRealm
        8. AutoRebuildAliases
        9. BadRcptThrottle
        10. BlankSub
        11. CACertFile
        12. CACertPath
        13. CheckAliases
        14. CheckpointInterval
        15. ClassFactor
        16. ClientCertFile
        17. ClientKeyFile
        18. ClientPortOptions
        19. ColonOkInAddr
        20. ConnectionCacheSize
        21. ConnectionCacheTimeout
        22. ConnectionRateThrottle
        23. ConnectionRateWindowSize
        24. ConnectOnlyTo
        25. ControlSocketName
        26. CRLFile
        27. DaemonPortOptions
          1. DaemonPortOptions=Addr=
          2. DaemonPortOptions=children= (8.14 and later)
          3. DaemonPortOptions=delayLA= (8.14 and later)
          4. DaemonPortOptions=DeliveryMode= (8.14 and later)
          5. DaemonPortOptions=Family=
          6. DaemonPortOptions=Listen=
          7. DaemonPortOptions=Modify=
          8. DaemonPortOptions=Name=
          9. DaemonPortOptions=Port=
          10. DaemonPortOptions=queueLA= (8.14 and later)
          11. DaemonPortOptions=ReceiveBufSize=
          12. DaemonPortOptions=refuseLA= (8.14 and later)
          13. DaemonPortOptions=SendBufSize=
        28. DataFileBufferSize
        29. DeadLetterDrop
        30. DefaultAuthInfo
        31. DefaultCharSet
        32. DefaultUser
        33. DelayLA
        34. DeliverByMin
        35. DeliveryMode
          1. DeliveryMode=background
          2. DeliveryMode=deferred
          3. DeliveryMode=interactive
          4. DeliveryMode=queueonly
        36. DHParameters
        37. DialDelay
        38. DirectSubmissionModifiers
        39. DontBlameSendmail
          1. DontBlameSendmail=AssumeSafeChown
          2. DontBlameSendmail=ClassFileInUnsafeDirPath
          3. DontBlameSendmail=DontWarnForwardFileInUnsafeDirPath (V8.10 and later)
          4. DontBlameSendmail=ErrorHeaderInUnsafeDirPath
          5. DontBlameSendmail=FileDeliveryToHardLink
          6. DontBlameSendmail=FileDeliveryToSymLink
          7. DontBlameSendmail=ForwardFileInGroupWritableDirPath
          8. DontBlameSendmail=ForwardFileInUnsafeDirPath
          9. DontBlameSendmail=ForwardFileInUnsafeDirPathSafe
          10. DontBlameSendmail=GroupReadableKeyFile (V8.12 and later)
          11. DontBlameSendmail=GroupReadableSASLDBFile (V8.12 and later)
          12. DontBlameSendmail=GroupWritableAliasFile
          13. DontBlameSendmail=GroupWritableDirPathSafe
          14. DontBlameSendmail=GroupWritableForwardFile (V8.12 and later)
          15. DontBlameSendmail=GroupWritableForwardFileSafe
          16. DontBlameSendmail=GroupWritableIncludeFile (V8.11 and later)
          17. DontBlameSendmail=GroupWritableIncludeFileSafe
          18. DontBlameSendmail=GroupWritableSASLDBFile (V8.12 and later)
          19. DontBlameSendmail=HelpFileInUnsafeDirPath
          20. DontBlameSendmail=IncludeFileInGroupWritableDirPath
          21. DontBlameSendmail=IncludeFileInUnsafeDirPath
          22. DontBlameSendmail=IncludeFileInUnsafeDirPathSafe
          23. DontBlameSendmail=InsufficientEntropy (V8.11 and later)
          24. DontBlameSendmail=LinkedAliasFileInWritableDir
          25. DontBlameSendmail=LinkedClassFileInWritableDir
          26. DontBlameSendmail=LinkedForwardFileInWritableDir
          27. DontBlameSendmail=LinkedIncludeFileInWritableDir
          28. DontBlameSendmail=LinkedMapInWritableDir
          29. DontBlameSendmail=LinkedServiceSwitchFileInWritableDir
          30. DontBlameSendmail=MapInUnsafeDirPath
          31. DontBlameSendmail=NonRootSafeAddr (V8.10 and later)
          32. DontBlameSendmail=RunProgramInUnsafeDirPath (V8.12 and later)
          33. DontBlameSendmail=RunWritableProgram (V8.12 and later)
          34. DontBlameSendmail=Safe
          35. DontBlameSendmail=TrustStickyBit
          36. DontBlameSendmail=WorldWritableAliasFile
          37. DontBlameSendmail=WorldWritableForwardFile (V8.12 and later)
          38. DontBlameSendmail=WorldWritableIncludeFile (V8.12 and later)
          39. DontBlameSendmail=WriteMapToHardLink
          40. DontBlameSendmail=WriteMapToSymLink
          41. DontBlameSendmail=WriteStatsToHardLink
          42. DontBlameSendmail=WriteStatsToSymLink
        40. DontExpandCnames
        41. DontInitGroups
        42. DontProbeInterfaces
        43. DontPruneRoutes
        44. DoubleBounceAddress
        45. EightBitMode
          1. EightBitMode=mimefy
          2. EightBitMode=pass
          3. EightBitMode=strict
        46. ErrorHeader
        47. ErrorMode
          1. ErrorMode=e
          2. ErrorMode=m
          3. ErrorMode=p
          4. ErrorMode=q
          5. ErrorMode=w
        48. FallbackMXhost
        49. FallBackSmartHost
        50. FastSplit
        51. ForkEachJob
        52. ForwardPath
        53. HeloName
        54. HelpFile
        55. HoldExpensive
        56. HostsFile
        57. HostStatusDirectory
        58. IgnoreDots
        59. InputMailFilters
        60. LDAPDefaultSpec
        61. LogLevel
          1. What is logged at LogLevel=0
        62. MailboxDatabase
        63. MatchGECOS
        64. MaxAliasRecursion
        65. MaxDaemonChildren
        66. MaxHeadersLength
        67. MaxHopCount
        68. MaxMessageSize
        69. MaxMimeHeaderLength
        70. MaxNOOPCommands
        71. MaxQueueChildren
        72. MaxQueueRunSize
        73. MaxRecipientsPerMessage
        74. MaxRunnersPerQueue
        75. MeToo
        76. Milter
          1. Milter.LogLevel
          2. Milter.macros.connect
          3. Milter.macros.helo
          4. Milter.macros.envfrom
          5. Milter.macros.envrcpt
          6. Milter.macros.data
          7. Milter.macros.eoh
          8. Milter.macros.eom
        77. MinFreeBlocks
        78. MinQueueAge
        79. MustQuoteChars
        80. NiceQueueRun
        81. NoRecipientAction
          1. NoRecipientAction=add-apparently-to
          2. NoRecipientAction=add-bcc
          3. NoRecipientAction=add-to
          4. NoRecipientAction=add-to-undisclosed
          5. NoRecipientAction=none
        82. OldStyleHeaders
        83. OperatorChars
        84. PidFile
        85. PostmasterCopy
        86. PrivacyOptions
          1. PrivacyOptions=authwarnings
          2. PrivacyOptions=goaway
          3. PrivacyOptions=nobodyreturn
          4. PrivacyOptions=noetrn
          5. PrivacyOptions=needexpnhelo
          6. PrivacyOptions=needmailhelo
          7. PrivacyOptions=needvrfyhelo
          8. PrivacyOptions=noactualrecipient
          9. PrivacyOptions=noexpn
          10. PrivacyOptions=noreceipts
          11. PrivacyOptions=noverb
          12. PrivacyOptions=novrfy
          13. PrivacyOptions=public
          14. PrivacyOptions=restrictexpand (V8.12 and later)
          15. PrivacyOptions=restrictmailq
          16. PrivacyOptions=restrictqrun
        87. ProcessTitlePrefix
        88. QueueDirectory
        89. QueueFactor
        90. QueueFileMode
        91. QueueLA
        92. QueueSortOrder
          1. QueueSortOrder=host
          2. QueueSortOrder=priority
          3. QueueSortOrder=time (V8.8 and later)
          4. QueueSortOrder=filename (V8.10 and later)
          5. QueueSortOrder=random (V8.12 and later)
          6. QueueSortOrder=modtime (V8.12 and later)
          7. QueueSortOrder=none (V8.13 and later)
        93. QueueTimeout
        94. RandFile
        95. RecipientFactor
        96. RefuseLA
        97. RejectLogInterval
        98. ResolverOptions
        99. RetryFactor
        100. RequiresDirFsync
        101. RrtImpliesDsn
        102. RunAsUser
        103. SafeFileEnvironment
        104. SaveFromLine
        105. SendMimeErrors
        106. ServerCertFile
        107. ServerKeyFile
        108. ServiceSwitchFile
        109. SevenBitInput
        110. SharedMemoryKey
        111. SharedMemoryKeyFile
        112. SingleLineFromHeader
        113. SingleThreadDelivery
        114. SmtpGreetingMessage
        115. SoftBounce
        116. StatusFile
        117. SuperSafe
        118. TempFileMode
        119. Timeout
          1. Timeout.aconnect (V8.12 and later)
          2. Timeout.auth (V8.12 and later)
          3. Timeout.command (V8.6 and later)
          4. Timeout.connect (V8.6 and later)
          5. Timeout.control (V8.10 and later)
          6. Timeout.datablock (V8.6 and later)
          7. Timeout.datafinal (V8.6 and later)
          8. Timeout.datainit (V8.6 and later)
          9. Timeout.fileopen (V8.7 and later)
          10. Timeout.helo (V8.6 and later)
          11. Timeout.hoststatus (V8.8 and later)
          12. Timeout.iconnect (V8.8 and later)
          13. Timeout.ident (V8.6 and later)
          14. Timeout.initial (V8.6 and later)
          15. Timeout.lhlo (V8.12 and later)
          16. Timeout.mail (V8.6 and later)
          17. Timeout.misc (V8.6 and later)
          18. Timeout.queuereturn (V8.7 and later)
          19. Timeout.queuewarn (V8.7 and later)
          20. Timeout.quit (V8.6 and later)
          21. Timeout.rcpt (V8.6 and later)
          22. Timeout.resolver (V8.10 and later)
          23. Timeout.rset (V8.6 and later)
          24. Timeout.starttls (V8.12 and later)
        120. TimeZoneSpec
        121. TLSSrvOptions
        122. TrustedUser
        123. TryNullMXList
        124. UnixFromLine
          1. UnixFromLine in UUCP software
          2. UnixFromLine with mail files
        125. UnsafeGroupWrites
        126. UseErrorsTo
        127. UseMSP
        128. UserDatabaseSpec
        129. Verbose
        130. XscriptFileBufferSize
        131. M
    10. 25. The H (Headers) Configuration Command
      1. Overview
      2. Header Names
      3. Header Field Contents
        1. Macros in the Header Field
        2. Escape Character in the Header Field
        3. Quoted Strings in the Header Field
        4. Comments in the Header Field
          1. Balancing special characters
      4. ?flags? in Header Definitions
        1. Macros Force Header Inclusion
        2. Macro-Included Headers Don't Survive Queueing
      5. Rules Check Header Contents
        1. Use $>+ to Include RFC2822 Comments
          1. No balancing with $>+
          2. Check the header's length
        2. H* a Default for All Headers
        3. The check_eoh Rule Set
          1. Check for missing headers
      6. Header Behavior in conf.c
        1. H_ACHECK Header Flag (V5 and Later)
          1. Replace headers with H_ACHECK
        2. H_BCC Header Flag (V8.7 and Later)
        3. H_BINDLATE Header Flag (V8.10 and Later)
        4. H_CHECK Header Flag (V5 and Later)
        5. H_CTE Header Flag (V8.7 and Later)
        6. H_CTYPE Header Flag (V8.7 and Later)
        7. H_DEFAULT Header Flag (V5 and Later)
        8. H_ENCODABLE Header Flag (V8.8 and Later)
        9. H_EOH Header Flag (V5 and Later)
        10. H_ERRORSTO (Was H_ERRSTO) (V8.7 and Later)
        11. H_FORCE Header Flag (V5 and Later)
        12. H_FROM Header Flag (V5 and Later)
        13. H_RCPT Header Flag (V5 and Later)
        14. H_RECEIPTTO Header Flag (V8.7 and Later)
        15. H_RESENT Header Flag (V5 and Later)
        16. H_STRIPCOMM Header Flag (V8.10 and Later)
        17. H_TRACE Header Flag (V5 and Later)
        18. H_USER Header Flag (V8.11 and Later)
        19. H_VALID Header Flag (V5 and Later)
      7. Headers and mc Configuration
      8. Headers by Category
        1. Recommended Headers
        2. Sender Headers
        3. Recipient Headers
        4. Identification and Control Headers
        5. Date and Trace Headers
        6. Other Headers
        7. MIME Headers
      9. Forwarding with Re-Sent Headers
        1. Remove and Re-create the From: Header
      10. Precedence
        1. The P Configuration Command
      11. Pitfalls
      12. Alphabetized Header Reference
        1. Apparently-From:
        2. Apparently-To:
        3. Auto-Submitted:
        4. Bcc:
        5. Cc:
        6. Comments:
        7. Content-Description:
        8. Content-Disposition:
        9. Content-Id:
        10. Content-Length:
        11. Content-Transfer-Encoding:
        12. Content-Type:
        13. Date:
        14. Delivery-Receipt-To:
        15. Delivered-To:
        16. Disposition-Notification-To:
        17. Encrypted:
        18. Errors-To:
        19. From:
        20. Full-Name:
        21. In-Reply-To:
        22. Keywords:
        23. Mail-From:
        24. Message-ID:
        25. Message:
        26. MIME-Version:
        27. Posted-Date:
        28. Precedence:
        29. Priority:
        30. Received:
        31. References:
        32. Reply-To:
        33. Return-Path:
        34. Return-Receipt-To:
        35. Sender:
        36. Subject:
        37. Text:
        38. To:
        39. Via:
        40. X-Authentication-Warning:
        41. X400-Received:
    11. 26. The X (Milters) Configuration Command
      1. Create Milter Support
        1. Pre-V8.13 Enable with -DMILTER
        2. Create libmilter
        3. Special Build-Time Support
        4. SM_CONF_POLL
        5. MILTER_NO_NAGLE
      2. Add Configuration Support
        1. The X Configuration Command
          1. The X configuration command F= equate
          2. The X configuration command S= equate
          3. The X configuration command T= equate
        2. The InputMailFilters Option
        3. DaemonPortOptions=InputFilter=
        4. The SuperSafe Option with Milters
        5. Root Won't Remove Socket File
        6. Milter Logging with syslog
        7. Pass Macros with Milter.macros
      3. Build a Milter
      4. Pitfalls
      5. smfi_ Routine Reference
        1. Milter smfi_addheader()
        2. Milter smfi_addrcpt()
        3. Milter smfi_addrcpt_par()
        4. Milter smfi_chgfrom()
        5. Milter smfi_chgheader()
        6. Milter smfi_delrcpt()
        7. Milter smfi_getpriv()
        8. Milter smfi_getsymval()
        9. Milter smfi_insheader()
        10. Milter smfi_main()
        11. Milter smfi_opensocket()
        12. Milter smfi_progress()
        13. Milter smfi_quarantine()
        14. Milter smfi_register()
        15. Milter smfi_replacebody()
        16. Milter smfi_setbacklog()
        17. Milter smfi_setconn()
        18. Milter smfi_setdbg()
        19. Milter smfi_setmlreply()
        20. Milter smfi_setpriv()
        21. Milter smfi_setreply()
          1. V8.13 SMTP 421 and SMFIS_TEMPFAIL
        22. Milter smfi_setsymlist()
        23. Milter smfi_settimeout()
        24. Milter smfi_stop()
        25. Milter smfi_version()
      6. xxfi_ Routine Reference
        1. Milter xxfi_abort()
        2. Milter xxfi_body()
        3. Milter xxfi_close()
        4. Milter xxfi_connect()
        5. Milter xxfi_data()
        6. Milter xxfi_envfrom()
        7. Milter xxfi_envrcpt()
        8. Milter xxfi_eoh()
        9. Milter xxfi_eom()
        10. Milter xxfi_header()
        11. Milter xxfi_helo()
        12. Milter xxfi_negotiate()
        13. Milter xxfi_unknown()
  7. III. Appendixes
    1. A. The mc Configuration Macros and Directives
    2. B. What's New Since Edition 3
      1. Chapter 1, Some Basics
      2. Chapter 2, Download, Build, and Install
      3. Chapter 3, Tune sendmail with Compile-Time Macros
      4. Chapter 4, Maintain Security with sendmail
      5. Chapter 5, Authentication and Encryption
      6. Chapter 6, The sendmail Command Line
      7. Chapter 7, How to Handle Spam
      8. Chapter 8, Test Rule Sets with -bt
      9. Chapter 9, DNS and sendmail
      10. Chapter 10, Build and Use Companion Programs
      11. Chapter 11, Manage the Queue
      12. Chapter 12, Maintain Aliases
      13. Chapter 13, Mailing Lists and ~/.forward
      14. Chapter 14, Signals, Transactions, and Syslog
      15. Chapter 15, Debug sendmail with -d
      16. Chapter 16, Configuration File Overview
      17. Chapter 17, Configure sendmail.cf with m4
      18. Chapter 18, The R (Rules) Configuration Command
      19. Chapter 19, The S (Rule Sets) Configuration Command
      20. Chapter 20, The M (Mail Delivery Agent) Configuration Command
      21. Chapter 21, The D (Define a Macro) Configuration Command
      22. Chapter 22, The C and F (Class Macro) Configuration Commands
      23. Chapter 23, The K (Database-Map) Configuration Command
      24. Chapter 24, The O (Options) Configuration Command
      25. Chapter 25, The H (Headers) Configuration Command
      26. Chapter 26, The X (Milters) Configuration Command
    3. C. The checkcompat( ) Function
      1. How checkcompat( ) Works
        1. Arguments Passed to checkcompat( )
        2. Global Variables
  8. Bibliography
    1. Publications and Postings
  9. Index
  10. About the Authors
  11. Colophon
  12. Copyright