#!/bin/sh

##--------------------------------------------------------------
##
##  msmtpq-ng-mta:  A wrapper script for msmtpq-ng for use as
##                  system MTA
##  Copyright (C) 2016-2019 Daniel Dickinson
##
##  This program is free software: you can redistribute it and/or modify
##  it under the terms of the GNU General Public License as published by
##  the Free Software Foundation, either version 3 of the License, or, at
##  your option, any later version.
##
##--------------------------------------------------------------

## msmtpq-ng-mta
## is only a wrapper
## it invokes the main msmtpq-ng script
##
## all configuration and documentation is in the msmtpq-ng script

## note that for 'special circumstances'
##   (e.g. embedded systems, etc.)
## where the msmtpq-ng script itself is not on the path
## set the environment variable MSMTPQ_NG to the full path
## of msmtpq-ng in /etc/msmtpq-ng-mta.rc
## e.g.
## MSMTPQ_NG=/path/to/msmtpq-ng

MSMTP_WRAPPER="$0"

if [ -n "$MSMTP_MTA_OVERRIDE_CONF" ]; then
	MSMTP_OVERRIDE_CONF="$MSMTP_MTA_OVERRIDE_CONF"
else
	MSMTP_OVERRIDE_CONF=/etc/msmtpq-ng-mta.rc
fi

export MSMTP_OVERRIDE_CONF

if [ "$MSMTP_MTA_SKIP_CONF" != "true" ]; then
	# shellcheck source=./tmp/msmtpq-ng.rc
	[ -r /etc/msmtpq-ng-mta.rc ] && . /etc/msmtpq-ng-mta.rc
	# shellcheck source=./tmp/msmtpq-ng.rc
	[ -r ~/.msmtpq-ng-mta.rc ] && . ~/.msmtpq-ng-mta.rc
fi

[ -z "$LOG" ] && LOG=syslog
[ -z "$Q" ] && Q=/var/spool/msmtp/"$(id -un)"
[ -z "$MSMTP_LOCK_DIR" ] && MSMTP_LOCK_DIR=/var/lock/msmtp/"$(id -un)"
[ -z "$MSMTP_LOG_UMASK" ] && MSMTP_LOG_UMASK=007
[ -z "$MSMTP_UMASK" ] && MSMTP_UMASK=077
[ -z "$MSMTP_QUEUE_QUIET" ] && MSMTP_QUEUE_QUIET=true
[ -z "$MSMTP_IGNORE_NO_RECIPIENTS" ] && MSMTP_IGNORE_NO_RECIPIENTS=true
[ -z "$MSMTPQ_NG" ] && MSMTPQ_NG=msmtpq-ng

umask $MSMTP_UMASK

# Create per-user queue dir but only if main queue dir exists
if [ ! -d "${Q}" ] && [ -d "$(dirname "${Q}")" ]; then
	mkdir -p "${Q}"
elif [ ! -d "${Q}" ]; then
	# shellcheck disable=SC2174
	mkdir -m1777 -p "$(dirname "${Q}")"
	umask $MSMTP_UMASK
	mkdir -p "${Q}"
fi

# Create per-user lock dir
if [ ! -d "${MSMTP_LOCK_DIR}" ]; then
	# shellcheck disable=SC2174
	mkdir -m1777 -p "$(dirname "${MSMTP_LOCK_DIR}")"
	umask $MSMTP_UMASK
	mkdir -p "${MSMTP_LOCK_DIR}"
fi

export LOG Q MSMTP_LOG_UMASK MSMTP_LOCK_DIR MSMTP_UMASK MSMTP_QUEUE_QUIET MSMTP_IGNORE_NO_RECIPIENTS MSMTPQ_NG MSMTP_CONF MSMTPQ_NG_QUEUE EMAIL_CONN_TEST EMAIL_CONN_TEST_PING EMAIL_CONN_TEST_IP EMAIL_CONN_TEST_SITE MSMTP_HOLD_SMTP_MAIL MSMTP_HOLD_CLI_MAIL MSMTP_WRAPPER

if [ "$1" = "$MSMTP_WRAPPER" ]; then
	shift
fi
[ -x "$MSMTPQ_NG" ] && exec "$MSMTPQ_NG" "$@"
[ -n "$(command -v "$MSMTPQ_NG")" ]  && exec "$MSMTPQ_NG" "$@"

echo "msmtpq-ng-mta: unable to find msmtpq-ng" >&2
# From sysexits.h: EX_OSFILE
exit 72
