#!/bin/sh # # Copyright (c) 2016 Apple Inc. All rights reserved. # # IMPORTANT NOTE: This file is licensed only for use on Apple-branded # computers and is subject to the terms and conditions of the Apple Software # License Agreement accompanying the package this file is a part of. # You may not port this file to another platform without Apple's written consent. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # 3. Neither the name of Apple Inc. ("Apple") nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. _vol_path=$1 _spool_path=/var/spool/postfix _spool_dirs="active bounce corrupt defer deferred flush hold incoming maildrop pid private public saved trace" _public_pipes="pickup qmgr" _public_sockets="cleanup flush showq" _private_sockets="anvil discard error policy relay sacl-cache smtpd trace bounce dnsblog lmtp proxymap retry scache tlsmgr verify defer dovecot local proxywrite rewrite smtp tlsproxy virtual" if [ $# -ne 1 ]; then echo "Usage: $0 volume-path" >&2 exit 1 fi # check for volume path if [ ! -d "$_vol_path" ] ; then echo "no volume: $_vol_path" >&2 exit 1 fi _full_path="$_vol_path$_spool_path" # create full path on volume if [ ! -d "$_full_path" ] ; then mkdir -p $_full_path if [ ! -d "$_full_path" ] ; then echo "cannot create $_full_path" >&2 exit 1 fi fi # create postfix spool directories for _spool_dir_name in $_spool_dirs ; do _spool_dir="$_full_path/$_spool_dir_name" if [ ! -d "$_spool_dir" ] ; then mkdir -p $_spool_dir if [ ! -d "$_spool_dir" ] ; then echo "cannot create $_full_path" >&2 exit 1 fi case "$_spool_dir_name" in "pid") chown root:wheel "$_spool_dir" chmod 755 "$_spool_dir" ;; "maildrop") chown _postfix:_postdrop "$_spool_dir" chmod 730 "$_spool_dir" ;; "public") chown _postfix:_postdrop "$_spool_dir" chmod 710 "$_spool_dir" ;; *) chown _postfix:wheel "$_spool_dir" chmod 700 "$_spool_dir" ;; esac fi done # create public sockets for _socket in $_public_sockets ; do _socket_path="$_full_path/public/$_socket" if [ ! -e "$_socket_path" ] ; then python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('$_socket_path')" chmod 666 $_socket_path fi done # create public pipes for _pipe in $_public_pipes ; do _pipe_path="$_full_path/public/$_pipe" if [ ! -e "$_pipe_path" ] ; then mkfifo -m 622 "$_pipe_path" fi done # create private sockets for _socket in $_private_sockets ; do _socket_path="$_full_path/private/$_socket" if [ ! -e "$_socket_path" ] ; then python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('$_socket_path')" chmod 666 $_socket_path fi done