Introduction
- Cost - No per user license fees
- Ease of maintenance
- Security - The components of the solution should have a proven security track record
- Robustness - The components should be mature and should have been used in production environments. Development should be active to accelerate bug fixes, feature enhancements and security updates.
- Scalability - The solution must meet its purpose for many months. Its architecture also should allow adding extra servers to distribute the load and offer redundancy.
Mail Filtering
Additions to Sendmail
Mostly stolen from http://www.acme.com/mail_filtering
Slamming is a widely deployed tactic in which the spammer quickly fires off SMTP commands without waiting for responses from the receiving server. Poorly behaved MTA will then accept and process the commands, instead of rejecting them as it should.
In a normal SMTP transaction, the client first connects and the server is supposed to send a "220" greeting
to which the client will respond with "EHLO" or "HELO" and the transaction continues. When the client sends more commands without listening the greet_pause feature detects this and mark the connection bad. Additional commands that are sent are ignored with a 554 (transaction failed) message.
FEATURE(access_db)dnl
FEATURE(`greet_pause',5000)
This feature tells sendmail to slow down any connections that try to send to lots of non-existent usernames. Some spammers do dictionary attacks, trying to send to thousands of different usernames on your system just to see which ones exist. If the specified number of recipients in a single SMTP transaction have been rejected, the MTA will sleep for one second after each subsequent RCPT command in that transaction.
define(`confBAD_RCPT_THROTTLE', `1')
This setting limits the number of recipients allowed on each message. Some spammers try to deliver messages to thousands of recipients at once. No more than the allowed specified number of recipients will be permitted in the SMTP envelope. Further recipients will receive a 452 error code
define(`confMAX_RCPTS_PER_MESSAGE', `10')
Sendmail lets you specify timeouts for various phases of the mail transaction. Some of the default values are ridiculously high. For instance, up to an hour waiting for the next command to be issued. This can result in a bunch of sendmail processes sitting around twiddling their thumbs, using up memory. I lower the command timeout to a minute, and a lot of the other timeouts too.
define(`confTO_ICONNECT', `15s')dnl
define(`confTO_CONNECT', `3m')dnl
define(`confTO_HELO', `2m')dnl
define(`confTO_MAIL', `1m')dnl
define(`confTO_RCPT', `1m')dnl
define(`confTO_DATAINIT', `1m')dnl
define(`confTO_DATABLOCK', `1m')dnl
define(`confTO_DATAFINAL', `1m')dnl
define(`confTO_RSET', `1m')dnl
define(`confTO_QUIT', `1m')dnl
define(`confTO_MISC', `1m')dnl
define(`confTO_COMMAND', `1m')dnl
define(`confTO_STARTTLS', `2m')dnl
Bayesian Filtering
SPF and DomainKeys Identified Mail
Anti Virus
Procmail
- Filter messages with empty or non-existant subject lines
subj_=`formail -xSubject: | expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`
:0:
* subj_ ?? ^^^^
/dev/null
High availability, Fault Tolerance and Failover
Load balacing
Eliminating Points of Failure
Monitoring and Profiling
Comments (0)
You don't have permission to comment on this page.