                ե륿

------------------------------------------------------------
1	ե륿󥰤ȤȤγ
1.1	fml ƥ᡼Υե륿󥰵ǽͭˤ
1.2	ޥ
1.3	Ƥʤ

2	ƥ᡼Υե륿󥰻
2.1	Message-Id: ʤΤ reject
2.2	Subject:Υѥ󤬤äݤ
2.3	Subject:Υѥ(ʸʸ鷺)äݤ
2.4	received: ԤΤɤ spam.co.jp ȤɥᥤޤǤ
2.5	ʸhttp-equiv=3DContent-Type HTMLĤƤǤʥ᡼ϵ
2.6	From: Υɥᥤ Message-ID ˴ޤޤƤʤʤ
2.7	ԣ
2.8	sendmail  PICKY_HELO_CHECK Ȥ߹碌
2.9	إå¤äƤΤϤǤ礦
2.10	To: Ȥ Cc: ˥᡼󥰥ꥹȤʤΤSPAM
2.11	EnvelopeFilterϸ᤮롣VBscriptƤ
2.12	Notes ǡDuplicated Message-IDפˤʤ륱
2.13	Υɥ쥹ݤ(e.g. spam mails)
2.14	ˤĤƤޤ signature 

3	Q & A
3.1	"one line body" ʤΤˤϤ㤦;-)

4	ե륿󥰵¤
4.1	᡼ؤΥե륿
4.2	signature ɤȽꤹ
4.3	ΥեɤƤˤäƤϵݤ
4.4	ٹ𤹤ˤ

5	ContentHandler
5.1	ե륿롼λ
5.2	 by the original author 

6	桼٥ǤΥե륿
6.1	᡼ط Filtering FAQ
6.2	MH slocal Interface

7	¤
7.1	櫓HTML᡼к
7.2	In-Reply-To:  References: ĤʤREPLY᡼֤MUAк

Appendix A	postfix Υե륿
Appendix A.1	᡼ʸΥե륿 body_checks ǥ쥯ƥ
Appendix A.2	إåΥե륿 header_checks
Appendix A.3	Content Filter

Appendix B	Sendmail specific topics
Appendix B.1	PerlMX
------------------------------------------------------------


1	ե륿󥰤ȤȤγ

ե륿󥰤ȤäƤ

1. 桼٥ǤΥե륿 (=> 6)
   Ĥޤ
	סؽ񤭹
	: MTA -> ե륿 -> /var/mail/ Ȥ MailDir/

	Υץư
	: MTA -> ե륿 -> fml

	ϰ̤ˤϣ̤ͣäǤϤʤʬSPAM᡼Ƥ伫ư
	եѤ褦ʤȤǤ

2. fml ȤϤ줿᡼ϤƤ => 4.1

	MTA -> fml (-> ե륿 -> /ʤ)
	    Ĥޤ ()fmlư

ΣĤΰ̣礤ޤfmlŪ˥ե륿󥰤ȤΤϼ˸ 2. 
ΤȤؤƤޤ

 1. ˤĤƤϾؤΥݥ󥿤Ȥˤޤ
See also: 6 

1.1	fml ƥ᡼Υե륿󥰵ǽͭˤ

	$USE_DISTRIBUTE_FILTER = 1;

makefml config 

   ᥤ˥塼 -> ƥ -> USE_DISTRIBUTE_FILTER -> ON

1.2	ޥ

config.ph ˥ե륿󥰤񤯤ȤǤޤ:

	&DEFINE_FIELD_PAT_TO_REJECT('subject', 'FREE|SEX|ADULT|XXX');
	&DEFINE_FIELD_PAT_TO_REJECT('subject', '/FREE|SEX|ADULT|XXX/');
	&DEFINE_FIELD_PAT_TO_REJECT('from', 'ADULT');

1.3	Ƥʤ

ѥ饰(ԤȶԤδ)ȤȽꤷƤΤǡƤʤΤ
褦˥ե륿ƤΤ

	ޥɤΥѥ饰դ餷

	ǸΥѥ饰դsignature(ƹͤ)

	ܸΤϤäƤѥ饰դ餷

Τ褦ʳƥѥ饰դɤΤ褦ˤߤ뤫åƤޤ

㤨ФƤʤǤƤȤƤϡ֥ޥɥ᡼ȥ˥㥢
ǤĤΥѥ饰դˤ񤤤Ƥ̤Υ᡼ˤߤʤƤ
ޤ
    # help
    *----------------------------*
    ˤ㤢
    *----------------------------*
    ~.q
    
