#!/bin/ksh

# Description: Cron run script to keep qmail alias addresses current:

# http://www.netdevice.com/qmail/patch/qaset-06-script

# Users run ~/qtool-06.script to add, remove or list aliases.

# Messages will be accepted for postmaster, and for postmaster at

# domains listed in rcpthosts, and delivered to the user

# contained in the relevant file in /var/qmail/alias/.

# Directories in /var/qmail/stage/ have permissions of 777.

# Usage: * * * * * /scripts/qaset-06.script >/dev/null 2>&1

# Author: Eben Pratt, goodrcptto at netdevice dot com

# 2003-09-02 01: Original version.

# 2003-10-04 02: Added support for protected accept client addresses.

# User to domain mapping is contained in the staged alias file.

# 2003-11-07 03: Accept address of postmaster without @ sign and domain, per

# RFC2821 4.5.1 Minimum Implementation.

# 2004-05-16 05: No changes from 03, matched version with qtool-05.script.

# 2004-09-28 06: No changes from 05, matched version with qtool-06.script.

EGR='/bin/egrep -v'

ALI='/var/qmail/alias'

NOR='/var/qmail/stage/normal'

PRO='/var/qmail/stage/protected'

MOR='/var/qmail/control/moregoodrcptto'

GOO='/var/qmail/control/protectedgood'

DEF="^postmaster$|^mailer-daemon$|^root$"

for LIN in `/bin/ls ${NOR}/.qmail-* | /bin/cut -d- -f2-`

do

if [[ ! -e ${ALI}/.qmail-${LIN} ]] then

/bin/cat ${NOR}/.qmail-${LIN} | /bin/cut -d@ -f1 > ${ALI}/.qmail-${LIN}

SET=1

fi

done

for LIN in `/bin/ls ${PRO}/.qmail-* | /bin/cut -d- -f2-`

do

if [[ ! -e ${ALI}/.qmail-${LIN} ]] then

/bin/cat ${PRO}/.qmail-${LIN} | /bin/cut -d@ -f1 > ${ALI}/.qmail-${LIN}

SET=1

fi

done

for LIN in `/bin/ls ${ALI}/.qmail-* | /bin/cut -d- -f2-`

do

if [[ ! -e ${NOR}/.qmail-${LIN} ]] && [[ ! -e ${PRO}/.qmail-${LIN} ]] then

/bin/rm ${ALI}/.qmail-${LIN}

SET=1

fi

done

if [[ ${SET} -eq 1 ]] then

echo postmaster > ${MOR}.tem

for LIN in `/bin/cat /var/qmail/control/rcpthosts`

do

echo postmaster@${LIN} >> ${MOR}.tem

done

for LIN in `/bin/ls ${ALI}/.qmail-* | /bin/cut -d- -f2- | ${EGR} ${DEF}`

do

if [[ ! -e ${PRO}/.qmail-${LIN} ]] then

DOM=`/bin/cat ${NOR}/.qmail-${LIN} | /bin/cut -d@ -f2`

echo ${LIN}@${DOM} | /bin/tr : . >> ${MOR}.tem

fi

done

/bin/mv ${MOR}.tem ${MOR}

/var/qmail/bin/qmail-newmgrt

if [[ -e ${GOO}.tem ]] then

/bin/rm ${GOO}.tem

fi

for LIN in `/bin/ls ${PRO}/.qmail-* | /bin/cut -d- -f2-`

do

DOM=`/bin/cat ${PRO}/.qmail-${LIN} | /bin/cut -d@ -f2`

echo ${LIN}@${DOM} | /bin/tr : . >> ${GOO}.tem

done

/bin/mv ${GOO}.tem ${GOO}

fi