From 80ee3ede95ac8d58e46c14c022aea8b927c2143f Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 28 Jul 2006 17:38:38 +0000 Subject: Configurable redpill context. --- localmailtransportupdate | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) (limited to 'localmailtransportupdate') 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 # -# $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 -- cgit v1.2.3