2	ƥ᡼Υե륿󥰻

2.1	Message-Id: ʤΤ reject

	&DEFINE_FIELD_PAT_TO_REJECT('message-id', '^\s*$');

2.2	Subject:Υѥ󤬤äݤ

Subject:  FREE SEX ADULT XXX ΤŤ줫ʸäƤ
	SPAMȤߤʤƼΤƤ(Ǥ⤳줹FreesoftΤƤ㤦;-)
	ǽȺǸ / ϤäƤʤƤ褤Ǥ/ ʳϻȤʤǲ

	&DEFINE_FIELD_PAT_TO_REJECT('subject', 'FREE|SEX|ADULT|XXX');
	&DEFINE_FIELD_PAT_TO_REJECT('subject', '/FREE|SEX|ADULT|XXX/');
	&DEFINE_FIELD_PAT_TO_REJECT('from', 'ADULT');

2.3	Subject:Υѥ(ʸʸ鷺)äݤ

	Adult  ADULT ʸʸ˴طʤݡ/i Ȥperl
	ʤߤηȤޤ/ ʳϻȤʤǲ

	&DEFINE_FIELD_PAT_TO_REJECT('subject', '/free|sex|adult|xxx/i');

2.4	received: ԤΤɤ spam.co.jp ȤɥᥤޤǤ

$DISTRIBUTE_FILTER_HOOK = q#
    if ($e{'h:received:'} =~ /from spam.co.jp/) {
	return 'from a host in spam blacklist';
    }
#;

2.5	ʸhttp-equiv=3DContent-Type HTMLĤƤǤʥ᡼ϵ

$DISTRIBUTE_FILTER_HOOK = q#
    if ($e{'Body'} =~ /http-equiv=3DContent-Type/) {
	return 'mail with appended HTML documents';
    }
#;

2.6	From: Υɥᥤ Message-ID ˴ޤޤƤʤʤ

$DISTRIBUTE_FILTER_HOOK = q#
   local($domain) = (split(/@/, $From_address))[1];
   if ($e{'h:message-id:'} !~ /$domain/i) {
	return 'Message-Id conflicts your From: address';
   }
#;

2.7	ԣ

: (not tested ;-)
 received: ԤΤɤ spam.co.jp Ȥɥᥤ򸫤Ĥݤ롣
 ʸ http-equiv=3DContent-Type HTMLĤƤǤʥ᡼
    reject 
 From: Υɥᥤ Message-ID ˤޤޤƤ뤫ɤ
   ޤޤƤʤʤ᡼ε¤Ȥߤʤ reject

$DISTRIBUTE_FILTER_HOOK = q#
    if ($e{'h:received:'} =~ /from spam.co.jp/) {
	return 'from a host in spam blacklist';
    }

    if ($e{'Body'} =~ /http-equiv=3DContent-Type/) {
	return 'mail with appended HTML documents';
    }

   local($domain) = (split(/@/, $From_address))[1];
   if ($e{'h:message-id:'} !~ /$domain/i) {
	return 'Message-Id conflicts your From: address';
   }

#;

2.8	sendmail  PICKY_HELO_CHECK Ȥ߹碌

    # PICKY_HELO_CHECK
    if ($e{'h:x-authentication-warning:'} !~ /Host \S+ claimed to be \S+/) {
	$r = "Your SMTP session or your host config is invalid";
    }

Ǥ᡼Фͤ virtual domain ȤȥХХ reject ƺ
㤦 Ǥ⹽ʤȤͤϻȤäƤߤ褦()

2.9	إå¤äƤΤϤǤ礦

ޤΥ¤ϥإåʸޤĹˤĤƤǤ
إåĹåȤץϺϤʤǤ

إåʬ礭ƤҤäϤɤΥåƱ
إå̤ʸǤˤϡɤإå礭ϸǤ礦
ȤǤΤ̯ʾϤ󤬤ƤʤȤФʤ

2.10	To: Ȥ Cc: ˥᡼󥰥ꥹȤʤΤSPAM

fml-support: 06389
fml-support: 07286

SPAM ᡼Ƥ

To:  Cc: Ԥ ML Υɥ쥹 (ʸ/ʸ϶̤ʤ) ä
ʤСΥ᡼ݤ

$USE_DISTRIBUTE_FILTER = 1;
$DISTRIBUTE_FILTER_HOOK = q#
    if (($e{'h:to:'} !~ /$MAIL_LIST/i) && ($e{'h:cc:'} !~ /$MAIL_LIST/i)){
        return 'Not addressed to mailing list';
    }
