O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

sendmail, 4th Edition

Book Description

A classic O'Reilly title since 1993, sendmail now coversVersions 8.10 through 8.14 of this email routing program, includingdozens of new features, options, and macros. This edition alsotakes a more nuts-and-bolts approach than its predecessors. Itincludes both an administration handbook and a reference guide thatprovide you with clear options for installing, configuring andmanaging sendmail's latest versions and companion programs.

The sendmail program has withstood the test of time because of itsability to solve the mail-routing needs of all sites large orsmall, complex or simple. But it's also difficult to configure andeven more difficult to understand. That's why this book has provenvaluable since the dawn of email. With it, you will be able toconfigure the program to meet any need, so that you never againhave to call in a sendmail guru to bail you out.

sendmail includes the following sections:

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

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

  • Configuration Reference contains a heavilycross-referenced guide for configuring and tuning sendmail. Everyarcane detail of sendmail is listed alphabetically

  • Appendices contain more detail about sendmail than youmay ever need

  • This edition also includes new material on SSL and AUTH and a newchapter on Mitlers. If you're interested in what has changed sincethe last edition, one appendix categorizes the many improvements ofsendmail's intervening versions by chapter, complete withreferences to the appropriate sections and page numbers in thebook.

    With sendmail, system administrators, programmers, networkengineers, and even inexperienced users will be able to match thischallenging but necessary utility to the needs of theirnetwork.

    Table of Contents

    1. Dedication
    2. 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
    3. 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
    4. 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
    5. 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()
    6. 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
    7. Bibliography
    8. Index
    9. About the Authors
    10. Colophon
    11. Copyright