Spam Filtering for Mail Exchangers

How to reject junk mail in incoming SMTP transactions.

Tor Slettnes

Edited by

Joost De Cock

Devdas Bhagat

Tom Wright

Version 1.0 -- Release Edition

Table of Contents
1. Purpose of this Document
2. Audience
3. New versions of this document
4. Revision History
5. Credits
6. Feedback
7. Translations
8. Copyright information
9. What do you need?
10. Conventions used in this document
11. Organization of this document
1. Background
1.1. Why Filter Mail During the SMTP Transaction?
1.2. The Good, The Bad, The Ugly
1.3. The SMTP Transaction
2. Techniques
2.1. SMTP Transaction Delays
2.2. DNS Checks
2.3. SMTP checks
2.4. Greylisting
2.5. Sender Authorization Schemes
2.6. Message data checks
2.7. Blocking Collateral Spam
3. Considerations
3.1. Multiple Incoming Mail Exchangers
3.2. Blocking Access to Other SMTP Servers
3.3. Forwarded Mail
3.4. User Settings and Data
4. Questions & Answers
A. Exim Implementation
A.1. Prerequisites
A.2. The Exim Configuration File
A.3. Options and Settings
A.4. Building the ACLs - First Pass
A.5. Adding SMTP transaction delays
A.6. Adding Greylisting Support
A.7. Adding SPF Checks
A.8. Adding MIME and Filetype Checks
A.9. Adding Anti-Virus Software
A.10. Adding SpamAssassin
A.11. Adding Envelope Sender Signatures
A.12. Accept Bounces Only for Real Users
A.13. Exempting Forwarded Mail
A.14. Final ACLs
B. GNU General Public License
B.1. Preamble
B.3. How to Apply These Terms to Your New Programs
List of Tables
1. Typographic and usage conventions
1-1. Simple SMTP dialogue
A-1. Use of ACL connection/message variables