#!/bin/sh
#
# Copyright (C) 2001-2021 Graeme Walker <graeme_walker@users.sourceforge.net>
# 
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.
# ===
#
# emailrelay-deliver.sh
#
# Looks for local mail in the E-MailRelay spool directory and delivers is using
# 'procmail'.
#
# usage: emailrelay-deliver.sh [<spool-dir>]
#
# This illustrates how delivery to local "postmaster" mailboxes could be done,
# although it is not likely to be a useful feature for a typical mail relay
# setup.
#


store="__SPOOL_DIR__"
postmaster="root"
procmail="procmail"

# parse the command line
#
if test $# -ge 1
then
	store="${1}"
fi

# check the spool directory is valid
#
if test \! -d "${store}"
then
	echo `basename $0`: invalid spool directory >&2
	exit 1
fi

# for each e-mail to a local recipient...
#
for file in "${store}"/emailrelay.*.envelope.local ""
do
	if test -f "${file}"
	then
		content="`echo \"${file}\" | sed 's/envelope/content/'`"

		deliver_to="`fgrep X-MailRelay-To-Local ${file} | sed 's/X-MailRelay-To-Local: //' | tr -d '\015' | sed \"s/postmaster/${postmaster}/g\"`"
		if test "${deliver_to}" = ""
		then
			deliver_to="${postmaster}"
		fi

		# deliver using procmail
		#
		if test -f "${content}"
		then
			echo `basename $0`: delivering `basename "${content}"` to ${deliver_to}
			"${procmail}" -d "${deliver_to}" < "${content}"
			rc=$?
			if test "${rc}" -eq 0
			then
				rm -f "${file}" 2>/dev/null
			fi
		fi
	fi
done

