#!/bin/sh
#
# This script generate whitelist for all your vpopmail domains, alias
# and ezmlm mailing-list for spamcontrol RECIPIENT feature.
# http://www.fehcom.de/qmail/spamcontrol
# David du SERRE-TELMON <david@xinus.net> 06/30/2004
# Fixed by Zoltan Frombach <zoltan@frombach.com> 11/19/2004

qmaildir="/var/qmail"
dstfile="${qmaildir}/users/recipients"
#dstfile="${qmaildir}/control/goodrcptto"

rm -f $dstfile.tmp

for vdomain in `cat /var/qmail/users/assign | cut -d: -f 5 | grep -v -w -e '^\.$' | sort | uniq`; do
  if [ -d ${vdomain} ]; then
    domain=`echo "${vdomain}" | sed 's/.*\///'`;
    for mail in `cat ${vdomain}/vpasswd | cut -d: -f 1`; do
      echo "${mail}@${domain}" >> ${dstfile}.tmp
    done
    cd ${vdomain}
    for fwd in `ls -a -1 .qmail-* | sed 's/\:/\./' | sed 's/\.qmail-//g' | grep -v -w default`; do
      if [ $fwd != "default" ]; then
        if echo ${fwd} | grep "\-owner$" > /dev/null; then
          echo "${fwd}-owner@${domain}" | sed 's/\-owner//' >> ${dstfile}.tmp
          echo "${fwd}-help@${domain}" | sed 's/\-owner//' >> ${dstfile}.tmp
          echo "${fwd}-subscribe@${domain}" | sed 's/\-owner//' >> ${dstfile}.tmp
          echo "${fwd}-unsubscribe@${domain}" | sed 's/\-owner//' >> ${dstfile}.tmp
        else
          echo "${fwd}@${domain}" >> ${dstfile}.tmp
        fi
      fi
    done
  fi
done

if [ -e ${dstfile}.tmp ]; then
  if [ -e ${dstfile} ]; then
#    mv ${dstfile} ${dstfile}.old
  fi
#  mv ${dstfile}.tmp ${dstfile}
  cat ${dstfile}.tmp | sort -t @ -k 2 -k 1 | uniq > ${dstfile}
  rm -f ${dstfile}.tmp
fi

${qmaildir}/bin/qmail-recipients
#svc -t /var/service/smtpd


syntax highlighted by Code2HTML, v. 0.9.1