#!/bin/sh # # @(#)procmail_jdfalk 1997/06/23 Anne Bennett # # Download jdfalk's lists of bad sites for blocking spam, # reformat them for our site, and compare them to what # we've got. Report if different, and prepare new files. PATH=/local/paths:/usr/bin:/sbin:/usr/sbin export PATH thisprog=procmail_jdfalk logger="logger -p mail.info ${thisprog}:" # "DOMAIN" will be replaced by the generic domain name for each # batch of addresses. url_base="ftp://ftp.cybernothing.org/pub/abuse/DOMAIN.domains" cur_rc_base="/local/etc/procmail/spam/tag-jdfalk-DOMAIN" new_rc_base="/local/etc/procmail/spam/NEW.tag-jdfalk-DOMAIN" domains="linkus" mailto="anne" tmp_new=/tmp/${thisprog}.$$.tmp_new tmp_old=/tmp/${thisprog}.$$.tmp_old tmp_diff=/tmp/${thisprog}.$$.tmp_diff all_tmp="${tmp_new} ${tmp_old} ${tmp_diff}" # Start. # ${logger} starting. for dom in ${domains} ; do ${logger} doing ${dom}. url="`echo $url_base | sed 's/DOMAIN/'${dom}'/'" cur_rc="`echo $cur_rc_base | sed 's/DOMAIN/'${dom}'/'" new_rc="`echo $new_rc_base | sed 's/DOMAIN/'${dom}'/'" # Download and format jdfalk material; note the date and time. # lynx -dump -source ${url} \ | sed -e 's%\.%\\.%g' \ -e '/^[ ]*$/d' \ -e 's%^%\\<%' \ -e 's%$%\\>%' \ | gawk '{printf(":0 Hf\n* ^(Received|From|To|cc|Sender): .*%s\n| formail -b -f -A \"$trash_header siteban per-jdfalk-'${dom}'\"\n\n",$1)}' \ > ${tmp_new} down_date=`date '+%Y/%m/%d %H:%M:%S %Z'` # Isolate our current jdfalk-derived material. # cat ${cur_rc} \ | sed -n '/^# ========== jdfalk-derived material below ==========$/,$p' \ | tail +2 \ >> ${tmp_old} # Are they different? If not, clean up and exit quietly. # diff ${tmp_old} ${tmp_new} > ${tmp_diff} if [ ! -s ${tmp_diff} ]; then # No changes. ${logger} no change in ${dom}. rm -f ${all_tmp} ${logger} end of ${dom}. exit fi # There were changes! Prepare a new file and notify maintainer. # ${logger} changes found in ${dom}. cat ${cur_rc} \ | sed -n '1,/^# ========== jdfalk-derived material below ==========$/p' \ | sed -e "s%^# Last download on .*%# Last download on ${down_date}%" \ > ${new_rc} cat ${tmp_new} >> ${new_rc} ${logger} notifying maintainer. ( echo "" echo "New jdfalk procmail data is in ${new_rc} for ${dom}" echo "" echo "Differences follow:" echo "" echo "====================================" echo "" cat ${tmp_diff} ) | mailx -s "New jdfalk-${dom} procmail data ready" ${mailto} # Clean up and leave rm -f ${all_tmp} ${logger} end of ${dom}. done ${logger} end of run. exit