#;

2.11	EnvelopeFilterϸ᤮롣VBscriptƤ

1. Content-Type:  .vbs .js .jse .exe Ȥ᡼
2. Υ᡼ badarticle Ȥե¸ 
3. ̤ͣˤϥʥ󥹤ή
   ֥륹ݤΤ褿Τǡ̤ͣήӥե 

    # check attatchment of VB script and others :-)
    $START_HOOK .= q#
        if ($Envelope{'Body'} =~ /Content.*\.(vbs|js|jse|exe)/i ||
    	$Envelope{'Body'} =~ /filename=.*\.Pretty Park\.exe/i ) {
    	my($savefile) = "$FP_TMP_DIR/badarticle.$PCurrentTime";
    	if (open(SAVE, "> $savefile")) {
    	    print SAVE $Envelope{'Header'};
    	    print SAVE "\n";
    	    print SAVE $Envelope{'Body'};
    	    close(SAVE);
    	    $Envelope{'Body'}  = 'WARNING: incoming mail is ignored ';
    	    $Envelope{'Body'} .= 'since it may be with virus.';
    	    $Envelope{'Body'} .= "\n\n";
    	    $Envelope{'Body'} .= "This article is saved in\n";
    	    $Envelope{'Body'} .= $savefile;
    	    $Envelope{'Body'} .= "\n\n";
    	    $Envelope{'Body'} .= "-- $MAIL_LIST maintainer\n";
    	}
    	else {
    	    &Log("system error: pass this article through");
    	}
        }
    #;

2.12	Notes ǡDuplicated Message-IDפˤʤ륱

Q: NotesΥ᡼ǥƥץ졼ȤȤƱMessage-IDˤʤΤ
  Duplicated Message-IDפˤʤ륱Ϥɤ롩

ľ褦ʤǤ;-) NOTESôʸ򤤤ޤ礦 

2.13	Υɥ쥹ݤ(e.g. spam mails)

ᥤΥ롼 reject 륳ɤʤäƤޤ(2.1 gamma
206ʹ)$REJECT_ADDR_LIST (ǥեȤ $DIR/spamlist)  perl 
ɽǽ񤤤ɥ쥹褿᡼ˤϲ⤷ʤ reject 褦
ˤʤޤξޥɡưϿ٤Ƥξˤؤ
 reject ޤ

   \S+@spam.org (spam.org Υɥ쥹)
   manager@\S+  (륵ȤθĿͤɽʤɥ쥹ϵ)

ߤʷǤʤǥեȤ $REJECT_ADDR ϤȤ̤ŬѤ
ޤ

2.14	ˤĤƤޤ signature 

(򲼤뤫ˤȤ򤹤ȤǽƤ륵ӥ
ʤȤ⤫)⤽᡼ʸ򤤤ʤƤȤǤʤäǤ

줬ǤȤȤƤβǤ뤷̩ݻ¸ߤƤʤ
ǤȤȤ̩̿˴ؤƥ뤬ʤȤȤȤǤϤ
Ǥ礦

ʬHOOK:

$SMTP_OPEN_HOOK = q#
	local($uja);
	for (split(/\n/, $e{'Body'})) {
	   next if /=+/ .. /\-+/;
	   $uja .= "$_\n";
	}

	$e{'Body'} = $uja;
#;

3	Q & A

3.1	"one line body" ʤΤˤϤ㤦;-)

ϥޥ(˸)Ϥ˺ޤ
Ǥ⤳ʤΤƤƤޤޤ

    64MB
    
    ܸΥѥ饰
ȤΤϺǸΥѥ饰դ signature ȻפäȽ̵뤷Ƥ
뤫ǤĤޤꤳξϺǽ
    64MB
ʬȽꤷƤޤ

TODO: 櫓Ǥˤɤб뤫Ǥ

 signature 

   ǸΥѥ饰դ @    :// ޤǤ signature Ȥߤʤ
   Ǥʤʤ顢ǸΥѥ饰դե륿ΥåȤˤ

褦ˤȤΤʤȤäƤΤǤɤǤ礦͡

References: fml-support: 08062

4	ե륿󥰵¤

4.1	᡼ؤΥե륿

	$USE_DISTRIBUTE_FILTER

