aboutsummaryrefslogblamecommitdiffstats
path: root/mail/postfix22/pkg-install
blob: 30b1a214b64e2cf156b7a701b50f7d234df96753 (plain) (tree)
1
2
3
4
5
6
7
8
9
         


                 
                                                                   
                                                                    
                               
                                    
                  

                                              
                                    
    
                                    
  
 
                                 
                                 
    
                             
  
       



                                                                
                                                           


                                   
                      

         








                                                        
                                               
            
 
                                 






                                                              
                                                                               
            
                                                           
                                                        
                    
                                                                  



                                                               
                                                                                
            
                                                                   
                                                         
                    
                                                                   



                                                             
                                                                              
            
                                                                                                                                             
                                                      
                    
                                                                



                                                                             
                                                                                             
            
                                                                         
                                                                     
                                    
                    
                                                               

                              
  
                                  





















                                                                                                          
                                                                          
           









                                              

                                                              








                                                                                                                  
          
  
#!/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
        read -p "${question} [${default}]? " answer
    fi
    if [ x${answer} = x ]; then
        answer=${default}
    fi
    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
        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
        echo "You already have a group \"${GROUP}\", so I will use it."
    else
        if /usr/sbin/pw groupadd ${GROUP} -g ${GID}
        then
            echo "Added group \"${GROUP}\"."
        else
            echo "Adding group \"${GROUP}\" failed..."
            echo "Please create it, and try again."
            exit 1
        fi
    fi

    if /usr/sbin/pw groupshow "${GROUP2}" 2>/dev/null; then
        echo "You already have a group \"${GROUP2}\", so I will use it."
    else
        if /usr/sbin/pw groupadd ${GROUP2} -g ${GID2}; then
            echo "Added group \"${GROUP2}\"."
        else
            echo "Adding group \"${GROUP2}\" failed..."
            echo "Please create it, and try again."
            exit 1
        fi
    fi

    if /usr/sbin/pw user show "${USER}" 2>/dev/null; then
         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
            echo "Added user \"${USER}\"."
        else
            echo "Adding user \"${USER}\" failed..."
            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
        echo "You already have user \"${USER}\" in group \"mail\", so I will use it."
    else
        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
            echo "Done."
        else
            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 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
        echo "#"                        >  /etc/mail/mailer.conf
        echo -n "# Execute the Postfix sendmail program"    >> /etc/mail/mailer.conf
        echo ", named ${PKG_PREFIX}/sbin/sendmail"      >> /etc/mail/mailer.conf
        echo "#"                        >> /etc/mail/mailer.conf
        echo "sendmail  ${PKG_PREFIX}/sbin/sendmail"    >> /etc/mail/mailer.conf
        echo "send-mail ${PKG_PREFIX}/sbin/sendmail"    >> /etc/mail/mailer.conf
        echo "mailq ${PKG_PREFIX}/sbin/sendmail"    >> /etc/mail/mailer.conf
        echo "newaliases    ${PKG_PREFIX}/sbin/sendmail"    >> /etc/mail/mailer.conf
    fi
fi