Lesson 16: Email¶
- Email service
 - How it works
 - Configuration Postfix
 - Planning
 
Email: System Components¶
- Mail User Agent (MUA)
 - Mail Transport Agent (MTA)
 - Delivery Agent (MDA)
 - Access Agent (MAA)
 
Note
| MUA: | 
  | 
|---|---|
| MTA: | 
  | 
| MDA: | 
  | 
| MAA: | access to mail store (i.e IMAP, POP)  | 
Email: System Components¶
Note
The most confusing part about email is understanding the routing. Knowing the different components is important to fully grasping it.
Transport Agents¶
Accept mail form user agent
| Postfix: | More common, easier to configure & use | 
|---|---|
| Sendmail: | Highly configurable, steep learning curve | 
| Exim: | Similar to Postfix | 
| Qmail: | Logging is horrid, but some people like it | 
Note
Postfix is the easiest to learn and understand, but queue management is a “black box”
Sendmail & qmail is great for high volume sites, but postfix/exim still perform great.
Sendmail has great options for queue management
- Features to look out for:
 - SASL (authenticated SMTP)
 - Queue Management
 
Delivery Agents & Message Stores¶
procmail – great filtering
maildrop – newer procmail-like
mail.local
- Message Stores
 - mbox – one large file, locking problems
 - maildir – one file per message, great for IMAP
 
Note
Consider scaling issues for the mailstore.
Generally maildir is the best & most compatible option
Anatomy of a Mail Message¶
- Envelope
 - Destination email address
 
- Headers
 - Record of variety of important information
 - Great for tracking down problems
 
Body of the message
Note
- Headers:
 - Know how to identify and track queue id’s
 - Originator starts at the bottom
 - Headers can be forged
 - X- Headers non-RFC headers
 - Message ID is always unique
 
MTA Log Files¶
- Track emails via queue ID
 - Look something like: 03CE18819A
 
Tracking via message ID
- Informational fields
 - to, from, status, relay, etc
 
Log files differ between each MTA
Note
Being able to read log files is important.
Configuring Postfix¶
- /etc/postfix
 - main.cf – main config file
 - master.cf – postfix process config file
 - /etc/aliases – local email forwarding
 
- Set to relay email to central MTA
 - relayhost = [smtp.osuosl.org]
 - myorigin = osuosl.org
 - /etc/aliases – root: foo@gmail.com
 
Note
- relayhost: [smtp.osuosl.org] vs. osuosl.org
 - [smtp.osuosl.org] goes directly to smtp.osuosl.org
 - ‘osuosl.org’ does DNS lookup and uses MX
 
Make sure you run “newaliases” after updating /etc/aliases
Reloading postfix is ideal too
- To test email:
 - echo “this is a test” | mail root@localhost
 
Sendmail¶
- Config files created via m4
 - Makefile
 
Always edit the .mc files not the .cf files
Remember to rebuild .cf files with make
Extremely configurable
Note
Config files in /etc/mail usually Primary file to edit should be sendmail.mc
Email: Viruses & Spam¶
- Virus
 - Clamav
 - Ensure freshclam is running too
 
- Spam
 - Spamassassin
 
- All-in-one
 - Amavis
 
Check abuse emails
Note
Make sure you have enough CPU & RAM for Spam checking Neglecting abuse emails may get you blacklisted For larger infrastructures, have dedicated machines to process spam Important to keep these updated
Email: Infrastructure Implementation¶
- Small sites
 - Can have MTA/MDA/etc all on the same server
 
- Medium sites
 - Separate MTA from MDA
 
- Large sites
 - Split outgoing mail and incoming
 
Note
Consider resources, redundancy, & scalability. MDA is hardest to scale.
- Look at Cyrus Murder for large scalability
 - dovecot is another option
 
Email: Security¶
- On General servers:
 - Only listen on localhost
 - Don’t allow other hosts to relay through it
 - Relay all outbound mail through central host
 
- On Email servers:
 - Restrict relaying to trusted networks
 - Implement antivirus & spam protection
 
Note
Always test new configurations to ensure spammers can’t relay mail through your server Having dedicate outbound servers will ensure they always catch spam/viruses/etc