#!/bin/bash
# 
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1
# 
# The contents of this file are subject to the Mozilla Public License
# Version 1.1 ("License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.zimbra.com/license
# 
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
# 
# The Original Code is: Zimbra Collaboration Suite Server.
# 
# The Initial Developer of the Original Code is Zimbra, Inc.
# Portions created by Zimbra are Copyright (C) 2005, 2006 Zimbra, Inc.
# All Rights Reserved.
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

if [ x`whoami` != xzimbra ]; then
    echo Error: must be run as zimbra user
	exit 1
fi

source `dirname $0`/zmshutil || exit 1
zmsetvars \
    zimbra_home \
    zimbra_log_directory

platform=`/opt/zimbra/libexec/get_plat_tag.sh`

rewriteconfig() {
	/opt/zimbra/libexec/zmmtaconfig antispam > /dev/null 2>&1
}

checkRunning() {
	if [ -f /opt/zimbra/log/amavisd.pid ]; then
		cpid=`cat /opt/zimbra/log/amavisd.pid`
		kill -0 "$cpid" 2> /dev/null
		if [ $? = 0 ]; then
			exit 0;
		else 
			rm -f /opt/zimbra/log/amavisd.pid
		fi
	fi
}

#
# Main
#
case "$1" in
    'start')
		checkRunning
		if [ ! -d /opt/zimbra/amavisd/quarantine ]; then
			mkdir /opt/zimbra/amavisd/quarantine
		fi
		if [ ! -d /opt/zimbra/amavisd/tmp ]; then
			mkdir /opt/zimbra/amavisd/tmp
    else 
      find /opt/zimbra/amavisd/tmp -maxdepth 1 -type d -name 'amavis-*' -exec rm -rf {} \; > /dev/null 2>&1
		fi
		if [ ! -d /opt/zimbra/amavisd/var ]; then
			mkdir /opt/zimbra/amavisd/var
		fi
		if [ x$2 = "x" ]; then
			rewriteconfig
		fi
		if [ ! -f ${zimbra_home}/amavisd/.spamassassin/bayes_toks ]; then
			# Initial bayes seeding.
			cp -f ${zimbra_home}/amavisd/.spamassassin/init/* \
				${zimbra_home}/amavisd/.spamassassin
			chmod 644 ${zimbra_home}/amavisd/.spamassassin/bayes*
		fi
		${zimbra_home}/amavisd/sbin/amavisd -c \
			${zimbra_home}/conf/amavisd.conf &
        ;;

    'kill')
		cpid=`cat /opt/zimbra/log/amavisd.pid`
        kill -TERM "$cpid" 2> /dev/null
		sleep 2
		umount ${zimbra_home}/amavisd-new-2.4.1/tmp
        ;;

    'stop')
		if [ -f /opt/zimbra/log/amavisd.pid ]; then
			cpid=`cat /opt/zimbra/log/amavisd.pid`
			kill -TERM "$cpid" 2> /dev/null
			if [ -f /opt/zimbra/log/amavisd.pid ]; then
				if [ "x$platform" = "xMACOSX" -o "x$platform" = "xMACOSXx86" ]; then
					killall -TERM amavisd > /dev/null 2>&1
				else
					killall -TERM ${zimbra_home}/amavisd/sbin/amavisd > /dev/null 2>&1
				fi
			fi
			sleep 2
			umount ${zimbra_home}/amavisd-new-2.4.1/tmp
		else
			if [ "x$platform" = "xMACOSX" -o "x$platform" = "xMACOSXx86" ]; then
				killall -TERM amavisd > /dev/null 2>&1
			else
				killall -TERM ${zimbra_home}/amavisd/sbin/amavisd > /dev/null 2>&1
			fi
		fi
		exit 0
        ;;
    
    'restart')
        $0 stop
        $0 start
        ;;
	
	'status')
		cpid=`cat /opt/zimbra/log/amavisd.pid`
        kill -0 "$cpid" 2> /dev/null
		R=$?
		exit $R
		;;
    
    *)
        echo "Usage: $0 start|stop|kill|restart|status"
        exit 1
        ;;
esac
