Update to version 0.99.10.4: - SUBSCRIBE broke subscription lists - LIST code rewritten, children flags should be correct now - SORT and THREAD could have given invalid replies - Partial BODY[...] fetches might have returned wrong data or at least performed worse than necessary - Fixed reference counters in imap-login and pop3-login. IMAP AUTHENTICATE and POP3 AUTH commands could have left the process stuck doing nothing forever.
State Changed From-To: open->analyzed I have tested the update.
Responsible Changed From-To: freebsd-ports-bugs->sergei I'll commit it after the freeze.
Robin, This port is currently orphaned. Are you interested in maintaining it? Sergei
Sergei Kolobov wrote: > This port is currently orphaned. Are you interested in maintaining it? I'd certainly be interested. Do I need to do anything other than continue to submit PRs? - Robin
On 2003-11-28 at 16:21 +0000, Robin Breathe wrote: > Sergei Kolobov wrote: > >This port is currently orphaned. Are you interested in maintaining it? > > I'd certainly be interested. Great, thanks! I will reassign maintainership to you as soon the port freeze is over. > Do I need to do anything other than continue to submit PRs? Just try to keep it up-to-date with the latest versions, and fix any problem if they come up. You may want to check FreeBSD Porter's Handbook if you haven't done already. Please let me know if you have any questions. Sergei
Sergei Kolobov wrote: > I will reassign maintainership to you as soon the port > freeze is over. Perfect. > Just try to keep it up-to-date with the latest versions, and fix any > problem if they come up. You may want to check FreeBSD Porter's Handbook > if you haven't done already. I'll make it bedtime reading =) (only skimmed in the past). - Robin
As I'm provisionally taking maintainership of the port, I've put some more time into the patch. Changes: - The old package was a little broken: it did not create the /var/dovecot tree or clean-up after itself. It also unconditionally created the required userids, but never offered to remove them. Now we create these directories in pkg-install and remove them with @unexec rmdir; users are created interactively (unless PACKAGE_BUILDING or BATCH is set) in pkg-install, and removed in pkg-deinstall. - Make pkg-message obey PREFIX/DOCSDIR (files/pkg-message.in). The old pkg-message needs to be deleted. - Make use of USE_OPENLDAP. Rename 'WITH_LDAP2' to more standard 'WITH_LDAP'. - Make use of PORTDOCS, clean-up pkg-plist. - Remove 'Feature Autodetection'. If you want the port built with extra dependencies, tell it: avoid bloat. - Remove the announcement from pre-everything::, since this is meaningless in a package install. - Update the rc.d script to work with relative addressing (e.g. './dovecot.sh start' works.) - Ask to stop dovecot if it's still running on deinstall. Here's the updated patch: diff -ruN /usr/ports/mail/dovecot/Makefile dovecot/Makefile --- /usr/ports/mail/dovecot/Makefile Sun Nov 16 14:48:57 2003 +++ dovecot/Makefile Sat Nov 29 17:40:56 2003 @@ -6,11 +6,11 @@ # PORTNAME= dovecot -PORTVERSION= 0.99.10.2 +PORTVERSION= 0.99.10.4 CATEGORIES= mail ipv6 MASTER_SITES= http://dovecot.procontrol.fi/ -MAINTAINER= ports@FreeBSD.org +MAINTAINER= robin@isometry.net COMMENT= Secure and compact IMAP and POP3 servers LIB_DEPENDS= iconv.3:${PORTSDIR}/converters/libiconv @@ -24,36 +24,22 @@ --with-pam CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" +PKGMESSAGE= ${WRKDIR}/pkg-message +PORTDOCS= README.FreeBSD auth.txt configuration.txt design.txt \ + index.txt mail-storages.txt mkcert.sh multiaccess.txt \ + nfs.txt dovecot-ldap.conf dovecot-pgsql.conf \ + dovecot-openssl.cnf securecoding.txt .include <bsd.port.pre.mk> # -# Feature Autodetection -# -.if exists(${LOCALBASE}/lib/libsasl.so.2) -WITH_SASL2= yes -.endif - -.if exists(${LOCALBASE}/vpopmail/bin/vckpw) -WITH_VPOPMAIL= yes -.endif - -.if exists(${LOCALBASE}/lib/libldap.so.2) -WITH_LDAP2= yes -.endif - -.if exists(${LOCALBASE}/lib/libpq.so.3) -WITH_PGSQL= yes -.endif - -# # SASL2 support # # SASL provides authentication support to # session-based protocols. This is can be # used by dovecot for authentication sources. # -.if WITH_SASL2 +.if defined(WITH_SASL2) LIB_DEPENDS+= sasl2.2:${PORTSDIR}/security/cyrus-sasl2 CONFIGURE_ARGS+= --with-cyrus-sasl2 .endif @@ -65,7 +51,7 @@ # multi-domain features. It was originally # created for use with Qmail. # -.if WITH_VPOPMAIL +.if defined(WITH_VPOPMAIL) VPOPMAIL= ${LOCALBASE}/vpopmail/bin/vchkpw BUILD_DEPENDS+= ${VPOPMAIL}:${PORTSDIR}/mail/vpopmail CONFIGURE_ARGS+= --with-vpopmail @@ -78,32 +64,22 @@ # protocol and can be used by Dovecot for its # user database. # -.if WITH_LDAP2 -LIB_DEPENDS+= ldap.2:${PORTSDIR}/net/openldap21-client +.if defined(WITH_LDAP) +USE_OPENLDAP= yes CONFIGURE_ARGS+= --with-ldap .endif # # PostgreSQL Support # -# PostgreSQL is a powerful SQL database which +# PostgreSQL is a powerful SQL database that # can be used to store user tables. # -.if WITH_PGSQL +.if defined(WITH_PGSQL) LIB_DEPENDS+= pq.3:${PORTSDIR}/databases/postgresql7 CONFIGURE_ARGS+= --with-pgsql .endif -pre-everything:: - @${ECHO_MSG} "==> Dovecot Options" - @${ECHO_MSG} "==> See the Makefile for descriptions." - @${ECHO_MSG} "==> ------------------------------------------" - @${ECHO_MSG} "==> o SASL2 Support + WITH_SASL2" - @${ECHO_MSG} "==> o VPoPMail Support + WITH_VPOPMAIL" - @${ECHO_MSG} "==> o OpenLDAP2 Support + WITH_LDAP2" - @${ECHO_MSG} "==> o PostgreSQL Support + WITH_PGSQL" - @${ECHO_MSG} "==> ------------------------------------------" - pre-build: @${REINPLACE_CMD} -e 's,%%SSLDIR%%,/var/dovecot/ssl,' \ ${WRKSRC}/doc/mkcert.sh \ @@ -112,7 +88,7 @@ ${WRKSRC}/dovecot-example.conf pre-install: - @${SETENV} ${SCRIPTS_ENV} PKG_PREFIX="${PREFIX}" \ + @${SETENV} ${SCRIPTS_ENV} \ ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL do-install: @@ -128,39 +104,21 @@ ${INSTALL_PROGRAM} ${WRKSRC}/src/master/dovecot ${PREFIX}/sbin/ post-install: - @${MKDIR} /var/dovecot - @${MKDIR} /var/dovecot/ssl - @${MKDIR} /var/dovecot/ssl/certs - @${MKDIR} /var/dovecot/ssl/private - @${MKDIR} /var/dovecot/auth - @${CHOWN} -R dovecot:dovecot /var/dovecot - @${MKDIR} /var/dovecot/login - @${CHOWN} root:dovecot /var/dovecot/login - @${MKDIR} /var/run/dovecot - @${CHMOD} 0700 /var/run/dovecot - @${CHOWN} root:dovecot /var/run/dovecot + @${SETENV} ${SCRIPTS_ENV} \ + ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL ${INSTALL_SCRIPT} -m 751 ${FILESDIR}/dovecot.sh.sample \ ${PREFIX}/etc/rc.d/dovecot.sh.sample .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} - @${INSTALL_DATA} \ - ${WRKSRC}/doc/auth.txt \ - ${WRKSRC}/doc/design.txt \ - ${WRKSRC}/doc/index.txt \ - ${WRKSRC}/doc/multiaccess.txt \ - ${WRKSRC}/doc/nfs.txt \ - ${WRKSRC}/doc/configuration.txt \ - ${WRKSRC}/doc/mail-storages.txt \ - ${WRKSRC}/doc/dovecot-ldap.conf \ - ${WRKSRC}/doc/dovecot-pgsql.conf \ - ${WRKSRC}/doc/dovecot-openssl.cnf \ - ${WRKSRC}/doc/mkcert.sh \ - ${FILESDIR}/README.FreeBSD \ - ${DOCSDIR} -.endif - @${CP} ${PKGMESSAGE} ${WRKDIR}/pkg-message - @${REINPLACE_CMD} -e 's,%%PREFIX%%,${PREFIX},g' \ - ${WRKDIR}/pkg-message - @${CAT} ${WRKDIR}/pkg-message +.for document in ${PORTDOCS:NREADME.FreeBSD} + @${INSTALL_MAN} ${WRKSRC}/doc/${document} ${DOCSDIR} +.endfor + @${INSTALL_MAN} ${FILESDIR}/README.FreeBSD ${DOCSDIR} +.endif + @${SED} -e 's,%%PREFIX%%,${PREFIX},g' \ + -e 's,%%DOCSDIR%%,${DOCSDIR},g' \ + ${FILESDIR}/pkg-message.in \ + >${PKGMESSAGE} + @${CAT} ${PKGMESSAGE} .include <bsd.port.post.mk> diff -ruN /usr/ports/mail/dovecot/distinfo dovecot/distinfo --- /usr/ports/mail/dovecot/distinfo Sun Nov 16 14:48:57 2003 +++ dovecot/distinfo Fri Nov 28 23:30:18 2003 @@ -1 +1 @@ -MD5 (dovecot-0.99.10.2.tar.gz) = d7a8783faea2654dcbb3770be9e4922d +MD5 (dovecot-0.99.10.4.tar.gz) = 81eda7985e99d28acd6d286aa0e13e07 diff -ruN /usr/ports/mail/dovecot/files/dovecot.sh.sample dovecot/files/dovecot.sh.sample --- /usr/ports/mail/dovecot/files/dovecot.sh.sample Sat May 3 21:50:26 2003 +++ dovecot/files/dovecot.sh.sample Sat Nov 29 00:16:31 2003 @@ -1,6 +1,6 @@ #!/bin/sh -if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then +if ! PREFIX=$(expr $(realpath $(dirname $0)) : "\(.*\)/etc/rc\.d\$"); then echo "$0: Cannot determine the PREFIX" >&2 exit 1 fi diff -ruN /usr/ports/mail/dovecot/files/pkg-message.in dovecot/files/pkg-message.in --- /usr/ports/mail/dovecot/files/pkg-message.in Thu Jan 1 00:00:00 1970 +++ dovecot/files/pkg-message.in Fri Nov 28 23:11:15 2003 @@ -0,0 +1,22 @@ +--------------------------------------------------------------------- + + You can get default configured IMAP and POP3 services running by + copying the following sample files to the given locations. In this + simple configuration Dovecot will authenticate users against the + systems passwd file and use the default /var/mail/$USER mbox files. + + %%PREFIX%%/etc/dovecot-example.conf + -> %%PREFIX%%/etc/dovecot.conf + + %%PREFIX%%/etc/rc.d/dovecot.sh.sample + -> %%PREFIX%%/etc/rc.d/dovecot.sh + + Further information on configuration can be found in: + + %%DOCSDIR%% + + FreeBSD specific information is covered in the following file: + + %%DOCSDIR%%/README.FreeBSD + +--------------------------------------------------------------------- diff -ruN /usr/ports/mail/dovecot/pkg-deinstall dovecot/pkg-deinstall --- /usr/ports/mail/dovecot/pkg-deinstall Thu Jan 1 00:00:00 1970 +++ dovecot/pkg-deinstall Sat Nov 29 17:57:59 2003 @@ -0,0 +1,55 @@ +#! /bin/sh + +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 u + + u=$1 + if yesno "Do you want me to remove user \"${u}\"" n; then + pw userdel -n ${u} + echo "Done." + fi +} + +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 + delete_account dovecot-auth + ;; + +esac diff -ruN /usr/ports/mail/dovecot/pkg-install dovecot/pkg-install --- /usr/ports/mail/dovecot/pkg-install Mon Jun 30 14:06:34 2003 +++ dovecot/pkg-install Sat Nov 29 18:02:28 2003 @@ -3,21 +3,17 @@ # $FreeBSD: ports/mail/dovecot/pkg-install,v 1.2 2003/05/03 21:50:26 nork Exp $ # -PKG_PREFIX=${PKG_PREFIX:=/usr/local} -BATCH=${BATCH:=no} +base=/var/dovecot ask() { local question default answer question=$1 default=$2 - if [ -z "${PACKAGE_BUILDING}" -a x${BATCH} = xno ]; then - read -p "${question} [${default}]? " answer + if [ -z "${PACKAGE_BUILDING}" -a -z "${BATCH}" ]; then + read -p "${question} [${default}]? " answer fi - if [ x${answer} = x ]; then - answer=${default} - fi - echo ${answer} + echo ${answer:-${default}} } yesno() { @@ -26,75 +22,73 @@ 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." + 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=dovecot - GROUP=dovecot - - 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} -h - - 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 usershow "${USER}" 2>/dev/null; then - echo "You already have a user \"${USER}\", so I will use it." - else - if /usr/sbin/pw useradd ${USER} -g ${GROUP} -h - \ - -s /sbin/nologin \ - -c "Dovecot" - then - echo "Added user \"${USER}\"." - else - echo "Adding user \"${USER}\" failed..." - echo "Please create it, and try again." - exit 1 - fi - fi +make_account() { + local u g gcos - USER=dovecot-auth - GROUP=dovecot-auth + u=$1 + g=$2 + gcos=$3 - if /usr/sbin/pw groupshow "${GROUP}" 2>/dev/null; then - echo "You already have a group \"${GROUP}\", so I will use it." + if pw group show "${g}" >/dev/null 2>&1; then + echo "You already have a group \"${g}\", so I will use it." else - if /usr/sbin/pw groupadd ${GROUP} -h - + echo "You need a group \"${g}\"." + if which -s pw && yesno "Would you like me to create it" y then - echo "Added group \"${GROUP}\"." + pw groupadd ${g} || exit + echo "Done." else - echo "Adding group \"${GROUP}\" failed..." echo "Please create it, and try again." exit 1 - fi + fi fi - - if /usr/sbin/pw usershow "${USER}" 2>/dev/null; then - echo "You already have a user \"${USER}\", so I will use it." + + if pw user show "${u}" >/dev/null 2>&1; then + echo "You already have a user \"${u}\", so I will use it." else - if /usr/sbin/pw useradd ${USER} -g ${GROUP} -h - \ - -s /sbin/nologin \ - -c "Dovecot Auth" - then - echo "Added user \"${USER}\"." + echo "You need a user \"${u}\"." + if which -s pw && yesno "Would you like me to create it" y + then + pw useradd ${u} -g ${g} -h - -s /sbin/nologin -c "${gcos}" || exit + echo "Done." else - echo "Adding user \"${USER}\" failed..." echo "Please create it, and try again." exit 1 - fi + fi fi -fi +} + +case $2 in + +PRE-INSTALL) + make_account dovecot dovecot "Dovecot" + make_account dovecot-auth dovecot-auth "Dovecot Auth" + ;; + +POST-INSTALL) + DIRLIST="${base} ${base}/auth ${base}/ssl ${base}/ssl/certs \ + ${base}/ssl/private ${base}/login /var/run/dovecot" + 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} + chown -R dovecot:dovecot ${base}/auth ${base}/ssl + chown root:dovecot ${base}/login /var/run/dovecot + chmod 0750 ${base}/login + chmod 0700 /var/run/dovecot + ;; + +esac diff -ruN /usr/ports/mail/dovecot/pkg-plist dovecot/pkg-plist --- /usr/ports/mail/dovecot/pkg-plist Sun Nov 16 14:48:57 2003 +++ dovecot/pkg-plist Sat Nov 29 15:15:00 2003 @@ -1,22 +1,16 @@ etc/dovecot-example.conf etc/rc.d/dovecot.sh.sample +libexec/dovecot/dovecot-auth libexec/dovecot/imap libexec/dovecot/imap-login libexec/dovecot/pop3 libexec/dovecot/pop3-login -libexec/dovecot/dovecot-auth sbin/dovecot -%%PORTDOCS%%%%DOCSDIR%%/auth.txt -%%PORTDOCS%%%%DOCSDIR%%/design.txt -%%PORTDOCS%%%%DOCSDIR%%/nfs.txt -%%PORTDOCS%%%%DOCSDIR%%/index.txt -%%PORTDOCS%%%%DOCSDIR%%/multiaccess.txt -%%PORTDOCS%%%%DOCSDIR%%/configuration.txt -%%PORTDOCS%%%%DOCSDIR%%/mail-storages.txt -%%PORTDOCS%%%%DOCSDIR%%/dovecot-ldap.conf -%%PORTDOCS%%%%DOCSDIR%%/dovecot-pgsql.conf -%%PORTDOCS%%%%DOCSDIR%%/dovecot-openssl.cnf -%%PORTDOCS%%%%DOCSDIR%%/mkcert.sh -%%PORTDOCS%%%%DOCSDIR%%/README.FreeBSD -%%PORTDOCS%%@dirrm %%DOCSDIR%% @dirrm libexec/dovecot +@unexec rmdir /var/dovecot/auth 2>/dev/null || true +@unexec rmdir /var/dovecot/login 2>/dev/null || true +@unexec rmdir /var/dovecot/ssl/certs 2>/dev/null || true +@unexec rmdir /var/dovecot/ssl/private 2>/dev/null || true +@unexec rmdir /var/dovecot/ssl 2>/dev/null || true +@unexec rmdir /var/dovecot 2>/dev/null || true +@unexec rmdir /var/run/dovecot 2>/dev/null || true
State Changed From-To: analyzed->feedback The patch does not apply cleanly. Asked submitter for updated patch to sent to me directly.
State Changed From-To: feedback->closed Committed, thanks! You are the new mail/dovecot port maintainer.