? This very message came to me with the following header:
Errors-To: mailman-developers-admin(a)python.org
All my bounces come to the list admin address, set in
the admin webpage, in the second field of General Options.
Do you have that set to something, and bounces still come to root?
> 2. Bounces are sent to the poor postmaster instead of a -admin address.
> I'm not entirely certain, but I think an Errors-To: header or something
> like that in all Mailman messages might allow one to distribute that load
> somewhat.
This is a question about CVS.
I'm constantly creating a directory that I want Mailman to go
into, for example /local/src/mailman-pristine, and then
realizing that I can't make CVS actually put Mailman *into* that
directory. I have to use "checkout mailman" to get it, and that
insists on creating a 'mailman' directory. If I move everything
from mailman to ./, things work just fine from then on, but
isn't there any way to make the checkout command use the current dir?
The obvious option, "checkout -d <dir>", gives me an error if I
use '.' or an absolute pathname:
protocol error: is not absolute
Can anyone else do this, or is this just part of Life with CVS?
Well, I had an epiphany over the US Thanksgiving holiday weekend (or
maybe it was a brain aneurism) so I've spent some late nights and some
time stolen from work and come up with a first pass at embedding
Python in Exim.
I imagine that embedding Python in Exim will be interesting to those
folks writing virus scanners or for VERY tight integration of Mailman
with Exim. You can also do all of those things that you can do with
the Perl string expansions.
Note: this code is VERY lightly tested. It compiles on my home
hacked-up RedHat Linux system and works on a couple of simple tests
that I've done, but no real e-mails have passed through this code yet.
I'm tossing this out for public comment on the design and
implementation... It's been a while since I've done a lot of C
coding.
Unfortunately, you must embed Python 2.0. This is because previous
versions of Python used a hacked copy of PCRE as it's regular
expression engine that conflicts with the copy of PCRE in Exim.
Starting in Python 2.0 the default regular expression is a completely
new one called SRE that supports Unicode. The PCRE-based regular
expression engine is still included in Python 2.0 but I get around
that by creating a private copy of the Python library and delete the
offending object modules. You could do that in versions of Python
prior to 2.0 but a lot of the standard library depends on regular
expressions I didn't think that there was much point in trying to make
the embedding work with 1.5.2 or 1.6.
Well, on to the patch itself. The patch is made against Exim v3.20.
After you've patched the source code, you need to set four variables
in the Local/Makefile:
EXIM_PYTHON=python.o
PYTHON_INC=-I/usr/local/include/python2.0
PYTHON_LIB=/usr/local/lib/python2.0/config/libpython2.0.a
PYTHON_EXTRA_LIBS=-lpthread -ldl -lutil
Then build Exim as usual.
There are three runtime directives that control the embedding, all of which
are optional:
python_at_start boolean - force startup of Python interpreter
python_module_paths colon separated list of paths to append to sys.path
python_initial_import colon separated list of modules to import at
interpreter initialization time
There are also two new command line switches -ys and -yd that will
force an immediate startup of Python or delay startup, overriding
python_at_start.
Then you use it:
${python{<module>.<function>}{<arg1>}...}
You must specify the module name and the function name. The named
module will be imported automatically. And currently you must specify
a function that returns a string (I'll look into adding accessing
attributes, methods of classes, and converting non-strings into
strings). There can be up to eight arguments. Each argument will be
expanded by Exim before it's passed to the Python interpreter.
Your python code has access to a module called "exim", which currently
defines two things:
exim.expand_string(s) which calls back to Exim to expand a string and
exim.error which is an exception object used by expand_string
One simple example:
${python{string.upper}{$local_part}}
Error reporting isn't the best right now, I'm going to look into
formatting exceptions and tracebacks for more meaningful error
messages.
Well, I think that's the gist of it. I'll work on patches to the
documentation when this thing becomes more stable. As I said before
I've only lightly tested this... beware!
Comments, criticisms, suggestions, flames welcome...
Jeff
On Tue, 28 Nov 2000 12:26:44 +0100
Heinrich Langos <heinrich(a)wh9.tu-dresden.de> wrote:
> seems like the "The Bat" mailer inserts a counter into the "Re:"
> subject line so that "Re[2]:blah blah" or "Re[3]: more blah blah"
> show up. these are not cought by Mailman/Archiver/HyperArch.py
> and therefore are not sorted into the thread that they belong to.
LotusNotes does (or did, or can do, I'm not sure which) the same
thing.
--
J C Lawrence claw(a)kanga.nu
---------(*) : http://www.kanga.nu/~claw/
--=| A man is as sane as he is dangerous to his environment |=--
heinrich(a)wh9.tu-dresden.de said:
> seems like the "The Bat" mailer inserts a counter into the "Re:"
> subject line so that "Re[2]:blah blah" or "Re[3]: more blah blah" show
> up. these are not cought by Mailman/Archiver/HyperArch.py and
> therefore are not sorted into the thread that they belong to.
What goes around, comes around. This came up in 94/95 or so with the
nn newsreader. After an outcry and much quoting of RFCs nn backed down
and stopped doing it. I suggest someone deal with the author of "The
bat" in the same way.
Nigel.
--
[ - Opinions expressed are personal and may not be shared by VData - ]
[ Nigel Metheringham Nigel.Metheringham(a)VData.co.uk ]
[ Phone: +44 1423 850000 Fax +44 1423 858866 ]
hi there.
seems like the "The Bat" mailer inserts a counter into the "Re:" subject line
so that "Re[2]:blah blah" or "Re[3]: more blah blah" show up.
these are not cought by Mailman/Archiver/HyperArch.py and therefore
are not sorted into the thread that they belong to.
this is the line in Mailman/Archiver/HyperArch.py that seems to be
responsible for it.
--------------------
# Subject lines preceded with 'Re:'
REpat = re.compile( r"\s*RE\s*:\s*", re.IGNORECASE)
--------------------
i don't know python but if the regex is like perl a change like
this should do the job:
-----------------
REpat = re.compile( r"\s*RE\s*(\[\d*\])??\s*:\s*", re.IGNORECASE)
-----------------
as i said i don't have a clue about python and i don't want to test
it right now since i have an active list and i don't want to miss any
mails in the archive ...
i would appreciate if somebody could check it out and tell me if it works.
and tell me if i have to recompile those HyperArch.pyc and HyperArch.pyo files.
cheers and thanx for that nice program.
-heinrich
ps: i run mailman 1.1 but i checked the CVS archive and the regex used
for REpat seems to be the same.
pps: i submitted this as a bug in sourceforge as well .. so if you fix
it you can close it there too.
ppps: i am not subscribed to mailman-developers(a)python.org so please
include me in CC:'s
--
Heinrich Langos <heinrich(a)null.net>
pgp: http://wh9.tu-dresden.de/~heinrich/pub_pgp_key.asc
_________________________________________________________________
|o| The reason we come up with new versions is not to fix bugs. |o|
|o| It's absolutely not. It's the stupidest reason to buy a new |o|
|o| version I ever heard. -- Bill Gates, Microsoft Corporation |o|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I'm please to announce the 2.0 final release of Mailman, the GNU
Mailing List Manager. Mailman is released under the GNU General
Public License (GPL).
Mailman is software to help manage electronic mail discussion lists,
much like Majordomo or Smartmail. Mailman gives each mailing list a
unique web page and allows users to subscribe, unsubscribe, and change
their account options over the web. Even the list manager can
administer his or her list entirely via the web. Mailman has most of
the features that people want in a mailing list management system,
including built-in archiving, mail-to-news gateways, spam filters,
bounce detection, digest delivery, and so on.
Mailman is compatible with most web servers, web browsers, and mail
servers. It should run on any Unix-like operating system. Mailman
requires Python 1.5.2 or better. To install Mailman from source, you
will need a C compiler.
For more information on Mailman, please see the following mirrors:
http://www.list.orghttp://mailman.sourceforge.nethttp://www.gnu.org/software/mailman/mailman.html
(the latter is not yet up to date)
There are email lists (managed by Mailman, of course!) for both
Mailman users and developers. See the web sites above for details.
My thanks to everybody who has helped with this release, especially
those named in the ACKNOWLEDGMENTS file. My thanks also to the
SourceForge crew for their open source project management site.
Couldn't have done it without them.
Enjoy,
-Barry
Ted Montgomery's lists of over and under-rated players on each team.
Note his leaf's picks. Not that I'm making an editorial jab at anyone
on THIS list. nope. Nope me.
<http://www.usatoday.com/sports/hockey/columns/ted.htm>
--
Chuq Von Rospach - Plaidworks Consulting (mailto:chuqui@plaidworks.com)
Apple Mail List Gnome (mailto:chuq@apple.com)
The vet said it was behavioral, but I prefer to think of it as genetic.
It cuts down on the liability -- Get Fuzzy
Generating proper 1153 Digests is very important. MIME "Digests" are not
true digests in the original sense of providing a readable daily omnibus of
list traffic, they are a hack concocted by people who were thrilled with
MIME and thought digests were just another way of concatenating messages
and files. They don't save much space and they don't provide the same
service; most modern mailers capable of "dealing" with them are equally
capable of routing individual messages to folders based on headers, which
is arguably the better solution for people who don't care about bandwidth
or disk space to begin with.