#!/usr/bin/sh
#
# $Id: vadddomain_handle.in,v 2.25 2023-09-05 21:48:01+05:30 Cprogrammer Exp mbhangui $

domaindir=/var/indimail
OPTS=$(getopt -o ateh:T:q:l:bB:E:u:vVRi:g:d:Or:CD:H:U:P:s:p:cfm:S:I: -- "$@")
eval set -- "$OPTS"
while true; do
	case "$1" in
		-a|-t|-e|-b|-v|-V|-R|-O|-C|-c|-f|-A)
		shift 1
		;;
		-d)
		domaindir=$2
		shift 2
		;;
		-h|-T|-q|-l|-B|-E|-u|-i|-g|-d|-r|-D|-H|-U|-P|-s|-p|-c|-m|-S|-I)
		shift 2
		;;
		--)
		shift
		break
		;;
		*)
		echo "$0: invalid option [$1]" 1>&2
		break
		;;
	esac
done
set $@
domain=$1

if [ -n "$CONTROLDIR" ] ; then
	controldir=$CONTROLDIR
else
	controldir=/etc/indimail/control
fi
echo "domain=$domain domaindir=$domaindir, controldir=$controldir"

# send sighup to inlookup service to reload domains
cd /
(
if [ -n "$SERVICEDIR" ] ; then
	servicedir=$SERVICEDIR
else
	servicedir=/service*
fi
/bin/ls $servicedir/qmail-smtpd.*/variables/PLUGIN*init 2>/dev/null | sed s'{/variables/.*{{'g 
/bin/ls -d $servicedir/inlookup.* $servicedir/*-send.*
) | while read line
do
	echo "Sending SIGHUP to $line"
	/usr/bin/svc -h $line
done
# print domain information
/usr/bin/vdominfo $domain

# create user for bogofilter
echo "Creating standard users for spam filter (bogofilter)"
for i in ham spam register-ham register-spam
do
	/usr/bin/valias -i '&'"B"$i $i@$domain
	if [ $? -eq 0 ] ; then
		printf "Created alias %30s --> &B%s\n" $i@$domain $i
	fi
done
echo
echo "Creating pre and post filters prefilt@$domain, postfilt@$domain"
for i in prefilt postfilt
do
	/usr/bin/vadduser -d -e $i@$domain  xxxxxxxx
	echo
done

# create rule for moving spam, virus emails to folders
echo "creating rules for spam, virus detected emails"
/usr/bin/vcfilter -i -t  spamFilter -c "Starts with" -k "Yes, spamicity=" -f Spam   -b 0 -h "X-Bogosity" \
	prefilt@$domain
if [ $? -eq 0 ] ; then
	echo "Created prefilter to filter SPAM"
fi
/usr/bin/vcfilter -i -t virusFilter -c "Equals" -k "virus found" -f Quarantine -b 0 -h "X-QHPSI" \
	prefilt@$domain
if [ $? -eq 0 ] ; then
	echo "Created prefilter to filter virus"
fi
echo

echo "Domain Directory content"
# display domain directory
/bin/ls -dl $domaindir/domains/$domain
/bin/ls -al $domaindir/domains/$domain
echo

# get securely chown, chmod path
PATH=/usr/bin:/usr/sbin:/bin
chown=$(which chown)
chmod=$(which chmod)
sort=$(which sort)
grep=$(which grep)
# add the domain to spamignore, nodnscheck
for i in spamignore nodnscheck
do
	echo "adding $domain to $controldir/$i control file"
	if [ -f $controldir/$i ] ; then
		$grep -w @"$domain" $controldir/$i > /dev/null
		if [ $? -ne 0 ] ; then
			echo @"$domain" >> $controldir/$i
			$sort -u $controldir/$i -o $controldir/$i
		fi
	else
		echo @"$domain" > $controldir/$i
	fi
	$chown root:qmail $controldir/$i
	if [ "$i" = "spamignore" ] ; then
		# 664 for roundcube plugin to modify
		$chmod 664 $controldir/$i
	else
		$chmod 644 $controldir/$i
	fi
done
echo
vuserinfo postmaster@$domain
exit 0
#
# $Log: vadddomain_handle.in,v $
# Revision 2.25  2023-09-05 21:48:01+05:30  Cprogrammer
# allow both textual and numberical values for -c and -h option
#
# Revision 2.24  2023-08-07 17:38:12+05:30  Cprogrammer
# updated argument list for getopt
#
# Revision 2.23  2023-07-31 21:51:18+05:30  Cprogrammer
# cd to root before doing svc -h
#
# Revision 2.22  2023-03-20 10:29:40+05:30  Cprogrammer
# handle all command line arguments passed to vadddomain
# use SERVICEDIR env variable if set for service directory
#
# Revision 2.21  2022-11-05 21:12:54+05:30  Cprogrammer
# added vuserinfo of postmaster account
#
# Revision 2.20  2020-09-21 07:57:01+05:30  Cprogrammer
# added /usr/sbin for FreeBSD for chown command
#
# Revision 2.19  2020-05-26 11:21:29+05:30  Cprogrammer
# make spamignore writeable for roundcube
#
# Revision 2.18  2020-05-25 00:05:59+05:30  Cprogrammer
# use root:qmail permission for spamignore, nodnscheck
#
# Revision 2.17  2018-01-27 10:11:44+05:30  Cprogrammer
# updated comment
#
# Revision 2.16  2017-03-29 22:11:31+05:30  Cprogrammer
# add domain entry to nodnscheck
#
# Revision 2.15  2016-05-22 23:22:48+05:30  Cprogrammer
# fhs compliance
#
# Revision 2.14  2016-05-17 23:16:42+05:30  Cprogrammer
# set domain directory as set by configure
#
# Revision 2.13  2016-05-17 14:43:59+05:30  Cprogrammer
# use control directory defined by configure
#
# Revision 2.12  2016-05-16 22:31:19+05:30  Cprogrammer
# issue sighup to qmail-smtpd if tcpserver plugin has been configured to reload control files
#
# Revision 2.11  2014-04-15 23:17:29+05:30  Cprogrammer
# avoid grep if spamignore does not exist
#
# Revision 2.10  2013-08-03 20:22:25+05:30  Cprogrammer
# send sighup to qmail-send
#
# Revision 2.9  2013-07-21 16:08:49+05:30  Cprogrammer
# fix permission of spamignore
#
# Revision 2.8  2013-05-13 08:57:20+05:30  Cprogrammer
# use ./configure setting for indimail directory
#
# Revision 2.7  2013-04-29 22:52:31+05:30  Cprogrammer
# added domain to spamignore control file
#
# Revision 2.6  2013-03-05 23:40:27+05:30  Cprogrammer
# corrected header to X-Bogosity instead of received for spam filter rule
#
# Revision 2.5  2012-06-20 19:04:47+05:30  Cprogrammer
# fix for recursive emails when email sent to training ids
#
# Revision 2.4  2011-06-01 18:49:30+05:30  Cprogrammer
# added rule for filtering virus infected mails & putting them in quarantine folder
#
# Revision 2.3  2010-05-17 14:24:59+05:30  Cprogrammer
# create home directory for prefilt, postfilt
#
# Revision 2.2  2010-05-01 15:13:19+05:30  Cprogrammer
# added users prefilt, postfilt for pre & post filters
# added rule for moving spam mails to Spam folder
#
# Revision 2.1  2010-04-23 09:21:51+05:30  Cprogrammer
# post handle for vadddomain
#
