* Fix error.h to use errno.h rather than its own declaration.
* Filter Disposition-Notification-To headers from incoming messages.
--- /dev/null
+alloc.0
+alloc.a
+alloc.o
+alloc_re.o
+author.o
+auto-ccld.sh
+auto-str
+auto-str.o
+auto_bin.c
+auto_bin.o
+auto_cron.c
+auto_cron.o
+auto_qmail.c
+auto_qmail.o
+byte_chr.o
+byte_copy.o
+byte_cr.o
+byte_diff.o
+byte_rchr.o
+byte_zero.o
+case.0
+case.a
+case_diffb.o
+case_diffs.o
+case_lowerb.o
+case_startb.o
+case_starts.o
+checktag.o
+compile
+concatHDR.o
+constmap.o
+cookie.o
+copy.o
+date2yyyymm.o
+date822fmt.o
+dateline.o
+datetime.0
+datetime.o
+decodeB.o
+decodeHDR.o
+decodeQ.o
+direntry.0
+direntry.h
+encodeB.o
+encodeQ.o
+env.0
+env.a
+env.o
+envread.o
+error.0
+error.a
+error.o
+error_str.0
+error_str.o
+error_temp.0
+ezmlm-accept
+ezmlm-accept.0
+ezmlm-archive
+ezmlm-archive.0
+ezmlm-archive.o
+ezmlm-cgi
+ezmlm-cgi.0
+ezmlm-cgi.o
+ezmlm-check
+ezmlm-check.0
+ezmlm-clean
+ezmlm-clean.0
+ezmlm-clean.o
+ezmlm-cron
+ezmlm-cron.0
+ezmlm-cron.o
+ezmlm-gate
+ezmlm-gate.0
+ezmlm-gate.o
+ezmlm-get
+ezmlm-get.0
+ezmlm-get.o
+ezmlm-glconf
+ezmlm-glconf.0
+ezmlm-idx
+ezmlm-idx.0
+ezmlm-idx.o
+ezmlm-issubn
+ezmlm-issubn.0
+ezmlm-issubn.o
+ezmlm-limit
+ezmlm-limit.0
+ezmlm-limit.o
+ezmlm-list
+ezmlm-list.0
+ezmlm-list.o
+ezmlm-make
+ezmlm-make.0
+ezmlm-make.o
+ezmlm-manage
+ezmlm-manage.0
+ezmlm-manage.o
+ezmlm-mktab.0
+ezmlm-moderate
+ezmlm-moderate.0
+ezmlm-moderate.o
+ezmlm-reject
+ezmlm-reject.0
+ezmlm-reject.o
+ezmlm-request
+ezmlm-request.0
+ezmlm-request.o
+ezmlm-return
+ezmlm-return.0
+ezmlm-return.o
+ezmlm-send
+ezmlm-send.0
+ezmlm-send.o
+ezmlm-split
+ezmlm-split.0
+ezmlm-split.o
+ezmlm-store
+ezmlm-store.0
+ezmlm-store.o
+ezmlm-sub
+ezmlm-sub.0
+ezmlm-sub.o
+ezmlm-test
+ezmlm-test.0
+ezmlm-tstdig
+ezmlm-tstdig.0
+ezmlm-tstdig.o
+ezmlm-unsub
+ezmlm-unsub.0
+ezmlm-unsub.o
+ezmlm-warn
+ezmlm-warn.0
+ezmlm-warn.o
+ezmlm-weed
+ezmlm-weed.0
+ezmlm-weed.o
+ezmlm.0
+ezmlmglrc.0
+ezmlmrc
+ezmlmrc.0
+ezmlmsubrc.0
+fd.a
+fd_copy.0
+fd_copy.o
+fd_move.0
+fd_move.o
+find-systype
+fmt_str.o
+fmt_uint.o
+fmt_uint0.o
+fmt_ulong.o
+fork.h
+fs.a
+getconf.o
+getln.0
+getln.a
+getln.o
+getln2.0
+getln2.o
+getopt.0
+getopt.a
+hasflock.h
+hassgact.h
+idxthread.o
+install
+install.o
+issub.o
+load
+lock.a
+lock_ex.o
+log.o
+logmsg.o
+make-compile
+make-load
+make-makelib
+makehash.o
+makelib
+mime.a
+now.0
+now.o
+open.a
+open_append.o
+open_read.o
+open_trunc.o
+opensql.o
+putsubs.o
+qmail.o
+quote.o
+scan_8long.o
+scan_ulong.o
+searchlog.o
+seek.a
+seek_set.o
+sgetopt.0
+sgetopt.o
+sig.a
+sig_catch.o
+sig_pipe.o
+slurp.o
+slurpclose.o
+str.a
+str_chr.o
+str_cpy.o
+str_diff.o
+str_diffn.o
+str_len.o
+str_rchr.o
+str_start.o
+stralloc.0
+stralloc.a
+stralloc_arts.o
+stralloc_cat.o
+stralloc_catb.o
+stralloc_cats.o
+stralloc_copy.o
+stralloc_eady.o
+stralloc_opyb.o
+stralloc_opys.o
+stralloc_pend.o
+strerr.a
+strerr.o
+strerr_die.o
+strerr_sys.o
+subdb.a
+subfd.0
+subfderr.o
+subgetopt.0
+subgetopt.o
+subscribe.o
+substdi.o
+substdio.0
+substdio.a
+substdio.o
+substdio_copy.0
+substdio_copy.o
+substdio_in.0
+substdio_out.0
+substdo.o
+surf.0
+surf.a
+surf.o
+surfpcs.0
+surfpcs.o
+systype
+tagmsg.o
+uint32.h
+unfoldHDR.o
+wait.0
+wait.a
+wait_pid.o
+yyyymm.a
+build
+alloc.0
alloc.a
alloc.o
alloc_re.o
byte_diff.o
byte_rchr.o
byte_zero.o
+case.0
case.a
case_diffb.o
case_diffs.o
date2yyyymm.o
date822fmt.o
dateline.o
+datetime.0
datetime.o
decodeB.o
decodeHDR.o
decodeQ.o
+direntry.0
direntry.h
encodeB.o
encodeQ.o
+env.0
env.a
env.o
envread.o
+error.0
error.a
error.o
+error_str.0
error_str.o
+error_temp.0
ezmlm-accept
+ezmlm-accept.0
ezmlm-archive
+ezmlm-archive.0
ezmlm-archive.o
ezmlm-cgi
+ezmlm-cgi.0
ezmlm-cgi.o
ezmlm-check
+ezmlm-check.0
ezmlm-clean
+ezmlm-clean.0
ezmlm-clean.o
ezmlm-cron
+ezmlm-cron.0
ezmlm-cron.o
ezmlm-gate
+ezmlm-gate.0
ezmlm-gate.o
ezmlm-get
+ezmlm-get.0
ezmlm-get.o
ezmlm-glconf
+ezmlm-glconf.0
ezmlm-idx
+ezmlm-idx.0
ezmlm-idx.o
ezmlm-issubn
+ezmlm-issubn.0
ezmlm-issubn.o
ezmlm-limit
+ezmlm-limit.0
ezmlm-limit.o
ezmlm-list
+ezmlm-list.0
ezmlm-list.o
ezmlm-make
+ezmlm-make.0
ezmlm-make.o
ezmlm-manage
+ezmlm-manage.0
ezmlm-manage.o
+ezmlm-mktab.0
ezmlm-moderate
+ezmlm-moderate.0
ezmlm-moderate.o
ezmlm-reject
+ezmlm-reject.0
ezmlm-reject.o
ezmlm-request
+ezmlm-request.0
ezmlm-request.o
ezmlm-return
+ezmlm-return.0
ezmlm-return.o
ezmlm-send
+ezmlm-send.0
ezmlm-send.o
ezmlm-split
+ezmlm-split.0
ezmlm-split.o
ezmlm-store
+ezmlm-store.0
ezmlm-store.o
ezmlm-sub
+ezmlm-sub.0
ezmlm-sub.o
ezmlm-test
+ezmlm-test.0
ezmlm-tstdig
+ezmlm-tstdig.0
ezmlm-tstdig.o
ezmlm-unsub
+ezmlm-unsub.0
ezmlm-unsub.o
ezmlm-warn
+ezmlm-warn.0
ezmlm-warn.o
ezmlm-weed
+ezmlm-weed.0
ezmlm-weed.o
+ezmlm.0
+ezmlmglrc.0
ezmlmrc
+ezmlmrc.0
+ezmlmsubrc.0
fd.a
+fd_copy.0
fd_copy.o
+fd_move.0
fd_move.o
find-systype
fmt_str.o
fork.h
fs.a
getconf.o
+getln.0
getln.a
getln.o
+getln2.0
getln2.o
+getopt.0
getopt.a
hasflock.h
hassgact.h
idxthread.o
+install
+install.o
issub.o
load
lock.a
makehash.o
makelib
mime.a
+now.0
now.o
open.a
open_append.o
searchlog.o
seek.a
seek_set.o
+sgetopt.0
sgetopt.o
sig.a
sig_catch.o
str_len.o
str_rchr.o
str_start.o
+stralloc.0
stralloc.a
stralloc_arts.o
stralloc_cat.o
strerr_die.o
strerr_sys.o
subdb.a
+subfd.0
subfderr.o
+subgetopt.0
subgetopt.o
subscribe.o
substdi.o
+substdio.0
substdio.a
substdio.o
+substdio_copy.0
substdio_copy.o
+substdio_in.0
+substdio_out.0
substdo.o
+surf.0
surf.a
surf.o
+surfpcs.0
surfpcs.o
systype
tagmsg.o
uint32.h
unfoldHDR.o
+wait.0
wait.a
wait_pid.o
yyyymm.a
-sub_std/checktag.c
\ No newline at end of file
+sub_pgsql/checktag.c
\ No newline at end of file
-/usr/local/bin/ezmlm
+/usr/bin
Programs will be installed in this directory.
-cc -O2
+gcc -O2 -g
This will be used to compile .c files.
-cc -s
+gcc
This will be used to link .o files into an executable.
-/usr/local/man
+/usr/share/man
Man pages will be installed in subdirectories of this directory. An
unformatted man page foo.1 will go into .../man1/foo.1; a formatted man
-sub_std/conf-sqlcc
\ No newline at end of file
+sub_pgsql/conf-sqlcc
\ No newline at end of file
-sub_std/conf-sqlld
\ No newline at end of file
+sub_pgsql/conf-sqlld
\ No newline at end of file
--- /dev/null
+build
+ezmlm-cgi
+ezmlm-idx
+files
+*.substvars
--- /dev/null
+ezmlm-idx (0.40-1) experimental; urgency=low
+
+ * Debianization!
+
+ -- Mark Wooding <mdw@nsict.org> Sat, 22 Nov 2003 15:25:16 +0000
--- /dev/null
+Source: ezmlm-idx
+Section: mail
+Priority: extra
+Standards-Version: 3.1.1
+Maintainer: Mark Wooding <mdw@distorted.org.uk>
+
+Package: ezmlm-idx
+Architecture: any
+Depends: qmail (>= 1.03), ${shlibs:Depends}
+Provides: ezmlm
+Description: An easy-to-use, high-speed mailing list manager for qmail.
+ ezmlm lets users set up their own mailing lists within qmail's address
+ hierarchy. A user, Joe, types
+ .
+ ezmlm-make ~/SOS ~/.qmail-sos joe-sos isp.net
+ .
+ and instantly has a functioning mailing list, joe-sos@isp.net, with all
+ relevant information stored in a new ~/SOS directory.
+ .
+ ezmlm sets up joe-sos-subscribe and joe-sos-unsubscribe for automatic
+ processing of subscription and unsubscription requests. Any message to
+ joe-sos-subscribe will work; Joe doesn't have to explain any tricky
+ command formats. ezmlm will send back instructions if a subscriber sends
+ a message to joe-sos-request or joe-sos-help.
+ .
+ ezmlm automatically archives new messages. Messages are labelled with
+ sequence numbers; a subscriber can fetch message 123 by sending mail to
+ joe-sos-get.123. The archive format supports fast message retrieval even
+ when there are thousands of messages.
+ .
+ ezmlm takes advantage of qmail's VERPs to reliably determine the
+ recipient address and message number for every incoming bounce message.
+ It waits ten days and then sends the subscriber a list of message
+ numbers that bounced. If that warning bounces, ezmlm sends a probe; if
+ the probe bounces, ezmlm automatically removes the subscriber from the
+ mailing list.
+
+Package: ezmlm-cgi
+Architecture: any
+Depends: qmail (>= 1.03), httpd,
+ ezmlm-idx (>= ${Source-Version}), ${shlibs:Depends}
+Description: An easy-to-use, high-speed mailing list manager for qmail.
+ This is a CGI program which lets users browse ezmlm mailing list
+ archives.
+ .
+ The documentation recommends installing this program setuid-root; this
+ package does NOT do this. Instead, make your list archives readable
+ by the web server user.
--- /dev/null
+ezmlm is copyright (C) 1997 Dan Bernstein. The licence is unclear.
+ezmlm-idx is copyright (c) 1997, 1998, 1999 Fred Lindberg and Fred B. Ringel,
+and released under the GNU General Public License.
--- /dev/null
+#! /usr/bin/make -f
+
+export DH_COMPAT = 4
+
+mdw-setup:
+ upstream=`git-describe idx | sed 's:^idx/::'`; \
+ dir=ezmlm-idx_$$upstream.orig; \
+ git-tar-tree idx $$dir | gzip -9c >../$$dir.tar.gz
+
+clean:
+ make clean std
+ dh_clean
+ rm -f build
+
+build:
+ make pgsql
+ make it install man
+ touch build
+
+install: build
+ dh_clean
+ mkdir -p debian/ezmlm-idx/usr/bin debian/ezmlm-idx/usr/share/man
+ ./install debian/ezmlm-idx/usr/bin <BIN
+ ./install debian/ezmlm-idx/usr/share/man <MAN
+ rm -rf debian/ezmlm-idx/usr/share/man/cat*
+ mkdir -p debian/ezmlm-idx/usr/share/ezmlm
+ find debian/ezmlm-idx/usr/bin ! -perm +111 -print0 | \
+ xargs -0ri mv {} debian/ezmlm-idx/usr/share/ezmlm
+ mkdir -p debian/ezmlm-cgi/usr/lib/cgi-bin
+ mkdir -p debian/ezmlm-cgi/usr/share/man/man1
+ cp ezmlm-cgi debian/ezmlm-cgi/usr/lib/cgi-bin
+ cp ezmlm-cgi.1 debian/ezmlm-cgi/usr/share/man/man1
+
+binary-indep:
+
+binary-arch: install
+ dh_testdir -a
+ dh_testroot -a
+ dh_installman -a
+ dh_compress -a
+ dh_installdocs -a
+ dh_makeshlibs -a
+ dh_fixperms -a
+ dh_strip -a
+ dh_shlibdeps -a
+ dh_gencontrol -a
+ dh_installdeb -a
+ dh_md5sums -a
+ dh_builddeb -a
+
+binary: binary-arch binary-indep
+
+source: clean mdw-setup
+ dir=`pwd | sed 's:^.*/::'`; \
+ upstream=`git-describe idx | sed 's:^idx/::'`; \
+ tarball=ezmlm-idx_$$upstream.orig.tar.gz; \
+ cd ..; \
+ dpkg-source -b -i'(?:^|/)\.git(?:$$|/)' $$dir $$tarball
+
+.PHONY: clean binary-indep binary-arch binary source mdw-setup
#ifndef ERROR_H
#define ERROR_H
-extern int errno;
+#include <errno.h>
extern int error_intr;
extern int error_nomem;
The thread index. It contains one line per subject, starting with the
number of the first message with that subject within the set
investigated, ``:'', a 20 character
-subject hash, blank, ``\[n\]'' where ``n'' is the number of messages in the
+subject hash, blank, ``[n]'' where ``n'' is the number of messages in the
thread, blank, and the subject.
The file ``yyyymm'' contains
entries for all threads that have messages in the month ``yyyymm''
fi
fi
-QINJECT="${QMPATH}/bin/qmail-inject"
+QINJECT="/usr/sbin/qmail-inject"
EZLIST="${EZPATH}/ezmlm-list"
MYNAME='ezmlm-check'
MYDTLINE="Delivered-To: ${MYNAME}"
unsigned long hh = 4L; /* default time 04:12 */
unsigned long mm = 12L;
char *dow = "*"; /* day of week */
-char *qmail_inject = "/bin/qmail-inject ";
+char *qmail_inject = "/usr/sbin/qmail-inject ";
char strnum[FMT_ULONG];
unsigned long uid,euid;
if (!stralloc_cats(&addr,dow)) die_nomem();
if (!stralloc_cats(&addr," ")) die_nomem();
part0start = addr.len; /* /var/qmail/bin/qmail-inject */
- if (!stralloc_cats(&addr,auto_qmail)) die_nomem();
if (!stralloc_cats(&addr,qmail_inject)) die_nomem();
part0len = addr.len - part0start;
if (!stralloc_cats(&addr,local)) die_nomem();
if (line.s[pos] == '#')
continue; /* cron comment */
pos = str_chr(line.s,'/');
- if (!str_start(line.s+pos,auto_qmail)) continue;
- pos += str_len(auto_qmail);
if (!str_start(line.s+pos,qmail_inject)) continue;
pos += str_len(qmail_inject);
poslocal = pos;
if (errno != error_noent)
strerr_die4sys(111,FATAL,ERR_OPEN,template.s,": ");
else { /* ezbin/ezmlmrc */
- if (!stralloc_copys(&template,auto_bin)) die_nomem();
+ if (!stralloc_copys(&template,"/usr/share/ezmlm")) die_nomem();
if (!stralloc_cats(&template,TXT_EZMLMRC)) die_nomem();
if (!stralloc_0(&template)) die_nomem();
if ((fdin = open_read(template.s)) == -1)
-sub_std/ezmlm-mktab
\ No newline at end of file
+sub_pgsql/ezmlm-mktab
\ No newline at end of file
exit 99
fi
-if [ ! -x "${QMPATH}/bin/qmail-local" ]; then
+if [ ! -x "/usr/sbin/qmail-local" ]; then
${ECHO} "can't find qmail-local. Please correct the path in the script"
exit 99
fi
-if [ ! -x "${QMPATH}/bin/qmail-inject" ]; then
+if [ ! -x "/usr/sbin/qmail-inject" ]; then
${ECHO} "can't find qmail-inject. Please correct the path in the script"
exit 99
fi
{
${ECHO} "X-num: #TSTMSG$1#"
${ECHO} "To: ${SND}@$HOST"
- } | ${QMPATH}/bin/qmail-inject
+ } | /usr/sbin/qmail-inject
return 0
}
if [ "$SECT" != "9" ]; then
${ECHO} "Subject: zzz-test" > "${DIR}/__tmp"
-${QMPATH}/bin/qmail-local "$EZTEST" "$HOME" "$SND-zzz" "$DASH" \
+/usr/sbin/qmail-local "$EZTEST" "$HOME" "$SND-zzz" "$DASH" \
"$LIST-$SINK-zzz" "$HOST" \
"<>" '' < "${DIR}/__tmp" >"${ERR}" 2>&1 || \
{ ${ECHO} "-failed to deliver message with qmail-local"; exit 100; }
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
# Only one allowed
return-receipt-to
content-length
precedence
+disposition-notification-to
x-confirm-reading-to
x-pmrqc
list-subscribe
/* per line in DIR/qmqpservers will be tried until a working one is found. */
/* the option is mainly to allow large list clusters on a single host to use */
/* different QMQPC hosts as exploders.*/
-#define PROG_QMAIL_QUEUE "bin/qmail-queue"
-#define PROG_QMAIL_QMQPC "bin/qmail-qmqpc"
+#define PROG_QMAIL_QUEUE "/usr/sbin/qmail-queue"
+#define PROG_QMAIL_QMQPC "/usr/sbin/qmail-qmqpc"
/*---------- Things below this line are not configurable -----------*/
/* file in DIR that has the qmqpc servers (if any) */
-sub_std/issub.c
\ No newline at end of file
+sub_pgsql/issub.c
\ No newline at end of file
-sub_std/logmsg.c
\ No newline at end of file
+sub_pgsql/logmsg.c
\ No newline at end of file
-sub_std/opensql.c
\ No newline at end of file
+sub_pgsql/opensql.c
\ No newline at end of file
-sub_std/putsubs.c
\ No newline at end of file
+sub_pgsql/putsubs.c
\ No newline at end of file
+#include <stdlib.h>
#include "substdio.h"
#include "readwrite.h"
#include "wait.h"
#include "stralloc.h"
#include "idx.h"
-static char *binqqargs[2] = { PROG_QMAIL_QUEUE, 0 } ;
+static char *binqqargs[2] = { 0, 0 } ;
+
+static void setup_qqargs()
+{
+ if(!binqqargs[0])
+ binqqargs[0] = getenv("QMAILQUEUE");
+ if(!binqqargs[0])
+ binqqargs[0] = "/usr/sbin/qmail-queue";
+}
int qmail_open(qq,sa)
struct qmail *qq;
unsigned i,j;
char **cpp;
+ setup_qqargs();
+
qq->msgbytes = 0L;
if (pipe(pim) == -1) return -1;
if (pipe(pie) == -1) { close(pim[0]); close(pim[1]); return -1; }
-sub_std/searchlog.c
\ No newline at end of file
+sub_pgsql/searchlog.c
\ No newline at end of file
--I/usr/include/pgsql
+-I/usr/include/postgresql
# the top line will be used when compiling. Edit to reflect your PostgreSQL
# installation. The above is correct for RedHat rpms.
-sub_std/subscribe.c
\ No newline at end of file
+sub_pgsql/subscribe.c
\ No newline at end of file
-sub_std/tagmsg.c
\ No newline at end of file
+sub_pgsql/tagmsg.c
\ No newline at end of file