1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-27 00:57:50 +00:00

- Add OPTIONS to choose MTA integration.

- Remove "make options", it's not necessary.
- Fix/update FreeBSD-post-install-notes doc.
- Fix both pkg-install and pkg-deinstall to add/delete mailman user in /var/cron/allow
- Use pkg-message as SUB_FILES.

Approved by:	mnag (mentor)
This commit is contained in:
Jean Milanez Melo 2006-05-05 18:49:11 +00:00
parent db78cbb58d
commit a18f3fbdcd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=161440
9 changed files with 137 additions and 179 deletions

View File

@ -14,27 +14,15 @@ MASTER_SITE_SUBDIR= mailman
EXTRACT_SUFX= .tgz
DIST_SUBDIR= mailman
.if defined(WITH_HTDIG)
# see http://www.openinfo.co.uk/mailman/index.html
# Order of application of these patches is critical.
PATCH_SITES+= http://www.openinfo.co.uk/mm/patches/444879/:patch1 \
http://www.openinfo.co.uk/mm/patches/444884/:patch2
PATCHFILES+= indexing-2.1.6-0.1.patch.gz:patch1 \
htdig-2.1.6-0.1.patch.gz:patch2
PATCH_DIST_STRIP= -p1
PKGNAMESUFFIX+= -with-htdig
.endif
MAINTAINER?= jmelo@FreeBSD.org
COMMENT?= A mailing list manager (MLM) with a user-friendly web front-end
RUN_DEPENDS= lynx:${PORTSDIR}/www/lynx
.if defined(WITH_CHINESE)
RUN_DEPENDS+= ${PYTHONPREFIX_SITELIBDIR}/cjkcodecs.pth:${PORTSDIR}/converters/py-cjkcodecs
.endif
.if defined(WITH_HTDIG)
RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig
.endif
OPTIONS= SENDMAIL "for use with sendmail" off \
EXIM3 "for use with exim3" off \
EXIM4 "for use with exim4" off \
POSTFIX "for use with postfix" off \
CHINESE "support for Chinese mailing lists" off \
HTDIG "htdig integration patches" off
HAS_CONFIGURE= yes
USE_PYTHON= yes
@ -42,39 +30,26 @@ CONFIGURE_ARGS= --prefix=${MAILMANDIR} --with-python=${PYTHON_CMD} \
--with-username=${MM_USERNAME} \
--with-groupname=${MM_GROUPNAME} \
--with-mail-gid=${MAIL_GID} --with-cgi-gid=${CGI_GID}
.if defined(WITH_HTDIG)
PLIST_SUB+= SUB_HTDIG=""
.else
PLIST_SUB+= SUB_HTDIG="@comment "
.endif
.include <bsd.port.pre.mk>
SUB_FILES= pkg-message
SUB_LIST+= MAILMANDIR=${MAILMANDIR}
USE_RC_SUBR= mailman
# The Mailman port supports a number of variables that may be tweaked at
# build time. Getting the values of some of them right is crucial!
# Perform a "make options" to see more information on these variables.
#
MM_USERNAME?= mailman
MM_USERID?= 91
MM_GROUPNAME?= ${MM_USERNAME}
MM_GROUPID?= ${MM_USERID}
MM_DIR?= mailman
.if ${OSVERSION} >= 450000
MAIL_GID?= mailnull
.else
MAIL_GID?= daemon
.endif
CGI_GID?= www
IMGDIR?= www/icons
#
# End of user-configurable variables.
MAILMANDIR= ${PREFIX}/${MM_DIR}
PKGMESSAGE= ${WRKDIR}/pkg-message
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
PKGOPTS= ${FILESDIR}/pkg-opts
PLIST_SUB+= MMDIR=${MM_DIR} IMGDIR=${IMGDIR}
DOCFILES= ACKNOWLEDGMENTS BUGS FAQ INSTALL NEWS README README-I18N.en \
README.CONTRIB README.NETSCAPE \
@ -85,77 +60,99 @@ DOCFILES= ACKNOWLEDGMENTS BUGS FAQ INSTALL NEWS README README-I18N.en \
IMGFILES= PythonPowered.png mailman.jpg mm-icon.png
options:
@ ${ECHO_MSG} "===> Build options for ${PKGNAME}:"
@ ${CAT} ${PKGOPTS}
.include <bsd.port.pre.mk>
post-extract:
.if !defined(BATCH)
@ ${TEST} -r ${PKGOPTS} && \
(${ECHO_MSG} '-------------------------------------------------------------------------'; \
${ECHO_MSG} ' = IMPORTANT NOTICE = '; \
${ECHO_MSG} 'Getting the values of certain build time variables right is CRUCIAL if '; \
${ECHO_MSG} 'you want your Mailman installation to function! Pay specific attention '; \
${ECHO_MSG} 'to the value of MAIL_GID if you use an alternative MTA (not Sendmail). '; \
${ECHO_MSG} ' '; \
${ECHO_MSG} 'Perform a "make options" to see a list of available installation options.'; \
${ECHO_MSG} '-------------------------------------------------------------------------')
.if defined(WITH_SENDMAIL)
.if defined(WITH_EXIM3) || defined(WITH_EXIM4) || defined(WITH_POSTFIX)
BROKEN= choose only one MTA integration
.endif
MAIL_GID+= mailnull
.endif
.if defined(WITH_EXIM3)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM4) || defined(WITH_POSTFIX)
BROKEN= choose only one MTA integration
.endif
MAIL_GID+= nobody
.endif
.if defined(WITH_EXIM4)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_POSTFIX)
BROKEN= choose only one MTA integration
.endif
MAIL_GID+= mail
.endif
.if defined(WITH_POSTFIX)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_EXIM4)
BROKEN= choose only one MTA integration
.endif
MAIL_GID+= mailman
.endif
.if defined(WITH_CHINESE)
RUN_DEPENDS+= ${PYTHONPREFIX_SITELIBDIR}/cjkcodecs.pth:${PORTSDIR}/converters/py-cjkcodecs
.endif
.if defined(WITH_HTDIG)
PATCH_SITES+= http://www.openinfo.co.uk/mm/patches/444879/:patch1 \
http://www.openinfo.co.uk/mm/patches/444884/:patch2
PATCHFILES+= indexing-2.1.6-0.1.patch.gz:patch1 \
htdig-2.1.6-0.1.patch.gz:patch2
PATCH_DIST_STRIP= -p1
PKGNAMESUFFIX+= -with-htdig
RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig
PLIST_SUB+= SUB_HTDIG=""
.else
PLIST_SUB+= SUB_HTDIG="@comment "
.endif
post-patch:
@ ${REINPLACE_CMD} -e 's#%%LOCALBASE%%#${LOCALBASE}#g' \
@${REINPLACE_CMD} -e 's#%%LOCALBASE%%#${LOCALBASE}#g' \
${WRKSRC}/Mailman/Defaults.py.in
pre-configure::
# Mailman's configure script needs the "mailman" user/group to exist, so
# $PKGINSTALL has to be patched before the do-configure target executes.
@ ${SED} \
@${SED} \
-e 's#%%USER%%#${MM_USERNAME}#g' -e 's#%%UID%%#${MM_USERID}#g' \
-e 's#%%GROUP%%#${MM_GROUPNAME}#g' -e 's#%%GID%%#${MM_GROUPID}#g' \
-e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' ${MASTERDIR}/pkg-install > \
${PKGINSTALL}
@ ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
@${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
post-configure:
@ ${SED} \
@${SED} \
-e 's#%%USER%%#${MM_USERNAME}#g' -e 's#%%GROUP%%#${MM_GROUPNAME}#g' \
-e 's#%%PREFIX%%#${PREFIX}#g' -e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' \
${MASTERDIR}/pkg-deinstall > ${PKGDEINSTALL}
@ ${SED} -e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' \
-e 's#%%DOCSDIR%%#${DOCSDIR}#g' -e 's#%%LOCALBASE%%#${LOCALBASE}#g' \
${MASTERDIR}/pkg-message > ${PKGMESSAGE}
# port system auditors complain if dir is created prior to install
# but configure demands it be there. we delete it now if empty,
# so it will be re-created. For existing installs, this is ignored
@- ${RMDIR} ${MAILMANDIR} 2> /dev/null
pre-install:
@ ${SH} ${PKGREQ} INSTALL
@ ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
@${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
post-install:
.for dir in cron scripts
@ ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py ${MAILMANDIR}/${dir}
@${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py ${MAILMANDIR}/${dir}
.endfor
@ ${CHGRP} -R ${MM_GROUPNAME} ${MAILMANDIR}
@ ${MKDIR} ${PREFIX}/${IMGDIR}
@${CHGRP} -R ${MM_GROUPNAME} ${MAILMANDIR}
@${MKDIR} ${PREFIX}/${IMGDIR}
.for imgfile in ${IMGFILES}
@ ${CP} ${MAILMANDIR}/icons/${imgfile} ${PREFIX}/${IMGDIR}
@${CP} ${MAILMANDIR}/icons/${imgfile} ${PREFIX}/${IMGDIR}
.endfor
@ uudecode -p ${FILESDIR}/powerlogo.gif.uue > \
@uudecode -p ${FILESDIR}/powerlogo.gif.uue > \
${PREFIX}/${IMGDIR}/powerlogo.gif
.if !defined(NOPORTDOCS)
@ ${MKDIR} ${DOCSDIR}
@ ${INSTALL_DATA} ${FILESDIR}/FreeBSD-post-install-notes ${DOCSDIR}
@${MKDIR} ${DOCSDIR}
@${INSTALL_DATA} ${FILESDIR}/FreeBSD-post-install-notes ${DOCSDIR}
.for docfile in ${DOCFILES}
@ ${INSTALL_DATA} ${WRKSRC}/${docfile} ${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/${docfile} ${DOCSDIR}
.endfor
.endif
@ ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
@ ${INSTALL_SCRIPT} ${WRKSRC}/misc/mailman \
${PREFIX}/etc/rc.d/mailman.sh
.if !defined(BATCH)
@ ${CAT} ${PKGMESSAGE}
.endif
@${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
@${CAT} ${PKGMESSAGE}
.include <bsd.port.post.mk>

View File

@ -6,7 +6,6 @@
CONTENTS:
* VERY IMPORTANT NOTE
* IMPORTANT NOTE: Using Mailman with alternate MTAs
1) General post-installation instructions
2) Integrating Mailman with your web server
3) Integrating Mailman with various mail servers
@ -14,6 +13,7 @@ CONTENTS:
3.2) Exim
3.3) Postfix
3.4) Qmail
4) Apache configuration
VERY IMPORTANT NOTE
@ -25,23 +25,6 @@ To see a list of build time options, go to the Mailman port's directory
(/usr/ports/mail/mailman by default) and perform a "make options".
IMPORTANT NOTE: Using Mailman with alternate MTAs
By default, the Mailman port is configured to work with Sendmail. If you
wish to use Mailman with an alternate MTA, you MUST set the value of MAIL_GID
correctly when building the port. Perform a "make options" in the port
directory (as explained above) to see a list of possible values for MAIL_GID.
If you have installed Mailman from a pre-compiled package (e.g. from
a FreeBSD distribution CD), chances are that the package had been built with
the default value for MAIL_GID and will only work with Sendmail. You will
probably have to build the Mailman port yourself to get it to work with your
MTA.
Further down in this document you will find sections dealing with most
popular MTAs.
1) General post-installation instructions
You should find two files named "INSTALL" and "README" in the same
@ -84,11 +67,12 @@ popular MTAs.
3.1) Sendmail
No modification of MAIL_GID should be required when building the Mailman
port. The port is designed to work with Sendmail by default.
You have to choose SENDMAIL option on config build and port will set
MAIL_GID=mailnull to you.
Review the instructions found in mailman-install.txt in the same directory
as this file.
When your build is finished, please review the instructions found in
mailman-install.txt in the same directory port. The port is designed to
work with Sendmail by default.
No further instructions exist at this time on how to integrate the
Mailman port with Sendmail. Please submit any such information to the
@ -107,15 +91,12 @@ popular MTAs.
exim_group = mail
For Exim 3.x, the value of MAIL_GID has to be set to 'nobody' (or 65534)
when building the Mailman port.
when building the Mailman port, so you have to choose EXIM3 on build options
to set it to you.
For Exim 4.x, the value of MAIL_GID has to be set to 'mail' (or 6) when
building the Mailman port.
For example, to build and install the Mailman port for Exim4, perform
the following in /usr/ports/mail/mailman:
# make MAIL_GID=6 install
building the Mailman port, so you have to choose EXIM4 on build options to
set it to you.
Next, follow the instructions in mailman-install.txt found in the same
directory as this file. You can add the macros, transport and router
@ -137,7 +118,7 @@ popular MTAs.
Now, start Mailman's qrunner daemon:
# /usr/local/etc/rc.d/mailman.sh start
# /usr/local/etc/rc.d/mailman start
Troubleshooting: If you ever see an error message such as the following
in your Exim's mainlog, it's a sure sign that Exim and Mailman disagree
@ -154,7 +135,8 @@ popular MTAs.
3.3) Postfix
The value of MAIL_GID has to be set to 'nobody' (or 65534) when building
the Mailman port.
the Mailman port, so you have to choose POSTFIX on build options to
set it to you.
NOTE: the group needs to be 'mailman' if you are using the Mailman
integration for generating the postfix virtual and aliases files.
@ -174,6 +156,21 @@ popular MTAs.
Mailman port with Qmail. Please submit any such information to the
maintainer of the Mailman port.
4) Apache configuration
-- Johann Visagie <wjv@FreeBSD.org>
You should add the follow lines in you httpd.conf to mailman interface
works correctly:
<Directory "/usr/local/mailman">
Options FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
After that, restart your apache:
# apachectl restart.
-- Jean Milanez Melo <jmelo@FreeBSD.org>
(Mailman port maintainer)

