#!/bin/bash
# Written by NONO. http://www.asahi-net.or.jp/~aa4t-nngk/
#

# The directory in which you are going to install qmail. Change if using an unusual path.
QMAILDIR="/var/qmail"

# Set your favorite uid, gid number you want to begin with. Other ids will be calculated consequently.
NOFILESGID=600
ALIASUID=600

# Here we go!
QMLGID=`expr $NOFILESGID + 1`
QMAILD=`expr $ALIASUID + 1`
QMAILL=`expr $ALIASUID + 2`
QMAILP=`expr $ALIASUID + 3`
QMAILQ=`expr $ALIASUID + 4`
QMAILR=`expr $ALIASUID + 5`
QMAILS=`expr $ALIASUID + 6`
OPT="-m -k /dev/null -s /sbin/nologin"

if [ `id -u` != 0 ]; then
	echo 'Error: only root can do this. Do "su -" before run this script !'
	exit 1
fi

GIDS=($NOFILESGID $QMLGID)
UIDS=($ALIASUID $QMAILD $QMAILL $QMAILP $QMAILQ $QMAILR $QMAILS)
echo -n 'Testing existent gids....'
for I in $GIDS; do
	RET=`cat /etc/group |egrep "^[^:]+:[^:]+:\$I"`
	if [ "$RET" != "" ]; then
		echo '[Error]'
		echo " :gid $I already exists. Exiting.."
		exit 1
	fi
done
echo '[OK]'
echo -n 'Testing existent uids....'
for I in $UIDS; do
	RET=`cat /etc/passwd |egrep "^[^:]+:[^:]+:\$I"`
	if [ "$RET" != "" ]; then
		echo '[Error]'
		echo " :uid $I already exists. Exiting.."
		exit 1
	fi
done
echo '[OK]'

groupadd -g $NOFILESGID nofiles
groupadd -g $QMLGID qmail
[ -d $QMAILDIR ] || mkdir $QMAILDIR
useradd -u $ALIASUID -g nofiles -d ${QMAILDIR}/alias $OPT alias
useradd -u $QMAILD -g nofiles -d ${QMAILDIR} $OPT qmaild
useradd -u $QMAILL -g nofiles -d ${QMAILDIR} $OPT qmaill
useradd -u $QMAILP -g nofiles -d ${QMAILDIR} $OPT qmailp
useradd -u $QMAILQ -g qmail -d ${QMAILDIR} $OPT qmailq
useradd -u $QMAILR -g qmail -d ${QMAILDIR} $OPT qmailr
useradd -u $QMAILS -g qmail -d ${QMAILDIR} $OPT qmails

# Show result
echo '+++++ GIDs made +++++'
cat /etc/group |egrep '^(nofiles|qmail)'
echo '+++++ UIDs made +++++'
cat /etc/passwd |egrep '^(alias|qmail)'
# Done
exit 0
