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