#!/bin/sh
#
# Program      : convert_to_new_sendmail
# Author       : Mark <mark@sunsite.unc.edu>
# Initial Date : 31st October 1998
# Date         : 6th November 1998
# Purpose      : Upgrade Solaris mail system to Sendmail Consortium sendmail
#
date=`date +%Y.%m.%d`
new_sm_dir=/usr/local/etc/mail
backup_dir="${new_sm_dir}/original.email.files.${date}"
sol_sm_dir=/etc/mail
sol_sm_bin=/usr/lib/sendmail
sol_mailq=/usr/bin/mailq
sol_aliases="${sol_sm_dir}/aliases"
sol_hoststat=/usr/bin/hoststat
sol_purgestat=/usr/bin/purgestat
sol_newaliases=/usr/bin/newaliases
######################################################
#
# Make backup directory
#
######################################################
if [ ! -d "${backup_dir}" ]; then
    echo "Creating ${backup_dir}"
    mkdir ${backup_dir}
fi
if [ -d "${backup_dir}" ]; then
    chown root ${backup_dir}
fi
if [ -d "${backup_dir}" ]; then
    chgrp root ${backup_dir}
fi
if [ -d "${backup_dir}" ]; then
    chmod 755 ${backup_dir}
fi
######################################################
#
# Safely backup /etc/mail/sendmail.cf
#
######################################################
if [ -r "${sol_sm_dir}/sendmail.cf" ]; then
    if [ ! -h "${sol_sm_dir}/sendmail.cf" ]; then
        if [ ! -f "${backup_dir}/sendmail.cf" ]; then
            echo "Backing up ${sol_sm_dir}/sendmail.cf to ${backup_dir}/sendmail.cf"
            cp ${sol_sm_dir}/sendmail.cf ${backup_dir}/sendmail.cf
        else
            echo "${backup_dir}/sendmail.cf exists. Preserving."
        fi
        echo "Deleting ${sol_sm_dir}/sendmail.cf"
        rm -f ${sol_sm_dir}/sendmail.cf
        echo "Linking ${sol_sm_dir}/sendmail.cf to ${new_sm_dir}/sendmail.cf"
        ln -s ${new_sm_dir}/sendmail.cf ${sol_sm_dir}/sendmail.cf
    else
        linked=`ls -l ${sol_sm_dir}/sendmail.cf | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_sm_dir}/sendmail.cf link"
            rm -f ${sol_sm_dir}/sendmail.cf
            echo "Linking ${sol_sm_dir}/sendmail.cf to ${new_sm_dir}/sendmail.cf"
            ln -s ${new_sm_dir}/sendmail.cf ${sol_sm_dir}/sendmail.cf
        else
            echo "${sol_sm_dir}/sendmail.cf already linked to ${new_sm_dir}. Preserving."
        fi
    fi
else
    echo "Linking ${sol_sm_dir}/sendmail.cf to ${new_sm_dir}/sendmail.cf"
    ln -s ${new_sm_dir}/sendmail.cf ${sol_sm_dir}/sendmail.cf
fi
######################################################
#
# Safely backup /etc/mail/aliases
#
######################################################
if [ -r "${sol_aliases}" ]; then
    if [ ! -h "${sol_aliases}" ]; then
        if [ ! -f "${backup_dir}/aliases" ]; then
            echo "Backing up ${sol_aliases} to ${backup_dir}/aliases"
            cp ${sol_aliases} ${backup_dir}/aliases
        else
            echo "${backup_dir}/aliases exists. Preserving."
        fi
        if [ ! -f "${new_sm_dir}/aliases" ]; then
            echo "Copying ${sol_aliases} to ${new_sm_dir}/aliases"
            cp ${sol_aliases} ${new_sm_dir}/aliases
        fi
        echo "Deleting ${sol_aliases}"
        rm -f ${sol_aliases}
        echo "Linking ${sol_aliases} to ${new_sm_dir}/aliases"
        ln -s ${new_sm_dir}/aliases ${sol_aliases}
    else
        linked=`ls -l ${sol_aliases} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_aliases} link"
            rm -f ${sol_sm_dir}/aliases
            echo "Linking ${sol_aliases} to ${new_sm_dir}/aliases"
            ln -s ${new_sm_dir}/aliases ${sol_aliases}
        else
            echo "${sol_aliases} already linked to ${new_sm_dir}. Preserving."
        fi
    fi
else
    echo "Linking ${sol_aliases} to ${new_sm_dir}/aliases"
    ln -s ${new_sm_dir}/aliases ${sol_aliases}
