ports/111041: [NEW PORT]mail/james:Java SMTP and POP3 Mail server and NNTP News server

Nemo Liu nemoliu at gmail.com
Fri Mar 30 18:00:11 UTC 2007


>Number:         111041
>Category:       ports
>Synopsis:       [NEW PORT]mail/james:Java SMTP and POP3 Mail server and NNTP News server
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 30 18:00:10 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Nemo Liu
>Release:        7-current
>Organization:
>Environment:
FreeBSD tango.sina.com.cn 7.0-STOooRM FreeBSD 7.0-STOooRM #2: Fri Mar 30 15:13:30 CST 2007     liutong at tango.sina.com.cn:/usr/obj/usr/src/sys/TANGO  amd64
>Description:
The Apache Java Enterprise Mail Server (a.k.a. Apache James) is a 100% pure Java SMTP and POP3 Mail server and NNTP News server. We have designed James to be a complete and portable enterprise mail engine solution based on currently available open protocols.

James is also a mail application platform. We have developed a Java API to let you write Java code to process emails that we call the mailet API. A mailet can generate an automatic reply, update a database, prevent spam, build a message archive, or whatever you can imagine. A matcher determines whether your mailet should process an email in the server. The James project hosts the Mailet API, and James provides an implementation of this mail application platform API.

