server_inited=`/usr/libexec/PlistBuddy -c "print service_initialized" /Library/Server/Mail/Config/MailServicesOther.plist`
if [ "$server_inited" == "true" ]; then
exit 0
fi
_dovecot_db_dir=/Library/Server/Mail/Data/db
_dovecot_mail_dir=/Library/Server/Mail/Data/mail
_dovecot_sieve_dir=/Library/Server/Mail/Data/rules
_dovecot_config_dir=/Library/Server/Mail/Config
_mail_logs_path=/Library/Logs/Mail
_mailaccess_log=/Library/Logs/Mail/mailaccess.log
if [ ! -d $_dovecot_config_dir ]; then
mkdir -p $_dovecot_config_dir
fi
if [ -d $_server_root/private/etc/dovecot ]; then
cp -rpf "$_server_root/private/etc/dovecot" "$_dovecot_config_dir/"
fi
(
cd $_dovecot_config_dir/dovecot/default
find -s * -type f -print | while read f
do
if [ ! -e ../"$f" ]
then
cp -v "$f" ../"$f"
chmod 644 ../"$f"
fi
done
)
hostname=`grep "^myhostname *=" /Library/Server/Mail/Config/postfix/main.cf | sed 's,.*= *,,'`
if [ ! "$hostname" ] ; then
hostname=`hostname`
fi
if [ "$hostname" ] ; then
perl -p -i -e '
s/^(\s*) s/^(\s*)postmaster_address\s*=\s*postmaster\@example\.com/$1postmaster_address = postmaster\@'"$hostname"'/;
' $_dovecot_config_dir/dovecot/*.conf $_dovecot_config_dir/dovecot/conf.d/*.conf
fi
if [ ! -e $_dovecot_config_dir/dovecot/submit.passdb ] ; then
if [ "$hostname" -a -s /Library/Server/Mail/Config/postfix/submit.cred ] ; then
pw=`grep "^$hostname|submit|" /Library/Server/Mail/Config/postfix/submit.cred | sed 's,.*|,,'`
fi
if [ ! "$pw" ] ; then
pw=`dd if=/dev/urandom bs=256 count=1 | env LANG=C tr -dc a-zA-Z0-9 | cut -b 1-22`
fi
if [ "$pw" ] ; then
echo "submit:{PLAIN}$pw" > $_dovecot_config_dir/dovecot/submit.passdb
chown :mail $_dovecot_config_dir/dovecot/submit.passdb
chmod 640 $_dovecot_config_dir/dovecot/submit.passdb
fi
fi
if [ ! -d $_dovecot_db_dir ]; then
mkdir -p $_dovecot_db_dir
fi
if [ ! -d $_dovecot_mail_dir ]; then
mkdir -p $_dovecot_mail_dir
fi
if [ -d $_dovecot_mail_dir ]; then
chmod 775 $_dovecot_mail_dir
chown _dovecot:mail $_dovecot_mail_dir
fi
if [ ! -d $_dovecot_sieve_dir ]; then
mkdir -p $_dovecot_sieve_dir
fi
if [ -d $_dovecot_sieve_dir ]; then
chmod 775 $_dovecot_sieve_dir
chown _dovecot:mail $_dovecot_sieve_dir
fi
if [ ! -d $_mail_logs_path ]; then
mkdir -p $_mail_logs_path
fi
if [ ! -e $_mailaccess_log ]; then
touch $_mailaccess_log
fi
if [ -e $_mailaccess_log ]; then
chmod 640 $_mailaccess_log
chown _dovecot:admin $_mailaccess_log
fi
if [ ! -d /var/db/dovecot.fts.update ]; then
mkdir -p -m 770 /var/db/dovecot.fts.update
chown _dovecot:mail /var/db/dovecot.fts.update
fi
if ! grep '^local6\.' /etc/syslog.conf >/dev/null
then
echo "local6.warn\t\t\t\t\t\t$_mailaccess_log" >> /etc/syslog.conf
kill -1 `cat /var/run/syslog.pid`
fi