Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Nov 2006 00:40:00 +0000 (UTC)
From:      Robin Breathe <robin@isometry.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/105899: Maintainer Update: ports/dovecot to 1.0.r15
Message-ID:  <20061127004000.55EE7B841@mail.ox.isometry.net>
Resent-Message-ID: <200611270050.kAR0oBpV026259@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         105899
>Category:       ports
>Synopsis:       Maintainer Update: ports/dovecot to 1.0.r15
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 27 00:50:11 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Robin Breathe
>Release:        FreeBSD 6.2-RC1 i386
>Organization:
>Environment:
	
>Description:
Update dovecot to the latest 1.0.rc15 release.
- Full release notes: http://dovecot.org/list/dovecot-news/2006-November/000024.html
- Amongst other things, fix a security bug with mmap_disable=yes (*not* in the default configuration).
- Register UID 143, GID 143 for the dovecot user in ports/UIDs, ports/GIDs; use these and reduce interactive component of install script.
>How-To-Repeat:
	
>Fix:
Apply the patch below at the base of the ports tree:

--- dovecot-1.0.r15.diff begins here ---
diff -ruN ports.orig/GIDs ports/GIDs
--- ports.orig/GIDs	Mon Nov 27 00:12:12 2006
+++ ports/GIDs	Mon Nov 27 00:12:44 2006
@@ -53,6 +53,7 @@
 vchat:*:128:
 _bgpd:*:130:
 _ospfd:*:131:
+dovecot:*:143:
 rbldns:*:153:
 sfs:*:171:
 agk:*:172:
diff -ruN ports.orig/UIDs ports/UIDs
--- ports.orig/UIDs	Mon Nov 27 00:12:08 2006
+++ ports/UIDs	Mon Nov 27 00:14:17 2006
@@ -62,6 +62,7 @@
 vchat:*:128:128:VChat Conferencing System:/nonexistent:/sbin/nologin
 _bgpd:*:130:130:BGP Daemon:/var/empty:/sbin/nologin
 _ospfd:*:131:131:OSPF Daemon:/var/empty:/sbin/nologin
+dovecot:*:143:143:Dovecot User:/var/empty:/sbin/nologin
 rbldns:*:153:153:rbldnsd pseudo-user:/nonexistent:/sbin/nologin
 sfs:*:171:171:Self-Certifying File System:/nonexistent:/sbin/nologin
 agk:*:172:172:AquaGateKeeper:/nonexistent:/nonexistent
diff -ruN ports.orig/mail/dovecot/Makefile ports/mail/dovecot/Makefile
--- ports.orig/mail/dovecot/Makefile	Fri Nov 10 20:25:35 2006
+++ ports/mail/dovecot/Makefile	Sun Nov 26 22:32:06 2006
@@ -7,7 +7,7 @@
 #
 
 PORTNAME=	dovecot
-DISTVERSION=	1.0.rc13
+DISTVERSION=	1.0.rc15
 CATEGORIES=	mail ipv6
 MASTER_SITES=	http://www.dovecot.org/releases/
 
diff -ruN ports.orig/mail/dovecot/distinfo ports/mail/dovecot/distinfo
--- ports.orig/mail/dovecot/distinfo	Fri Nov 10 20:25:36 2006
+++ ports/mail/dovecot/distinfo	Sun Nov 26 22:32:19 2006
@@ -1,3 +1,3 @@
-MD5 (dovecot-1.0.rc13.tar.gz) = 47e86f3ee779e805ffca7b923dc50b19
-SHA256 (dovecot-1.0.rc13.tar.gz) = a653939eae55a6ddea7c97e6ddfcdafdfcbdb56727640d61761fc9bbfca62834
-SIZE (dovecot-1.0.rc13.tar.gz) = 1459922
+MD5 (dovecot-1.0.rc15.tar.gz) = 26f3d2b075856b1b1d180146363819e6
+SHA256 (dovecot-1.0.rc15.tar.gz) = e1e42e5c808301c5a709d54c5949cd8c1d3c43861e4e918548ded5841865487f
+SIZE (dovecot-1.0.rc15.tar.gz) = 1463069
diff -ruN ports.orig/mail/dovecot/pkg-deinstall ports/mail/dovecot/pkg-deinstall
--- ports.orig/mail/dovecot/pkg-deinstall	Wed Jul 28 12:18:11 2004
+++ ports/mail/dovecot/pkg-deinstall	Mon Nov 27 00:19:03 2006
@@ -29,13 +29,15 @@
 }
 
 delete_account() {
-	local u
+	local port user uid group gid
 
-	u=$1
-	if yesno "Do you want me to remove user \"${u}\"" n; then
-		pw userdel -n ${u}
-		echo "Done."
-	fi
+	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
@@ -50,7 +52,7 @@
 		fi
 	fi
 
-	delete_account dovecot
+	delete_account Dovecot dovecot:143 dovecot:143
 
 	base=/var/run/dovecot
 	DIRLIST="${base}/login ${base}"
diff -ruN ports.orig/mail/dovecot/pkg-install ports/mail/dovecot/pkg-install
--- ports.orig/mail/dovecot/pkg-install	Mon Jul 24 16:29:10 2006
+++ ports/mail/dovecot/pkg-install	Mon Nov 27 00:29:59 2006
@@ -30,46 +30,60 @@
 	done
 }
 
-make_account() {
-	local u g gcos
+create_account() {
+	local port user uid group gid gcos home shell
 
-	u=$1
-	g=$2
-	gcos=$3
+	port=$1
+	user=${2%:*}
+	uid=${2#*:}
+	group=${3%:*}
+	gid=${3#*:}
+	gcos=$4
+	home=$5
+	shell=$6
 
-	if pw group show "${g}" >/dev/null 2>&1; then
-		echo "You already have a group \"${g}\", so I will use it."
+	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 "You need a group \"${g}\"."
-		if which -s pw && yesno "Would you like me to create it" y
-		then
-			pw groupadd ${g} || exit
-			echo "Done."
-		else
-			echo "Please create it, and try again."
-			exit 1
-		fi
+		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."
+		exit 1
 	fi
-    
-	if pw user show "${u}" >/dev/null 2>&1; then
-		echo "You already have a user \"${u}\", so I will use it."
+
+	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 "You need a user \"${u}\"."
-		if which -s pw && yesno "Would you like me to create it" y
-		then
-			pw useradd ${u} -g ${g} -c "${gcos}" -d /nonexistent -s /sbin/nologin -h - || exit
-			echo "Done."
-		else
-			echo "Please create it, and try again."
-			exit 1
-		fi
+		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."
+		exit 1
 	fi
 }
 
 case $2 in
 
 PRE-INSTALL)
-	make_account dovecot dovecot "Dovecot"
+	create_account Dovecot dovecot:143 dovecot:143 "Dovecot User" /var/empty /sbin/nologin
 	;;
 
 POST-INSTALL)
--- dovecot-1.0.r15.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061127004000.55EE7B841>