#!/bin/bash

#
# addmailuser.sh
#
# (c) 2003 Dave Kliczbor (maligree@gmx.de)
# Version 0.1 (2003-12-29)
#
# Adds a virtual mail user to the courier userdb.
# You need virtual users set up according to
# http://da.andaka.org/Doku/courier-vmaildir.html
#

PATH=/usr/sbin:/usr/bin:/bin:/usr/local/bin

VMAILNAME="vmail"
VMAILUSER="mail"
VMAILGROUP="mail"
VMAILDIR="/var/mail"
COURIERCONFIGDIR="/etc/courier"
COURIERESMTPACCEPTMAILFORDIR="$COURIERCONFIGDIR/esmtpacceptmailfor.dir"
COURIERHOSTEDDOMAINSDIR="$COURIERCONFIGDIR/hosteddomains"
DOMAINCONFIG="$COURIERCONFIGDIR/vmail/config"
DOMAINPATHPREFIX="domains"
MAILDIRSKEL="$COURIERCONFIGDIR/vmail/skel"
USER="$1"
DOMAIN="$2"

if [ `whoami` != "root" ]
then
        echo "Error: whoami said you're not root. You're `whoami`"
        exit 1
fi

if [ -r $DOMAINCONFIG ]
then
        source $DOMAINCONFIG
else
        echo "Error: $DOMAINCONFIG not found."
	exit 2
fi

if [ -z "$DOMAIN" ]
then
        echo "Error: Not enough arguments."
        echo "Usage: $0 <user> <domain>"
        exit 3
fi

if [ "$CREATEDOMAINIFNEEDED" = "Y" ]
then
	addmaildomain.sh $DOMAIN
fi

if [ ! -d "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN" ]
then
	echo "Error: $VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN is not a directory or does not exist"
	exit 4
fi

if [ -d "$MAILDIRSKEL" ]
then
	echo "Copying $MAILDIRSKEL to $VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER"
        mkdir -p "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER"
	cp "$MAILDIRSKEL/".* "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER/"
	cp -r "$MAILDIRSKEL/"* "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER/"
	chown -R "$VMAILUSER.$VMAILGROUP" "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER"
else
	echo "Maildir skeleton ($MAILDIRSKEL) not found, creating plain Maildir."
        mkdir -p "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER"
	maildirmake "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER/Maildir"
	chown -R "$VMAILUSER.$VMAILGROUP" "$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER"
fi

DASHDOMAIN=`echo "$DOMAIN" |tr '.' '-'`

echo "Adding $USER@$DOMAIN to userdb."
userdb "$DASHDOMAIN/$USER@$DOMAIN" set \
	"home=$VMAILDIR/$DOMAINPATHPREFIX/$DOMAIN/$USER/" \
	uid=`id -u $VMAILUSER` gid=`id -g $VMAILUSER`

echo "Enter password for $USER@$DOMAIN:"
userdbpw | userdb "$DASHDOMAIN/$USER@$DOMAIN" set systempw

echo "Refreshing userdb database"
makeuserdb