View File

@ -0,0 +1,36 @@
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: mailman
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable mailman:
# mailman_enable (bool): Set it to "YES" to enable mailman.
# Default is "NO".
. %%RC_SUBR%%
name="mailman"
rcvar=${name}_enable
pidfile="%%PREFIX%%/mailman/data/master-qrunner.pid"
load_rc_config $name
: ${mailman_enable="NO"}
start_cmd=${name}_start
stop_cmd=${name}_stop
extra_commands="reload"
mailman_start() {
%%PREFIX%%/mailman/bin/mailmanctl -s -q start
}
mailman_stop() {
%%PREFIX%%/mailman/bin/mailmanctl -q stop
}
run_rc_command "$1"

View File

@ -1,58 +0,0 @@
* MM_USERNAME [mailman]
The username of the Mailman user
* MM_USERID [91]
The user ID of the Mailman user
It is recommended that you do not change this option.
* MM_GROUPNAME [mailman]
The group to which the Mailman user will belong
* MM_GROUPID [MM_USERID]
The group ID for the Mailman user
It is recommended that you do not change this option.
* MM_DIR [mailman]
Mailman will be installed in ${PREFIX}/${MM_DIR}
* MAIL_GID [mailnull]
The group name or id under which your MTA performs mail delivery
Getting the value of MAIL_GID right is crucial to getting Mailman to work
with your MTA. By default this port works with Sendmail. If you're
using an alternative MTA installed from ports, you should set MAIL_GID at
build time according to the following table. You may use either the
group name or the numerical GID. (Please contact this port's maintainer
if you wish to fill in the blanks or report mistakes!)
----------------------------------------------------
MTA | MAIL_GID | Submitted by
Exim3 | nobody (65534) | <wjv@FreeBSD.org>
Exim4 | mail (6) | <wjv@FreeBSD.org>
Postfix | mailman | <vivek@khera.org>
Qmail | ??? |
----------------------------------------------------
NOTE: for Postfix, the group may need to be 'nobody' if you are not
using the Mailman integration for generating the postfix virtual and
aliases files.
* CGI_GID [www]
The group name or id under which your web server executes CGI scripts
By default, this port works with the current port of Apache2. If your
WWW server executes CGI scripts under a different GID, you'll have to
set this at build time.
* IMGDIR [www/icons]
Icon images will be installed in ${PREFIX}/${IMGDIR}
* WITH_CHINESE [undefined]
Define to include support for Chinese mailing lists
* WITH_HTDIG [undefined]
Define to include the htdig integration patches.