fi
######################################################
#
# Safely backup /etc/mail/sendmail.hf
#
######################################################
if [ -r "${sol_sm_dir}/sendmail.hf" ]; then
    if [ ! -h "${sol_sm_dir}/sendmail.hf" ]; then
        if [ ! -f "${backup_dir}/sendmail.hf" ]; then
            echo "Backing up ${sol_sm_dir}/sendmail.hf to ${backup_dir}/sendmail.hf"
            cp ${sol_sm_dir}/sendmail.hf ${backup_dir}/sendmail.hf
        else
            echo "${backup_dir}/sendmail.hf exists. Preserving."
        fi
        echo "Deleting ${sol_sm_dir}/sendmail.hf"
        rm -f ${sol_sm_dir}/sendmail.hf
        echo "Linking ${sol_sm_dir}/sendmail.hf to ${new_sm_dir}/sendmail.hf"
        ln -s ${new_sm_dir}/sendmail.hf ${sol_sm_dir}/sendmail.hf
    else
        linked=`ls -l ${sol_sm_dir}/sendmail.hf | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_sm_dir}/sendmail.hf link"
            rm -f ${sol_sm_dir}/sendmail.hf
            echo "Linking ${sol_sm_dir}/sendmail.hf to ${new_sm_dir}/sendmail.hf"
            ln -s ${new_sm_dir}/sendmail.hf ${sol_sm_dir}/sendmail.hf
        else
            echo "${sol_sm_dir}/sendmail.hf already linked to ${new_sm_dir}. Preserving."
        fi
    fi
else
    echo "Linking ${sol_sm_dir}/sendmail.hf to ${new_sm_dir}/sendmail.hf"
    ln -s ${new_sm_dir}/sendmail.hf ${sol_sm_dir}/sendmail.hf
fi
######################################################
#
# Safely backup /usr/lib/sendmail
#
######################################################
if [ -r "${sol_sm_bin}" ]; then
    if [ ! -h "${sol_sm_bin}" ]; then
        if [ ! -f "${backup_dir}/sendmail" ]; then
            echo "Backing up ${sol_sm_bin} to ${backup_dir}/sendmail"
            cp ${sol_sm_bin} ${backup_dir}/sendmail
            chown root ${backup_dir}/sendmail
            chgrp root ${backup_dir}/sendmail
            chmod 700 ${backup_dir}/sendmail
        else
            echo "${backup_dir}/sendmail exists. Preserving."
        fi
        echo "Deleting ${sol_sm_bin}"
        rm -f ${sol_sm_bin}
        echo "Linking ${sol_sm_bin} to ${new_sm_dir}/sendmail"
        ln -s ${new_sm_dir}/sendmail ${sol_sm_bin}
    else
        linked=`ls -l ${sol_sm_bin} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_sm_bin} link"
            rm -f ${sol_sm_bin}
            echo "Linking ${sol_sm_bin} to ${new_sm_dir}/sendmail"
            ln -s ${new_sm_dir}/sendmail ${sol_sm_bin}
        else
            echo "${sol_sm_bin} already linked to ${new_sm_dir}"
        fi
    fi
else
    echo "Linking ${sol_sm_bin} to ${new_sm_dir}/sendmail"
    ln -s ${new_sm_dir}/sendmail ${sol_sm_bin}
fi
######################################################
#
# Safely link newaliases
#
######################################################
if [ -r "${sol_newaliases}" ]; then
    if [ ! -h "${sol_newaliases}" ]; then
        if [ ! -f "${backup_dir}/newaliases" ]; then
            echo "Backing up ${sol_newaliases} to ${backup_dir}/newaliases"
            cp ${sol_newaliases} ${backup_dir}/newaliases
            chown root ${backup_dir}/newaliases
            chgrp root ${backup_dir}/newaliases
            chmod 700 ${backup_dir}/newaliases
        else
            echo "${backup_dir}/newaliases exists. Preserving."
        fi
        echo "Backing up ${sol_newaliases} to ${backup_dir}/newaliases"
        echo "Deleting ${sol_newaliases}"
        rm -f ${sol_newaliases}
        echo "Linking ${sol_newaliases} to ${new_sm_dir}/sendmail"
        ln -s ${new_sm_dir}/sendmail ${sol_newaliases}
    else
        linked=`ls -l ${sol_newaliases} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_newaliases} link"
            rm -f ${sol_newaliases}
            echo "Linking ${sol_newaliases} to ${new_sm_dir}/sendmail"
            ln -s ${new_sm_dir}/sendmail ${sol_newaliases}
        else
            echo "${sol_newaliases} already linked to ${new_sm_dir}"
        fi
    fi
else
    echo "Linking ${sol_newaliases} to ${new_sm_dir}/sendmail"
    ln -s ${new_sm_dir}/sendmail ${sol_newaliases}
fi
######################################################
#
# Safely link mailq
#
######################################################
if [ -r "${sol_mailq}" ]; then
    if [ ! -h "${sol_mailq}" ]; then
        if [ ! -f "${backup_dir}/mailq" ]; then
            echo "Backing up ${sol_mailq} to ${backup_dir}/mailq"
            cp ${sol_mailq} ${backup_dir}/mailq
            chown root ${backup_dir}/mailq
            chgrp root ${backup_dir}/mailq
            chmod 700 ${backup_dir}/mailq
        else
            echo "${backup_dir}/mailq exists. Preserving."
        fi
        echo "Deleting ${sol_mailq}"
        rm -f ${sol_mailq}
        echo "Linking ${sol_mailq} to ${new_sm_dir}/sendmail"
        ln -s ${new_sm_dir}/sendmail ${sol_mailq}
    else
        linked=`ls -l ${sol_mailq} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_mailq} link"
            rm -f ${sol_mailq}
            echo "Linking ${sol_mailq} to ${new_sm_dir}/sendmail"
            ln -s ${new_sm_dir}/sendmail ${sol_mailq}
        else
            echo "${sol_mailq} already linked to ${new_sm_dir}"
        fi
    fi
