summaryrefslogtreecommitdiff
path: root/localmailtransportupdate
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2006-07-28 17:38:38 +0000
committerJonas Smedegaard <dr@jones.dk>2006-07-28 17:38:38 +0000
commit80ee3ede95ac8d58e46c14c022aea8b927c2143f (patch)
treedbdd2fe7089e6b17c3180acf69f051b03de7fe19 /localmailtransportupdate
parent3c71e80ed4cea9332e4c4e81c44586779803854e (diff)
Configurable redpill context.
Diffstat (limited to 'localmailtransportupdate')
-rwxr-xr-xlocalmailtransportupdate44
1 files changed, 29 insertions, 15 deletions
diff --git a/localmailtransportupdate b/localmailtransportupdate
index 2dcceb9..474750c 100755
--- a/localmailtransportupdate
+++ b/localmailtransportupdate
@@ -3,7 +3,7 @@
# /usr/local/sbin/localmailtransportinit
# Copyright 2006 Jonas Smedegaard <dr@jones.dk>
#
-# $Id: localmailtransportupdate,v 1.2 2006-07-28 17:04:48 jonas Exp $
+# $Id: localmailtransportupdate,v 1.3 2006-07-28 17:38:38 jonas Exp $
#
# Setup postfix transport map for a redpill organisation
#
@@ -12,13 +12,15 @@ set -e
PRG=`basename $0`
-TEMP=$(getopt -s sh -o fid:h -l force,init,diffopts:,help -n "$PRG" -- "$@")
+TEMP=$(getopt -s sh -o r:fid:h -l redpill:,force,init,diffopts:,help -n "$PRG" -- "$@")
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$TEMP"
function usage() {
- echo "Usage: $PRG [opts...]"
+ echo "Usage: $PRG [opts...] [redpill]"
echo
+ echo " -r, --redpill Redpill context"
+ echo " (default: read /etc/local-ORG/redpill)"
echo " -f, --force Update without asking for confirmation"
echo " -i, --init Setup postfix to use the transport map"
echo " -d, --diffopts=diffopts Extra options applied to diff when"
@@ -33,16 +35,17 @@ function exit1() {
exit 1
}
+redpill=""
force=""
init=""
diffopts=""
while true ; do
case "$1" in
- -f|--force) force="1" ; shift ;;
- -i|--init) init="1" ; shift ;;
- -d|--diffopts) diffopts="1" ; shift ;;
+ -f|--force) force="1"; shift;;
+ -i|--init) init="1"; shift;;
+ -d|--diffopts) diffopts="$1"; shift 2;;
-h|--help) usage;;
- --) shift ; break ;;
+ --) shift; break;;
*) exit1 "Internal error!";;
esac
done
@@ -60,18 +63,30 @@ items() {
}
mktransportmap() {
- for realm in $@; do
- realmdir="/etc/local-$realm"
- [ -d "$realmdir/redpill" ] || continue
- mailhost="$(firstitem "$realmdir/redpill/mailhost")"
- maildomains="$(items "$realmdir/redpill/maildomains")"
+ redpill="$1"
+
+ redpilldir="/etc/local-$redpill/"
+ realms="$(items "$redpilldir/realms")"
+ for realm in $realms; do
+ realmdir="$redpilldir/$realm"
+ [ -d "$realmdir" ] || continue
+ mailhost="$(firstitem "$realmdir/mailhost")"
+ maildomains="$(items "$realmdir/maildomains")"
for maildomain in $maildomains; do
echo "$maildomain relay:$mailhost:submission"
done
done
}
-mktransportmap $(items /etc/local-ORG/realms) > /etc/postfix/transport.new
+case $# in
+ 0) if [ -z "$redpill" ]; then redpill="$(firstitem "/etc/local-ORG/redpill")"; fi;;
+ 1) redpill="$1";;
+ *) exit1 "Wrong number of arguments!";;
+esac
+
+[ -n "$redpill" ] || exit1 "Redpill context missing!"
+
+mktransportmap "$redpill" > /etc/postfix/transport.new
if [ -f /etc/postfix/transport.addon ]; then
cat /etc/postfix/transport.addon >> /etc/postfix/transport.new
fi
@@ -89,8 +104,7 @@ case $do_update in
echo "Changes applied!"
;;
*)
- echo "Aborted!"
- exit 1
+ exit1 "Aborted!"
;;
esac
if [ "$init" = "1" ]; then