--- smartlist-3.15.orig/config.h +++ smartlist-3.15/config.h @@ -33,8 +33,8 @@ * override those settings you should uncomment and possibly change the * DEFSPATH and DEFPATH defines below */ -/*#define DEFSPATH "PATH=/bin:/usr/bin" /* */ -/*#define DEFPATH "PATH=$HOME/bin:/bin:/usr/bin" /* */ +#define DEFSPATH "PATH=/usr/local/bin:/usr/bin:/bin" /* */ +#define DEFPATH "PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin" /* */ /* every environment variable appearing in PRESTENV will be set or wiped * out of the environment (variables without an '=' sign will be thrown @@ -46,7 +46,7 @@ */ #define PRESTENV {"IFS","ENV","PWD",0} -/*#define GROUP_PER_USER /* uncomment this if each +#define GROUP_PER_USER /* uncomment this if each user has his or her own group and procmail can therefore trust a $HOME/.procmailrc that is group writable or contained in a group writable home directory @@ -86,7 +86,7 @@ (either directly, or through changing the definitions in the same file of MAILSPOOLDIR, MAILSPOOLSUFFIX, MAILSPOOLHASH or MAILSPOOLHOME) */ -/*#define DEFsendmail "/bin/mail" /* uncomment and/or change if the +#define DEFsendmail "/usr/sbin/sendmail" /* uncomment and/or change if the autoconfigured default SENDMAIL is not suitable */ --- smartlist-3.15.orig/Makefile +++ smartlist-3.15/Makefile @@ -65,7 +65,7 @@ # Only edit below this line if you *think* you know what you are doing # ######################################################################## -#LOCKINGTEST=100 # Uncomment (and change) if you think you know +LOCKINGTEST=100 # Uncomment (and change) if you think you know # it better than the autoconf lockingtests. # This will cause the lockingtests to be hotwired. # 100 to enable fcntl() @@ -79,7 +79,7 @@ # -lresolv # not really needed, is it? # Informal list of directories where we look for the libraries in SEARCHLIBS -LIBPATHS=/lib /usr/lib /usr/local/lib +LIBPATHS=/lib /usr/lib GCC_WARNINGS = -O2 -pedantic -Wreturn-type -Wunused -Wformat -Wtraditional \ -Wpointer-arith -Wconversion -Waggregate-return \ --- smartlist-3.15.orig/SmartList/Manual +++ smartlist-3.15/SmartList/Manual @@ -360,14 +360,14 @@ First create a file named "moderators", it should contain the fully qualified mail addresses of all the moderators for this list (i.e. just local usernames are not sufficient, at least include an @host or host! ). -Then uncomment the appropriate "moderated_flag" line in rc.custom. +Then uncomment the appropriate "moderated_flag" line in rc.custom and set +the moderator_PASSWORD variable in the same file. -From then on all mail that does not contain an -"Approved: the_address_of_one_of_the_moderators" field is forwarded to -all the moderators. +From then on all mail that does not contain an "Approved: some_valid_password" +field is forwarded to all the moderators. One of the moderators should then resend the mail to the list after adding -an "Approved: his_own_address" field to the header (and possible editing +an "Approved: some_valid_password" field to the header (and possible editing the contents of the mail). It will be no problem if several moderators resubmit the same submission concurrently, since the mailinglist will filter out duplicates anyway (i.e. only the first one will go out and --- smartlist-3.15.orig/SmartList/install.sh2 +++ smartlist-3.15/SmartList/install.sh2 @@ -11,7 +11,7 @@ $MAKE getparams gethome <&4 || exit 1 cd ../SmartList -ltarget=`../src/gethome "$listid" "$target"` || exit 1 +ltarget="" case "X$ltarget" in X/*) homedir=$ltarget ;; @@ -34,5 +34,5 @@ cmp $hfile ../src/$hfile 2>/dev/null 1>&2 || cp $hfile ../src/$hfile cd ../src -$MAKE multigram <&4 || exit 1 +$MAKE multigram CC="${CC}" CFLAGS0="${CFLAGS0}" LDFLAGS0="${LDFLAGS0}" <&4 || exit 1 cd ../SmartList --- smartlist-3.15.orig/SmartList/install.sh3 +++ smartlist-3.15/SmartList/install.sh3 @@ -180,7 +180,7 @@ rm -f "$target/$bindir/multigram" cp ../src/multigram "$target/$bindir" -sed -e "s:/home/slist/.bin:$target/$bindir:g" "$target/.etc/Manual" +sed -e "s:/home/slist/.bin:$finaldir/$bindir:g" "$target/.etc/Manual" mv -f "$target/$bindir/procmail" "$target/$bindir/.procmail" 2>/dev/null chmod 0755 $target/$bindir/* 2>/dev/null chmod 0644 $target/$bindir/mimencap* --- smartlist-3.15.orig/SmartList/install.sh +++ smartlist-3.15/SmartList/install.sh @@ -32,11 +32,16 @@ test $# = 0 -a -f asked.patch && set dummy `cat asked.patch` && shift -test $# != 1 -a $# != 2 && echo "Usage: install.sh target-directory [.bin]" && +test $# != 1 -a $# != 2 && echo "Usage: install.sh target-dir [final-dir [.bin]]" && exit 64 target="$1" -bindir="$2" +finaldir="$2" +bindir="$3" + +if [ "$finaldir" = "" ]; then + finaldir=$target +fi case "$target" in # Make sure $target is absolute /*) ;; @@ -60,8 +65,7 @@ exit 2 fi -if binmail=`procmail -m DEFAULT=/dev/null 'LOG=$SENDMAIL' /dev/null \ - &1` +if binmail=/usr/sbin/sendmail then case "$binmail" in /*) ;; # some !@#$%^&*() shells don't grok [!/] @@ -92,7 +96,7 @@ exit 64 fi -export target bindir binmail PATH +export target finaldir bindir binmail PATH if test -f "$target/.etc/rc.init.dist" -a ! -f asked.patch then --- smartlist-3.15.orig/SmartList/bin/createlist +++ smartlist-3.15/SmartList/bin/createlist @@ -152,10 +152,11 @@ fi cd "$list" for a in rc.submit rc.init rc.request help.txt subscribe.txt unsubscribe.txt \ - archive.txt reject + archive.txt reject rc.confirm confirm-help.txt confirm.txt confirm-error.txt \ + rc.rfc822 do $test -f ../$defaults/$a || $touch ../$defaults/$a # make sure it exists - $ln ../$defaults/$a $a + $ln -s ../$defaults/$a $a done $mkdir archive @@ -175,15 +176,15 @@ $cat >rc.submit <&2 -$echo "Installed the following files (many hardlinked):" 1>&2 +$echo "Installed the following files (many symlinked):" 1>&2 $echo 1>&2 $ls -ld $list $list/* $list/*/* 1>&2 2>$DEVNULL $echo 1>&2 @@ -216,10 +217,10 @@ # expansion). # -$echo "Now make the following entries in your /usr/lib/aliases file:" 1>&2 +$echo "Now make the following entries in your /etc/aliases file:" 1>&2 $echo \######################################################################## -$echo "$list: \"|exec $flist $list\"" -$echo "$list-request: \"|exec $flist $list-request\"" +$echo "$list: \"|$flist $list\"" +$echo "$list-request: \"|$flist $list-request\"" # #$test $archiveserver = no && $echo "$list-dist: :include:$listdir/$list/dist" # --- smartlist-3.15.orig/SmartList/bin/arch_retrieve +++ smartlist-3.15/SmartList/bin/arch_retrieve @@ -150,7 +150,7 @@ if $test -z "$mimencode" then ( $formail -rt -I"Subject: archive retrieval: $1" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ -i"Content-ID: <$1%$listreq>" \ -I"Precedence: bulk" -X "" <$tmprequest @@ -186,7 +186,7 @@ done else ( $formail -rt -I"Subject: archive retrieval: $line" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ -I"Precedence: bulk" <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" @@ -208,7 +208,7 @@ $touch tmp.lock $echo "$from $line" >>$tmpfrom ( $formail -rt -I"Subject: archive retrieval: ls $1" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ -i"Content-ID: <$*%$listreq>" \ -I"Precedence: bulk" <$tmprequest @@ -245,7 +245,7 @@ *) $touch tmp.lock $echo "$from $line" >>$tmpfrom ( $formail -rt -I"Subject: archive retrieval: $line" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ -I"Precedence: bulk" <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" @@ -262,7 +262,7 @@ version|VERSION) $touch tmp.lock ( $formail -rt -I"Subject: archive retrieval: $line" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" @@ -283,7 +283,7 @@ if $test ! -z "$sendhelp" -o ! -z "$ILLEGAL" then ( $formail -rt -I"Subject: archive retrieval info" \ - -i"From: $listreq" -A"X-Loop: $listaddr" -I"Precedence: bulk" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" -I"Precedence: bulk" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" --- smartlist-3.15.orig/SmartList/bin/removelist +++ smartlist-3.15/SmartList/bin/removelist @@ -70,9 +70,10 @@ $rm -rf $list $echo "Don't forget to remove the corresponding entries from" 1>&2 -$echo "the /usr/lib/aliases file:" 1>&2 +$echo "the /etc/aliases file:" 1>&2 $echo \######################################################################## $echo "$list:" $echo "$list-request:" $echo "$list-dist:" $echo \######################################################################## +$echo "And make sure to run newaliases afterwards." 1>&2 --- smartlist-3.15.orig/SmartList/bin/mimesend +++ smartlist-3.15/SmartList/bin/mimesend @@ -38,7 +38,7 @@ export name dir filename archivedir mimencode formail sed # for mimencap ( $formail -rt -I"Subject: archive retrieval: $1" \ - -i"From: $listreq" -A"X-Loop: $listaddr" \ + -i"From: SmartList <$listreq>" -A"X-Loop: $listaddr" \ -i"Reply-To: Please.write.a.new.mail.instead.of.replying@FIRST.WORD.archive" \ -i"Content-ID: <\"$filename\"%$listreq>" \ -I"Precedence: bulk" -X "" <$tmprequest --- smartlist-3.15.orig/SmartList/bin/confirm +++ smartlist-3.15/SmartList/bin/confirm @@ -0,0 +1,219 @@ +#!/bin/sh + +# $Id: confirm,v 1.3 1999/03/11 13:00:33 szhrew Exp szhrew $ +# $Log: confirm,v $ +# Revision 1.3 1999/03/11 13:00:33 szhrew +# Obsolete comment deleted +# +# Revision 1.2 1999/03/11 12:23:09 +# Changing the command for creating a cookie due to problems with +# the date command on other OS's. +# + +## Author: +## Werner Reisberger +## Description: +## confirm allows (un)subscriptions to mailing lists running with +## SmartList depending on a confirmation. If automatic subscription is +## not allowed the confirmation can be done by the list maintainer(s). +##---------------------------------------------------------------------------## +## +## Copyright (C) 1998 Werner Reisberger +## Copyright (C) 1997 Michelle Dick and +## Werner Reisberger +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +##---------------------------------------------------------------------------## + +test=test # /bin/test +echo=echo # /bin/echo +cat=cat # /bin/cat +sed=sed # /bin/sed +grep=grep # /bin/grep +date=date # /bin/date +ls=ls # /bin/ls +rm=rm # /bin/rm +mkdir=mkdir # /bin/mkdir +formail=formail # /usr/local/bin/formail +multigram=multigram # ../.bin/multigram + +$test -z "$listaddr" && + $echo "Don't start this script directly, it is used in rc.request" && exit 64 + +tmprequest=tmp.request +tmpfrom=tmp.from +confirmtxt=confirm.txt +US=$1 + +$test -d cookies || $mkdir cookies + +case "$X_ENVELOPE_TO" in + *$list-request*) wrongaddress="" ;; + *) wrongaddress="WARNING: + Please try to use '$listreq' + the next time when issuing (un)subscribe requests. +" ;; +esac + +subscraddr="" + +if [ "$US" = "unsub" ] +then + +address=`$formail -k -xSubject: | +$sed -n -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ + -e '/^[ ]*[^ a-z]/ q' \ + -e 's/^[^@]*del[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ + -e 's/^[^@]*unsub[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ + -e 's/^[^@]*unsubscribe[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' ` + + +# create an cookie...this is u for unsubscribe, the date plus the pid +COOKIE="u`$date +%m%d%H%M%S`$$" + +else + +address=`$formail -k -xSubject: | + $sed -n -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ + -e '/^[ ]*[^ a-z]/ q' \ + -e 's/^[^@]*add[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ + -e 's/^[^@]*address[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ + -e 's/^[^@]*sub[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ + -e 's/^[^@]*subscribe[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' ` + +fi + +fromaddr=`$cat $tmpfrom` + +for a in $address "" +do + if $test -z "$subscraddr" + then + case $a in + $listreq|$listaddr) ;; + ?*) subscraddr=$a + $echo " $subscraddr" >$tmpfrom ;; + esac + fi +done + +subscraddr="" # let multigram eliminate trailing and leading punctuation + +address=`$formail -k -xSubject: <$tmprequest | + $multigram -b1 -x$listreq -x$listaddr -l$off_threshold $tmpfrom | + $sed -e 's/^ *[^ ]* *[^ ]* *[^ ]* *\([^ ]*\)/\1/' ` + +for a in $address "" +do + $test -z "$subscraddr" && subscraddr=$a +done + +$test -z "$subscraddr" && subscraddr=$fromaddr + +if [ "$US" != "unsub" ] +then + +if $test -f subscreen +then + ./subscreen "$subscraddr" || exit 1 +fi + +# create a fairly unique cookie...this is the date plus the pid +COOKIE="s`$date +%m%d%H%M%S`$$" + +# log the attempt +$echo "$0: subscription request from $fromaddr for" +$echo "`cat $tmpfrom` - assigned cookie $COOKIE" >> log + +else + +$echo "$0: unsubscription request from $fromaddr for" +$echo "`cat $tmpfrom` - assigned cookie $COOKIE" >> log + +fi + +# create cookie file in cookies directory containing the address +# to be subscribed +$echo $subscraddr > cookies/$COOKIE + +$grep '^Subject: Re:' <$tmprequest >/dev/null && + wrongaddress="${wrongaddress}WARNING: + Send in a new mail, INSTEAD OF REPLYING + the next time when issuing (un)subscribe requests. +" + + if [ "$US" = "sv" ]; then + + authaddr=`$echo $maintainer|sed 's/,/ /g'` + + else + + authaddr=$subscraddr + + fi + + +( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \ + -I"Subject: CONFIRM $COOKIE" <$tmprequest + + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" + + $echo "It has been requested that the following address:" + $echo "" + $echo " $subscraddr" + $echo "" + + if [ "$US" = "unsub" ]; then + + $echo "should be deleted from the $list mailing list." + $echo "" + $echo "It has NOT yet been unsubscribed from the list." + $echo "To unsubscribe you need to confirm the unsubscription" + + else + + $echo "should be added to the $list mailing list." + $echo "" + $echo "The address has NOT yet been subscribed to the mailing list." + $echo "To subscribe you need to confirm the subscription" + + fi + + $echo "request by sending an email to the address:" + $echo "" + $echo " $listreq" + $echo "" + $echo "with the Subject string:" + $echo "" + $echo " CONFIRM $COOKIE" + $echo "" + $echo "With a reasonable good email program a reply to this" + $echo "message should be sufficient" + $echo "" + + $cat $confirmtxt + $echo "" + + $rm -f _dummy_ `$ls -td cookies/* | $sed -e '1,'$maxcookies' d' ` + + $sed -e 's/^/>/' $tmprequest +) | $SENDMAIL $sendmailOPT $authaddr --- smartlist-3.15.orig/SmartList/bin/confirm_del +++ smartlist-3.15/SmartList/bin/confirm_del @@ -0,0 +1,202 @@ +#!/bin/sh + +## Author: +## Werner Reisberger +## Description: +## confirm_del allows unsubscriptions to mailing lists running with +## SmartList depending on a confirmation. If automatic unsubscription is +## not allowed the confirmation can be done by the list maintainer(s). +##---------------------------------------------------------------------------## +## +## Copyright (C) 1998-2002 Werner Reisberger +## Copyright (C) 1997 Michelle Dick and +## Werner Reisberger +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +##---------------------------------------------------------------------------## + +test=test # /bin/test +dist=dist +echo=echo # /bin/echo +cat=cat # /bin/cat +sed=sed # /bin/sed +grep=grep # /bin/grep +date=date # /bin/date +ls=ls # /bin/ls +rm=rm # /bin/rm +mkdir=mkdir # /bin/mkdir +formail=formail # /usr/local/bin/formail +multigram=multigram # ../.bin/multigram + +$test -z "$listaddr" && + $echo "Don't start this script directly, it is used in rc.request" && exit 64 + +tmprequest=tmp.request +tmpfrom=tmp.from +confirmtxt=confirm.txt + +$test -d cookies || $mkdir cookies + +case "$X_ENVELOPE_TO" in + *$list-request*) wrongaddress="" ;; + *) wrongaddress="WARNING: + Please try to use '$listreq' + the next time when issuing unsubscribe requests. +" ;; +esac + +subscraddr="" + +address=`$formail -k -xSubject: | +$sed -n -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ + -e '/^[ ]*[^ a-z]/ q' \ + -e 's/^[^@]*del[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ + -e 's/^[^@]*unsub[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ + -e 's/^[^@]*unsubscribe[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' ` + + +# create an cookie...this is u for unsubscribe, the date plus the pid +COOKIE="u`$date +%m%d%H%M%S`$$" + +fromaddr=`$cat $tmpfrom` + +for a in $address "" +do + if $test -z "$subscraddr" + then + case $a in + $listreq|$listaddr) ;; + ?*) subscraddr=$a + $echo " $subscraddr" >$tmpfrom ;; + esac + fi +done + +subscraddr="" # let multigram eliminate trailing and leading punctuation + +address=`$formail -k -xSubject: <$tmprequest | + $multigram -b1 -x$listreq -x$listaddr -l$off_threshold $tmpfrom | + $sed -e 's/^ *[^ ]* *[^ ]* *[^ ]* *\([^ ]*\)/\1/' ` + +for a in $address "" +do + $test -z "$subscraddr" && subscraddr=$a +done + +$test -z "$subscraddr" && subscraddr=$fromaddr + +# is the address on the list ? +$sed 's/\([^ ]*\) *.*/\1/' $dist | $grep -i "^${subscraddr}$" > /dev/null + +if [ $? != 0 ]; then + + $echo "$0: unsubscription request from $fromaddr for" >> $LOGFILE + $echo "unknown address: $subscraddr" >> $LOGFILE + + + ( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \ + -I"Subject: unsuccessful unsubscribe request" <$tmprequest + + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" + + $echo "It has been requested that the following address:" + $echo "" + $echo " $subscraddr" + $echo "" + + $echo "should be deleted from the $list mailing list." + $echo "" + $echo "Sorry, but this address has NOT been found on the list." + + if $test ! -z "$unsub_assist" -a 0 != "$unsub_assist" + then + $echo "What I did find were the following approximate matches:" + $echo "" + $echo $subscraddr | $multigram -m -b$unsub_assist -l-32767 $dist + $echo "" + $echo "If you recognise one of these addresses as being the one you" + $echo "wanted to unsubscribe, send in a new unsubscribe request" + $echo "containing the text: unsubscribe the_address_you_meant." + + else + + $echo "" + $echo "Please check carefully the spelling of this address." + $echo "You may send an unsubscribe request with another address." + $echo "If the address is on the list you will receive a confirmation" + $echo "message. A reply to this message will remove the address." + $echo "" + + fi + + $echo "It follows a copy of your unsubscribe request" + $echo "" + + $sed -e 's/^/>/' $tmprequest + ) | $SENDMAIL $sendmailOPT $fromaddr + + exit 0 + +fi + +$echo "$0: unsubscription request from $fromaddr for" >> $LOGFILE +$echo "$subscraddr - assigned cookie $COOKIE" >> $LOGFILE + +# create cookie file in cookies directory containing the address +# to be unsubscribed +$echo $subscraddr > cookies/$COOKIE + +$grep '^Subject: Re:' <$tmprequest >/dev/null && + wrongaddress="${wrongaddress}WARNING: + Send in a new mail, INSTEAD OF REPLYING + the next time when issuing unsubscribe requests. +" + +( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \ + -I"Subject: CONFIRM $COOKIE" <$tmprequest + + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" + + $echo "It has been requested that the following address:" + $echo "" + $echo " $subscraddr" + $echo "" + + $echo "should be deleted from the $list mailing list." + $echo "" + $echo "It has NOT yet been unsubscribed from the list." + $echo "To unsubscribe you need to confirm the unsubscription" + $echo "request by sending an email to the address:" + $echo "" + $echo " $listreq" + $echo "" + $echo "with the Subject string:" + $echo "" + $echo " CONFIRM $COOKIE" + $echo "" + $echo "With a reasonable good email program a reply to this" + $echo "message should be sufficient" + $echo "" + + $cat $confirmtxt + $echo "" + + $rm -f _dummy_ `$ls -td cookies/* | $sed -e '1,'$maxcookies' d' ` + + $sed -e 's/^/>/' $tmprequest +) | $SENDMAIL $sendmailOPT $subscraddr --- smartlist-3.15.orig/SmartList/bin/confirm_sub +++ smartlist-3.15/SmartList/bin/confirm_sub @@ -0,0 +1,95 @@ +#! /bin/sh + +# That's the modified original SmartList subscribe script to overcome security +# implications and limititations caused by multigram. It's only used if +# require_confirm is set to yes + +test=test # /bin/test +echo=echo # /bin/echo +cat=cat # /bin/cat +sed=sed # /bin/sed +grep=grep # /bin/grep +date=date # /bin/date +formail=formail # /usr/local/bin/formail +multigram=multigram # ../.bin/multigram +arch_retrieve=arch_retrieve # ../.bin/arch_retrieve + +tmprequest=tmp.request +tmpfrom=tmp.from +subscribetxt=subscribe.txt +subscribefiles=subscribe.files + +$test -z "$listaddr" && + $echo "Don't start this script directly, it is used in rc.request" && exit 64 + +subscraddr="$1" +$test -z "$subscraddr" && + $echo "Error: missing address to subscribe" && exit 64 + +if $test ! -r dist +then + $echo "subscribe: Where did the dist file go?" 1>&2 + $echo "(Only addresses below this line can be automatically removed)" >>dist +fi + +case "$X_ENVELOPE_TO" in + *$list-request*) wrongaddress="" ;; + *) wrongaddress="WARNING: + Please try to use '$listreq' + the next time when issuing (un)subscribe requests. +" ;; +esac + +if $test -f subscreen +then + ./subscreen "$subscraddr" || exit 1 +fi + +$grep '^Subject: Re:' <$tmprequest >/dev/null && + wrongaddress="${wrongaddress}WARNING: + Send in a new mail, INSTEAD OF REPLYING + the next time when issuing (un)subscribe requests. +" + +$multigram -a "$subscraddr" dist >/dev/null + +sender=`$formail -rtzcxTo: <$tmprequest` + +$test -z "$subscribe_log" || + $echo "subscribe: $subscraddr by: $sender `$date`" >>$subscribe_log + +case $subscraddr in + *$sender*) sender="$subscraddr" ;; + *) sender="$sender $subscraddr" ;; +esac + +( $formail -i"From: $listreq" -rtA"X-Loop: $listaddr" <$tmprequest + + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" + + $echo "You have added to the subscriber list of:" + $echo "" + $echo " $listaddr" + $echo "" + $echo "the following mail address:" + $echo "" + $echo " $subscraddr" + $echo "" + $echo "By default, copies of your own submissions will be returned." + $echo "" + + $cat $subscribetxt + + $sed -e 's/^/>/' $tmprequest +) | $SENDMAIL $sendmailOPT $sender + +if $test -f $subscribefiles +then + $formail -X "" -i "Reply-To: $subscraddr" -i "Subject: archive" \ + <$tmprequest >$tmpfrom + $cat $tmpfrom >$tmprequest + $echo "" >>$tmprequest + $cat $subscribefiles >>$tmprequest # setup fake archive commands + $echo $subscraddr >$tmpfrom + exec $arch_retrieve <$tmprequest # the point of no return +fi --- smartlist-3.15.orig/SmartList/bin/subscribe +++ smartlist-3.15/SmartList/bin/subscribe @@ -41,13 +41,13 @@ $sed -n -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ -e '/^[ ]*[^ a-z]/ q' \ -e 's/^[^@]*add[ ]*'\ -'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ -e 's/^[^@]*address[ ]*'\ -'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ -e 's/^[^@]*sub[ ]*'\ -'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' \ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ -e 's/^[^@]*subscribe[ ]*'\ -'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z][^ ]*\).*/\1/p' ` +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' ` fromaddr=`$cat $tmpfrom` @@ -104,7 +104,7 @@ *) sender="$sender $subscraddr" ;; esac -( $formail -i"From: $listreq" -rtA"X-Loop: $listaddr" <$tmprequest +( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" --- smartlist-3.15.orig/SmartList/bin/unsubscribe +++ smartlist-3.15/SmartList/bin/unsubscribe @@ -38,7 +38,7 @@ the next time when issuing (un)subscribe requests. " -$formail -i"From: $listreq" -rtA"X-Loop: $listaddr" -I"Precedence: junk" \ +$formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" -I"Precedence: junk" \ <$tmprequest $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" --- smartlist-3.15.orig/SmartList/bin/flush_digests +++ smartlist-3.15/SmartList/bin/flush_digests @@ -34,6 +34,7 @@ tmpfrom=tmp.from digestbody=archive/latest/digest.body +digestboundary=archive/latest/digest.boundary if $test .-c = ".$1" then @@ -81,6 +82,7 @@ $cat $digestbody $digesttrailer >>$Issue 2>/dev/null $rm -f $digesttrailer $digestbody $digestadmin2 $SENDMAIL <$Issue + date +%Y%m%d%H%M%S | md5sum | awk '{ print $1 }' > $digestboundary cd archive $rm -f _dummy_ \ `$ls -td volume*/* | $sed -e '/\/.*[^0-9]/ d' | $sed -e '1,'$archive_hist' d'` --- smartlist-3.15.orig/SmartList/bin/digest +++ smartlist-3.15/SmartList/bin/digest @@ -16,6 +16,8 @@ $test -z "$listaddr" && $echo "Don't start this script directly, it is used in rc.submit" && exit 64 +listid=`echo $listaddr |sed -e 's/@/./'` + tmprequest=tmp.request tmpfrom=tmp.from @@ -24,6 +26,7 @@ digestadmin2=archive/latest/$digestadmin digestbody=archive/latest/digest.body digesttrailer=archive/latest/digest.trailer +digestboundary=archive/latest/digest.boundary if $test -z "$alt_sendmail" then @@ -57,11 +60,11 @@ while(lines) { print("");--lines; } - if(mtch==3) - print("- ----------------------------"); - else if(mtch==4) - print("- ------------------------------"); - else if(mtch==5) +# if(mtch==3) +# print("- ----------------------------"); +# else if(mtch==4) +# print("- ------------------------------"); + if(mtch==5) printf(" ."); else print($0); @@ -70,8 +73,18 @@ $test -f $digestbody && flush_digests -c +if [ ! -f $digestboundary ]; then + if [ -f $digestbody ]; then + echo "----------------------------" > $digestboundary + else + date +%Y%m%d%H%M%S | md5sum | awk '{ print $1 }' > $digestboundary + fi +fi + +boundary=`cat $digestboundary` + $cat >>$digestbody < archive/volume$Year/$Issue +List-Id: <$listid> +List-Post: +List-Help: +List-Subscribe: +List-Unsubscribe: Precedence: list MIME-Version: 1.0 -Content-Type: multipart/digest; boundary="----------------------------" +Content-Type: multipart/digest; boundary="$boundary" To: $listaddr${reply_to+ }${reply_to-${undigested_list+ Reply-To: }$undigested_list} ------------------------------- +--$boundary Content-Type: text/plain @@ -135,7 +153,7 @@ HERE $cat >$digesttrailer < +## Description: +## confirm_add allows subscriptions to mailing lists running with +## SmartList depending on a confirmation. If automatic subscription is +## not allowed the confirmation can be done by the list maintainer(s). +##---------------------------------------------------------------------------## +## +## Copyright (C) 1998-2002 Werner Reisberger +## Copyright (C) 1997 Michelle Dick and +## Werner Reisberger +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +##---------------------------------------------------------------------------## + +test=test # /bin/test +echo=echo # /bin/echo +cat=cat # /bin/cat +sed=sed # /bin/sed +grep=grep # /bin/grep +date=date # /bin/date +ls=ls # /bin/ls +rm=rm # /bin/rm +mkdir=mkdir # /bin/mkdir +formail=formail # /usr/local/bin/formail + +$test -z "$listaddr" && + $echo "Don't start this script directly, it is used in rc.request" && exit 64 + +tmprequest=tmp.request +tmpfrom=tmp.from +confirmtxt=confirm.txt +subscraddr=$1 +US=$2 + +$test -d cookies || $mkdir cookies + +case "$X_ENVELOPE_TO" in + *$list-request*) wrongaddress="" ;; + *) wrongaddress="WARNING: + Please try to use '$listreq' + the next time when issuing subscribe requests. +" ;; +esac + + +if $test -f subscreen +then + ./subscreen "$subscraddr" || exit 1 +fi + +# create a fairly unique cookie...this is the date plus the pid +COOKIE="s`$date +%m%d%H%M%S`$$" + +# log the attempt +$echo "$0: subscription request from $fromaddr for" +$echo "`cat $tmpfrom` - assigned cookie $COOKIE" >> log + +# create cookie file in cookies directory containing the address +# to be subscribed +$echo $subscraddr > cookies/$COOKIE + +$grep '^Subject: Re:' <$tmprequest >/dev/null && + wrongaddress="${wrongaddress}WARNING: + Send in a new mail, INSTEAD OF REPLYING + the next time when issuing (un)subscribe requests. +" + +if [ "$US" = "sv" ]; then + + authaddr=`$echo $maintainer|sed 's/,/ /g'` + +else + + authaddr=$subscraddr + +fi + +( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \ + -I"Subject: CONFIRM $COOKIE" <$tmprequest + + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress="" + + $echo "It has been requested that the following address:" + $echo "" + $echo " $subscraddr" + $echo "" + $echo "should be added to the $list mailing list." + $echo "" + $echo "The address has NOT yet been subscribed to the mailing list." + $echo "To subscribe you need to confirm the subscription" + $echo "request by sending an email to the address:" + $echo "" + $echo " $listreq" + $echo "" + $echo "with the Subject string:" + $echo "" + $echo " CONFIRM $COOKIE" + $echo "" + $echo "With a reasonable good email program a reply to this" + $echo "message should be sufficient" + $echo "" + + $cat $confirmtxt + $echo "" + + $rm -f _dummy_ `$ls -td cookies/* | $sed -e '1,'$maxcookies' d' ` + + $sed -e 's/^/>/' $tmprequest +) | $SENDMAIL $sendmailOPT $authaddr --- smartlist-3.15.orig/SmartList/bin/extraddr +++ smartlist-3.15/SmartList/bin/extraddr @@ -0,0 +1,99 @@ +#!/bin/sh + +## Author: +## Werner Reisberger +## Description: +## confirm allows (un)subscriptions to mailing lists running with +## SmartList depending on a confirmation. If automatic subscription is +## not allowed the confirmation can be done by the list maintainer(s). +##---------------------------------------------------------------------------## +## +## Copyright (C) 1998-2003 Werner Reisberger +## Copyright (C) 1997 Michelle Dick and +## Werner Reisberger +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +##---------------------------------------------------------------------------## + +test=test # /bin/test +echo=echo # /bin/echo +cat=cat # /bin/cat +sed=sed # /bin/sed +grep=grep # /bin/grep +date=date # /bin/date +ls=ls # /bin/ls +rm=rm # /bin/rm +mkdir=mkdir # /bin/mkdir +formail=formail # /usr/local/bin/formail +multigram=multigram # ../.bin/multigram + +$test -z "$listaddr" && + $echo "Don't start this script directly, it is used in rc.request" && exit 64 + +ADR=$1 + +tmprequest=tmp.request +tmpfrom=tmp.from + +case "$X_ENVELOPE_TO" in + *$list-request*) wrongaddress="" ;; + *) wrongaddress="WARNING: + Please try to use '$listreq' + the next time when issuing (un)subscribe requests. +" ;; +esac + +subscraddr="" + +address=`$formail -k -xSubject: | + $sed -n -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ + -e '/^[ ]*[^ a-z]/ q' \ + -e 's/^[^@]*add[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ + -e 's/^[^@]*address[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ + -e 's/^[^@]*sub[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' \ + -e 's/^[^@]*subscribe[ ]*'\ +'[^ ]*[ ]\([^ ]*[-a-z0-9_][@!][a-z0-9][^ ]*\).*/\1/p' ` + +fromaddr=`$cat $tmpfrom` + +for a in $address "" +do + if $test -z "$subscraddr" + then + case $a in + $listreq|$listaddr) ;; + ?*) subscraddr=$a + $echo "$subscraddr" >$tmpfrom ;; + esac + fi +done + +for a in $address "" +do + $test -z "$subscraddr" && subscraddr=$a +done + +$test -z "$subscraddr" && subscraddr=$fromaddr + +if [ -z $ADR ]; then + $formail -f -I"X-RFC822Conform: $subscraddr" < $tmprequest +else + # log the attempt + $echo "$0: subscription request from $fromaddr" >>$subscribe_log + $grep "^[ ]*$subscraddr[ ]*" dist +fi --- smartlist-3.15.orig/SmartList/bin/led +++ smartlist-3.15/SmartList/bin/led @@ -1,5 +1,4 @@ #! /bin/sh -set -x : &&O='cd .' || exec /bin/sh "$0" $argv:q # we're in a csh, feed myself to sh $O || exec /bin/sh "$0" "$@" # we're in a buggy zsh ######################################################################### --- smartlist-3.15.orig/SmartList/examples/help.txt +++ smartlist-3.15/SmartList/examples/help.txt @@ -1,6 +1,6 @@ General info ------------ -Subcription/unsubscription/info requests should always be sent to the -request +Subscription/unsubscription/info requests should always be sent to the -request address of a mailinglist. If a mailinglist for example is called "thelist@some.domain", then the -request address can be inferred from this to be: "thelist-request@some.domain". --- smartlist-3.15.orig/SmartList/etc/rc.custom +++ smartlist-3.15/SmartList/etc/rc.custom @@ -1,11 +1,26 @@ +# This rc.custom file is customized for the confirm v.1.2 package. +# The variables set in the confirm chapter are triggering the confirmation +# of subscribe and/or unsubscribe requests. Subscriptions could be also +# forwarded to the maintainer(s) for confirmation. # # Assign the fully qualified mail address of the maintainer of this list # to "maintainer". If empty, request-mail will not be mailed to any # maintainer and will be stored in the "request" file for this list. # +# If you want to define more than one maintainer you have to seperate +# the email addresses with commas. Don't leave blanks around the commas. maintainer = +# To change the domain, the variables that depend on it should be +# redefined as well. +# +# domain=example.com +# listaddr=$list@$domain +# listreq=$list-request@$domain +# listdist=$list-dist@$domain +# sendmailOPT="$sendmailOPTnorm -f$listreq" + #LOGABSTRACT=yes # uncomment in case of emergency #VERBOSE=yes # uncomment in case of real emergency @@ -22,7 +37,7 @@ #subscribe_log = $LOGFILE # log file for administrivia #maxhist = 32 # bounce history limit -#minbounce = 4 # no. of bounces before removal +#minbounce = 10 # no. of bounces before removal #cutoff_bounce = 256 # lines to keep in bounce processing #match_threshold= 30730 # for close matches to the list @@ -52,6 +67,26 @@ ##force_subscribe= yes # uncomment to cause people to # be autosubscribed upon first # submission to the list + +# +# Variables to control and activate the confirm mechanism +# + +maxcookies = 50 # cookies held in cookies directory + +require_confirm = yes # send confirmation message before +#require_confirm # subscribing + +confirm_unsubscribe = yes +#confirm_unsubscribe + +confirm_subscribe = yes +#confirm_subscribe + +#confirm_maintainer = yes # This forwards all subscription requests to +confirm_maintainer # the maintainer(s) who have to confirm or + # ignore the messages. + #auto_unsubscribe= yes ##auto_unsubscribe # uncomment to disable unattended # unsubscription handling --- smartlist-3.15.orig/SmartList/etc/confirm-error.txt +++ smartlist-3.15/SmartList/etc/confirm-error.txt @@ -0,0 +1,4 @@ +Your subscription request was unsuccesful. + +If your subscription address was invalid you should have got a response +from the mailing list server indicating the faulty address in the subject line. --- smartlist-3.15.orig/SmartList/etc/rc.init +++ smartlist-3.15/SmartList/etc/rc.init @@ -101,6 +101,7 @@ # so that we include this file only # once +listid=$list.$domain listaddr=$list@$domain listreq=$list-request@$domain listdist=$list-dist@$domain @@ -169,7 +170,7 @@ subscribe_log = $LOGFILE # log file for administrivia maxhist = 32 # bounce history limit -minbounce = 4 # no. of bounces before removal +minbounce = 10 # no. of bounces before removal cutoff_bounce = 256 # lines to keep in bounce processing match_threshold = 30730 # for close matches to the list --- smartlist-3.15.orig/SmartList/etc/rc.submit +++ smartlist-3.15/SmartList/etc/rc.submit @@ -105,6 +105,18 @@ INCLUDERC=$RC_LOCAL_SUBMIT_10 :0 + * ^Subject:.*confirm.*[su][0-9]+ + { + + :0 whf + * pass_diverts ?? y + | formail -A "X-Diagnostic: Probably a confirmation message" + + HOST=continue_with_rc.request + + } + + :0 * moderated_flag ?? y { :0 Bhfw # contract header and body @@ -256,7 +268,8 @@ # What List-* headers should be included? # - List_headers = "List-Post: + List_headers = "List-Id: <$listid> +List-Post: List-Help: " :0 * auto_subscribe ?? y @@ -321,7 +334,7 @@ * ? test -f accept.txt { :0 fh - | formail -i"From: $listreq" -kbrtA"X-Loop: $listaddr" ; cat accept.txt + | formail -i"From: SmartList <$listreq>" -kbrtA"X-Loop: $listaddr" ; cat accept.txt :0 ! $sendmailOPT -t --- smartlist-3.15.orig/SmartList/etc/confirm-help.txt +++ smartlist-3.15/SmartList/etc/confirm-help.txt @@ -0,0 +1,16 @@ +Your confirmation request was unsuccessful. Please double-check the +following and try again: + +1. Did you include the word "CONFIRM" and the confirmation number in +the SUBJECT of your email? + +2. Did you copy the confirmation number exactly as written in the +confirmation email you received? + +3. Did you already successfully confirm your subscription? + +It is also possible that too long a time has transpired between your +(un)subscription request and confirmation or that some list data was lost. +If you followed the above instructions exactly and still get this +message, please send another (un)subscribe request and get a new +confirmation number. --- smartlist-3.15.orig/SmartList/etc/rc.request +++ smartlist-3.15/SmartList/etc/rc.request @@ -5,7 +5,17 @@ # New mails can be temporarily stalled by creating the file rc.lock (either in # ../.etc for all lists or in the current directory for this list only). -#$Id: rc.request,v 1.84 2000/05/09 06:36:33 guenther Exp $ +# modified for security reasons and better handling for email addresse +# with non alphanumeric chars at the beginning off local part +# 11 Feb. 2005, Werner Reisberger, werner at pure dot ch + +# modified for confirmation messages and multiple maintainers +# 11 Dec. 1998, Werner Reisberger, werner at pure dot ch + +#$Id: rc.request,v 1.2.1.2 1999/03/12 14:41:20 szhrew Exp szhrew $ +# $Log: rc.request,v $ +# Revision 1.2.1.2 1999/03/12 14:41:20 szhrew +# merged two recipes INCLUDERC=$RC_INIT INCLUDERC=$RC_CUSTOM @@ -30,6 +40,18 @@ # If everything matches, we extract the sender address into tmp.from # +# is there more than one maintainer? +maintainer_re="$maintainer" +maintainers="$maintainer" +Maintainer=Maintainer + +:0 +* maintainer ?? , +{ maintainer_re="`echo $maintainer | sed -e 's/,/|/g' -e 's/\./\\\./g'`" + maintainers="`echo $maintainer | sed -e 's/,/ /g'`" + Maintainer=Maintainers +} + :0 * B ?? < 4096 * $$daemon_bias @@ -38,15 +60,17 @@ * 1^0 { + INCLUDERC=${require_confirm:+rc.confirm} + :0 -* -100^0 ^Subject:(.*[^a-z])?(Re:|erro|change|problem|((can)?not|.*n't)\>) +* -100^0 ^Subject:[^a-z]*(Re:|erro|change|problem|((can)?not|.*n't)\>) * 100^0 B ?? ^^([ ]|$)*\ ((archives?:?($|[ ]+)|\ ((un)subscribe|(send|get)(me)?|gimme|retrieve|mail|ls|dir(ectory)?|\ list|show|search|[fe]?grep|find|maxfiles|version|help|info)\ ([ ].*)?$)([ ]|$)*)+\ ([^ a-z].*$(.*$(.*$(.*$(.*$)?)?)?)?)?^^ -* 100^0 ^Subject:[ ]*archive +* 100^0 ^Subject:[ ]*(archive|(un)?subscribe) * 1^0 { :0 whc @@ -119,7 +143,24 @@ * 1^0 B ?? ^^([ ]|$)*unsub(scribe)?([ ].*)?([ ]|$)*\ [^ a-z]?^^ { - :0 fw:dist.lock + + # + # If confirmation required send a cookie + # + + :0 + * ! ^X-Diagnostic: Tried to confirm unsubscription + * confirm_unsubscribe ?? y + { + :0 W ${cc_requests:+c}:dist.lock + | confirm_del + + :0 awfh + | formail -A "X-Diagnostic: Sent confirmation instructions" + } + + :0 E fw:dist.lock + * ! confirm_unsubscribe ?? y * auto_unsubscribe ?? y | unsubscribe @@ -160,19 +201,131 @@ # If not, then let's see if he might already be on the # mailinglist. # + # We only check these if the message isn't a subscription confirmation. + # In this case the check have been made before. + # - :0 E HB wfh - * ? formail -IReceived: -IX-Envelope-To: -IIn-Reply-To: -ICc: | \ - multigram -b1 -x$listreq -x$listaddr -l$reject_threshold dist - | formail -A "X-Diagnostic: Already on the subscriber list" \ + :0 E + * ! subscraddr ?? @ + { + + :0 HB wfh + * ! require_confirm ?? y + * ! confirm_subscribe ?? y + * ? formail -IReceived: -IX-Envelope-To: -IIn-Reply-To: -ICc: | \ + multigram -b1 -x$listreq -x$listaddr -l$reject_threshold dist + | formail -A "X-Diagnostic: Already on the subscriber list" \ -A "X-Diagnostic: `multigram -b1 -x$listreq -x$listaddr \ -l$reject_threshold dist`" + + :0 A + { dublette = yes } + + :0 EHB wfh + * require_confirm ?? y + * confirm_subscribe ?? y + * ? formail -IReceived: -IX-Envelope-To: -IIn-Reply-To: -ICc: | \ + extraddr check + | formail -A "X-Diagnostic: Already on the subscriber list" \ + -A "X-Diagnostic: `extraddr check`" + + :0 A + { dublette = yes } + + # + # If confirmation required send a cookie + # + + :0 E + * require_confirm ?? y + * confirm_subscribe ?? y + { + # extract subscribe address + :0 wfh + | extraddr + + :0 aH + * ^X-RFC822Conform: \/.+ + { + + # include regexp to check if email address conforms to rfc822 + INCLUDERC=rc.rfc822 + # check address format + + :0 + * $ MATCH ?? ^$addrspec__ + { + + :0 + * confirm_maintainer ?? y + { + :0 W ${cc_requests:+c}:dist.lock + | confirm_add $MATCH sv + + :0 awfh + | formail -A "X-Diagnostic: Sent maintainer instructions" + + :0 Ewfh + | formail -A "X-Diagnostic: Tried to subscribe" + } + + :0 E + { + :0 W ${cc_requests:+c}:dist.lock + | confirm_add $MATCH + + :0 awfh + | formail -A "X-Diagnostic: Sent confirmation instructions" + + :0 Ewfh + | formail -A "X-Diagnostic: Tried to subscribe" + } + + } + + :0 E + { + :0 hw ${cc_requests:+c} + |(formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \ + -i "Subject: Invalid address ($MATCH)"; \ + cat confirm-error.txt 2>/dev/null ) | $SENDMAIL $sendmailOPT -t + + :0 + | formail -A "X-Diagnostic: Invalid subscribe address ($MATCH)" \ + | $SENDMAIL $sendmailOPT $sendmailOPTp $maintainers + } + } + + :0 Ewfh + | formail -A "X-Diagnostic: Extract script failed" + + } + } # - # If not, add him(/her/it?). + # If no confirmation required or already confirmed call + # the subscribe script # + + :0 + * require_confirm ?? y + * ! dublette ?? y + * auto_subscribe ?? y + * $^X-Diagnostic: $\subscraddr tried to confirm subscription + { + :0 W ${cc_requests:+c}:dist.lock + | confirm_sub $subscraddr + + :0 awfh + | formail -A "X-Diagnostic: Added to the subscriber list" + + :0 Ewfh + | formail -A "X-Diagnostic: Tried to subscribe" + } :0 E + * ! require_confirm ?? y + * ! dublette ?? y * auto_subscribe ?? y { :0 W ${cc_requests:+c}:dist.lock @@ -202,7 +355,7 @@ * 3^0 ^^(.+$)*^([ ]*$)*-- { :0 hw ${cc_requests:+c} - | (formail -i"From: $listreq" -rtA"X-Loop: $listaddr"; \ + | (formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr"; \ cat help.txt info.txt 2>/dev/null ) | $SENDMAIL $sendmailOPT -t :0 wfh @@ -223,7 +376,7 @@ * $!X-Loop: $\listaddr { :0 hw ${cc_requests:+c} - | (formail -i"From: $listreq" -rtA"X-Loop: $listaddr"; \ + | (formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr"; \ cat help.txt info.txt 2>/dev/null ) | $SENDMAIL $sendmailOPT -t :0 wfh @@ -255,6 +408,8 @@ * ^Subject: \ (Warning - delayed mail|\ (WARNING: message ([^ ]+ )?|Mail )delayed|\ + Message status - opened|\ + Delivery Notification: Delivery has been delayed|\ (Returned mail: )?\ (warning: c(an|ould )not send m(essage fo|ail afte)r|Unbalanced '"'|\ Cannot send (within [0-9]|8-bit data to 7-bit)|\ @@ -305,7 +460,7 @@ # :0 wf:dist.lock -* $^$X_COMMAND:.*$\maintainer[ ]*$\X_COMMAND_PASSWORD +* $^$X_COMMAND:.*($maintainer_re)[ ]*$X_COMMAND_PASSWORD * $!^X-Loop: $\listaddr | x_command --- smartlist-3.15.orig/SmartList/etc/rc.rfc822 +++ smartlist-3.15/SmartList/etc/rc.rfc822 @@ -0,0 +1,30 @@ +# +# RFC822 address parsing regular expressions for procmail. +# +# Copyright (c) 1997-2002 Barton E. Schaefer + +# spacex__ below is a space and a tab + +specialx__ = '][()<>@,;:\\".' +spacex__ = " " +specials__ = "[$specialx__]" +atom__ = "[^$specialx__$spacex__]+" +space__ = "[$spacex__]*" +qtext__ = '[^"\\]' +qpair__ = '\\.' +beginq__ = '"' +endq__ = '[^\\]?"' +dotx__ = '\.' +dot__ = "$space__$dotx__$space__" +comma__ = "$space__,$space__" + +domainref__ = "$atom__" +domainlit__ = "\[([^]]|$qpair__)*[^\\]?\]" +quotedstring__ = "$beginq__($qtext__|$qpair__)*$endq__" +word__ = "($atom__|$quotedstring__)" +phrase__ = "($space__$word__$space__)*" +localpart__ = "$word__($dot__$word__)*" + +subdomain__ = "($domainref__|$domainlit__)" +domain__ = "$subdomain__($dot__$subdomain__)*" +addrspec__ = "$localpart__$space__@$space__$domain__" --- smartlist-3.15.orig/SmartList/etc/confirm.txt +++ smartlist-3.15/SmartList/etc/confirm.txt @@ -0,0 +1,20 @@ +Don't remove or edit the confirm string within the subject line. If the +confirm string has been removed or changed the confirmation will fail! + +When your confirm message has been received the above listed address +will be (un)subscribed. If the above address is incorrect, please do not +send in the confirm message listed above. Instead, send a new +(un)subscribe request containing the Subject: + + subscribe correct-address@correct-domain + + or + + unsubscribe correct-address@correct-domain + +and wait for a new confirmation message. + +A copy of the (un)subscription request appears below. In the event that +you did not send a request to (un)subscribe, the headers of the message +may help you discover who sent the request. + --- smartlist-3.15.orig/SmartList/etc/rc.confirm +++ smartlist-3.15/SmartList/etc/rc.confirm @@ -0,0 +1,85 @@ +# confirm v.1.2.7, 3. Nov. 2002 +# +# Check to see if it is a confirm request +# + +:0 +* Subject:.*confirm.*\/[su][0-9]+ +{ + COOKIE=$MATCH + + :0 + * ? test -s cookies/$COOKIE + { + + subscraddr=`cat cookies/$COOKIE` + + + # + # transfer to "(un)subscribe" in rc.request + # + + :0 wfh + * COOKIE ?? s[0-9]+ + | formail -A "X-Diagnostic: $subscraddr tried to confirm subscription" \ + -I"Subject: subscribe $subscraddr" && rm cookies/$COOKIE + + :0 E + * COOKIE ?? u[0-9]+ + { + + # remove the address from the dist file + # use global lockfile because of log message + LOCKFILE=dist.lock + :0 w + * ? echo $subscraddr | multigram -b1 -l30000 -d dist + { } + LOCKFILE + + :0 Awc + | formail -IIn-Reply-To: -ICc: >tmp.request + + :0 Aw ${cc_unsubrequests:+c} + * ? echo "unsubscribed: $subscraddr" >> $LOGFILE + | (formail -r; echo "$subscraddr removed from list $list!"; echo ""; \ + cat unsubscribe.txt; cat tmp.request | sed 's/^/> /') \ + | $SENDMAIL $sendmailOPT -t && rm cookies/$COOKIE + + :0 A w + | formail -A "X-Diagnostic: Tried to confirm unsubscription" \ + | $SENDMAIL $sendmailOPT $maintainer + + :0 Ewfh + * ? echo "Couldn't unsubscribe $subscraddr" >> $LOGFILE + | formail -A "X-Diagnostic: Problem unsubscribing $subscraddr" + + } + + } + + #If there is no such cookie send a help file + + :0 EHB + { + :0 hw ${cc_requests:+c} + | (formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr"; \ + cat confirm-help.txt 2>/dev/null ) | $SENDMAIL $sendmailOPT -t + + :0 wfh + | formail -A "X-Diagnostic: unsuccessful confirm, help sent" + } + +} + +#if confirm is in subject, but no cookie, send a help file + +:0 EHB +* Subject:.*confirm +{ + :0 hw ${cc_requests:+c} + | (formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr"; \ + cat confirm-help.txt 2>/dev/null ) | $SENDMAIL $sendmailOPT -t + + :0 wfh + | formail -A "X-Diagnostic: unsuccessful confirm, help sent" +} --- smartlist-3.15.orig/src/autoconf +++ smartlist-3.15/src/autoconf @@ -1384,15 +1384,14 @@ grep 'Mlocal.*procmail' >$DEVNULL || echo '#define CF_no_procmail_yet' >>$ACONF -cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL | - grep '^V' >$DEVNULL || - echo '#define buggy_SENDMAIL' >>$ACONF +# cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL | +# grep '^V' >$DEVNULL || +# echo '#define buggy_SENDMAIL' >>$ACONF lpath='/bin' bins="/bin" -for newd in /usr/bin /usr/ucb /usr/5bin $BINDIR /local/bin /usr/local/bin \ - /global/bin /usr/bin/X11 /usr/X*/bin +for newd in /usr/bin $BINDIR /usr/bin/X11 /usr/X*/bin do if test -d $newd then --- smartlist-3.15.orig/src/foldinfo.h +++ smartlist-3.15/src/foldinfo.h @@ -10,7 +10,7 @@ #define ft_lock(type) ((type)>ft_MAILDIR) #define ft_atime(type) ((type)==ft_FILE) /* force atime < mtime */ -#define ft_dotlock(type) ((type)==ft_FILE) +#define ft_dotlock(type) ((type)>ft_MAILDIR) #define ft_delim(type) ((type)==ft_FILE) #define ft_checkcloser(type) ((type)>ft_MH) --- smartlist-3.15.orig/src/recommend.c +++ smartlist-3.15/src/recommend.c @@ -47,7 +47,7 @@ printf("chmod %lo %s\n",(unsigned long)(sgid|PERMIS),argv[2]); else if(chmdir==1) goto nogchmod; - if(chmdir) + if(0) printf("chmod %c+w %s/.\n",chmdir==1?'g':'a',mailspooldir); nogchmod: return EXIT_SUCCESS; --- smartlist-3.15.orig/debian/lintian-overrides +++ smartlist-3.15/debian/lintian-overrides @@ -0,0 +1,20 @@ +# The following files are meant to be locally modified, and the user +# would get very upset if they are not marked as such. +# They should be somewhere in /etc but moving them right now is not so easy. +# +smartlist: non-etc-file-marked-as-conffile /var/list/.bin/mimencap.local +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/archive.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/confirm-error.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/confirm-help.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/confirm.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/help.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.archive +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.confirm +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.custom +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.main +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.post +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.request +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.rfc822 +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/rc.submit +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/subscribe.txt +smartlist: non-etc-file-marked-as-conffile /var/list/.etc/unsubscribe.txt --- smartlist-3.15.orig/debian/changelog +++ smartlist-3.15/debian/changelog @@ -0,0 +1,475 @@ +smartlist (3.15-22) unstable; urgency=low + + * Fixed several scripts to deal with domain names starting with numbers. + Thanks to Cord Beermann. Closes: #580703. + + -- Santiago Vila Tue, 24 Aug 2010 01:34:14 +0200 + +smartlist (3.15-21) unstable; urgency=low + + * Changes in preinst: + - Removed obsolete code which removes buggy postrm when upgrading from + a release older than 3.10-12 (nearly 13 years ago). + - Removed obsolete warning about hardlinks in .etc when upgrading + from a release older than 3.10.7-2 (more than 10 years ago). + - Trust that base-passwd does its job and do not ask the user to press + Enter if user list does not exist, it has wrong uid or gid, or it has + a wrong home directory. Exit code is still 1 if such thing ever happens. + - Removed backwards compatibility code which creates a backup of rc.init + when upgrading from a release older than 3.10-13 (nearly 13 years ago). + * Changes in postinst: + - Removed obsolete code which creates rc.init from backup copy. + - Removed obsolete code which updates rc.init when upgrading from a + release older than 3.15-2 (8 years ago). + - Removed obsolete code which creates symlinks for confirm-error.txt + and rc.rfc822 for lists created before 3.15-6 (7 years ago). + - Added code which adds listid variable to already existing rc.init. + * Changes in postrm: + - On purge, remove aliases from /etc/aliases unconditionally. + A backup copy is created in either case. + - On purge, do not remove /var/list, as it may contain user data. + * The above changes remove all user interaction. Closes: #553295, #566678. + * Fixed mail-transport-agent dependency. Closes: #495838. + * Added List-Id header in rc.init and rc.submit. + * Modified digest script to add List-* headers to digests as well. + Patch by Cord Beermann. Thanks a lot. Closes: #457415. + * Added lintian overrides for files that may not be moved to /etc easily. + + -- Santiago Vila Mon, 25 Jan 2010 12:32:36 +0100 + +smartlist (3.15-20) unstable; urgency=high + + * Make autoconf.h without cflags, then make everything else as usual, + as we did in procmail. Fixes FTBFS problem on s390. + + -- Santiago Vila Thu, 18 Jan 2007 19:24:12 +0100 + +smartlist (3.15-19) unstable; urgency=medium + + * Updated README.exim for exim4. Renamed to README.exim4. Closes: #375554. + * Updated QuickStart so that it refers to README.exim4. + * Do not chown var/list/.procmailrc in debian/fakeroot-workaround, as it + is a symlink and we don't want to change the owner of the pointed file. + + -- Santiago Vila Thu, 4 Jan 2007 15:39:06 +0100 + +smartlist (3.15-18) unstable; urgency=medium + + * Upgraded to confirm-1.3.5. This should fix a subtle bug in which + email addresses starting with `_' were not handled properly. + For reference, this is CAN-2005-0157. + + -- Santiago Vila Mon, 14 Feb 2005 18:42:46 +0100 + +smartlist (3.15-17) unstable; urgency=low + + * While we are at it, modified postinst so that an empty reject file + is created in the first install if it does not exist, instead of + waiting for the first invocation of `createlist'. + + -- Santiago Vila Mon, 22 Nov 2004 16:11:40 +0100 + +smartlist (3.15-16) unstable; urgency=low + + * Added the procmail -> /usr/bin/procmail symlink to the bin directory. + This should avoid surprises when a list is "created" by restoring the + list directory from a backup instead of using the `createlist' script. + This was first reported by Evgeny Stambulchik as Bug #201693. + + -- Santiago Vila Sun, 21 Nov 2004 16:01:54 +0100 + +smartlist (3.15-15) unstable; urgency=low + + * Fixed spelling of "subcription" to "subscription" everywhere. + * Changing the domain variable in rc.custom does not work unless + listaddr, listreq, listdist and sendmailOPT are redefined as well. + Added commented lines to rc.custom for this (Closes: #233931). + This should eliminate the need to delink rc.init. + + -- Santiago Vila Tue, 10 Aug 2004 17:01:44 +0200 + +smartlist (3.15-14) unstable; urgency=low + + * Upgraded to confirm-1.3.4. + - An exact match is required to determine whether or not a new subscriber + is already subscribed (Closes: #70848). + - Addresses with regexp meta-characters (like +) should now be able to + unsubscribe (Closes: #215342). + - The bug which was fixed in 3.15-11 is now fixed in a slightly + different way (the way Werner fixed it in confirm-1.3.3). + * Reformatted extended description (Closes: #211951). + + -- Santiago Vila Fri, 24 Oct 2003 18:37:38 +0200 + +smartlist (3.15-13) unstable; urgency=low + + * Changed "From: $listreq" to "From: SmartList <$listreq>" to lower the + SpamAssassin score of messages generated by SmartList (Closes: #178353) + * Make sure /usr/share/doc/smartlist/* have sane permissions even + when built using an odd umask (Closes: #204318). + + -- Santiago Vila Sat, 9 Aug 2003 19:40:30 +0200 + +smartlist (3.15-12) unstable; urgency=low + + * Fixed a subtle bug in rc.request which made certain email addresses + unable to subscribe. Patch by Werner Reisberger (Closes: #188686). + + -- Santiago Vila Tue, 15 Apr 2003 16:39:30 +0200 + +smartlist (3.15-11) unstable; urgency=low + + * Addresses containing `+' should now really be able to subscribe. + + -- Santiago Vila Thu, 13 Feb 2003 17:39:24 +0100 + +smartlist (3.15-10) unstable; urgency=low + + * Use a random boundary for multipart/digest messages (Closes: #132405). + This will take effect once the current digest is flushed, to not break + existing digests. + + -- Santiago Vila Sun, 9 Feb 2003 13:36:06 +0100 + +smartlist (3.15-9) unstable; urgency=low + + * Upgraded to confirm-1.3.1. There was a bug in rc.request which made + subscriptions not to work at all (Closes: #171931). + + -- Santiago Vila Sun, 8 Dec 2002 19:12:40 +0100 + +smartlist (3.15-8) unstable; urgency=low + + * Upgraded the confirm suite to version 1.3.0. + * Use /etc/mailname as the default value for the `domain' variable + in rc.init (Closes: #169765). + + -- Santiago Vila Thu, 28 Nov 2002 17:54:38 +0100 + +smartlist (3.15-7) unstable; urgency=low + + * Upgraded the confirm suite to version 1.2.9. This should make + impossible for an user to unsubscribe another one when using cookies. + * README.exim: Added a recipe (adapted from the exim FAQ) to forget + about /etc/aliases when creating new mailing lists. + + -- Santiago Vila Sat, 9 Nov 2002 17:47:54 +0100 + +smartlist (3.15-6) unstable; urgency=low + + * Upgraded the confirm suite to version 1.2.6. This should make most + RFC822-compliant addresses to be accepted (Closes: #151195). + - Deprecated `bin' file: confirm, but it will not be removed yet. + - New `bin' files: confirm_add, confirm_del and extraddr. + - New `etc' files: rc.rfc822 and confirm-error.txt. + - Changed `etc' files: rc.confirm, rc.request and confirm.txt. + - Updated createlist so that it creates symlinks to new `etc' files. + - Modified postinst so that it creates new required symlinks for + already existing lists. + * Removed archive.txt, help.txt, mimencap.local, subscribe.txt + and unsubscribe.txt from the examples directory, since they are + already in the `bin' or `etc' directories. + * Removed README from the binary package, since it does not contain + any useful info not already in the copyright file. + * Removed Manifest and INSTALL as well, since they are misleading. + * Simplified QuickStart and README.confirm. + * Updated copyright file. + * Enhanced README.exim. + + -- Santiago Vila Fri, 18 Oct 2002 22:00:50 +0200 + +smartlist (3.15-5) unstable; urgency=low + + * Added support for DEB_BUILD_OPTIONS. + * Improved spelling of extended description (Closes: #125364). + * Changed Manual so that it explains the moderator_PASSWORD variable. + Note: The rc.custom file already contained some hints about it. + * Changed QuickStart as well. + + -- Santiago Vila Sun, 20 Jan 2002 16:32:02 +0100 + +smartlist (3.15-4) unstable; urgency=high + + * Restored multigram setuid bit. Was lost in 3.15-3 (Closes: #113048). + Breaks sendmail in this way: flist: Can't find ".etc" in "/usr/sbin". + Thanks a lot to Andrea Gelmini for the report. + + -- Santiago Vila Sun, 23 Sep 2001 13:36:50 +0200 + +smartlist (3.15-3) unstable; urgency=medium + + * SmartList/install.sh now hardcodes /usr/sbin/sendmail as the location + of the `sendmail' binary, instead of using procmail to determine that, + which failed under woody when using fakeroot (Closes: #106763). + * Make sure files have the right permissions even when using fakeroot. + * Removed build-dependency on procmail. + + -- Santiago Vila Fri, 27 Jul 2001 14:32:12 +0200 + +smartlist (3.15-2) unstable; urgency=low + + * postinst updates rc.init and adds new variables when upgrading + from older releases. Not doing so breaks list archiving. + * Removed suidmanager support and Conflicts: suidmanager (<< 0.50). + + -- Santiago Vila Fri, 13 Jul 2001 20:20:52 +0200 + +smartlist (3.15-1) unstable; urgency=low + + * New upstream release. + * Updated copyright file. + * Build-Depends: procmail. + * Closes: Bug#59769: Send submitted messages to maintainer if moderators + file is needed but missing. + * Closes: Bug#61443. Added a small paragraph in QuickStart explaining that + the Debian package uses symlinks instead of hardlinks and the rationale. + * Closes: Bug#65112, reported by Davide G. M. Salvetti . + - Automatic cross-posting of messages sent to a digested list over to the + undigested list only worked if the latter contained the letter 'y'. + - When forwarding a message from a digest list to its corresponding + undigested list, remove any Delivered-To: header field containing the name + of the digested list, thus allowing the message forwarded back to go out. + + -- Santiago Vila Sun, 14 Jan 2001 20:02:35 +0100 + +smartlist (3.13-3) unstable; urgency=low + + * Fixed a typo in confirm-help.txt (Closes: Bug#61445). + * Standards-Version: 3.1.1. + + -- Santiago Vila Mon, 14 Aug 2000 13:41:26 +0200 + +smartlist (3.13-2) unstable; urgency=low + + * Removed set -x from `led' (Bug #49463). + + -- Santiago Vila Wed, 10 Nov 1999 11:54:44 +0100 + +smartlist (3.13-1) unstable; urgency=low + + * New upstream release. + * Upgraded to confirm-1.2.3. This makes confirm.*[su][0-9]+ messages + to be filtered out of the list and diverted (Bug #25542). + * Fixed Y2K problem in digest processing (Bug #33579). Volume numbers + for years >= 2000 will be the year itself (not the year minus 1900). + For backwards compatibility, current volume numbers (like `99') will + remain unchanged. + * rc.request: rewrite free email ads (Bugs #34197 and #36065). + + -- Santiago Vila Mon, 19 Apr 1999 14:13:08 +0200 + +smartlist (3.10.7-9) unstable; urgency=low + + * Updated the confirmation suite by Werner Reisberger. + + -- Santiago Vila Tue, 30 Mar 1999 18:19:19 +0200 + +smartlist (3.10.7-8) unstable; urgency=low + + * removelist: Fixed wrong reference to /usr/lib/aliases (Bug #30415). + + -- Santiago Vila Fri, 5 Mar 1999 17:43:39 +0100 + +smartlist (3.10.7-7) frozen unstable; urgency=low + + * donatelist: Reverse the order for chown and chmod (Bug #27253). + * Added README.exim, regarding "Resent-To" (Bug #27150). + + -- Santiago Vila Tue, 24 Nov 1998 17:35:13 +0100 + +smartlist (3.10.7-6) unstable; urgency=low + + * Slightly improved confirm-help.txt (Bug #25582). + * Added a comment about "cc:Mail" in the doc directory. + * rc.custom and rc.init: default minbounce raised to 10. + * rc.request: Updated according to the author's version. + * rc.request: Some Novell GroupWise messages are now directed to /dev/null. + + -- Santiago Vila Sun, 30 Aug 1998 18:04:52 +0200 + +smartlist (3.10.7-5) frozen unstable; urgency=medium + + * Added the confirmation suite by Werner Reisberger (fixes Bug #13661). + * New conffiles in .etc: rc.confirm, confirm.txt and confirm-help.txt. + * Updated .bin/createlist so that it adds symlinks to those files. + * Added a README.confirm explaining how it works. + * Added an important warning about hardlinks created by older + releases of .bin/createlist. + + -- Santiago Vila Fri, 29 May 1998 17:47:56 +0200 + +smartlist (3.10.7-4) frozen unstable; urgency=medium + + * Improved rc.request to catch an unusual queue warning (Bug #22091). + * Fixed multigram.c to reduce load (patch by the author). + * Standards-Version: 2.4.1. + + -- Santiago Vila Wed, 13 May 1998 22:19:32 +0200 + +smartlist (3.10.7-3) unstable; urgency=low + + * Pristine-ish source (only -ish, since the tarball is made + from both procmail and SmartList sources). + * Fixed Bug #17612: "Press any key" --> "Press Enter". + * Removed debstd dependency. + + -- Santiago Vila Sun, 8 Feb 1998 20:13:08 +0100 + +smartlist (3.10.7-2) unstable; urgency=low + + * Patched .bin/createlist to use symlinks wherever possible. + * QuickStart: Added a small note about "trusted users", removed the "exec" + word in aliases file and removed all references to -dist. + * Added mimencap.local as a conffile. + + -- Santiago Vila Thu, 23 Oct 1997 19:11:57 +0200 + +smartlist (3.10.7-1) unstable; urgency=low + + * Upgraded to 3.11pre7. Sources are now GPLed, hurrah! + * Added explicit SEARCHLIBS, to avoid unneeded dependency on libdl. + * Patched .bin/createlist to avoid the use of |exec in /etc/aliases, + which does not work with some MTAs. + * First libc6 release. + + -- Santiago Vila Wed, 18 Jun 1997 21:15:43 +0200 + +smartlist (3.10-16) frozen unstable; urgency=low + + * Rebuilt using latest debmake to avoid a problem with suidmanager. + + -- Santiago Vila Sat, 17 May 1997 20:52:59 +0200 + +smartlist (3.10-15) frozen unstable; urgency=low + + * Source changes for allowing an already running smartlist to work while + a new smartlist package is being built. + + -- Santiago Vila Sat, 3 May 1997 12:42:15 +0200 + +smartlist (3.10-14) unstable; urgency=low + + * Rewritten control file extended description. + * Added a small note about rc.custom and X_COMMAND_PASSWORD in QuickStart. + * debian/rules build target now just "make setid", since procmail has + not to be built. + * Rewritten copyright file. + * initmake unmodified (source). + + -- Santiago Vila Sun, 23 Mar 1997 12:04:34 +0100 + +smartlist (3.10-13) unstable; urgency=low + + * Moved user `list' checking from postinst to preinst. Decreased + verbosity. Now it is quiet if everything is ok. + * Removed .etc/rc.init.dist from conffiles. + * Removed .etc/rc.init from the package, is is created from + .etc/rc.init.dist (not from itself) or restored from a backup file + (which is created by preinst if older version < 3.10-13). + * Recommends: base-passwd 1.3.0. + * Changed "ListMaster" alias by "listman". Of course, this will take + effect only in new installs. + + -- Santiago Vila Sun, 16 Mar 1997 18:12:38 +0100 + +smartlist (3.10-12) unstable; urgency=medium + + * Simplified postinst. No more prompting for "announce" sample list. + * Added QuickStart in /usr/doc/smartlist. + * preinst removes old buggy postrm if old version < 3.10-12. + * list aliases in /etc/aliases are only removed by postrm if purge. + * postrm makes a backup copy of /etc/aliases just in case. + * Removed /var/list/.procmailrc from conffiles and replaced by a symlink. + * Added a small note in debian/rules regarding a problem which + may arise when recompiling this package. + + -- Santiago Vila Mon, 24 Feb 1997 19:15:33 +0100 + +smartlist (3.10-11) unstable; urgency=low + + * Added conffiles. + * Some minor debian/rules changes. + * Removed fix-substvars script, since it's no longer needed with + new libc5_5.4.20. + * Recommends: base-passwd >= 2.0.0-0. Hope it will exists soon :-) + * Added MD5 sums. + + -- Santiago Vila Sat, 22 Feb 1997 16:25:32 +0100 + +smartlist (3.10-10) unstable; urgency=low + + * Now list home directory should be /var/list. + * Changed base-passwd dependency by just a Recommends, allowing the + user to create `list' user by hand if he/she wishes. Reasonable checks + are made to verify that the proper list user does exist. Advise to + upgrade base-passwd if this does not happen. + * Modified debian/rules binary target, now to install it uses a + symlink /var/list -> debian/tmp/var/list. + * purge does only rm -rf /var/list when the user agrees after + being asked. + + -- Santiago Vila Sun, 12 Jan 1997 01:00:54 +0100 + +smartlist (3.10-9) unstable; urgency=low + + * New cleaned up .orig source from original FTP site. + * debian/rules build target may now be invoked without root privileges. + * Moved examples (one of them is automagically generated) from + /var/list/.examples to /usr/doc/smartlist/examples. + * Added the symlink changelog.gz -> HISTORY.gz. + * Moved generated `Manual' from /var/list/.etc to /usr/doc/smartlist. + * Added `fix-substvars' script to depend on libc5 >= 5.4.0. + * Put CFLAGS settings &c in ./Makefile to be inherited by src/Makefile. + * New maintainer. + + -- Santiago Vila Thu, 26 Dec 1996 02:23:22 +0100 + +smartlist (3.10-8) stable unstable; urgency=low + + * Made dependant on base-passwd instead of base + * fixed postinst dependance on homedirectory of user list + * fixed postrm removal of group/userid + + -- Christoph Lameter Tue, 17 Dec 1996 05:28:41 -0800 + +smartlist (3.10-7) frozen unstable; urgency=low + + * Wrong dependency should have depended on base 1.1.0-? and not base 1.2.x + + -- Christoph Lameter Wed, 11 Dec 1996 15:07:00 -0800 + +smartlist (3.10-6) frozen unstable; urgency=low + + * Suidmanager support + * Static UID/GID + + -- Christoph Lameter Thu, 21 Nov 1996 12:46:19 -0800 + +smartlist (3.10-5) unstable; urgency=low + + * Fixed newalias call in postrm + + -- Christoph Lameter Fri, 1 Nov 1996 11:07:49 -0800 + +smartlist (3.10-4) unstable; urgency=low + + * Made postinst not fail on newaliases (smail problem) + + -- Christoph Lameter Fri, 1 Nov 1996 07:00:41 -0800 + +smartlist (3.10-3) unstable; urgency=low + + * bug in usage of hostname in postinst + * debstd : Compressed doc manpages, file locations revised + * Outstanding still: Static uid/gid + + -- Christoph Lameter Tue, 22 Oct 1996 19:15:10 -0700 + +smartlist (3.10-2) unstable; urgency=low + + * Upgrade to standards 2.1.0.0 + * Fixed bug in postinst script with hostname 2.0 + * Questions user if a mailing list should be generated. + * Outstanding issue: Assignment of static uid/gid (No answer from Bruce) + + -- Christoph Lameter Sun, 08 Sep 1996 15:37:25 +0100 --- smartlist-3.15.orig/debian/README.confirm +++ smartlist-3.15/debian/README.confirm @@ -0,0 +1,41 @@ +Confirm for SmartList +--------------------- + +The Debian smartlist package incorporates the confirm add-on written +by Werner Reisberger, which make possible to confirm subscriptions and +unsubscriptions by using "cookies". + +This feature is on by default. + +The variables in rc.custom controlling this feature and their default +values are the following: + +maxcookies = 50 # Maximum number of confirm cookies +require_confirm = yes # Require confirmations on (un)subscriptions +confirm_subscribe = yes # Require confirmations on subscriptions +confirm_unsubscribe = yes # Require confirmations on unsubscriptions +confirm_maintainer # If set to yes, all subscription requests + # will be forwarded to the maintainer(s) + # who have to confirm or ignore the messages. + +Customization: + +- The require_confirm and confirm_(un)subscribe options allows you to turn + the function on and off on a list-by-list basis. maxcookies is the number + of unused cookies (i.e. confirmation numbers) kept in the cookies directory + (if this directory does not exist, it will be created by confirm). + +- confirm_maintainer allows to direct all subscription requests to the + list maintainer(s) for confirmation. This could be used as an easy and + nearly fool proof replacement for the remote X-Command mechanism in case + of subscriptions. The maintainer has only to reply to the confirmation + message and the rest will be done by confirm. + +- confirm.txt is added to the confirmation message sent to those who + request subscriptions. confirm-help.txt is sent to those who send in + confirmation requests that don't match existing cookies. Feel free to + edit. + + +Note: This file is a simplified version of the original "INSTALL" file +by Werner Reisberger. --- smartlist-3.15.orig/debian/QuickStart +++ smartlist-3.15/debian/QuickStart @@ -0,0 +1,41 @@ +SmartList QuickStart +==================== + +* If you are using exim4, read README.exim4 first. + +* If not, make "list" a "trusted user" for your MTA. + +Then, to create mailing lists, you have to do the following: + +*) Execute these commands: + +cd /var/list +su list +.bin/createlist + +*) add these lines to /etc/aliases: + +: "|/var/list/.bin/flist " +-request: "|/var/list/.bin/flist -request" + +where is the name of the list (for example, `debian-user'). + +*) Customize your list by editing /var/list//rc.custom. +In particular, uncomment and define the X_COMMAND_PASSWORD line, so +that you will be the only person allowed to maintain the list remotely. + +*) If your list is moderated, don't forget to define a suitable value +for the moderator_PASSWORD variable in rc.custom. + +*) run newaliases. + +*) zless Manual.gz, this was only a QuickStart :-) + +While reading the manual(s), please note that the Debian version of +smartlist (i.e. this package) by default uses symlinks from the lists +directories to the .etc and .bin directories instead of hardlinks. +This is so that dpkg can update the conffiles in .etc properly when +the package is upgraded without creating a real mess. + + +Santiago Vila --- smartlist-3.15.orig/debian/README.exim4 +++ smartlist-3.15/debian/README.exim4 @@ -0,0 +1,16 @@ +Using SmartList with Exim4 +-------------------------- + +If your MTA is exim4, you should make the following change to the +default configuration before using smartlist: + +*) Edit /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs if your +configuration is split into small files. + +*) Edit /etc/exim4/exim4.conf.template if not. + +*) Add the following line below "MAIN CONFIGURATION SETTINGS" + +SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe + +*) Then run update-exim4.conf. --- smartlist-3.15.orig/debian/fakeroot-workaround +++ smartlist-3.15/debian/fakeroot-workaround @@ -0,0 +1,6 @@ +#!/bin/sh +chown -R list:list debian/tmp/var/list +chown root:list debian/tmp/var/list/.bin/multigram +chmod 4755 debian/tmp/var/list/.bin/multigram +chmod g+s debian/tmp/var/list/.bin +chmod g+s debian/tmp/var/list/.etc --- smartlist-3.15.orig/debian/postinst +++ smartlist-3.15/debian/postinst @@ -0,0 +1,57 @@ +#!/bin/sh +set -e +LISTHOME="/var/list" +LISTID=38 + +if [ ! -f $LISTHOME/.etc/rc.init ]; then + if [ -f /etc/mailname ]; then + HOST="`cat /etc/mailname`" + else + HOST="`hostname --fqdn`" + fi + cat $LISTHOME/.etc/rc.init.dist | sed \ + -e "s/listmaster=/listmaster=listman/g" \ + -e "s/INSERT.YOUR.MAIL.DOMAIN.HERE/$HOST/g" \ + > $LISTHOME/.etc/rc.init + chown list:list $LISTHOME/.etc/rc.init +fi + +if ! grep -q "^# ---SmartList" /etc/aliases; then + +cat << FIN >> /etc/aliases +# ---SmartList Begin +listman: root +# Please, put list aliases here, and don't delete Begin or End lines. +# This way they will removed automatically if you purge this package. +# ---SmartList End +FIN + +set +e +newaliases +set -e + +fi +true + +if dpkg --compare-versions "$2" lt-nl "3.15-21"; then + awk ' + { + if ($0 ~ "^listaddr=") { + print "listid=$list.$domain" + print $0 + } + else { + print $0 + } + }' $LISTHOME/.etc/rc.init > $LISTHOME/.etc/rc.init.updated + mv $LISTHOME/.etc/rc.init.updated $LISTHOME/.etc/rc.init + chown list:list $LISTHOME/.etc/rc.init +fi + +if [ "$1" = "configure" ] && [ "$2" = "" ]; then + if [ ! -f $LISTHOME/.etc/reject ]; then + touch $LISTHOME/.etc/reject + chown list:list $LISTHOME/.etc/reject + chmod 660 $LISTHOME/.etc/reject + fi +fi --- smartlist-3.15.orig/debian/rules +++ smartlist-3.15/debian/rules @@ -0,0 +1,83 @@ +#!/usr/bin/make -f + +package = smartlist +docdir = debian/tmp/usr/share/doc/$(package) + +# Userid of the list user/group +smart = 38 + +smartlistdocs = INTRO FEATURES HISTORY +noexamples = archive.txt help.txt mimencap.local subscribe.txt unsubscribe.txt + +CC = gcc +CFLAGS0 = -g +LDFLAGS0 = +SEARCHLIBS = -lm +STRIP = true + +ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS0 += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + STRIP = strip --remove-section=.comment --remove-section=.note +endif + +build: + $(MAKE) CC="$(CC)" CFLAGS0="" LDFLAGS0="$(LDFLAGS0)" \ + SEARCHLIBS="$(SEARCHLIBS)" autoconf.h + $(MAKE) CC="$(CC)" CFLAGS0="$(CFLAGS0)" LDFLAGS0="$(LDFLAGS0)" \ + SEARCHLIBS="$(SEARCHLIBS)" setid + touch build + +clean: + rm -f build + $(MAKE) realclean SEARCHLIBS="" + rm -f `find . -name "*~"` + rm -rf debian/tmp debian/files* core debian/substvars + +binary-indep: build + +binary-arch: build + rm -rf debian/tmp + install -d debian/tmp/DEBIAN $(docdir)/examples \ + debian/tmp/usr/share/lintian/overrides + cd debian/tmp && install -d var + install -d -o ${smart} -g ${smart} -m 700 debian/tmp/var/list + cd debian && install -m 755 preinst postinst postrm tmp/DEBIAN + cd debian && install -m 644 conffiles tmp/DEBIAN + # Important note: Make sure that all directories in + # `pwd`/debian/tmp/var/list are world-readable. + # Otherwise you may get this strange error: + # "Can't access /var/list, are you sure it's there?" + # I got this error because my home directory was mode 700. + # Simply chmod 755 it and this will work. + CC="$(CC)" CFLAGS0="$(CFLAGS0)" LDFLAGS0="$(LDFLAGS0)" \ + SmartList/install.sh `pwd`/debian/tmp/var/list /var/list + $(STRIP) debian/tmp/var/list/.bin/multigram + mv debian/tmp/var/list/.etc/Manual $(docdir) + cp -p SmartList/examples/* $(docdir)/examples + cd $(docdir)/examples && rm -f $(noexamples) + mv debian/tmp/var/list/.examples/cronlist $(docdir)/examples + rm -rf debian/tmp/var/list/.examples + cd SmartList && cp -p $(smartlistdocs) ../$(docdir) + cd debian && cp -p QuickStart copyright README.confirm ccmail.patch \ + README.exim4 ../$(docdir) + cp -p debian/changelog $(docdir)/changelog.Debian + ln -s HISTORY.gz $(docdir)/changelog.gz + cd $(docdir) && gzip -9 INTRO HISTORY Manual changelog.Debian + chown -R root:root $(docdir) + rm -f debian/tmp/var/list/.procmailrc + ln -s .etc/rc.main debian/tmp/var/list/.procmailrc + rm -f debian/tmp/var/list/.etc/rc.init + ln -s /usr/bin/procmail debian/tmp/var/list/.bin/procmail + cp -p debian/lintian-overrides \ + debian/tmp/usr/share/lintian/overrides/$(package) + dpkg-shlibdeps debian/tmp/var/list/.bin/multigram + sh debian/fakeroot-workaround + chmod -R go=rX $(docdir) + dpkg-gencontrol + dpkg --build debian/tmp .. + +binary: binary-indep binary-arch + +.PHONY: binary binary-arch binary-indep clean --- smartlist-3.15.orig/debian/copyright +++ smartlist-3.15/debian/copyright @@ -0,0 +1,47 @@ +This is the Debian prepackaged version of the "SmartList" mailinglist +management package written by Stephen van den Berg. + +This package was first put together by Christoph Lameter, and it's +currently maintained by Santiago Vila. + +The source for this release was obtained from both files +procmail-3.15.tar.gz and SmartList-3.15.tar.gz in: + +ftp://ftp.procmail.org/pub/procmail + +The confirm suite was written by Werner Reisberger, based on the +previous confirm suite by Michelle Dick. It was obtained from: + +ftp://ftp.pure.ch/pub/smartlist + + +Copyright: + +SmartList mailinglist management package: + +Copyright (C) 1993-1999, S.R. van den Berg, The Netherlands. +Copyright (C) 1999-2000, Philip Guenther, The United States of America + +Confirm add-on: + +Copyright (C) 1997 Michelle Dick +Copyright (C) 1997-2002 Werner Reisberger + + +This package is open source software; you can redistribute it and/or modify +it under the terms of either: +- the GNU General Public License as published by the Free Software Foundation + and can be found in the included file called "../COPYING"; either version 2, + or (at your option) any later version, or +- the "Artistic License" which can be found in the included file called + "../Artistic". + +This package is distributed in the hope that it will be useful, but without +any warranty; without even the implied warranty of merchantability or fitness +for a particular purpose. See either the GNU General Public License or the +Artistic License for more details. + + +On Debian systems, the complete text of the GNU General Public License can +be found in `/usr/share/common-licenses/GPL', and the complete text of the +"Artistic License" can be found in `/usr/share/common-licenses/Artistic'. --- smartlist-3.15.orig/debian/postrm +++ smartlist-3.15/debian/postrm @@ -0,0 +1,22 @@ +#!/bin/sh +set -e +if [ "$1" = "purge" ]; then + echo "Directory /var/list not removed, as it may contain user data." + echo "Trying to remove list aliases from /etc/aliases..." + if ! grep -q "^# ---SmartList End" /etc/aliases; then + echo "Warning: \`# ---SmartList End' line not found in /etc/aliases." + echo "You will have to remove list alias by hand." + echo "Sorry." + echo "" + exit 0 + else + OLDALIASES=/etc/aliases.`date +%Y-%m-%d.%H:%M:%S` + cp -p /etc/aliases $OLDALIASES + cat $OLDALIASES | sed -e '/^# ---SmartList Begin/,/^# ---SmartList End/d' > /etc/aliases + echo "Done. Backup copy of your old /etc/aliases in $OLDALIASES" + echo "" + set +e + newaliases + set -e + fi +fi --- smartlist-3.15.orig/debian/conffiles +++ smartlist-3.15/debian/conffiles @@ -0,0 +1,16 @@ +/var/list/.bin/mimencap.local +/var/list/.etc/archive.txt +/var/list/.etc/confirm-error.txt +/var/list/.etc/confirm-help.txt +/var/list/.etc/confirm.txt +/var/list/.etc/help.txt +/var/list/.etc/rc.archive +/var/list/.etc/rc.confirm +/var/list/.etc/rc.custom +/var/list/.etc/rc.main +/var/list/.etc/rc.post +/var/list/.etc/rc.request +/var/list/.etc/rc.rfc822 +/var/list/.etc/rc.submit +/var/list/.etc/subscribe.txt +/var/list/.etc/unsubscribe.txt --- smartlist-3.15.orig/debian/preinst +++ smartlist-3.15/debian/preinst @@ -0,0 +1,37 @@ +#!/bin/sh +set -e + +LISTHOME="/var/list" +LISTID=38 + +if ! grep -q "^list:" /etc/passwd; then +cat << FIN +Error: User \`list' does not exist. +You would have to upgrade the base-passwd package. + +However, it is possible that the current base-passwd +does not automagically update /etc/passwd entries (yet). +In such case (if you know what you are doing) you may +create a new user with the following specifications: + +login name: list, UID: $LISTID +group name: list, GID: $LISTID +home directory: $LISTHOME + +FIN +exit 1 + +else + if ! grep -q "^list:.*:$LISTID:$LISTID:" /etc/passwd; then + echo "Error: \`list' user has not uid $LISTID and gid $LISTID" + echo "Please, fix this before trying again." + echo "" + exit 1 + fi + if ! grep -q "^list:.*:$LISTID:$LISTID:.*:$LISTHOME:" /etc/passwd; then + echo "Error: \`list' home directory is not $LISTHOME" + echo "Please, fix this before trying again." + echo "" + exit 1 + fi +fi --- smartlist-3.15.orig/debian/ccmail.patch +++ smartlist-3.15/debian/ccmail.patch @@ -0,0 +1,13 @@ +This patch was posted to the SmartList mailing list in April 1997. + +You may need it to avoid some problems with cc:Mail. + +--- rc.submit.orig Fri May 29 17:51:27 1998 ++++ rc.submit Fri Aug 28 18:07:37 1998 +@@ -89,4 +89,6 @@ + (un-?|sub?)scri(be|ption))\>|\ + ^^) ++* -100^0 B ?? ^Message is undeliverable. *$ ++* -100^0 ^Subject:.*cc:Mail.*Undeliverable Message + { + # --- smartlist-3.15.orig/debian/control +++ smartlist-3.15/debian/control @@ -0,0 +1,25 @@ +Source: smartlist +Section: mail +Priority: optional +Maintainer: Santiago Vila +Standards-Version: 3.8.3 + +Package: smartlist +Architecture: any +Depends: ${shlibs:Depends}, procmail, default-mta | mail-transport-agent +Conflicts: suidmanager (<< 0.50) +Recommends: base-passwd (>= 1.3.0) +Description: Versatile and Intelligent List Processor + SmartList is a mailing list manager built on top of the procmail + mail processing package. Some features: + * Enough intelligence to overcome the ignorance of some subscribers + (will direct subscribe and unsubscribe requests away from the regular + list and automatically onto the -request address). + * No hardwired format for (un)subscribe requests (i.e. new subscribers + need not be educated, unsubscribing users do not need to remember any + particular syntax). + * Intelligent automatic removal of addresses from the list that cause too + many bounces. + * Duplicate submissions are eliminated automatically. + * You can set up a mailing list to function as a standalone mail archive + server. --- smartlist-3.15.orig/man/procmailrc.man +++ smartlist-3.15/man/procmailrc.man @@ -273,7 +273,8 @@ .B "LOGNAME, HOME and SHELL" Your (the recipient's) defaults .TP -.B PATH \&@DEFpath@ +.B PATH +\&@DEFpath@ .br (Except during the processing of an @ETCRC@ file, when it will be set to `\&@DEFspath@'.) --- smartlist-3.15.orig/man/formail.man +++ smartlist-3.15/man/formail.man @@ -16,6 +16,9 @@ .RB [ \-@FM_DUPLICATE@ .IR "maxlen idcache" ] .if n .ti +0.5i +.RB [ \-@FM_LOGSUMMARY@ +.IR folder ] +.if n .ti +0.5i .RB [ \-@FM_EXTRACT@ .IR headerfield ] .RB [ \-@FM_EXTRC_KEEP@ @@ -147,6 +150,12 @@ .B Content-Length: field. .TP +.B \-@FM_LOGSUMMARY@ folder +Generate a log summary in the same style as procmail. This includes +the entire "From " line, the Subject: header field, the folder, and +the size of the message in bytes. The mailstat command can be used +to summarize logs in this format. +.TP .B \-@FM_BABYL@ Makes formail assume that it is splitting up a BABYL rmail file. .TP --- smartlist-3.15.orig/man/procmail.man +++ smartlist-3.15/man/procmail.man @@ -704,6 +704,15 @@ .fi .ad .PP +Some mailers (notably exim) do not currently accept the above syntax. +In such case use this instead: +.PP +.na +.nf +|/usr/bin/procmail +.fi +.ad +.PP Procmail can also be invoked to postprocess an already filled system mailbox. This can be useful if you don't want to or can't use a $HOME/@DOT_FORWARD@ file (in which case the following script could @@ -735,7 +744,7 @@ .SS "A sample small @PROCMAILRC@:" .na .nf -PATH=/bin:/usr/bin:@BINDIR@ +PATH=/usr/local/bin:/usr/bin:/bin MAILDIR=$HOME/Mail #you'd better make sure it exists DEFAULT=$MAILDIR/mbox #completely optional LOGFILE=$MAILDIR/from #recommended