򥻥åȤȡľ(&Distribute 롼Ƭ) 
%Envelope Υǡ(إå᡼ʸ)Фƥե륿
ޤΤƤΥ᡼򤷤ʤʤɤǤ褦ˤ
ޤ

	$USE_DISTRIBUTE_FILTER

򥻥åȤΥǥեȤǤ((97/12/14))Τ褦ʥ᡼ 
reject ޤ

	 ʸʤ᡼
	 help  unsubscribe ʤɤαѸԥ᡼
	 %echo դۤ ι
	   1999/02/24ϤιԤҤääǵ
	   Ϥѥ饰դιԤΤΤλΤߵ
	   Ĥޤضԡ%echoʤȤԡܶԡ٤λä
	 Message-Id: ϯ addr-spec ǤʤΤ SPAM ᡼

   [options]

	$FILTER_ATTR_REJECT_COMMAND (default 0)

	 #unsubscribe ʤɤΥޥɤϤ

	$FILTER_ATTR_REJECT_2BYTES_COMMAND (default 0)

	 ХȱʸǤϤޤԤ
	   : գΣӣգ£ӣãңɣ£ ۤۤ

ʳι٤ʥå

	$DISTRIBUTE_FILTER_HOOK (for post)
 $REJECT_DISTRIBUTE_FILTER_HOOK ǤǽǤ(obsolete)
 Ʊͤ $REJECT_COMMAND_FILTER_HOOK ⤢ޤ obsolete

	$COMMAND_FILTER_HOOK (for command)

ľ perl ιʸ %e (%Envelope) ϥåѿȤäƵҤƲ
HOOK Ǥ $e{'h:from:'} ʤɤǥϥå˥Ʋ
ΤȼθȤޤƳΤݤȤ⤦Τ
perl 񤭤Ǥ

 HOOK ǤϼΤ褦ʤȤԤƤޤ

	reject  reject ͳޤʸ return 
	Ǥʤʤ ֤ʤ (return ''; ʤ)

 reject ͳϥ˻Ĥޤޤ

	$FILTER_NOTIFY_REJECTION

ȤѿꤵƤСͳ򤽤Υ᡼֤
ǥեȤǤñ̵뤹Ǥ

4.2	signature ɤȽꤹ

fml-support: 08182
    if ( ᡼ʸ 1 paragraph Τ ) { 
    	äƤߤ (signature ʤ)
    }
    elsif ( ᡼ʸ 2 paragraphs ) {
    	ǸΥѥ饰դäƤߤ (ʸ  signature ʡ)
    
      if ( Ѥݤʡ ) {
    
      }
      elsif ( ǸΥѥ饰դ 
    	  @ Ȥ :// Ȥ TEL: Ȥ FAX: ȤޤǤ롩 
    	accountdomain ʤ󤫤⤿ᤷƤߤ褦 ) {
      }
    
    }	

4.3	ΥեɤƤˤäƤϵݤ

	&DEFINE_FIELD_PAT_TO_REJECT(إåե, ɽ, REASON)

Ȥؿ EnvelopeFilter ǻȤ %REJECT_HDR_FIELD_REGEXP Ȥ
ϥåƤǤޤϤե(㤨 Subject:)
ƤˤĤ reject ޤCase Sensitive ǤADULT Ƚ
 adult ˥ޥåޤ
XXX "reason"ϤޤƤޤ

4.4	ٹ𤹤ˤ

ƤΤǤϤʤٹͿƤϵɤȤ̣ʤǤ


ե륿󥰵ϤΤΤǤϤޤ
Ƥ˺Ƥޤ
ʤΤǡ꤯ HOOK Ȥ(֤)Ǥ褦ʤޤ

$START_HOOK = q#
   if ($USE_DISTRIBUTE_FILTER) {
        &EnvelopeFilter(*e, 'distribute');
        undef $DO_NOTHING;
    }
#;

: EnvelopeFilter() η̤Ѥ뤱:-)
      $DO_NOTHING ꥻåȤƤޤФҤääƤҤʤƤ
      θ̤Σ̥ͣץˤʤ뤫

5	ContentHandler

5.1	ե륿롼λ

multipart γƥ֥åФԤʤΤǡɤͤʤ
ԤȰ㤦ư򤷤ޤ

 text/plain  text/html ʤ᡼ html ʬ

  &ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip+notice');

 ̤Υƥȥ᡼ OK
	text/plain + text/html  html ʬá
	text/plain + text/html + ʳ(źեե) 
	ǽ text/plain ʳ

  &ADD_CONTENT_HANDLER('multipart/.*', 'text/plain', 'allow');
  &ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip+notice');
  &ADD_CONTENT_HANDLER('multipart/.*', '.*/.*', 'strip');