View File

@ -13,6 +13,8 @@ DEINSTALL)
/usr/bin/diff - %%MAILMANDIR%%/cron/crontab.in >/dev/null 2>&1 ; then
echo "---> Zeroing crontab for \"%%USER%%\""
/usr/bin/crontab -u "%%USER%%" /dev/null
grep -v %%USER%% /var/cron/allow > /var/cron/allow.new
mv /var/cron/allow.new /var/cron/allow
else
echo "---> Crontab for \"%%USER%%\" not removed: please deinstall"
echo "---> manually if you no-longer wish to use Mailman. eg:"

View File

@ -51,6 +51,8 @@ POST-INSTALL)
echo "---> Checking crontab(5) file for user \"%%USER%%\""
echo "%%USER%%" >> /var/cron/allow
if /usr/bin/crontab -u "%%USER%%" -l >/tmp/mmctab$$ 2>&1 ; then
if test -s /tmp/mmctab$$; then
echo "---> \"%%USER%%\" already has a crontab. Not overwriting it"

View File

@ -1994,7 +1994,6 @@
%%PORTDOCS%%%%DOCSDIR%%/mailman-install.txt
%%PORTDOCS%%%%DOCSDIR%%/mailman-member.txt
%%PORTDOCS%%@dirrm %%DOCSDIR%%
etc/rc.d/mailman.sh
@dirrm %%MMDIR%%/tests/msgs
@dirrm %%MMDIR%%/tests/bounces
@dirrm %%MMDIR%%/tests

View File

@ -1,17 +0,0 @@
#!/bin/sh
PATH=$PATH:/usr/local/bin
if [ "x$1" = "xINSTALL" -o "x$2" = "xINSTALL" ]; then
PYTHON_GT=`python -c 'import string, sys; \
print string.split(sys.version)[0] >= "2.1.3"'`
if [ "x${PYTHON_GT}" = "x1" -o "x${PYTHON_GT}" = "xTrue" ]; then
exit 0
else
echo "-----------------------------------------------------------"
echo "Mailman requires Python version 2.1.3 or greater -"
echo " please update your Python installation before proceeding."
echo "-----------------------------------------------------------"
exit 1
fi
fi