Filtering Mail with Mail::Audit and Mail::SpamAssassin

119
Filtering Mail with Mail::Audit and Mail::SpamAssassin Creede Lambard penguinsinthenight.com 20 August 2002

description

Creede Lambard penguinsinthenight.com 20 August 2002. Filtering Mail with Mail::Audit and Mail::SpamAssassin. General Outline:. General Outline:. How UNIX handles mail. General Outline:. How UNIX handles mail A simple understated diatribe against unsolicited commercial email. - PowerPoint PPT Presentation

Transcript of Filtering Mail with Mail::Audit and Mail::SpamAssassin

Page 1: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Filtering Mail with Mail::Audit and Mail::SpamAssassin

Creede Lambardpenguinsinthenight.com

20 August 2002

Page 2: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

Page 3: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail

Page 4: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail● A simple understated diatribe against unsolicited

commercial email

Page 5: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail● A simple understated diatribe against unsolicited

commercial email● Why mail filtering is a Good Thingtm

Page 6: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail● A simple understated diatribe against unsolicited

commercial email● Why mail filtering is a Good Thingtm

● If you use Windows . . .

Page 7: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail● A simple understated diatribe against unsolicited

commercial email● Why mail filtering is a Good Thingtm

● If you use Windows . . . ● Using Mail::Audit

Page 8: Filtering Mail with Mail::Audit and Mail::SpamAssassin

General Outline:

● How UNIX handles mail● A simple understated diatribe against unsolicited

commercial email● Why mail filtering is a Good Thingtm

● If you use Windows . . . ● Using Mail::Audit● Using Mail::SpamAssassin

Page 9: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 10: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 11: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 12: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 13: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 14: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 15: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 16: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 17: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 18: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Page 19: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

.forward to another mail address:

[email protected]

Page 20: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Unix handles your mail

Piping to another program:

| vacation

Page 21: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Does this look familiar?

Page 22: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

Page 23: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email

Page 24: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email– Sent in bulk

Page 25: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email– Sent in bulk– Directly or indirectly advertises a product or service

Page 26: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email– Sent in bulk– Directly or indirectly advertises a product or service– Not requested by recipient

Page 27: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email– Sent in bulk– Directly or indirectly advertises a product or service– Not requested by recipient

● Not necessarily mail you don't want . . .

Page 28: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam

● Unsolicited commercial email– Sent in bulk– Directly or indirectly advertises a product or service– Not requested by recipient

● Not necessarily mail you don't want . . .– Although for purposes of this presentation we'll treat them

the same.

Page 29: Filtering Mail with Mail::Audit and Mail::SpamAssassin

When Spamtm is acceptable

Page 30: Filtering Mail with Mail::Audit and Mail::SpamAssassin

When Spamtm is acceptable

Page 31: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

Page 32: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

● It shifts the burden of costs to the recipient

Page 33: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

● It shifts the burden of costs to the recipient● It clogs the Net

Page 34: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

● It shifts the burden of costs to the recipient● It clogs the Net● It wastes your time

Page 35: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

● It shifts the burden of costs to the recipient● It clogs the Net● It wastes your time● Items/services advertised through spamming tend to

be of questionable value

Page 36: Filtering Mail with Mail::Audit and Mail::SpamAssassin

spam is a Bad Thingtm

● It shifts the burden of costs to the recipient● It clogs the Net● It wastes your time● Items/services advertised through spamming tend to

be of questionable value● The vast majority of it is fraudulent

Page 37: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

Page 38: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it

Page 39: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . and hope it goes away

Page 40: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

Page 41: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . not an option

Page 42: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . not an option● Just hit Delete . . .

Page 43: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . not an option● Just hit Delete . . . The damage is already done

Page 44: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . not an option● Just hit Delete . . . The damage is already done● Filter it as early as possible in its life cycle

Page 45: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Dealing with spam

● Ignore it . . . not an option● Just hit Delete . . . The damage is already done● Filter it as early as possible in its life cycle● Filter it as it's trying to enter your machine

Page 46: Filtering Mail with Mail::Audit and Mail::SpamAssassin

If you use Windows . . .

Page 47: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail filtering

Page 48: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail filtering

| /home/you/mailfilter

Page 49: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail filtering apart from spam filtering

Page 50: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail filtering apart from spam filtering

● Separating mailing lists into their own folders

Page 51: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail filtering apart from spam filtering

