an easy and consistent way of installing software ported to FreeBSD
#! /bin/sh
#
# ex:ts=4
ask() {
local question default answer
question=$1
default=$2
if [ -z "${PACKAGE_BUILDING}" -a -z "${BATCH}" ]; then
read -p "${question} [${default}]? " answer
fi
echo ${answer:-${default}}
}
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
}
delete_account() {
local port user uid group gid
port=$1
user=${2%:*}
uid=${2#*:}
group=${3%:*}
gid=${3#*:}
echo "If you do not intend to reinstall ${port}, you should manually remove the user '${user}' (uid='${uid}') and the group '${group}' (gid='${gid}')."
}
case $2 in
DEINSTALL)
if ps -axc | grep -qw dovecot; then
if yesno "Dovecot is still running. Shall I stop it?" y; then
killall dovecot
sleep 2
else
echo "OK ... I hope you know what you are doing."
fi
fi
delete_account Dovecot dovecot:${DOVECOT_UID:-143} dovecot:${DOVECOT_GID:-143}
base=/var/run/dovecot
DIRLIST="${base}/login ${base}"
echo "Cleaning up \"${base}\"."
for directory in ${DIRLIST}; do
rmdir ${directory} 2>/dev/null || :
done
;;
esac
Dovecot is a secure and compact IMAP server which is in the early stages
of developement. It supports Maildirs and mbox formats and much of the
IMAP v4 protocol including SSL/TLS. IPv6 support is also included.
Dovecot supports authentication with OpenLDAP, PostgreSQL, MySQL, vpopmail
and PAM.
WWW: http://www.dovecot.org/
#!/bin/sh
#
# $FreeBSD: ports/mail/dovecot-devel/pkg-install,v 1.12 2008/05/04 09:25:50 delphij Exp $
#
# ex:ts=4
ask() {
local question default answer
question=$1
default=$2
if [ -z "${PACKAGE_BUILDING}" -a -z "${BATCH}" ]; then
read -p "${question} [${default}]? " answer
fi
echo ${answer:-${default}}
}
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
}
create_account() {
local port user uid group gid gcos home shell
port=$1
user=${2%:*}
uid=${2#*:}
group=${3%:*}
gid=${3#*:}
gcos=$4
home=$5
shell=$6
pw_user_uid=$(pw usershow -n "${user}" 2>/dev/null | cut -d: -f3)
pw_uid_user=$(pw usershow -u "${uid}" 2>/dev/null | cut -d: -f1)
pw_group_gid=$(pw groupshow -n "${group}" 2>/dev/null | cut -d: -f3)
pw_gid_group=$(pw groupshow -g "${gid}" 2>/dev/null | cut -d: -f1)
if [ -z "${pw_group_gid}" -a -z "${pw_gid_group}" ]; then
echo "You need a ${group} group; creating it..."
pw groupadd "${group}" -g "${gid}" || exit
echo "Done."
elif [ "${gid}" = "${pw_group_gid}" -a "${group}" = "${pw_gid_group}" ]; then
echo "Using existing ${group} group."
else
echo "${port} has reserved the groupname '${group}' and gid '${gid}':"
[ -n "${pw_group_gid}" -a "${gid}" != "${pw_group_gid}" ] \
&& echo "ERROR: groupname '${group}' already in use by gid '${pw_group_gid}'"
[ -n "${pw_gid_group}" -a "${group}" != "${pw_gid_group}" ] \
&& echo "ERROR: gid '${gid}' already in use by group '${pw_gid_group}'"
echo "Please resolve these issues and try again:"
echo "Either remove the conflicting group or if you wish to continue using a legacy group override DOVECOT_GID."
exit 1
fi
if [ -z "${pw_user_uid}" -a -z "${pw_uid_user}" ]; then
echo "You need a ${user} user; creating it..."
pw useradd "${user}" -u "${uid}" -g "${group}" -c "${gcos}" -d "${home}" -s "${shell}"
echo "Done."
elif [ "${uid}" = "${pw_user_uid}" -a "${user}" = "${pw_uid_user}" ]; then
echo "Using existing ${user} user."
else
echo "${port} has reserved the username '${user}' and uid '${uid}':"
[ -n "${pw_user_uid}" -a "${uid}" != "${pw_user_uid}" ] \
&& echo "ERROR: username '${user}' already in use by uid '${pw_user_uid}'"
[ -n "${pw_uid_user}" -a "${user}" != "${pw_uid_user}" ] \
&& echo "ERROR: uid '${uid}' already in use by user '${pw_uid_user}'"
echo "Please resolve these issues and try again:"
echo "Either remove the conflicting user or if you wish to continue using a legacy user override DOVECOT_UID."
exit 1
fi
}
case $2 in
PRE-INSTALL)
create_account Dovecot dovecot:${DOVECOT_UID:-143} dovecot:${DOVECOT_GID:-143} "Dovecot User" /var/empty /usr/sbin/nologin
;;
POST-INSTALL)
base=/var/run/dovecot
DIRLIST="${base} ${base}/login"
echo "Fixing ownerships and modes in \"${base}\"."
for directory in ${DIRLIST}; do
if [ ! -d "${directory}" ]; then
mkdir -p ${directory}
echo "Created directory: ${directory}"
fi
done
chown -R root:wheel ${base}
chmod -R 0755 ${base}
chown -R root:dovecot ${base}/login
chmod -R 0750 ${base}/login
;;
esac
---------------------------------------------------------------------
You can get basic IMAP and POP3 services running by enabling
dovecot in /etc/rc.conf.
In this basic configuration Dovecot will authenticate users against
the system's passwd file and use the default /var/mail/$USER mbox
files.
echo dovecot_enable="YES" >> /etc/rc.conf
---------------------------------------------------------------------
@comment $FreeBSD: ports/mail/dovecot-devel/pkg-plist,v 1.28 2008/05/04 09:28:54 delphij Exp $
@unexec if cmp -s %D/etc/dovecot-example.conf %D/etc/dovecot.conf; then rm -f %D/etc/dovecot.conf; fi
etc/dovecot-example.conf
@exec if [ ! -f %D/etc/dovecot.conf ] ; then cp -p %D/%F %B/dovecot.conf; fi
%%PORTDOCS%%etc/dovecot-ldap-example.conf
%%PORTDOCS%%etc/dovecot-sql-example.conf
@dirrmtry include/dovecot
@dirrm lib/dovecot/auth
lib/dovecot/imap/lib01_acl_plugin.so
lib/dovecot/imap/lib02_lazy_expunge_plugin.so
lib/dovecot/imap/lib10_quota_plugin.so
lib/dovecot/imap/lib11_imap_quota_plugin.a
lib/dovecot/imap/lib11_imap_quota_plugin.la
lib/dovecot/imap/lib11_imap_quota_plugin.so
lib/dovecot/imap/lib11_trash_plugin.so
lib/dovecot/imap/lib20_convert_plugin.so
lib/dovecot/imap/lib20_fts_plugin.so
lib/dovecot/imap/lib20_expire_plugin.so
lib/dovecot/imap/lib20_mail_log_plugin.so
lib/dovecot/imap/lib20_mbox_snarf_plugin.so
lib/dovecot/imap/lib20_zlib_plugin.a
lib/dovecot/imap/lib20_zlib_plugin.la
lib/dovecot/imap/lib20_zlib_plugin.so
lib/dovecot/imap/lib21_fts_squat_plugin.so
@dirrm lib/dovecot/imap
lib/dovecot/lda/lib01_acl_plugin.so
lib/dovecot/lda/lib10_quota_plugin.so
lib/dovecot/lda/lib11_trash_plugin.so
lib/dovecot/lda/lib20_convert_plugin.so
lib/dovecot/lda/lib20_expire_plugin.so
lib/dovecot/lda/lib20_fts_plugin.so
lib/dovecot/lda/lib20_mail_log_plugin.so
lib/dovecot/lda/lib21_fts_squat_plugin.so
@dirrm lib/dovecot/lda
lib/dovecot/pop3/lib02_lazy_expunge_plugin.so
lib/dovecot/pop3/lib10_quota_plugin.so
lib/dovecot/pop3/lib20_convert_plugin.so
lib/dovecot/pop3/lib20_expire_plugin.so
lib/dovecot/pop3/lib20_mail_log_plugin.so
lib/dovecot/pop3/lib20_mbox_snarf_plugin.so
@dirrm lib/dovecot/pop3
lib/dovecot/lib01_acl_plugin.a
lib/dovecot/lib01_acl_plugin.la
lib/dovecot/lib01_acl_plugin.so
lib/dovecot/lib02_lazy_expunge_plugin.a
lib/dovecot/lib02_lazy_expunge_plugin.la
lib/dovecot/lib02_lazy_expunge_plugin.so
lib/dovecot/lib10_quota_plugin.a
lib/dovecot/lib10_quota_plugin.la
lib/dovecot/lib10_quota_plugin.so
lib/dovecot/lib11_trash_plugin.a
lib/dovecot/lib11_trash_plugin.la
lib/dovecot/lib11_trash_plugin.so
lib/dovecot/lib20_convert_plugin.a
lib/dovecot/lib20_convert_plugin.la
lib/dovecot/lib20_convert_plugin.so
lib/dovecot/lib20_expire_plugin.a
lib/dovecot/lib20_expire_plugin.so
lib/dovecot/lib20_expire_plugin.la
lib/dovecot/lib20_fts_plugin.a
lib/dovecot/lib20_fts_plugin.so
lib/dovecot/lib20_fts_plugin.la
lib/dovecot/lib20_mail_log_plugin.a
lib/dovecot/lib20_mail_log_plugin.la
lib/dovecot/lib20_mail_log_plugin.so
lib/dovecot/lib20_mbox_snarf_plugin.a
lib/dovecot/lib20_mbox_snarf_plugin.la
lib/dovecot/lib20_mbox_snarf_plugin.so
lib/dovecot/lib21_fts_squat_plugin.a
lib/dovecot/lib21_fts_squat_plugin.so
lib/dovecot/lib21_fts_squat_plugin.la
@dirrm lib/dovecot
libexec/dovecot/checkpassword-reply
%%LDA%%libexec/dovecot/deliver
libexec/dovecot/convert-tool
libexec/dovecot/dict
libexec/dovecot/dovecot-auth
libexec/dovecot/expire-tool
libexec/dovecot/gdbhelper
libexec/dovecot/idxview
libexec/dovecot/imap
libexec/dovecot/imap-login
libexec/dovecot/listview
libexec/dovecot/logview
%%POP3%%libexec/dovecot/pop3
%%POP3%%libexec/dovecot/pop3-login
libexec/dovecot/rawlog
libexec/dovecot/ssl-build-param
@dirrm libexec/dovecot
sbin/dovecot
sbin/dovecotpw
%%DATADIR%%/dovecot-openssl.cnf
%%DATADIR%%/mkcert.sh
@dirrm %%DATADIR%%