Bug#708420: postfix: With multiple instances, the init script does not start all instances
On 09/09/2013 03:14, LaMont Jones wrote: tag 708420 + moreinfo -- On Wed, May 15, 2013 at 06:57:04PM +0200, Vincent Rischmann wrote: I have multiple instances of postfix, each in /etc/postfix/ms/{01,02,...} Postfix is correctly configured (postmulti lists my instances as enabled). What is multi_instance_name set to in the various instance main.cf files? multi_instance_name is empty. The function enabled_instances() in the init script is wrong, instead of getting a list of instances directory, it returns a list of - It gets a list of instance names, and then uses them as instance names... Just modifying this function makes it work again. Although, postmulti does seem to take the full-path directory as well as the instance name, so this may make sense. lamont Well the modified script does work in my case, but I guess something is wrong in my configuration since nobody else seems to be having this problem. Since I made the bug report, I didn't investigate further, but I'd be happy to help. Vincent. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#708420: postfix: With multiple instances, the init script does not start all instances
Package: postfix Version: 2.9.6-2 Severity: normal I have multiple instances of postfix, each in /etc/postfix/ms/{01,02,...} Postfix is correctly configured (postmulti lists my instances as enabled). The function enabled_instances() in the init script is wrong, instead of getting a list of instances directory, it returns a list of - Just modifying this function makes it work again. -- System Information: Debian Release: 7.0 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-4-amd64 (SMP w/8 CPU cores) Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/bash Versions of packages postfix depends on: ii adduser3.113+nmu3 ii cpio 2.11+dfsg-0.1 ii debconf [debconf-2.0] 1.5.49 ii dpkg 1.16.10 ii libc6 2.13-38 ii libdb5.1 5.1.29-5 ii libsasl2-2 2.1.25.dfsg1-6 ii libsqlite3-0 3.7.13-1+deb7u1 ii libssl1.0.01.0.1e-2 ii lsb-base 4.1+Debian8 ii netbase5.0 ii ssl-cert 1.0.32 Versions of packages postfix recommends: ii python 2.7.3-4 Versions of packages postfix suggests: pn dovecot-commonnone ii libsasl2-modules 2.1.25.dfsg1-6 pn mail-reader none pn postfix-cdb none pn postfix-doc none pn postfix-ldap none ii postfix-mysql 2.9.6-2 pn postfix-pcre none pn postfix-pgsql none pn procmail none pn resolvconfnone pn sasl2-bin none pn ufw none -- Configuration Files: /etc/init.d/postfix changed: PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/postfix NAME=Postfix TZ= unset TZ SYNC_CHROOT=y test -f /etc/default/postfix . /etc/default/postfix test -x $DAEMON test -f /etc/postfix/main.cf || exit 0 . /lib/lsb/init-functions enabled_instances() { postmulti -l -a | awk '($3==y) { print $4}' } running() { INSTANCE=$1 if [ X$INSTANCE = X ]; then POSTCONF=postconf else POSTCONF=postmulti -i $INSTANCE -x postconf fi queue=$($POSTCONF -h queue_directory 2/dev/null || echo /var/spool/postfix) if [ -f ${queue}/pid/master.pid ]; then pid=$(sed 's/ //g' ${queue}/pid/master.pid) # what directory does the executable live in. stupid prelink systems. dir=$(ls -l /proc/$pid/exe 2/dev/null | sed 's/.* - //; s/\/[^\/]*$//') if [ X$dir = X/usr/lib/postfix ]; then echo y fi fi } configure_instance() { INSTANCE=$1 if [ X$INSTANCE = X ]; then POSTCONF=postconf else POSTCONF=postmulti -i $INSTANCE -x postconf fi # if you set myorigin to 'ubuntu.com' or 'debian.org', it's wrong, and annoys the admins of # those domains. See also sender_canonical_maps. MYORIGIN=$($POSTCONF -h myorigin | tr 'A-Z' 'a-z') if [ X${MYORIGIN#/} != X${MYORIGIN} ]; then MYORIGIN=$(tr 'A-Z' 'a-z' $MYORIGIN) fi if [ X$MYORIGIN = Xubuntu.com ] || [ X$MYORIGIN = Xdebian.org ]; then log_failure_msg Invalid \$myorigin ($MYORIGIN), refusing to start log_end_msg 1 exit 1 fi config_dir=$($POSTCONF -h config_directory) # see if anything is running chrooted. NEED_CHROOT=$(awk '/^[0-9a-z]/ ($5 ~ [-yY]) { print y; exit}' ${config_dir}/master.cf) if [ -n $NEED_CHROOT ] [ -n $SYNC_CHROOT ]; then # Make sure that the chroot environment is set up correctly. oldumask=$(umask) umask 022 queue_dir=$($POSTCONF -h queue_directory) cd $queue_dir # copy the CA path if specified ca_path=$($POSTCONF -h smtp_tls_CApath) case $ca_path in '') :;; # no ca_path $queue_dir/*) :;; # skip stuff already in chroot *) if test -d $ca_path; then dest_dir=$queue_dir/${ca_path#/} new=0 if test -d $dest_dir; then # write to a new directory ... dest_dir=${dest_dir%/}.NEW new=1 else mkdir --parent ${dest_dir%/*} fi # handle files in subdirectories (cd $ca_path find . -name '*.pem' -print0 | cpio -0pdL --quiet $dest_dir) 2/dev/null || (log_failure_msg failure copying certificates; exit 1) c_rehash $dest_dir /dev/null 21 if [ $new = 1 ]; then # and replace the old directory rm -r ${dest_dir%.NEW} mv $dest_dir ${dest_dir%.NEW} fi fi ;; esac # if there is a CA file, copy it ca_file=$($POSTCONF -h smtp_tls_CAfile) case $ca_file in $queue_dir/*) :;; # skip