5.2	 by the original author 

Author: t-nakano@marimo.org

# [Example]
# add them at the last of config.ph (but before the last "1;").
#

&ADD_CONTENT_HANDLER('multipart/.*', 'text/plain',   'allow');
&ADD_CONTENT_HANDLER('multipart/.*', '.*/.*',        'reject');
&ADD_CONTENT_HANDLER('text/plain',   '.*/.*',        'allow');
&ADD_CONTENT_HANDLER('!MIME',        '.*/.*',        'allow');

&ADD_CONTENT_HANDLER(type, subtype, action);
	type		᡼ΤMIME
	subtype		multipartλΤ줾Υ֥åΥ
	action		ޥå˵٤


  &ADD_CONTENT_HANDLER('multipart/.*', 'text/plain',   'allow');
  MIME multipartΥ᡼뤬 text/plain ʬ̤

  &ADD_CONTENT_HANDLER('multipart/.*', '.*/.*',        'reject');
  MIME multipartΥ᡼뤬餹٤Ƶ

'/' Ƕڤä perl ɽɽǤޤ
!MIME  MIME ʳ(¾)Ǥ

ƥѡˤưǤޤưϡ

allow			ۿ

	allow ϤΥƥƥ multipart ʬ򤷤Ƥޤޤ
	Ĥޤ allow ˤ multipart Ǥʤ᡼ˤʤޤ

allow+multipart		Ĥmultipart Υƥƥ multipart
			Τޤ޻Ĥ

	allowȰۤʤꤳξmultipart ϤΤޤ̤ޤ

strip			ѡȤϺ

	ĤޤʬڤȤޤ

strip+notice		ƥƥڤȤƼԤ֤

	1. ʬڤȤ (stripƱ)
	2. ƼԤڤȤΤ餻

reject			ΥѡȤХ᡼ۿ

	ĤޤꡢսǤޥå꤬Х᡼Τ

Ǥޤ

6	桼٥ǤΥե륿