● Separating mailing lists into their own folders● News-to-mail gateways

Page 52: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

Page 53: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:

Page 54: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established

Page 55: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established– Lots of sample scripts

Page 56: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established– Lots of sample scripts

● Disadvantages:

Page 57: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established– Lots of sample scripts

● Disadvantages:– Arcane syntax

Page 58: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established– Lots of sample scripts

● Disadvantages:– Arcane syntax– Like learning a new language . . .

Page 59: Filtering Mail with Mail::Audit and Mail::SpamAssassin

procmail

● Advantages:– Well-established– Lots of sample scripts

● Disadvantages:– Arcane syntax– Like learning a new language . . .– And it's not Perl!

Page 60: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

Page 61: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

● Written by Simon Cozens

Page 62: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

● Written by Simon Cozens

procmail is nasty. It has a tortuous and complicated recipe format, and I don't like it. I wanted something flexible whereby I could filter my mail using Perl tests.

- Simon Cozens, from the Mail::Audit perldoc

Page 63: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

● Written by Simon Cozens● Based on audit_mail and deliverlib by Tom

Christiansen

Page 64: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

● Written by Simon Cozens● Based on audit_mail and deliverlib by Tom

Christiansen● It's Perl!!!!!!!!!!!!!!!

Page 65: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::Audit

● Written by Simon Cozens● Based on audit_mail and deliverlib by Tom

Christiansen● It's Perl!!!!!!!!!!!!!!!● A module, not a standalone program

Page 66: Filtering Mail with Mail::Audit and Mail::SpamAssassin

How Mail::Audit Works

Page 67: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

Page 68: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object

Page 69: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

Page 70: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines

Page 71: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines– Subject

Page 72: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines– Subject– Absence, presence or content of headers

Page 73: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines– Subject– Absence, presence or content of headers– Body text

Page 74: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines– Subject– Absence, presence or content of headers– Body text

● Anything can be parsed

Page 75: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Parsing mail

● Mail::Internet object● Parse by:

– From, To or CC lines– Subject– Absence, presence or content of headers– Body text

● Anything can be parsed– Using Mail::Internet::as_string

Page 76: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

Page 77: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

● Download and install Mail::Audit from CPAN

Page 78: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

# perl -MCPAN -e shell

cpan> install Mail::Audit

Page 79: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

● Download and install Mail::Audit from CPAN● Create .forward file

Page 80: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

| /home/creede/mailfilter

Page 81: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

● Download and install Mail::Audit from CPAN● Create .forward file● Create filter file

Page 82: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

#!/usr/bin/perl

use Mail::Audit;

my $mail = new Mail::Audit;

Page 83: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

#!/usr/bin/perl

use Mail::Audit;

my $mail = new Mail::Audit;

my $from = $mail->from;

my $to = $mail->to;

my $cc = $mail->cc;

my $subject = $mail->subject;

Page 84: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

#!/usr/bin/perl

use Mail::Audit;

my $mail = new Mail::Audit;

my $from = $mail->from;

my $to = $mail->to;

my $cc = $mail->cc;

my $subject = $mail->subject;

my $_body = $mail->body;

my $body = join(“\n”, @$body);

Page 85: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

#!/usr/bin/perl

use Mail::Audit;

my $mail = new Mail::Audit;

my $from = $mail->from;

my $to = $mail->to;

my $cc = $mail->cc;

my $subject = $mail->subject;

my $_body = $mail->body;

my $body = join(“\n”, @$body);

my $xloop = $mail->get('X-Loop');

Page 86: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

#!/usr/bin/perl

use Mail::Audit;

my $mail = new Mail::Audit;

my $from = $mail->from;

my $to = $mail->to;

my $cc = $mail->cc;

my $subject = $mail->subject;

my $_body = $mail->body;

my $body = join(“\n”, @$body);

my $xloop = $mail->get('X-Loop');

my $message = $mail->{obj}->as_string;

Page 87: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Installation

● Download and install Mail::Audit from CPAN● Create .forward file● Create filter file● Remember to chmod 0755!

Page 88: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition

● $mail->accept– Accepts mail into default inbox

Page 89: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

if ($mail->from =~ /[email protected]/) {

$mail->accept;

}

Page 90: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

● $mail->accept(“/path/to/alternate/mailbox”)– Accepts mail into a non-default mailbox

Page 91: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

