#!/bin/sh

# PROVIDE: qmail mail
# REQUIRE: netif
# BEFORE: LOGIN
#
#writen by Zane C. Bowers <vvelox@vvelox.net>

. /etc/rc.subr

name="qmail"
rcvars=`set_rcvar`
start_cmd="qmail_start"
stop_cmd="qmail_stop"

load_rc_config $name


#
# Add the following lines to /etc/rc.conf to enable qmail:
# qmail_enable (bool):		Turn on QMail.
#				Default: NO
#
# qmail_checkpw (str):		Tell QMail what chekpassword program to use.
#				Default: /usr/local/bin/checkpassword
#
# qmail_checkpwsuccess (str):	Tell the server what to run if checkpassword works.
#				Default: /bin/true
#
# qmail_server (bool):		Wether the SMTP server should be started.
#				Default: YES
#
# qmail_server_ip (str):	The IP to listen on. 0 means all.
#				Default: 0
#
# qmail_server_port (str):	The port to listen on. May be numeric or from /etc/services
#				Default: smtp
#
# qmail_tcpserver_args (str):	Extra args to be passed to tcpserver.
#
# qmail_defaultdelivery (str):	Default delivery path.
#				Default: ./Maildir
# qmail_logger (str):		The logger to use.
# 				Default: splogger qmail
# qmail_server_logger (str):	The logger to use for the SMTP server.
#				Default: /var/qmail/bin/splogger smtpd

[ -z "$qmail_enable" ] && qmail_enable="NO"
[ -z "$qmail_checkpw" ] && qmail_checkpw="/usr/local/bin/checkpassword"
[ -z "$qmail_checkpwsuccess" ] && qmail_checkpw="/bin/true"
[ -z "$qmail_server" ] && qmail_server="YES"
[ -z "$qmail_server_ip" ] && qmail_server_ip="0"
[ -z "$qmail_server_port" ] && qmail_server_port="smtp"
[ -z "$qmail_defaultdelivery" ] && qmail_defaultdelivery="./Maildir"
[ -z "$qmail_logger" ] && qmail_defaultdelivery="splogger qmail"
[ -z "$qmail_server_logger" ] && qmail_server_logger="/var/qmail/bin/splogger smtpd"

qmail_start(){
    env - PATH="/var/qmail/bin:$PATH" \
     qmail-start $qmail_defaultdelivery $qmail_server_logger &

    if checkyesno qmail_server; then
	qmaildUID=`id qmaild | cut -d\  -f 1 | cut -d= -f 2 | cut -d\( -f 1`
	qnofilesGID=`pw group show qnofiles | cut -d: -f 3`
	
	env - PATH="/var/qmail/bin:$PATH" /usr/local/bin/tcpserver $qmail_tcpserver_args -u \
	    $qmaildUID -g $qnofilesGID $qmail_server_ip $qmail_server_port \
	    /var/qmail/bin/qmail-smtpd $qmail_checkpw -- /bin/true 2>&1 | $qmail_server_logger &
    fi

}

qmail_stop(){
    killall -9 qmail-send > /dev/null
    
    #tcpserverPID=`ps aux | grep tcpserver | grep ^qmaild | cut -d\  -f 4`
    tcpserverPID=`ps -aw -o pid,user,command | grep tcpserver | grep qmail-smtpd | sed 's/^ *//' | cut -f 1 -d\ `
    [ $tcpserverPID ] && kill -9 $tcpserverPID
    #kill -9 $tcpserverPID
}


run_rc_command "$1"
