Friday, May 11, 2007

Route an incoming message

What is the typical route an incoming message takes?

Here's the full pipeline of programs that get run between incoming remote SMTP connection and mail delivery on a "typical" toaster:

A) SMTP phase
1. softlimit (makes sure the connection doesn't use too much RAM)
2. tcpserver (handles the incoming TCP connection and applies local rules)
3. rblsmtpd (applies RBL and RWL rules to incoming connections)
4. qmail-smtpd (manages the conversation with the remote SMTP client)
5. simscan
a) clamav (run by simscan)
b) spamassassin (run by simscan)
6. qmail-queue (places non-rejected mail into local queue)
B) Local Delivery Phase
1. qmail-send (reads mail from local queue)
2. qmail-lspawn (decides whether to deliver the mail locally)
3. qmail-local (.qmail processing)
4. maildrop (runs the mailfilter script)
5. deliverquota
qmail-local reads the .qmail files and passes control of the message to programs specified there.

deliverquota is called by the mailfilter script to check quotas and deliver the message to the appropriate Maildir if the quota is okay.



How do I route outgoing mail through my ISP's SMTP server?

A: If your ISP's mailserver is mail.someisp.net, add

:mail.someisp.net
to the bottom of /var/qmail/control/smtproutes. This will only work if your ISP allows relaying from its entire dynamic IP range. This is usually the case.

No comments: