procmail
[Top] [All Lists]

Re: Ways to add new features

2005-11-17 05:59:55
Am 2005-11-14 07:53:49, schrieb Gary Funck:

Although I'm a bit of an agnostic on this, a case can be made that
many users don't have root access, yet still want to do their own
mail filtering (mainly to fend off spam).  Those same users may not
have Spamassassin, or don't want to learn yet another mail filtering
package.

Ruud's suggestions on another thread imply a function syntax that
might offer the hooks for adding features like this to procmail
and (...shudder...) even plug-ins could be contemplated.

You mean, something like

  __( '/home/michelle.konzack/.procmail/FLT_spamhaus' )_________________
 /
| ####################################################################
| # 
| # FLT_spamhaus
| # 
| ####################################################################
| 
| SUB1=`formail -zxSubject:`
| DATE1=`date +"%d/%m/%Y %T"`
| 
| ####################################################################
| # Open Relay check from <www.spamhaus.org> uses sbl-xbl lists
| # and others
| ####################################################################
| 
| :0
| * ? test ! -f "`which host`"
| { 
|   LOG="($TDPID) FLT_spamhaus      : executable "host" not found.$NL"
| }
| 
| :0
| * ? test -f "`which host`"
| { 
|   LOG="($TDPID) FLT_spamhaus      : begin first IP (`date '+%Y-%m-%d 
%H:%M:%S'`)$NL"
| 
| ########## first IP ##########
| :0 H
| * Received:.*[/[0-9]+.[0-9]+.[0-9]+.[0-9]+
| { 
|   RECEIVIP=${MATCH} 
|   
|   :0
|   * ! RECEIVIP ?? 127.0.0.1
|   {
|     :0
|     * RECEIVIP ?? ()/[0-9]+
|     {
|       QUAD1=${MATCH}
|       :0
|       * RECEIVIP ?? [0-9]+./[0-9]+
|       {
|         QUAD2=${MATCH}
|         :0
|         * RECEIVIP ?? [0-9]+.[0-9]+./[0-9]+
|         {
|           QUAD3=${MATCH}
|           :0
|           * RECEIVIP ?? [0-9]+.[0-9]+.[0-9]+./[0-9]+
|           {
|             RECEIVIPREV="${MATCH}.${QUAD3}.${QUAD2}.${QUAD1}"
|           }
|         }
|       }
|       
| ################ sbl-xbl.spamhaus.org ##############################
|       LOG="($TDPID) FLT_spamhaus      : 1 : sbl-xbl.spamhaus.org$NL"
|       :0
|       { REVCHECKIP=`host ${RECEIVIPREV}.sbl-xbl.spamhaus.org 2>&1 | grep -v 
'not found.'` }
|       :0
|       * $ REVCHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***sbl-xbl.spamhaus.org*** $SUB1" -i 
"X-TDSpamHaus: $RECEIVIP"
|         :0
|         * ^Subject:.*(***sbl-xbl.spamhaus.org***)
|         .ATTENTION.FLT_spamhaus_sbl-xbl_spamhaus_org/
|       }
| ################ cbl.abuseat.org ###################################
|       LOG="($TDPID) FLT_spamhaus      : 1 : cbl.abuseat.org$NL"
|       :0
|       { REVCHECKIP=`host ${RECEIVIPREV}.cbl.abuseat.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REVCHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***cbl.abuseat.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP"
|         :0
|         * ^Subject:.*(***cbl.abuseat.org***)
|         .ATTENTION.FLT_spamhaus_cbl_abuseat_org/
|       }
| ################ relays.ordb.org ###################################
|       LOG="($TDPID) FLT_spamhaus      : 1 : relays.ordb.org$NL"
|       :0
|       { REVCHECKIP=`host ${RECEIVIPREV}.relays.ordb.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REVCHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0 fhw
|         | formail -i "Subject: ***relays.ordb.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP"
|         :0
|         * ^Subject:.*(***relays.ordb.org***)
|         .ATTENTION.FLT_spamhaus_relays_ordb_org/
|       }
| ################ list.dsbl.org #####################################
|       LOG="($TDPID) FLT_spamhaus      : 1 : list.dsbl.org$NL"
|       :0
|       { REVCHECKIP=`host ${RECEIVIPREV}.list.dsbl.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REVCHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***list.dsbl.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP"
|         :0
|         * ^Subject:.*(***list.dsbl.org***)
|         .ATTENTION.FLT_spamhaus_list_dsbl_org/
|       }
|     }
|   }
| }
|   
| ########## second IP ##########
| LOG="($TDPID) FLT_spamhaus      : begin second IP$NL"
| :0 H
| * Received: from.*[.*](.*$)+Received:.*[/[0-9]+.[0-9]+.[0-9]+.[0-9]+
| { 
|   RECEIVIP2=${MATCH} 
|     
|   :0
|   * ! RECEIVIP2 ?? 127.0.0.1
|   {
|     :0
|     * RECEIVIP2 ?? ()/[0-9]+
|     {
|       QUAD1=${MATCH}
|       :0
|       * RECEIVIP2 ?? [0-9]+./[0-9]+
|       {
|         QUAD2=${MATCH}
|         :0
|         * RECEIVIP2 ?? [0-9]+.[0-9]+./[0-9]+
|         {
|           QUAD3=${MATCH}
|           :0
|           * RECEIVIP2 ?? [0-9]+.[0-9]+.[0-9]+./[0-9]+
|           {
|             RECEIVIP2REV="${MATCH}.${QUAD3}.${QUAD2}.${QUAD1}"
|           }
|         }
|       }
| ################ sbl-xbl.spamhaus.org ##############################
|       LOG="($TDPID) FLT_spamhaus      : 2 : sbl-xbl.spamhaus.org$NL"
|       :0
|       { REV2CHECKIP=`host ${RECEIVIP2REV}.sbl-xbl.spamhaus.org 2>&1 | grep -v 
'not found.'` }
|       :0
|       * $ REV2CHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***sbl-xbl.spamhaus.org*** $SUB1" -i 
"X-TDSpamHaus: $RECEIVIP2"
|         :0
|         * ^Subject:.*(***sbl-xbl.spamhaus.org***)
|         .ATTENTION.FLT_spamhaus_sbl-xbl_spamhaus_org/
|       }
| ################ cbl.abuseat.org ###################################
|       LOG="($TDPID) FLT_spamhaus      : 2 : cbl.abuseat.org$NL"
|       :0
|       { REV2CHECKIP=`host ${RECEIVIP2REV}.cbl.abuseat.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REV2CHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***cbl.abuseat.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP2"
|         :0
|         * ^Subject:.*(***cbl.abuseat.org***)
|         .ATTENTION.FLT_spamhaus_cbl_abuseat_org/
|       }
| ################ relays.ordb.org ###################################
|       LOG="($TDPID) FLT_spamhaus      : 2 : relays.ordb.org$NL"
|       :0
|       { REV2CHECKIP=`host ${RECEIVIP2REV}.relays.ordb.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REV2CHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0 fhw
|         | formail -i "Subject: ***relays.ordb.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP2"
|         :0
|         * ^Subject:.*(***relays.ordb.org***)
|         .ATTENTION.FLT_spamhaus_relays_ordb_org/
|       }
| ################ list.dsbl.org ###################################
|       LOG="($TDPID) FLT_spamhaus      : 2 : list.dsbl.org$NL"
|       :0
|       { REV2CHECKIP=`host ${RECEIVIP2REV}.list.dsbl.org 2>&1 | grep -v 'not 
found.'` }
|       :0
|       * $ REV2CHECKIP ?? 127.0.0.(2|4)
|       { IP=`echo $RECEIVIP >>$HOME/log/spamhaus/`date +%Y-%m`.log`
|         :0fhw
|         | formail -i "Subject: ***list.dsbl.org*** $SUB1" -i "X-TDSpamHaus: 
$RECEIVIP2"
|         :0
|         * ^Subject:.*(***list.dsbl.org***)
|         .ATTENTION.FLT_spamhaus_list_dsbl_org/
|       }
|     }
|   }
| }
| 
| LOG="($TDPID) FLT_spamhaus      : End (`date '+%Y-%m-%d %H:%M:%S'`)$NL
| "
| }
| 
| ########################################### END-OF-SPAMHAUS ########
 \______________________________________________________________________


Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917                  ICQ #328449886
                   50, rue de Soultz         MSM LinuxMichi
0033/3/88452356    67100 Strasbourg/France   IRC #Debian (irc.icq.com)

____________________________________________________________
procmail mailing list   Procmail homepage: http://www.procmail.org/
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail

<Prev in Thread] Current Thread [Next in Thread>