# # $Id: asn-header,v 1.2 2004/03/08 00:06:50 karsten Exp karsten $ # # Add X-ASN header # KMSelf Sun Jul 11 04:05:32 PDT 2004 # # Add headers for ASN and originating IP. # Original author: Karsten M. Self # # Requires FORMAIL variable be set (most procmail recipe sets do this). # # You *must* set your SMTP_SERVER identifier. # # Run this *BEFORE* any spamassassin processing. The header tag itself # should start being scored as a Bayesian attributed. # FORMAIL = /usr/bin/formail SMTP_SERVER = EarthLink SMTP Server # ---------------------------------------------------------------------- # Parse out the sender's IP address. SENDERIP = `formail -c -XReceived | grep "$SMTP_SERVER" | \ tr '[][\t <>()]' '\n' | \ grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$' | \ tail -1` # Reverse IP for reverse DNS query REVERSE_SENDERIP = `expr "$SENDERIP" | \ sed "s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\4.\3.\2.\1/"` # Query asn.routeviews.org for the ASN. # Note that this is pretty aggressive: wait six seconds, retry ten # times, may slow mail processing, but tends to improve data quality. # Run a caching DNS server for improved performance. # Raw is a mostly unmunged output (save quotes and prefix). Contains # ASN, IP, and CIDR prefix. RAW_ASN = `host -W 6 -R 10 -t txt $REVERSE_SENDERIP.asn.routeviews.org | \ sed -e 's/.* text //' -e 's/"//g'` ASN = `echo $RAW_ASN | cut -d ' ' -f 1` ASN_CIDR = `echo $RAW_ASN | cut -d ' ' -f 2`/`echo $RAW_ASN | cut -d ' ' -f 3` # LOG = "SENDERIP= $SENDERIP " # LOG = "REVERSE_SENDERIP= $REVERSE_SENDERIP " LOG = "ASN= $ASN " # ------------------------------------------------------------------------ # Add X-SenderIP header. :0 fhw * ! ^X-SenderIP: | $FORMAIL -a "X-SenderIP: $SENDERIP" # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Add X-ASN header. :0 fhw * ! ^X-ASN: | $FORMAIL -a "X-ASN: ASN-$ASN" # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Add X-CIDR header. :0 fhw * ! ^X-CIDR: | $FORMAIL -a "X-CIDR: $ASN_CIDR" # ------------------------------------------------------------------------