James is based upon the Apache Avalon application framework, formerly a product of the Apache Avalon project.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	james
#	james/files
#	james/files/james.sh.in
#	james/Makefile
#	james/pkg-descr
#	james/pkg-plist
#	james/distinfo
#
echo c - james
mkdir -p james > /dev/null 2>&1
echo c - james/files
mkdir -p james/files > /dev/null 2>&1
echo x - james/files/james.sh.in
sed 's/^X//' >james/files/james.sh.in << 'END-of-james/files/james.sh.in'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X
X#
X# Configuration settings for geronimo%%GERONIMO_VERSION%% in /etc/rc.conf:
X#
X# james%%JAMES_VERSION%%_enable (bool):
X#   Set to "NO" by default.
X#   Set it to "YES" to enable james%%JAMES_VERSION%%
X#
X#
X# james%%JAMES_VERSION%%_home (str)
X#   Set to "%%JAMES_HOME%%" by default.
X#   Set the JAMES_HOME variable for the James process
X#
X# james%%JAMES_VERSION%%_base (str)
X#   Set to "%%JAMES_HOME%%" by default.
X#   Set the JAMES_BASE variable for the James process
X#
X# james%%JAMES_VERSION%%_tmpdir (str)
X#   Set to "/tmp" by default.
X#
X# geronimo%%GERONIMO_VERSION%%_stop_timeout (num)
X#   Set to "10" by default.
X#   Sets the timeout in seconds to allow geronimo to shutdown.
X#   After the timeout has elapsed, geronimo will be killed.
X#
X# james%%JAMES_VERSION%%_java_home (str):
X# james%%JAMES_VERSION%%_java_vendor (str):
X# james%%JAMES_VERSION%%_java_version (str):
X# james%%JAMES_VERSION%%_java_os (str):
X#   Specify the requirements of the Java VM to use. See javavm(1).
X#
X# james%%JAMES_VERSION%%_classpath (str):
X#   Set to "" by default.
X#   Addtional classes to add to the CLASSPATH
X#
X# james%%JAMES_VERSION%%_java_opts (str):
X#   Set to "" by default.
X#   Java VM args to use.
X#
X
Xjames%%JAMES_VERSION%%_enable="${james%%JAMES_VERSION%%_enable:-"NO"}"
Xjames%%JAMES_VERSION%%_java_version="${james%%JAMES_VERSION%%_java_version:-"%%JAVA_VERSION%%"}"
Xjames%%JAMES_VERSION%%_home="${james%%JAMES_VERSION%%_home:-"%%JAMES_HOME%%"}"
Xjames%%JAMES_VERSION%%_base="${james%%JAMES_VERSION%%_base:-"%%JAMES_HOME%%"}"
Xjames%%JAMES_VERSION%%_tmpdir="${james%%JAMES_VERSION%%_tmpdir:-"/tmp"}"
Xjames%%JAMES_VERSION%%_stop_timeout="${james%%JAMES_VERSION%%_stop_timeout:-"10"}"
X
X. %%RC_SUBR%%
X
Xname="james%%JAMES_VERSION%%"
Xrcvar=`set_rcvar`
Xpidfile="%%PID_FILE%%"
X
XJAVA_HOME=%%JAVA_HOME%%
XJRE_HOME=$JAVA_HOME/jre
X
XJVM_EXT_DIRS="${james%%JAMES_VERSION%%_home}/lib:${james%%JAMES_VERSION%%_home}/tools/lib"
XJVM_OPTS="-Djava.ext.dirs=$JVM_EXT_DIRS"
X
Xload_rc_config "${name}"
X
Xif [ -n "${james%%JAMES_VERSION%%_java_home}" ] ; then
X	export JAVA_HOME="${james%%JAMES_VERSION%%_java_home}"
Xfi
X
Xif [ -n "${james%%JAMES_VERSION%%_java_version}" ] ; then
X	export JAVA_VERSION="${james%%JAMES_VERSION%%_java_version}"
Xfi
X
Xif [ -n "${james%%JAMES_VERSION%%_java_vendor}" ] ; then
X	export JAVA_VENDOR="${james%%JAMES_VERSION%%_java_vendor}"
Xfi
X
Xif [ -n "${james%%JAMES_VERSION%%_java_os}" ] ; then
X	export JAVA_OS="${james%%JAMES_VERSION%%_java_os}"
Xfi
X
Xif [ "$JAVA_HOME" = "" ] ; then
X  echo "ERROR: JAVA_HOME not found in your environment."
X  echo
X  echo "Please, set the JAVA_HOME variable in your environment to match the"
X  echo "location of the Java Virtual Machine you want to use."
X  exit 1
Xfi
X
Xif [ -z "${james%%JAMES_VERSION%%_tmpdir}" ] ; then
X  # Define the java.io.tmpdir to use for Phoenix
X  james%%JAMES_VERSION%%_tmpdir="${james%%JAMES_VERSION%%_home}"/temp
X  mkdir -p "${james%%JAMES_VERSION%%_tmpdir}"
Xfi
X
Xjava_cmd=
Xif [ -z "${JAVA_HOME}" ] ; then
X	java_cmd=%%LOCALBASE%%/bin/java
Xelse
X	java_cmd=${JAVA_HOME}/bin/java
Xfi
X
X
Xjava_command="$java_cmd $JVM_OPTS \
X    -Djava.security.policy=jar:file:${james%%JAMES_VERSION%%_home}/bin/phoenix-loader.jar!/META-INF/java.policy \
X    -Dphoenix.home=${james%%JAMES_VERSION%%_home} \
X    -Djava.io.tmpdir=${james%%JAMES_VERSION%%_tmpdir} \
X    -jar ${james%%JAMES_VERSION%%_home}/bin/phoenix-loader.jar >/dev/null"
X
XPHOENIX_CONSOLE="$PHOENIX_TMPDIR/phoenix.console"
Xif [  -z "$PHOENIX_CONSOLE" ]
Xthen
X  if [ -w /dev/console ]
X  then
X    PHOENIX_CONSOLE=/dev/console
X  else
X    PHOENIX_CONSOLE=/dev/tty
X  fi
Xfi
X
X
X# Subvert the check_pid_file procname check.
Xif [ -f $pidfile ]; then
X  read rc_pid junk < $pidfile
X  if [ ! -z "$rc_pid" ]; then
X    procname=`ps -o ucomm= $rc_pid`
X  fi
Xfi
X
Xcommand="/usr/sbin/daemon"
Xflags="-p ${pidfile} ${java_command}"
X
Xstart_precmd=pid_touch
Xstop_cmd="james%%JAMES_VERSION%%_stop"
X
Xpid_touch ()
X{
X	touch $pidfile
X}
X
Xjames%%JAMES_VERSION%%_stop() {
X	rc_pid=$(check_pidfile $pidfile *$procname*)
X
X	if [ -z "$rc_pid" ]; then
X		[ -n "$rc_fast" ] && return 0
X		if [ -n "$pidfile" ]; then
X			echo "${name} not running? (check $pidfile)."
X		else
X			echo "${name} not running?"
X		fi
X		return 1
X	fi
X	
X	echo "Stopping ${name}."
X        kill ${rc_pid}>/dev/null
X	james_wait_max_for_pid ${james%%JAMES_VERSION%%_stop_timeout} ${rc_pid}
X	kill -KILL ${rc_pid} 2> /dev/null && echo "Killed."
X	echo -n > ${pidfile}
X}
X
Xjames_wait_max_for_pid() {
X	_timeout=$1
X	shift
X	_pid=$1
X	_prefix=
X	while [ $_timeout -gt 0 ] ; do
X		echo -n ${_prefix:-"Waiting (max $_timeout secs) for PIDS: "}$_pid
X		_prefix=", "
X		sleep 2
X		kill -0 $_pid 2> /dev/null || break
X		_timeout=$(($_timeout-2))
X	done
X	if [ -n "$_prefix" ]; then
X		echo "."
X	fi
X}
X
Xrun_rc_command "$1"
END-of-james/files/james.sh.in
echo x - james/Makefile
sed 's/^X//' >james/Makefile << 'END-of-james/Makefile'
X# New ports collection makefile for:	geronimo
X# Date created:		30 May 2007
X# Whom:			Nemo Liu <nemoliu at gmail.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	james
XPORTVERSION=	2.3.0
XCATEGORIES=	mail java
XMASTER_SITES=	${MASTER_SITE_APACHE}
XMASTER_SITE_SUBDIR=	${PORTNAME}/server/binaries
X
XMAINTAINER=	nemoliu at gmail.com
XCOMMENT=	Java SMTP and POP3 Mail server and NNTP News server
X
XUSE_JAVA=	yes
XJAVA_VERSION=	1.4+
XNO_BUILD=	YES
X
XUSE_RC_SUBR=	james.sh
X
XAPP_HOME?=	${PREFIX}/${PKGBASE}${PORTVERSION}
XPID_FILE=	/var/run/${APP_SHORTNAME}.pid
XPLIST_SUB+=	T=${APP_HOME:S/^${PREFIX}\///}
XLATEST_LINK=	${APP_SHORTNAME}
X
XSUB_LIST=	JAVA_HOME=${JAVA_HOME} \
X		PID_FILE=${PID_FILE} \
X		JAMES_HOME=${APP_HOME} \
X		JAMES_VERSION=${PORTVERSION:S/.//g}
X
X.include <bsd.port.pre.mk>
X
Xpre-patch:
X	@${ECHO_MSG} "Installation settings:"
X	@${ECHO_MSG} "   Destination directory:    ${APP_HOME}"
X	@${ECHO_MSG} "   Location of JDK:          ${JAVA_HOME}"
X	@${ECHO_MSG} "   Location of Java port:    ${JAVA_PORT}"
X
Xpost-patch:
X	@${ECHO_MSG} -n ">> Removing unneeded files..."
X	@${RM} -f `${FIND} ${WRKSRC} -name '*.bat'` `${FIND} ${WRKSRC} -name '*.orig'` `${FIND} ${WRKSRC} -name '*.exe'`
X	@${ECHO_MSG} " [ DONE ]"
X
Xdo-install:
X	@${ECHO_MSG} -n ">> Creating destination directory..."
X	@${MKDIR} ${APP_HOME}
X	@${ECHO_MSG} " [ DONE ]"
X
X	@${ECHO_MSG} ">> Copying files to destination directory..."
X	@${CP} -R ${WRKSRC}/* ${APP_HOME}
X	@${MKDIR} ${APP_HOME}/logs
X	@${MKDIR} ${APP_HOME}/apps
X	@${ECHO_MSG} " [ DONE ]"
X
X	@${ECHO_MSG} -n ">> Creating symlink to tools.jar..."
X	@${LN} -sf ${JAVA_HOME}/lib/tools.jar ${APP_HOME}/lib/tools.jar
X	@${ECHO_MSG} " [ DONE ]"
X
Xpost-install:
X	@${ECHO_MSG} "${PORTNAME} ${PORTVERSION} has been installed in ${APP_HOME}."
X
X.include <bsd.port.post.mk>
END-of-james/Makefile
echo x - james/pkg-descr
sed 's/^X//' >james/pkg-descr << 'END-of-james/pkg-descr'
XThe Apache Java Enterprise Mail Server (a.k.a. Apache James) is a 100% pure
XJava SMTP and POP3 Mail server and NNTP News server. We have designed James
Xto be a complete and portable enterprise mail engine solution based on
Xcurrently available open protocols.
X
XJames is also a mail application platform. We have developed a Java API to
Xlet you write Java code to process emails that we call the mailet API. A
Xmailet can generate an automatic reply, update a database, prevent spam,
Xbuild a message archive, or whatever you can imagine. A matcher determines
Xwhether your mailet should process an email in the server. The James project
Xhosts the Mailet API, and James provides an implementation of this mail appli
X-cation platform API.
X
XJames is based upon the Apache Avalon application framework, formerly a
Xproduct of the Apache Avalon project.
X
XWWW: http://james.apache.org/
END-of-james/pkg-descr
echo x - james/pkg-plist
sed 's/^X//' >james/pkg-plist << 'END-of-james/pkg-plist'
X%%T%%/LICENSE.txt
X%%T%%/NOTICE.txt
X%%T%%/README.txt
X%%T%%/UPGRADE.txt
X%%T%%/apps/dummy.txt
X%%T%%/apps/james.sar
X%%T%%/bin/Wrapper.LICENSE
X%%T%%/bin/Wrapper.dll
X%%T%%/bin/derby.properties
X%%T%%/bin/lib/excalibur-cli-1.0.jar
X%%T%%/bin/lib/excalibur-extension-1.0a.jar
X%%T%%/bin/lib/excalibur-instrument-manager-1.0.jar
X%%T%%/bin/lib/excalibur-io-1.1.jar
X%%T%%/bin/lib/excalibur-logger-2.1.jar
X%%T%%/bin/lib/excalibur-monitor-2.1.jar
X%%T%%/bin/lib/jakarta-oro-2.0.8.jar
X%%T%%/bin/lib/mx4j-jmx.jar
X%%T%%/bin/lib/mx4j-tools.jar
X%%T%%/bin/lib/mx4j.LICENSE
X%%T%%/bin/lib/phoenix-engine.jar
X%%T%%/bin/lib/spice-classman-1.0.jar
X%%T%%/bin/lib/spice-loggerstore-0.5.jar
X%%T%%/bin/lib/spice-salt-0.8.jar
X%%T%%/bin/lib/spice-xmlpolicy-1.0.jar
X%%T%%/bin/lib/spice.LICENSE
X%%T%%/bin/phoenix-loader.jar
X%%T%%/bin/phoenix.sh
X%%T%%/bin/run.sh
X%%T%%/bin/sendmail.py
X%%T%%/bin/wrapper.jar
X%%T%%/conf/kernel.xml
X%%T%%/conf/phoenix-service.xml
X%%T%%/conf/wrapper.conf
X%%T%%/docs/adding_users.html
X%%T%%/docs/announcement.html
X%%T%%/docs/architecture.html
X%%T%%/docs/build_instructions.html
X%%T%%/docs/changelog.html
X%%T%%/docs/custom_mailet.html
X%%T%%/docs/custom_matcher.html
X%%T%%/docs/design_objectives.html
X%%T%%/docs/dns_configuration.html
X%%T%%/docs/fetchmail_configuration.html
X%%T%%/docs/images/james-logo.jpg
X%%T%%/docs/images/james_config_load_balance.png
X%%T%%/docs/images/james_config_secondary.png
X%%T%%/docs/images/james_config_smart_host.png
X%%T%%/docs/images/void.gif
X%%T%%/docs/index.html
X%%T%%/docs/install.html
X%%T%%/docs/installation_instructions.html
X%%T%%/docs/mailet_api.html
X%%T%%/docs/mailing_lists.html
X%%T%%/docs/migrating_datasource.html
X%%T%%/docs/nntp_configuration.html
X%%T%%/docs/pop3_configuration.html
X%%T%%/docs/provided_mailets.html
X%%T%%/docs/provided_matchers.html
X%%T%%/docs/remotemanager_configuration.html
X%%T%%/docs/repositories.html
X%%T%%/docs/serverwide_configuration.html
X%%T%%/docs/smtp_auth.html
X%%T%%/docs/smtp_configuration.html
X%%T%%/docs/spoolmanager.html
X%%T%%/docs/spoolmanager_configuration.html
X%%T%%/docs/stylesheet.css
X%%T%%/docs/stylesheets/project.html
X%%T%%/docs/summary.html
X%%T%%/docs/upgrade_instructions.html
X%%T%%/docs/using_database.html
X%%T%%/ext/README.txt
X%%T%%/lib/avalon-framework-api-4.3.jar
X%%T%%/lib/avalon-framework-impl-4.3.jar
X%%T%%/lib/avalon-logkit-2.1.jar
X%%T%%/lib/commons-collections-2.1.1.jar
X%%T%%/lib/concurrent-1.3.4.jar
X%%T%%/lib/excalibur-cli-1.0.jar
X%%T%%/lib/excalibur-extension-1.0a.jar
X%%T%%/lib/excalibur-instrument-api-2.1.jar
X%%T%%/lib/excalibur-instrument-manager-1.0.jar
X%%T%%/lib/excalibur-io-1.1.jar
X%%T%%/lib/excalibur-logger-2.1.jar
X%%T%%/lib/excalibur-monitor-2.1.jar
X%%T%%/lib/excalibur-pool-api-2.1.jar
X%%T%%/lib/excalibur-pool-impl-2.1.jar
X%%T%%/lib/excalibur-thread-api-2.1.jar
X%%T%%/lib/excalibur-thread-impl-2.1.jar
X%%T%%/lib/jakarta-oro-2.0.8.jar
X%%T%%/lib/mx4j-jmx.jar
X%%T%%/lib/mx4j-tools.jar
X%%T%%/lib/mx4j.LICENSE
X%%T%%/lib/phoenix-client.jar
X%%T%%/lib/phoenix-engine.jar
X%%T%%/lib/spice-classman-1.0.jar
X%%T%%/lib/spice-loggerstore-0.5.jar
X%%T%%/lib/spice-salt-0.8.jar
X%%T%%/lib/spice-xmlpolicy-1.0.jar
X%%T%%/lib/spice.LICENSE
X%%T%%/lib/tools.jar
X%%T%%/logs/readme.txt
X%%T%%/tools/lib/excalibur-i18n-1.0.jar
X%%T%%/tools/lib/isorelax-20020414.jar
X%%T%%/tools/lib/isorelax.LICENSE
X%%T%%/tools/lib/msv-20020414.jar
X%%T%%/tools/lib/msv.LICENSE
X%%T%%/tools/lib/phoenix-tools.jar
X%%T%%/tools/lib/qdox-1.1.jar
X%%T%%/tools/lib/qdox.LICENSE
X%%T%%/tools/lib/relaxngDatatype-20020414.jar
X%%T%%/tools/lib/relaxngDatatype.LICENSE
X%%T%%/tools/lib/spice-configkit-1.1.2.jar
X%%T%%/tools/lib/spice.LICENSE
X%%T%%/tools/lib/xsdlib-20020414.jar
X%%T%%/tools/lib/xsdlib.LICENSE
X at dirrm share/nls/en_US.US-ASCII
X at dirrm share/nls/POSIX
X at dirrm %%T%%/tools/lib
X at dirrm %%T%%/tools
X at dirrm %%T%%/logs
X at dirrm %%T%%/lib
X at dirrm %%T%%/ext
X at dirrm %%T%%/docs/stylesheets
X at dirrm %%T%%/docs/images
X at dirrm %%T%%/docs
X at dirrm %%T%%/conf
X at dirrm %%T%%/bin/lib
X at dirrm %%T%%/bin
X at dirrm %%T%%/apps
X at dirrm %%T%%
END-of-james/pkg-plist
echo x - james/distinfo
sed 's/^X//' >james/distinfo << 'END-of-james/distinfo'
XMD5 (james-2.3.0.tar.gz) = a0b15c4d259185723a974353b9967126
XSHA256 (james-2.3.0.tar.gz) = a083a2552a081bdd7a468acccd32479260c530a23e4c82c1c082aa79e81e9250
XSIZE (james-2.3.0.tar.gz) = 7674091
END-of-james/distinfo
exit


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



More information about the freebsd-ports-bugs mailing list