/usr/lib/postfix/postfix-wrapper is in postfix 2.11.0-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | #!/bin/sh
#++
# NAME
# postfix-wrapper 1
# SUMMARY
# trivial but useful multi-instance manager
# SYNOPSIS
# postfix command
# DESCRIPTION
# Postfix versions 2.6 and later provide support for multiple
# Postfix instances. Instances share executable files and
# documentation, but have their own directories for configuration,
# queue and data files. In many cases different instances
# have different myhostname and inet_interfaces settings,
# though this is not always necessary.
#
# This command implements a trivial Postfix multi-instance
# manager. It simply applies commands such as "postfix start"
# to all the applicable Postfix instances.
# MANAGING MULTIPLE INSTANCES
# .ad
# .fi
# To hook the postfix-wrapper multi-instance manager into
# Postfix, see the POSTFIX-WRAPPER INITIALIZATION section
# below. To create a new Postfix instance, see the CREATING
# A NEW POSTFIX INSTANCE section below.
#
# To start, stop, get status, etc., with multiple Postfix
# instances, use:
#
# .nf
# # postfix command
# .fi
#
# For example, to find out what Postfix instances are configured:
#
# .nf
# # postfix status
# .fi
#
# The postfix(1) command invokes the postfix-wrapper command.
# This in turn applies the postfix(1) command to the default
# Postfix instance, and to each instance specified with the
# default main.cf file's multi_instance_directories parameter
# value.
#
# The postfix-wrapper command will start, stop, reload, etc.,
# only Postfix instances that have "multi_instance_enable =
# yes" in their main.cf files. When an instance is disabled,
# postfix-wrapper replaces "start" commands by "check" so
# that problems will still be reported.
#
# The startup order is taken from the multi_instance_directories
# parameter; the default instance is prepended to the list.
# The startup order is used for all postfix(1) commands,
# except for commands that stop Postfix instances. In those
# cases the order is reversed.
# MANAGING INDIVIDUAL INSTANCES
# .ad
# .fi
# To manage an individual Postfix instance, use:
#
# .nf
# # postfix -c /path/to/config_directory command
# .fi
#
# This is also needed to manage the default Postfix instance,
# after you turn on multi-instance support.
#
# To use the Postfix sendmail command with a non-default
# Postfix instance, use:
#
# .nf
# # sendmail -C /path/to/config_directory ...
# .fi
#
# Note 1: that's capital C, not lower-case c.
#
# Note 2: only the default Postfix instance will check or
# update the shared Postfix files, including the executable
# files and documentation.
# POSTFIX-WRAPPER INITIALIZATION
# .ad
# .fi
# To hook this program into Postfix, execute the command
# shown below.
#
# This command should be entered as one line.
#
# In the example, replace /etc/postfix with the default Postfix
# configuration directory, and replace /usr/libexec/postfix
# with the daemon directory pathname of the default Postfix
# instance.
#
# .nf
# # postconf -c /etc/postfix -e
# "multi_instance_enable=yes"
# "multi_instance_wrapper=/usr/libexec/postfix/postfix-wrapper"
# .fi
# CREATING A NEW POSTFIX INSTANCE
# .ad
# .fi
# To create a Postfix instance called "postfix-test", start
# with generic main.cf and master.cf files and customize the
# locations of the queue and data directories with the commands
# shown below. The last command updates main.cf and creates
# any directories that Postfix will need.
#
# Each command below should be entered as one line.
#
# In the example, replace /etc/postfix with the default Postfix
# configuration directory, and replace /usr/libexec/postfix
# with the daemon directory pathname of the default Postfix
# instance.
#
# .nf
# # mkdir /etc/postfix-test
# # cp /usr/libexec/postfix/main.cf /etc/postfix-test
# # cp /usr/libexec/postfix/master.cf /etc/postfix-test
# # postconf -c /etc/postfix-test -e
# "multi_instance_name=postfix-test"
# # postfix -c /etc/postfix post-install
# "config_directory=/etc/postfix-test"
# "queue_directory=/var/spool/postfix-test"
# "data_directory=/var/lib/postfix-test"
# create-missing
# .fi
#
# Register this Postfix instance with the default instance.
# This command should be entered as one line.
#
# .nf
# # postconf -e "multi_instance_directories=`postconf
# -h multi_instance_directories` /etc/postfix-test"
# .fi
#
# Edit the myhostname and inet_interfaces main.cf parameters,
# so that they will not conflict with the default Postfix
# instance, and change whatever else needs to be changed.
#
# Test the instance with:
#
# .nf
# # postfix -c /etc/postfix-test start
# # postfix -c /etc/postfix-test status
# [ other tests ... ]
# .fi
#
# When everything is working satisfactorily, enable start/stop/etc.
# by the multi-instance manager:
#
# .nf
# # postconf -c /etc/postfix-test -e multi_instance_enable=yes
# DIAGNOSTICS
# .ad
# .fi
# When an operation fails, the affected Postfix instance logs
# a message, and the multi-instance manager skips to the next
# instance.
# BUGS
# Support for the multi_instance_group feature is not implemented.
# SEE ALSO
# postfix(1) Postfix control program
# postfix-wrapper(5) multi-instance manager API
# postmulti(1) full-blown multi-instance manager
# LICENSE
# .ad
# .fi
# The Secure Mailer license must be distributed with this software.
# AUTHOR(S)
# Wietse Venema
# IBM T.J. Watson Research
# P.O. Box 704
# Yorktown Heights, NY 10598, USA
#--
# Sanity checks.
: ${command_directory?"do not invoke this command directly"}
: ${daemon_directory?"do not invoke this command directly"}
# Readability.
POSTCONF=$command_directory/postconf
POSTFIX=$command_directory/postfix
# Canonicalize the instance directory list. The list is specified
# in startup order.
instance_dirs=`$POSTCONF -h multi_instance_directories | sed 's/,/ /'` ||
exit 1
case "$1" in
stop|quick-stop|abort|drain)
all_dirs=
for dir in $config_directory $instance_dirs
do
all_dirs="$dir $all_dirs"
done;;
*) all_dirs="$config_directory $instance_dirs";;
esac
# Execute the command on all applicable instances. When a Postfix
# instance is disabled, replace "postfix start" by "postfix check"
# so that problems will still be reported.
err=0
for dir in $all_dirs
do
case "$1" in
start)
test "`$POSTCONF -c $dir -h multi_instance_enable`" = yes || {
$POSTFIX -c $dir check || err=$?
continue
};;
stop|abort|drain|flush|reload)
test "`$POSTCONF -c $dir -h multi_instance_enable`" = yes ||
continue;;
esac
$POSTFIX -c $dir "$@" || err=$?
done
exit $err
|