UNIXʤ procmail (http://www.procmail.org/)  mailagent, MH slocal 
ʤɤϤ᤽Τ椤äѤޤ

Ȥ

	UNIXξ toolbox oriented OSʤΤǡե륿󥰥ץ
	˲ˤȤǥե륿򤹤롣
	Ĥޤꤽ ~/.forward ʤɤ˽񤯤櫓Ǥ

	ʳOSǤϥ᡼륽եȡʥ饤ȡˤ¢Ƥ뵡
	ǽȤȤ¿Ĥޤ꼫ʬΥեȤˤʤФǽ
	UNIXΤ褦ʤȤǤʤ櫓ʤ¿ʬȤƤ

6.1	᡼ط Filtering FAQ

᡼ط Filtering FAQ ȤΤ⤢ޤURL

	http://www.ii.com/internet/faqs/launchers/mail/filtering-faq/

plaintext version 

	ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq

[procmail faq]

    Html and text version of pm-tips

	http://www.procmail.org/jari/pm-tips.html
	http://www.procmail.org/jari/pm-tips.txt

    Other procmail docuemts

        Era's exellent procmail pages (including procmail faq) are at:

	http://www.iki.fi/~era/procmail/links.html
	http://www.iki.fi/~era/procmail/mini-faq.html

6.2	MH slocal Interface

Ǥ slocal Ѥ꤫Ҥ٤ޤ

	~/.forward 
	"|/usr/local/lib/mh/slocal -user username || exit 75"

Ƚ񤭤ޤ褯̾ʹ slocal äƤĤǤ͡
slocal Ǥϡ  ~/.maildelivery ꤷޤ

㡧
To: username@domain (uja) Υ᡼ϣ̰ͣȤߤʤ
ʳס̤εư

#field   pattern   action  result    string
To     uja  |    R    "/fml-DIR/fml.pl /fml-DIR /fml-DIR"

# drop to the personal mail-spool
default  -       >       ?      /var/mail/fukachan


ξ PIPE  fml.pl ϤȤ UNIX FROM ƤޤΤ⤷
ޤ󤬡ưŪ fml.pl Ŭ͡uidФ͡ˤ


7	¤

7.1	櫓HTML᡼к

ߤǤ multipart ե륿Ȥ ContentHandler ޤ
See also: 5 

Ťϰʲ̤Ǥѿ ContentHandler Ǥ̸ߴ
ͭǤ

	$HTML_MAIL_DEFAULT_HANDLER = 'strip'; (default "")

桼Υ᡼MIME/MultipartȤ鷺ֺǽΥޥѡ
֥åĤƸϤ֤ä롣ĤޤȤplainHTMLʬ
ĥ᡼뤬褿plainʬĤȤ롣Ǥ
ɤ()

	$HTML_MAIL_DEFAULT_HANDLER = 'strip'; (default strip)

ͤ strip  reject ǡǥեȤstrip
strip HTMLʬڤȤäMLή
rejectMLˤήHTML᡼ϵݤ˥᡼롣

[ߴ] $AGAINST_HTML_MAIL Ťѿ̾ѿꤷƤƤߴ
ݾڤΤ'strip'⡼ɤưcf/MANFESTǤ̤

7.2	In-Reply-To:  References: ĤʤREPLY᡼֤MUAк

	$AGAINST_MAIL_WITHOUT_REFERENCE = 1; (default 0)

˸ʥץ
Eudora  In-Reply-To: References: ĤƤʤMUAк
0. Subject: TAGĤ뤳Ȥ(not default)
1. Message-ID: ϣͣȼΤΤĤ
2. Subject: Re: [elena 00100] Τ褦TAGϤ
ȤǣͣΤΥåɤΰ򵿻Ū˶롣
ä Message-ID:  X-Original-Message-ID: ˰ư
(2.2A#28bugǤĤƤʤ, fixed in 2.2A#29)

Appendix A	postfix Υե륿

Appendix A.1	᡼ʸΥե륿 body_checks ǥ쥯ƥ

postfix-19991231-pl08 ˤ "body_checks" directive Ƴޤ
ޤ˥᡼ʸåѤǤ

XXX: This feature is also available in Postfix snapshot 20000528.

Appendix A.2	إåΥե륿 header_checks

    [/etc/postfix/main.cf]
    header_checks = regexp:/etc/postfix/header_checks
    
    [/etc/postfix/header_checks]
    /^Subject.*ILOVEYOU/  REJECT

Appendix A.3	Content Filter

Postfix snapshot 20000529 ʹߤǼpostfix-users 
ܤ www.postfix.org ʤ᡼õɤǤ

    Subject: Postfix Full Content Filtering Support
    To: postfix-users@postfix.org (Postfix users)
    Message-Id: <20000530222608.0EEB345659@spike.porcupine.org>
    Date: Tue, 30 May 2000 18:26:08 -0400 (EDT)
    From: wietse@porcupine.org (Wietse Venema)
    
          ..................................
          .            Postfix             .
       ------smtpd \                /local-----
          .         -cleanup->queue-       .
       -----pickup /    ^       |   \smtp------
          .             |       v          .
          .           smtpd    smtp        .
          .           10026     |          .
          ......................|...........
                        ^       |
                        |       v
                    ....|............
                    .   |     10025 .
                    .   inspector   .
                    .               .
                    .................
    
Appendix B	Sendmail specific topics

Appendix B.1	PerlMX

	http://www.ActiveState.com/Products/PerlMx/
    ActiveState releases PerlMx 1.0  
    
    PerlMx is a mail filter engine designed to operate under sendmail. 
    Beginning with v8.10, sendmail provides scriptable hooks into all 
    stages of an e-mail transaction, allowing custom actions on any 
    aspect of the transaction, including the content of the message 
    itself. PerlMx allows these hooks to be written in Perl, making for 
    rapid prototyping, debugging, and deployment of custom e-mail 
    filtering solutions.


		INDEX

.maildelivery                              ...   6.2 
$COMMAND_FILTER_HOOK                       ...   4.1 
&DEFINE_FIELD_PAT_TO_REJECT                ...   4.3 
$DISTRIBUTE_FILTER_HOOK                    ...   4.1 
$FILTER_ATTR_REJECT_2BYTES_COMMAND         ...   4.1 
$FILTER_ATTR_REJECT_COMMAND                ...   4.1 
$FILTER_NOTIFY_REJECTION                   ...   4.1 
$REJECT_ADDR                               ...   2.13 
$REJECT_ADDR_LIST                          ...   2.13 
$REJECT_COMMAND_FILTER_HOOK                ...   4.1 
$REJECT_DISTRIBUTE_FILTER_HOOK             ...   4.1 
signature                                  ...   2.14 
slocal                                     ...   6.2 
spam mails                                 ...   2.13 
$USE_DISTRIBUTE_FILTER                     ...   4.1 