else
    echo "Linking ${sol_mailq} to ${new_sm_dir}/sendmail"
    ln -s ${new_sm_dir}/sendmail ${sol_mailq}
fi
######################################################
#
# Safely link hoststat
#
######################################################
if [ -r "${sol_hoststat}" ]; then
    if [ ! -h "${sol_hoststat}" ]; then
        if [ ! -f "${backup_dir}/hoststat" ]; then
            echo "Backing up ${sol_hoststat} to ${backup_dir}/hoststat"
            cp ${sol_hoststat} ${backup_dir}/hoststat
            chown root ${backup_dir}/hoststat
            chgrp root ${backup_dir}/hoststat
            chmod 700 ${backup_dir}/hoststat
        else
            echo "${backup_dir}/hoststat exists. Preserving."
        fi
        echo "Deleting ${sol_hoststat}"
        rm -f ${sol_hoststat}
        echo "Linking ${sol_hoststat} to ${new_sm_dir}/sendmail"
        ln -s ${new_sm_dir}/sendmail ${sol_hoststat}
    else
        linked=`ls -l ${sol_hoststat} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_hoststat} link"
            rm -f ${sol_hoststat}
            echo "Linking ${sol_hoststat} to ${new_sm_dir}/sendmail"
            ln -s ${new_sm_dir}/sendmail ${sol_hoststat}
        else
            echo "${sol_hoststat} already linked to ${new_sm_dir}"
        fi
    fi
else
    echo "Linking ${sol_hoststat} to ${new_sm_dir}/sendmail"
    ln -s ${new_sm_dir}/sendmail ${sol_hoststat}
fi
######################################################
#
# Safely link purgestat
#
######################################################
if [ -r "${sol_purgestat}" ]; then
    if [ ! -h "${sol_purgestat}" ]; then
        if [ ! -f "${backup_dir}/purgestat" ]; then
            echo "Backing up ${sol_purgestat} to ${backup_dir}/purgestat"
            cp ${sol_purgestat} ${backup_dir}/purgestat
            chown root ${backup_dir}/purgestat
            chgrp root ${backup_dir}/purgestat
            chmod 700 ${backup_dir}/purgestat
        else
            echo "${backup_dir}/purgestat exists. Preserving."
        fi
        echo "Deleting ${sol_purgestat}"
        rm -f ${sol_purgestat}
        echo "Linking ${sol_purgestat} to ${new_sm_dir}/sendmail"
        ln -s ${new_sm_dir}/sendmail ${sol_purgestat}
    else
        linked=`ls -l ${sol_purgestat} | grep "${new_sm_dir}" | wc -l | sed -e 's/ //g;'`
        if [ "$linked" -eq "0" ]; then
            echo "Deleting ${sol_purgestat} link"
            rm -f ${sol_purgestat}
            echo "Linking ${sol_purgestat} to ${new_sm_dir}/sendmail"
            ln -s ${new_sm_dir}/sendmail ${sol_purgestat}
        else
            echo "${sol_purgestat} already linked to ${new_sm_dir}"
        fi
    fi
else
    echo "Linking ${sol_purgestat} to ${new_sm_dir}/sendmail"
    ln -s ${new_sm_dir}/sendmail ${sol_purgestat}
fi
