diff --git a/mail/Makefile b/mail/Makefile index 984c2cd4e26c..2f8def61b24c 100644 --- a/mail/Makefile +++ b/mail/Makefile @@ -173,6 +173,7 @@ SUBDIR += isoqlog SUBDIR += isync SUBDIR += itraxp + SUBDIR += james SUBDIR += jamlib SUBDIR += jboss-mailservices SUBDIR += junkfilter diff --git a/mail/james/Makefile b/mail/james/Makefile new file mode 100644 index 000000000000..6fcfd2d6daf9 --- /dev/null +++ b/mail/james/Makefile @@ -0,0 +1,64 @@ +# New ports collection makefile for: geronimo +# Date created: 30 May 2007 +# Whom: Nemo Liu +# +# $FreeBSD$ +# + +PORTNAME= james +PORTVERSION= 2.3.0 +CATEGORIES= mail java +MASTER_SITES= ${MASTER_SITE_APACHE} +MASTER_SITE_SUBDIR= ${PORTNAME}/server/binaries + +MAINTAINER= nemoliu@gmail.com +COMMENT= Java SMTP and POP3 Mail server and NNTP News server + +USE_JAVA= yes +JAVA_VERSION= 1.4+ +NO_BUILD= YES + +USE_RC_SUBR= james.sh + +APP_HOME?= ${PREFIX}/${PKGBASE}${PORTVERSION} +PID_FILE= /var/run/${APP_SHORTNAME}.pid +PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///} +LATEST_LINK= ${APP_SHORTNAME} + +SUB_LIST= JAVA_HOME=${JAVA_HOME} \ + PID_FILE=${PID_FILE} \ + JAMES_HOME=${APP_HOME} \ + JAMES_VERSION=${PORTVERSION:S/.//g} + +.include + +pre-patch: + @${ECHO_MSG} "Installation settings:" + @${ECHO_MSG} " Destination directory: ${APP_HOME}" + @${ECHO_MSG} " Location of JDK: ${JAVA_HOME}" + @${ECHO_MSG} " Location of Java port: ${JAVA_PORT}" + +post-patch: + @${ECHO_MSG} -n ">> Removing unneeded files..." + @${RM} -f `${FIND} ${WRKSRC} -name '*.bat'` `${FIND} ${WRKSRC} -name '*.orig'` `${FIND} ${WRKSRC} -name '*.exe'` + @${ECHO_MSG} " [ DONE ]" + +do-install: + @${ECHO_MSG} -n ">> Creating destination directory..." + @${MKDIR} ${APP_HOME} + @${ECHO_MSG} " [ DONE ]" + + @${ECHO_MSG} ">> Copying files to destination directory..." + @${CP} -R ${WRKSRC}/* ${APP_HOME} + @${MKDIR} ${APP_HOME}/logs + @${MKDIR} ${APP_HOME}/apps + @${ECHO_MSG} " [ DONE ]" + + @${ECHO_MSG} -n ">> Creating symlink to tools.jar..." + @${LN} -sf ${JAVA_HOME}/lib/tools.jar ${APP_HOME}/lib/tools.jar + @${ECHO_MSG} " [ DONE ]" + +post-install: + @${ECHO_MSG} "${PORTNAME} ${PORTVERSION} has been installed in ${APP_HOME}." + +.include diff --git a/mail/james/distinfo b/mail/james/distinfo new file mode 100644 index 000000000000..6ef9f380563a --- /dev/null +++ b/mail/james/distinfo @@ -0,0 +1,3 @@ +MD5 (james-2.3.0.tar.gz) = a0b15c4d259185723a974353b9967126 +SHA256 (james-2.3.0.tar.gz) = a083a2552a081bdd7a468acccd32479260c530a23e4c82c1c082aa79e81e9250 +SIZE (james-2.3.0.tar.gz) = 7674091 diff --git a/mail/james/files/james.sh.in b/mail/james/files/james.sh.in new file mode 100644 index 000000000000..c097f6b37a9d --- /dev/null +++ b/mail/james/files/james.sh.in @@ -0,0 +1,178 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# +# Configuration settings for geronimo%%GERONIMO_VERSION%% in /etc/rc.conf: +# +# james%%JAMES_VERSION%%_enable (bool): +# Set to "NO" by default. +# Set it to "YES" to enable james%%JAMES_VERSION%% +# +# +# james%%JAMES_VERSION%%_home (str) +# Set to "%%JAMES_HOME%%" by default. +# Set the JAMES_HOME variable for the James process +# +# james%%JAMES_VERSION%%_base (str) +# Set to "%%JAMES_HOME%%" by default. +# Set the JAMES_BASE variable for the James process +# +# james%%JAMES_VERSION%%_tmpdir (str) +# Set to "/tmp" by default. +# +# geronimo%%GERONIMO_VERSION%%_stop_timeout (num) +# Set to "10" by default. +# Sets the timeout in seconds to allow geronimo to shutdown. +# After the timeout has elapsed, geronimo will be killed. +# +# james%%JAMES_VERSION%%_java_home (str): +# james%%JAMES_VERSION%%_java_vendor (str): +# james%%JAMES_VERSION%%_java_version (str): +# james%%JAMES_VERSION%%_java_os (str): +# Specify the requirements of the Java VM to use. See javavm(1). +# +# james%%JAMES_VERSION%%_classpath (str): +# Set to "" by default. +# Addtional classes to add to the CLASSPATH +# +# james%%JAMES_VERSION%%_java_opts (str): +# Set to "" by default. +# Java VM args to use. +# + +james%%JAMES_VERSION%%_enable="${james%%JAMES_VERSION%%_enable:-"NO"}" +james%%JAMES_VERSION%%_java_version="${james%%JAMES_VERSION%%_java_version:-"%%JAVA_VERSION%%"}" +james%%JAMES_VERSION%%_home="${james%%JAMES_VERSION%%_home:-"%%JAMES_HOME%%"}" +james%%JAMES_VERSION%%_base="${james%%JAMES_VERSION%%_base:-"%%JAMES_HOME%%"}" +james%%JAMES_VERSION%%_tmpdir="${james%%JAMES_VERSION%%_tmpdir:-"/tmp"}" +james%%JAMES_VERSION%%_stop_timeout="${james%%JAMES_VERSION%%_stop_timeout:-"10"}" + +. %%RC_SUBR%% + +name="james%%JAMES_VERSION%%" +rcvar=`set_rcvar` +pidfile="%%PID_FILE%%" + +JAVA_HOME=%%JAVA_HOME%% +JRE_HOME=$JAVA_HOME/jre + +JVM_EXT_DIRS="${james%%JAMES_VERSION%%_home}/lib:${james%%JAMES_VERSION%%_home}/tools/lib" +JVM_OPTS="-Djava.ext.dirs=$JVM_EXT_DIRS" + +load_rc_config "${name}" + +if [ -n "${james%%JAMES_VERSION%%_java_home}" ] ; then + export JAVA_HOME="${james%%JAMES_VERSION%%_java_home}" +fi + +if [ -n "${james%%JAMES_VERSION%%_java_version}" ] ; then + export JAVA_VERSION="${james%%JAMES_VERSION%%_java_version}" +fi + +if [ -n "${james%%JAMES_VERSION%%_java_vendor}" ] ; then + export JAVA_VENDOR="${james%%JAMES_VERSION%%_java_vendor}" +fi + +if [ -n "${james%%JAMES_VERSION%%_java_os}" ] ; then + export JAVA_OS="${james%%JAMES_VERSION%%_java_os}" +fi + +if [ "$JAVA_HOME" = "" ] ; then + echo "ERROR: JAVA_HOME not found in your environment." + echo + echo "Please, set the JAVA_HOME variable in your environment to match the" + echo "location of the Java Virtual Machine you want to use." + exit 1 +fi + +if [ -z "${james%%JAMES_VERSION%%_tmpdir}" ] ; then + # Define the java.io.tmpdir to use for Phoenix + james%%JAMES_VERSION%%_tmpdir="${james%%JAMES_VERSION%%_home}"/temp + mkdir -p "${james%%JAMES_VERSION%%_tmpdir}" +fi + +java_cmd= +if [ -z "${JAVA_HOME}" ] ; then + java_cmd=%%LOCALBASE%%/bin/java +else + java_cmd=${JAVA_HOME}/bin/java +fi + + +java_command="$java_cmd $JVM_OPTS \ + -Djava.security.policy=jar:file:${james%%JAMES_VERSION%%_home}/bin/phoenix-loader.jar!/META-INF/java.policy \ + -Dphoenix.home=${james%%JAMES_VERSION%%_home} \ + -Djava.io.tmpdir=${james%%JAMES_VERSION%%_tmpdir} \ + -jar ${james%%JAMES_VERSION%%_home}/bin/phoenix-loader.jar >/dev/null" + +PHOENIX_CONSOLE="$PHOENIX_TMPDIR/phoenix.console" +if [ -z "$PHOENIX_CONSOLE" ] +then + if [ -w /dev/console ] + then + PHOENIX_CONSOLE=/dev/console + else + PHOENIX_CONSOLE=/dev/tty + fi +fi + + +# Subvert the check_pid_file procname check. +if [ -f $pidfile ]; then + read rc_pid junk < $pidfile + if [ ! -z "$rc_pid" ]; then + procname=`ps -o ucomm= $rc_pid` + fi +fi + +command="/usr/sbin/daemon" +flags="-p ${pidfile} ${java_command}" + +start_precmd=pid_touch +stop_cmd="james%%JAMES_VERSION%%_stop" + +pid_touch () +{ + touch $pidfile +} + +james%%JAMES_VERSION%%_stop() { + rc_pid=$(check_pidfile $pidfile *$procname*) + + if [ -z "$rc_pid" ]; then + [ -n "$rc_fast" ] && return 0 + if [ -n "$pidfile" ]; then + echo "${name} not running? (check $pidfile)." + else + echo "${name} not running?" + fi + return 1 + fi + + echo "Stopping ${name}." + kill ${rc_pid}>/dev/null + james_wait_max_for_pid ${james%%JAMES_VERSION%%_stop_timeout} ${rc_pid} + kill -KILL ${rc_pid} 2> /dev/null && echo "Killed." + echo -n > ${pidfile} +} + +james_wait_max_for_pid() { + _timeout=$1 + shift + _pid=$1 + _prefix= + while [ $_timeout -gt 0 ] ; do + echo -n ${_prefix:-"Waiting (max $_timeout secs) for PIDS: "}$_pid + _prefix=", " + sleep 2 + kill -0 $_pid 2> /dev/null || break + _timeout=$(($_timeout-2)) + done + if [ -n "$_prefix" ]; then + echo "." + fi +} + +run_rc_command "$1" diff --git a/mail/james/pkg-descr b/mail/james/pkg-descr new file mode 100644 index 000000000000..edcbcf9911cb --- /dev/null +++ b/mail/james/pkg-descr @@ -0,0 +1,17 @@ +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 appli +-cation platform API. + +James is based upon the Apache Avalon application framework, formerly a +product of the Apache Avalon project. + +WWW: http://james.apache.org/ diff --git a/mail/james/pkg-plist b/mail/james/pkg-plist new file mode 100644 index 000000000000..576848a2662d --- /dev/null +++ b/mail/james/pkg-plist @@ -0,0 +1,129 @@ +%%T%%/LICENSE.txt +%%T%%/NOTICE.txt +%%T%%/README.txt +%%T%%/UPGRADE.txt +%%T%%/apps/dummy.txt +%%T%%/apps/james.sar +%%T%%/bin/Wrapper.LICENSE +%%T%%/bin/Wrapper.dll +%%T%%/bin/derby.properties +%%T%%/bin/lib/excalibur-cli-1.0.jar +%%T%%/bin/lib/excalibur-extension-1.0a.jar +%%T%%/bin/lib/excalibur-instrument-manager-1.0.jar +%%T%%/bin/lib/excalibur-io-1.1.jar +%%T%%/bin/lib/excalibur-logger-2.1.jar +%%T%%/bin/lib/excalibur-monitor-2.1.jar +%%T%%/bin/lib/jakarta-oro-2.0.8.jar +%%T%%/bin/lib/mx4j-jmx.jar +%%T%%/bin/lib/mx4j-tools.jar +%%T%%/bin/lib/mx4j.LICENSE +%%T%%/bin/lib/phoenix-engine.jar +%%T%%/bin/lib/spice-classman-1.0.jar +%%T%%/bin/lib/spice-loggerstore-0.5.jar +%%T%%/bin/lib/spice-salt-0.8.jar +%%T%%/bin/lib/spice-xmlpolicy-1.0.jar +%%T%%/bin/lib/spice.LICENSE +%%T%%/bin/phoenix-loader.jar +%%T%%/bin/phoenix.sh +%%T%%/bin/run.sh +%%T%%/bin/sendmail.py +%%T%%/bin/wrapper.jar +%%T%%/conf/kernel.xml +%%T%%/conf/phoenix-service.xml +%%T%%/conf/wrapper.conf +%%T%%/docs/adding_users.html +%%T%%/docs/announcement.html +%%T%%/docs/architecture.html +%%T%%/docs/build_instructions.html +%%T%%/docs/changelog.html +%%T%%/docs/custom_mailet.html +%%T%%/docs/custom_matcher.html +%%T%%/docs/design_objectives.html +%%T%%/docs/dns_configuration.html +%%T%%/docs/fetchmail_configuration.html +%%T%%/docs/images/james-logo.jpg +%%T%%/docs/images/james_config_load_balance.png +%%T%%/docs/images/james_config_secondary.png +%%T%%/docs/images/james_config_smart_host.png +%%T%%/docs/images/void.gif +%%T%%/docs/index.html +%%T%%/docs/install.html +%%T%%/docs/installation_instructions.html +%%T%%/docs/mailet_api.html +%%T%%/docs/mailing_lists.html +%%T%%/docs/migrating_datasource.html +%%T%%/docs/nntp_configuration.html +%%T%%/docs/pop3_configuration.html +%%T%%/docs/provided_mailets.html +%%T%%/docs/provided_matchers.html +%%T%%/docs/remotemanager_configuration.html +%%T%%/docs/repositories.html +%%T%%/docs/serverwide_configuration.html +%%T%%/docs/smtp_auth.html +%%T%%/docs/smtp_configuration.html +%%T%%/docs/spoolmanager.html +%%T%%/docs/spoolmanager_configuration.html +%%T%%/docs/stylesheet.css +%%T%%/docs/stylesheets/project.html +%%T%%/docs/summary.html +%%T%%/docs/upgrade_instructions.html +%%T%%/docs/using_database.html +%%T%%/ext/README.txt +%%T%%/lib/avalon-framework-api-4.3.jar +%%T%%/lib/avalon-framework-impl-4.3.jar +%%T%%/lib/avalon-logkit-2.1.jar +%%T%%/lib/commons-collections-2.1.1.jar +%%T%%/lib/concurrent-1.3.4.jar +%%T%%/lib/excalibur-cli-1.0.jar +%%T%%/lib/excalibur-extension-1.0a.jar +%%T%%/lib/excalibur-instrument-api-2.1.jar +%%T%%/lib/excalibur-instrument-manager-1.0.jar +%%T%%/lib/excalibur-io-1.1.jar +%%T%%/lib/excalibur-logger-2.1.jar +%%T%%/lib/excalibur-monitor-2.1.jar +%%T%%/lib/excalibur-pool-api-2.1.jar +%%T%%/lib/excalibur-pool-impl-2.1.jar +%%T%%/lib/excalibur-thread-api-2.1.jar +%%T%%/lib/excalibur-thread-impl-2.1.jar +%%T%%/lib/jakarta-oro-2.0.8.jar +%%T%%/lib/mx4j-jmx.jar +%%T%%/lib/mx4j-tools.jar +%%T%%/lib/mx4j.LICENSE +%%T%%/lib/phoenix-client.jar +%%T%%/lib/phoenix-engine.jar +%%T%%/lib/spice-classman-1.0.jar +%%T%%/lib/spice-loggerstore-0.5.jar +%%T%%/lib/spice-salt-0.8.jar +%%T%%/lib/spice-xmlpolicy-1.0.jar +%%T%%/lib/spice.LICENSE +%%T%%/lib/tools.jar +%%T%%/logs/readme.txt +%%T%%/tools/lib/excalibur-i18n-1.0.jar +%%T%%/tools/lib/isorelax-20020414.jar +%%T%%/tools/lib/isorelax.LICENSE +%%T%%/tools/lib/msv-20020414.jar +%%T%%/tools/lib/msv.LICENSE +%%T%%/tools/lib/phoenix-tools.jar +%%T%%/tools/lib/qdox-1.1.jar +%%T%%/tools/lib/qdox.LICENSE +%%T%%/tools/lib/relaxngDatatype-20020414.jar +%%T%%/tools/lib/relaxngDatatype.LICENSE +%%T%%/tools/lib/spice-configkit-1.1.2.jar +%%T%%/tools/lib/spice.LICENSE +%%T%%/tools/lib/xsdlib-20020414.jar +%%T%%/tools/lib/xsdlib.LICENSE +@dirrm share/nls/en_US.US-ASCII +@dirrm share/nls/POSIX +@dirrm %%T%%/tools/lib +@dirrm %%T%%/tools +@dirrm %%T%%/logs +@dirrm %%T%%/lib +@dirrm %%T%%/ext +@dirrm %%T%%/docs/stylesheets +@dirrm %%T%%/docs/images +@dirrm %%T%%/docs +@dirrm %%T%%/conf +@dirrm %%T%%/bin/lib +@dirrm %%T%%/bin +@dirrm %%T%%/apps +@dirrm %%T%%