| Preface | p. xi |
| Getting Started | p. 1 |
| Downloading the Latest Release | p. 5 |
| Installing sendmail | p. 12 |
| Compiling sendmail to Use LDAP | p. 14 |
| Adding the regex Map Type to sendmail | p. 16 |
| Compiling sendmail with SASL Support | p. 18 |
| Compiling sendmail with STARTTLS Support | p. 19 |
| Compiling in STARTTLS File Paths | p. 20 |
| Building a sendmail Configuration | p. 21 |
| Testing a New Configuration | p. 29 |
| Logging sendmail | p. 34 |
| Delivery and Forwarding | p. 37 |
| Accepting Mail for Other Hosts | p. 39 |
| Fixing the Alias0 Missing Map Error and Creating Simple Aliases | p. 44 |
| Reading Aliases via LDAP | p. 48 |
| Configuring Red Hat 7.3 to Read Aliases from a NIS Server | p. 52 |
| Configuring Solaris 8 to Read Aliases from a NIS Server | p. 56 |
| Forwarding to an External Address | p. 57 |
| Creating Mailing Lists | p. 58 |
| Migrating Ex-Users to New Addresses | p. 62 |
| Delivering Mail to a Program | p. 64 |
| Using Program Names in Mailing Lists | p. 66 |
| Allowing Nonlogin Users to Forward to Programs | p. 67 |
| Fixing a forward Loop | p. 68 |
| Enabling the User Database | p. 71 |
| Relaying | p. 74 |
| Passing All Mail to a Relay | p. 77 |
| Passing Outbound Mail to a Relay | p. 81 |
| Passing Local Mail to a Mail Hub | p. 82 |
| Passing Apparently Local Mail to a Relay | p. 84 |
| Passing UUCP Mail to a Relay | p. 86 |
| Relaying Mail for All Hosts in a Domain | p. 88 |
| Relaying Mail for Individual Hosts | p. 92 |
| Configuring Relaying on a Mail Exchanger | p. 95 |
| Loading Class $=R via LDAP | p. 96 |
| Relaying Only Outbound Mail | p. 100 |
| Masquerading | p. 103 |
| Adding Domains to All Sender Addresses | p. 105 |
| Masquerading the Sender Hostname | p. 107 |
| Eliminating Masquerading for the Local Mailer | p. 111 |
| Forcing Masquerading of Local Mail | p. 114 |
| Masquerading Recipient Addresses | p. 116 |
| Masquerading at the Relay Host | p. 118 |
| Limiting Masquerading | p. 120 |
| Masquerading All Hosts in a Domain | p. 124 |
| Masquerading Most of the Hosts in a Domain | p. 126 |
| Masquerading the Envelope Address | p. 129 |
| Rewriting the From Address with the genericstable | p. 132 |
| Rewriting Sender Addresses for an Entire Domain | p. 137 |
| Masquerading with LDAP | p. 141 |
| Reading the genericstable via LDAP | p. 144 |
| Routing Mail | p. 151 |
| Routing Mail to Special Purpose Mailers | p. 157 |
| Sending Error Messages from the mailertable | p. 159 |
| Disabling MX Processing to Avoid Loops | p. 162 |
| Routing Mail for Local Delivery | p. 164 |
| Reading the mailertable via LDAP | p. 166 |
| Routing Mail for Individual Virtual Hosts | p. 170 |
| Routing Mail for Entire Virtual Domains | p. 174 |
| Reading the virtusertable via LDAP | p. 180 |
| Routing Mail with LDAP | p. 185 |
| Using LDAP Routing with Masquerading | p. 193 |
| Controlling Spam | p. 197 |
| Blocking Spam with the access Database | p. 209 |
| Preventing Local Users from Replying to Spammers | p. 212 |
| Reading the access Database via LDAP | p. 214 |
| Using a DNS Blackhole List Service | p. 218 |
| Building Your Own DNS Blackhole List | p. 220 |
| Whitelisting Blacklisted Sites | p. 222 |
| Filtering Local Mail with procmail | p. 224 |
| Filtering Outbound Mail with procmail | p. 226 |
| Invoking Special Header Processing | p. 229 |
| Using Regular Expressions in sendmail | p. 231 |
| Identifying Local Problem Users | p. 234 |
| Using MILTER | p. 237 |
| Bypassing Spam Checks | p. 239 |
| Enabling Spam Checks on a Per-User Basis | p. 240 |
| Authenticating with AUTH | p. 242 |
| Offering AUTH Authentication | p. 249 |
| Authenticating with AUTH | p. 253 |
| Storing AUTH Credentials in the authinfo File | p. 257 |
| Limiting Advertised Authentication Mechanisms | p. 259 |
| Using AUTH to Permit Relaying | p. 261 |
| Controlling the AUTH= Parameter | p. 264 |
| Avoiding Double Encryption | p. 266 |
| Requiring Authentication | p. 267 |
| Selectively Requring Authentication | p. 271 |
| Securing the Mail Transport | p. 274 |
| Building a Private Certificate Authority | p. 280 |
| Creating a Certificate Request | p. 284 |
| Signing a Certificate Request | p. 286 |
| Configuring sendmail for STARTTLS | p. 288 |
| Relaying Based on the CA | p. 293 |
| Relaying Based on the Certificate Subject | p. 296 |
| Requiring Outbound Encryption | p. 298 |
| Requring Inbound Encryption | p. 302 |
| Requiring a Verified Certificate | p. 305 |
| Requiring TLS for a Recipient | p. 308 |
| Refusing STARTTLS Service | p. 313 |
| Selectively Advertising STARTTLS | p. 314 |
| Requesting Client Certificates | p. 316 |
| Managing the Queue | p. 318 |
| Creating Multiple Queues | p. 321 |
| Using qf, df, and xf Subdirectories | p. 323 |
| Defining Queue Groups | p. 325 |
| Assigning Recipients to Specific Queues | p. 329 |
| Using Persistent Queue Runners | p. 331 |
| Using a Queue Server | p. 333 |
| Setting Protocol Timers | p. 335 |
| Securing sendmail | p. 338 |
| Limiting the Number of sendmail Servers | p. 339 |
| Limiting the Number of Network Accessible Servers | p. 342 |
| Updating to Close Security Holes | p. 344 |
| Patching to Close Security Holes | p. 345 |
| Disabling Delivery to Programs | p. 348 |
| Controlling Delivery to Programs | p. 350 |
| Disabling Delivery to Files | p. 353 |
| Bypassing User .forward Files | p. 355 |
| Controlling Delivery to Files | p. 357 |
| Running sendmail Non-Set-User-ID root | p. 358 |
| Setting a Safe Default User ID | p. 361 |
| Defining Trusted Users | p. 363 |
| Identifying the sendmail Administrator | p. 365 |
| Limiting the SMTP Command Set | p. 367 |
| Requiring a Valid HELO | p. 370 |
| Restricting Command-Line Options | p. 371 |
| Denying DoS Attacks | p. 372 |
| Index | p. 375 |
| Table of Contents provided by Rittenhouse. All Rights Reserved. |