#!/bin/sh # # $FreeBSD$ # # If the POSTFIX_DEFAULT_MTA environment variable is set to YES, it # will make the port/package use defaults which make postfix replace # sendmail as much as possible. PKG_PREFIX=${PKG_PREFIX:=/usr/local} BATCH=${BATCH:=no} POSTFIX_DEFAULT_MTA=${POSTFIX_DEFAULT_MTA:=no} if [ x${POSTFIX_DEFAULT_MTA} = xno ]; then DEFAULT_REPLACE_MAILERCONF=n else DEFAULT_REPLACE_MAILERCONF=y fi if [ -x /usr/sbin/nologin ]; then NOLOGIN=/usr/sbin/nologin else NOLOGIN=/sbin/nologin fi ask() { local question default answer question=$1 default=$2 if [ -z "${PACKAGE_BUILDING}" -a x${BATCH} = xno ]; then /usr/bin/read -p "${question} [${default}]? " answer fi if [ x${answer} = x ]; then answer=${default} fi /bin/echo ${answer} } yesno() { local question default answer question=$1 default=$2 while :; do answer=$(ask "${question}" "${default}") case "${answer}" in [Yy]*) return 0;; [Nn]*) return 1;; esac /bin/echo "Please answer yes or no." done } if [ x"$2" = xPRE-INSTALL ]; then USER=postfix UID=125 GROUP=postfix GID=125 GROUP2=maildrop GID2=126 if /usr/sbin/pw groupshow "${GROUP}" 2>/dev/null; then /bin/echo "You already have a group \"${GROUP}\", so I will use it." else if /usr/sbin/pw groupadd ${GROUP} -g ${GID} then /bin/echo "Added group \"${GROUP}\"." else /bin/echo "Adding group \"${GROUP}\" failed..." /bin/echo "Please create it, and try again." exit 1 fi fi if /usr/sbin/pw groupshow "${GROUP2}" 2>/dev/null; then /bin/echo "You already have a group \"${GROUP2}\", so I will use it." else if /usr/sbin/pw groupadd ${GROUP2} -g ${GID2}; then /bin/echo "Added group \"${GROUP2}\"." else /bin/echo "Adding group \"${GROUP2}\" failed..." /bin/echo "Please create it, and try again." exit 1 fi fi if /usr/sbin/pw user show "${USER}" 2>/dev/null; then /bin/echo "You already have a user \"${USER}\", so I will use it." else if /usr/sbin/pw useradd ${USER} -u ${UID} -g ${GROUP} -h - -d /var/spool/postfix -s ${NOLOGIN} -c "Postfix Mail System"; then /bin/echo "Added user \"${USER}\"." else /bin/echo "Adding user \"${USER}\" failed..." /bin/echo "Please create it, and try again." exit 1 fi fi if /usr/sbin/pw show group mail | grep -q "${USER}" 2>/dev/null; then /bin/echo "You already have user \"${USER}\" in group \"mail\", so I will use it." else /bin/echo "You need user \"${USER}\" added to group \"mail\"." if yesno "Would you like me to add it" y; then /usr/sbin/pw groupmod mail -m ${USER} || exit /bin/echo "Done." else /bin/echo "Please create it, and try again." exit 1 fi fi fi if [ x"$2" = xPOST-INSTALL ]; then if [ -d ${PKG_PREFIX}/etc/postfix/dist ]; then for file in ${PKG_PREFIX}/etc/postfix/dist/*; do if [ ! -f ${PKG_PREFIX}/etc/postfix/${file#${PKG_PREFIX}/etc/postfix/dist} ]; then cp $file ${PKG_PREFIX}/etc/postfix/ fi done fi /bin/sh ${PKG_PREFIX}/etc/postfix/post-install tempdir=/tmp \ config_directory=${PKG_PREFIX}/etc/postfix \ daemon_directory=${PKG_PREFIX}/libexec/postfix \ command_directory=${PKG_PREFIX}/sbin \ queue_directory=/var/spool/postfix \ sendmail_path=${PKG_PREFIX}/sbin/sendmail \ newaliases_path=${PKG_PREFIX}/bin/newaliases \ mailq_path=${PKG_PREFIX}/bin/mailq \ mail_owner=postfix \ setgid_group=maildrop \ manpage_directory=${PKG_PREFIX}/man \ sample_directory=${PKG_PREFIX}/etc/postfix \ readme_directory=no \ upgrade-package fi # readme_directory is "no" above since the package will have correct perms # already, and we don't know if they had PORTDOCS. replace() { local orig repl orig=$1 repl=$2 if [ -e ${orig} ]; then /bin/mv -f ${orig} ${orig}.OFF /bin/chmod 0 ${orig}.OFF fi if [ -e ${repl} ]; then /bin/ln -s ${repl} ${orig} fi } if [ x"$2" = xPOST-INSTALL -a -z "${PACKAGE_BUILDING}" ]; then if [ -x /sbin/sysctl ]; then OSVERSION=`/sbin/sysctl -n kern.osreldate` else OSVERSION=`/usr/sbin/sysctl -n kern.osreldate` fi if [ ${OSVERSION} -ge 400014 ]; then if yesno "Would you like to activate Postfix in /etc/mail/mailer.conf" ${DEFAULT_REPLACE_MAILERCONF}; then mv -f /etc/mail/mailer.conf /etc/mail/mailer.conf.old /bin/echo "#" > /etc/mail/mailer.conf /bin/echo -n "# Execute the Postfix sendmail program" >> /etc/mail/mailer.conf /bin/echo ", named ${PKG_PREFIX}/sbin/sendmail" >> /etc/mail/mailer.conf /bin/echo "#" >> /etc/mail/mailer.conf /bin/echo "sendmail ${PKG_PREFIX}/sbin/sendmail" >> /etc/mail/mailer.conf /bin/echo "send-mail ${PKG_PREFIX}/sbin/sendmail" >> /etc/mail/mailer.conf /bin/echo "mailq ${PKG_PREFIX}/sbin/sendmail" >> /etc/mail/mailer.conf /bin/echo "newaliases ${PKG_PREFIX}/sbin/sendmail" >> /etc/mail/mailer.conf fi else if yesno "Would you like to replace {sendmail,mailq,newaliases} with Postfix versions" n; then replace /usr/sbin/sendmail ${PKG_PREFIX}/sbin/sendmail replace /usr/bin/mailq ${PKG_PREFIX}/sbin/sendmail replace /usr/bin/newaliases ${PKG_PREFIX}/sbin/sendmail /bin/echo "Done." fi fi fi