#!/bin/bash -x

function postfix {
# create certificate for smptd
test -d /etc/postfix/sasl || mkdir -p /etc/postfix/sasl
if test ! -e /etc/postfix/sasl/postfix.pem
then
    if test ! -e /etc/ssl/certs/ssl-cert-snakeoil.pem || \
       test ! -e /etc/ssl/private/ssl-cert-snakeoil.key
    then
        make-ssl-cert generate-default-snakeoil
    fi

    cat /etc/ssl/certs/ssl-cert-snakeoil.pem \
        /etc/ssl/private/ssl-cert-snakeoil.key \
        > /etc/postfix/sasl/postfix.pem

    chown root:root/etc/postfix/sasl/postfix.pem
    chmod 400 /etc/postfix/sasl/postfix.pem
fi
}

function dovecot {

test -d /etc/dovecot/private || mkdir -p /etc/dovecot/private

if test -e  /etc/dovecot/private/dovecot.pem
then
  if test  -e /etc/dovecot/dovecot.pem
  then
       # we need to have certicate and key in the same pem
       cp  /etc/dovecot/private/dovecot.pem  /etc/dovecot/private/dovecot.pem.tmp
       cat /etc/dovecot/dovecot.pem  /etc/dovecot/private/dovecot.pem.tmp >  /etc/dovecot/private/dovecot.pem
       rm /etc/dovecot/private/dovecot.pem.tmp /etc/dovecot/dovecot.pem
  fi
fi

if test ! -e /etc/dovecot/private/dovecot.pem
then
    if test ! -e /etc/ssl/certs/ssl-cert-snakeoil.pem || \
       test ! -e /etc/ssl/private/ssl-cert-snakeoil.key
    then
        make-ssl-cert generate-default-snakeoil
    fi

    cat /etc/ssl/certs/ssl-cert-snakeoil.pem \
        /etc/ssl/private/ssl-cert-snakeoil.key \
        > /etc/dovecot/private/dovecot.pem

    chown root:root /etc/dovecot/private/dovecot.pem
    chmod 400 /etc/dovecot/private/dovecot.pem
fi
}

if [ "$1" = "gen-dovecot-cert" ]; then
    dovecot
    exit 0
fi

if [ "$1" = "gen-postfix-cert" ]; then
    postfix
    exit 0
fi

# generate all certificates
postfix
dovecot

# generate mail aliases
touch /etc/postfix/main.cf # newaliases fails if no main.cf file is present
newaliases

# populate ldap
#/usr/share/zentyal-mail/mail-ldap update

# set a valid shell for fetchmail user
chsh -s /bin/sh fetchmail