my $maildir = “/home/me/mail”;

if ($mail->subject =~ /spug/i) {

$mail->accept(“$maildir/spug-list”);

}

Page 92: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

● $mail->pipe(“/path/to/external/program”)– Pipes mail through the specified program

Page 93: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

if ($mail->subject =~ /keplerian/i) {

$mail->pipe(“/home/creede/parse_kepler”);

}

Page 94: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

● $mail->resend(“someguy\@otherisp.com”)– Sends the mail in its entirety to another address

Page 95: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

if (is_419($message)) {

$mail->{noexit} = 1;

$mail->put_header('X-Loop',

'[email protected]');

$mail->put_header('To', "$to (forwarded --

no monetary loss -- for your files)");

$mail->resend("uce\@ftc.gov");

$mail->resend("419.fcd\@usss.treas.gov");

$mail->{noexit} = 0;

$mail->ignore;

}

Page 96: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

● $mail->reject($reason)– Rejects the mail, returning it to the sender with the

(optional) reason specified

Page 97: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

if (is_murky($mail)) {

$mail->put_header('X-Loop',

'[email protected]');

$mail->reject("I don't like spam.");

}

Page 98: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

● $mail->ignore– Consigns the mail to the bit bucket

Page 99: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail disposition (continued)

# kill off Korean spam

if ($body =~ /ks.c/i) {

$mail->ignore;

}

Page 100: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin

Page 101: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin

● Header analysis

Page 102: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin

● Header analysis● Text analysis

Page 103: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin

● Header analysis● Text analysis● Blacklists

Page 104: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin

● Header analysis● Text analysis● Blacklists● Vipul's Razor

Page 105: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin – Installation

● Download and install Mail::SpamAssassin from CPAN

Page 106: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin – Installation

# perl -MCPAN -e shell

cpan> install Mail::SpamAssassin

Page 107: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin – Installation

#!/usr/bin/perl

use Mail::Audit;

use Mail::SpamAssassin;

my $mail = new Mail::Audit;

my $spamtest = new Mail::SpamAssassin;

my $status = $spamtest->check($mail);

if ($status->is_spam()) {

$mail>accept(“/home/you/spamtrap”);

}

Page 108: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin – Configuration

● Load configuration from /etc/mail/spamassasin.conf or /home/you/.spamassassin/user_prefs

Page 109: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Mail::SpamAssassin – Configuration

# SpamAssassin user preference file

#

required_hits 4

#

# default is 5

#

whitelist_from [email protected]

blacklist_from [email protected]

score USER_AGENT_AOL 1.00

Page 110: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Paul Graham's Plan for Spam

Page 111: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Paul Graham's Plan for Spam

madam 0.99

promotion 0.99

republic 0.99

republic 0.99

shortest 0.047225013

mandatory 0.047225013

standardization 0.07347802

2600 0.0813768

sorry 0.08221981

supported 0.09019077

Page 112: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information

Page 113: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information

● Internet Mail

http://www.imc.org/rfcs.html

Page 114: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information

● Internet Mail

http://www.imc.org/rfcs.html● Mail::Audit

http://simon-cozens.org/writings/mail-audit.html

Page 115: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information

● Internet Mail

http://www.imc.org/rfcs.html● Mail::Audit

http://simon-cozens.org/writings/mail-audit.html● Mail::SpamAssassin

http://www.spamassassin.org/

http://www.deersoft.com (Outlook)

Page 116: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information

● Internet Mail

http://www.imc.org/rfcs.html● Mail::Audit

http://simon-cozens.org/writings/mail-audit.html● Mail::SpamAssassin

http://www.spamassassin.org/

http://www.deersoft.com (Outlook)● Paul Graham's Plan for Spam

http://www.paulgraham.com/spam.html

Page 117: Filtering Mail with Mail::Audit and Mail::SpamAssassin

URLs for more information● Internet Mail

http://www.imc.org/rfcs.html● Mail::Audit

http://simon-cozens.org/writings/mail-audit.html● Mail::SpamAssassin

http://www.spamassassin.org/

http://www.deersoft.com (Outlook)● Paul Graham's Plan for Spam

http://www.paulgraham.com/spam.html● And of course Google.com!

Page 118: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Questions?

Page 119: Filtering Mail with Mail::Audit and Mail::SpamAssassin

Thank you!

[email protected]

http://www.penguinsinthenight.com/spamtalk