| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| |
|
|
|
| |
textarea and file upload widgets. It takes some crafty decoding to
make these widgets work well together (see admin.py).
|
| |
|
|
| |
easier to change. Bump the data version to 17.
|
| |
|
|
|
|
| |
in Mailman.Handlers.HandlerAPI. Still defaults to 'Sendmail' although
'SMTPDirect' might be better (it hasn't had enough eyes on it yet
though).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
PRIVATE_EXTERNAL_ARCHIVER.
Get DEFAULT_HOST_NAME and SMTPHOST from the autoconf calculated @FQDN@
parameter, which is the fully qualified local host name. DEFAULT_URL
uses the @URL@ value. PUBLIC_ARCHIVE_URL and PRIVATE_ARCHIVE_URL both
also have more sensible defaults.
Added SMTPPORT, which defaults to 0 (which lets smtplib use its own
default).
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
locally in ListAdmin.py
ADMINDB_PAGE_TEXT_LIMIT: new variable which controls how big an
excerpt to include in the admindb text field. Current default is 4k.
This number is passed directly to fileobj.read(), so a negative number
means put the whole message in the field (which could slow down the
web page).
|
| |
|
|
|
|
|
|
|
|
|
| |
sendmail-clone) program used by the Handler.Sendmail module. This
might change.
HELDMSG, SUBSCRIPTION: type vars used by the revamped ListAdmin
module.
VERSION: import this from the Version module so it can change w/o
forcing a re-configure.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
which control use of an external archiver for both public and private
archiving. When both variables are false, the internal archiver is
used.
|
| | |
|
| |
|
|
|
|
| |
archivers .txt file is gzip'd on the fly. This turns out to be a
major performance hit, so it's disabled by default. This means that
to update the txt.gz file, you will need to run a cronjob.
|
| | |
|
| |
|
|
|
|
|
|
| |
by putting each bit of information on a separate line. More
importantly, include %(cgiext)s tacked onto the listinfo URL. With
changes about to be checked in, this makes it so regular and digest
footers have the proper URL when --with-cgi-ext configure option is
used.
|
| | |
|
| |
|
|
| |
DATA_FILE_VERSION: Bump to 15 to fix PR#74 (see other checkins)
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
release.
|
| | |
|
| |
|
|
|
| |
Bump DATA_FILE_VERSION to 14 to trigger mlist.passwords dictionary fix
in versions.py
|
| | |
|
| |
|
|
| |
1.0b9
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1 by default. This instructs the MailList.Post() method to use first
the envelope sender (i.e. Unix "From " line) and then the From:
header. However, this breaks member_only_posting on some systems (for
reasons unknown). Set this variable to 0 in mm_cfg.py to use only the
From: header, although this can open the list up to spam.
(MailList.py): in Post(), check USE_ENVELOPE_SENDER to see if
GetEnvelopeSender() should be called.
(FAQ): Add a question refering to USE_ENVELOPE_SENDER.
|
| | |
|
| | |
|
| |
|
|
| |
the Linux popen() bug.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
propagate version string changes to the public (you have to
autoreconf, then reconfigure and reinstall).
Now, VERSION is set directory in Defaults.py.in and the Release.py
script updates that file directly. Now we just need to run
./config.status and do a re-install. I hope this will make things
easier.
I'm also bumping the version to 1.0b8, so I can do a release tomorrow.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
of RCPT TO smtp commands can be given for a single message.
This is necessary to make large lists work with mailers that have a
maximum number of recipients per message (most do).
Defaults.py.in - added SMTP_MAX_RCPTS with default value of 500, which
i believe is conservatively small.
contact_transport - made it chunkify the recipients into chunks of <=
SMTP_MAX_RCPTS and go through the delivery process for each of those
chunks.
This change shouldn't have much effect on smaller lists at all.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
work like unix mail: username portions of addresses are
case-preserved for delivery only. All other address comparisons are
lowercase.
up'd data version in Defaults to 13
** MailList.py: added an __AddMember method that takes an address and
whether or not it is a digest address as args and populates the member
dictionary like this:
if string.lower(addr) == LCDomain(addr):
member_dict[addr] = 0
else:
member_dictp[string.lower(addr)] == LCDomain(addr)
added .GetDeliveryMembers() and .GetDigestDeliveryMembers() methods
for use by posting and digest delivery mechanisms.
changed a nested def portion in Post to use an explicit loop.
**Digester.py: uses .GetDigestDeliveryMembers instead of
.GetDigestMembers().
**Utils.py: address comparisons are lc.
**versions.py: populate the member dicts according to the above
formula.
**Cgi/admin.py: fixed a bug introduced from the first change to using
member dictionaries: all members were showing up as digest members
on the admin membership page. changed a dict.get to dict.has_key to
fix this.
NOTE: this code is tested only insofar as I posted and poked around on
the cgi's a bit, and let lists do the versions code. These changes
should be tested more, but I *have* to go now and wanted to check them
in before someone made it difficult to do so by changing stuff
tomarrow, cause i'm gone all day tomarrow.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fix and one addition. Sorry, i realized that too late.
This change adds another list conifg variable "admin_notify_mchanges",
which is a boolean 0 or 1 and specifies whether or not the list admin
gets notifications of subscriptions and unsubscriptions.
The functions MailList.DeleteMember and MailList.ApprovedAddMember
trigger the delivery if it is turned on for the list or passed in as
an optional argument. This way, it is the duty of programs/code that
do mass subscriptions/unsubscriptions where this notification may not
be appropriate to specify that in the call to .DeleteMember or
.ApprovedAddMember.
There are 2 new templates, adminsubscribeack.txt and
adminunsubscribeack.txt which are used in sending these
notifications.
Defaults.py.in has a variable "DEFAULT_ADMIN_NOTIFY_MCHANGES" which is
set to 0 so that old lists will act the same by default, and the data
version is up'ed to 12. versions.py sets the variable if it's not
already there for a list. The config info for the admin cgi program
for this new variable is set right after the variable for immediate
notifications.
The second change is a fix where ApprovedAddMember was calling a
"self.Save()", which made mass subscribe situiations really far too
slow. I removed the .Save() from there and added it to the more outer
level code in the following places:
bin/convert_list
Mailman/ListAdmin.py
Mailman/MailCommandHandler.py
Mailman/Cgi/admin.py
Note that since AddMember can trigger a call to ApprovedAddMember, all
the places where AddMember is called needed a .Save() added as well.
I need to add a call to .Save() for Mailman/Cgi/subscribe.py as well
and will do that in a moment.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dicts instead of lists, which optimizes Utils.FindMatchingAddresses
and general membership management, especially for large lists.
MailList.py now supplies .GetMembers() and .GetDigestMembers() to
supply the data in list form to anything that needs it that way.
An new install showed this worked fine with some cursory testing of
the cgi's and interactive poking around.
A detailed listing of the changes follows:
Mailman/Defaults.py.in: change data version to 11
Mailman/Digester.py: initvars now instantiates digest_members as {}
instead of []
lines 113-114 and 121-122 now use del
This change implements storing list members and digest members as
dicts instead of lists, which optimizes Utils.FindMatchingAddresses
and general membership management, especially for large lists.
MailList.py now supplies .GetMembers() and .GetDigestMembers() to
supply the data in list form to anything that needs it that way.
Though INSTALL shows up on the changed files section, a diff a few
seconds ago didn't show any differences in that file, so I hope nobody
changed it in the interim.
An new install showed this worked fine with some cursory testing of
the cgi's and interactive poking around.
A detailed listing of the changes follows:
Mailman/Defaults.py.in: change data version to 11
Mailman/Digester.py: initvars now instantiates digest_members as {}
instead of []
lines 113-114 and 121-122 now use del
list.[digest_]member instead of
list.[digest_]members.remove
when figuring who to actually send digests to,
use list.GetDigestMembers() instead of
list.digest_members.
Mailman/HTMLFormatter: now uses list.Get[Digest]Members to get
subscribers, and length of digested subscribers
and regular members
MailCommandHandler, SecurityManager,Cgi/handle_opts, Cgi/options: all
simple replacements of list.[digest_]members with
list.Get[Digest]Members().
Mailman/Cgi/admin.py: mostly simple replacements of
list.[digest_]members with the Get..() methods, however, the
membership management section now works much quicker and changes
digest->nodigest subscriptions via dictionary manipulations.
Mailman/versions.py: updates lists to use dicts and changed
list.[digest_]members to use the list.Get[Digest]Members() methods.
Mailman/Utils.py: added a function "GetPossibleMatchingAddresses"
which when fed an address, returns the list of addresses that "smart"
address matching would match.
changed FindMatchingAddresses(name, list) to use a new signature:
FindMatchingAddresses(name, *dicts), where dicts is a list of
dictionaries keyed by addresses. Just realized that this would better
be FindMatchingAddresses(name, dict, *dicts) so that it enforces
atleast 2 args... I'll make that change in a sec.
All uses of FindMatchingAddresses have been changed to fit the new
arguments.
scott
----:**-F1 cvs30458aaa 1:12PM 0.98 Mail (Text Fill)--L59--32%-------------------------------------------
?
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- '-1' means inhibit all archiving. Yucky, but i don't have time
right now to do the right thing - which will also disrupt those few
who have come to depend on the ARCHIVE_TO_MBOX setting.
The right thing at this point seems to be to have to boolean vars,
ARCHIVE_TO_MBOX and ARCHIVE_TO_PIPERMAIL. If both are zero, no
archiving. (For now these should stay site-wide policy settings,
since the site needs a way to inhibit all or particular archives, eg
for disk space or privacy concerns, and the interaction between the
site wide and prospective list-specific options would be complicated.)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
member_posting_only variable. made it so that old lists not
expecting this behavior will have member_posting_only turned off in
the event that they have posters defined (preserving the old behavior
where defining posters made the list act as if member_posting_only was
set to "no" whether or not it was set as such).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
variable (admin_member_chunksize). this is not yet settable by means
of cgi, but you can set it at an interactive python session. This is
a start on making the membership management part of the admin cgi
scalable for really big lists.
details:
* up'd DATA_FILE_VERSION in Mailman/Defaults.py.in
* replaced ADMIN_MEMBER_CHUNKSIZE with DEFAULT_ADMIN_MEMBER_CHUNKSIZE in
Mailman/Defaults.py.in.
* added a list variable assignment in Mailman.MailList.InitVars
* added code to add the admin_member_chunksize attribute to a list
when versions change in Mailman/versions.py
* made admin.py format members according to
list.admin_member_chunksize instead of mm_cfg.ADMIN_MEMBER_CHUNKSIZE
scott
|
| |
|
|
| |
Misc cleanup.
|
| |
|
|
|
|
| |
entries for pending requests should remain in Pending db before
they're culled. (This way unclaimed ones won't accumulate forever.)
Distributed value is 3 days.
|
| |
|
|
|
|
|
|
| |
use mbox archiving only, to use builtin mailman html archiving only, or to
use both. this is done with the ARCHIVE_TO_MBOX config variable in
Defaults.py. It is set to do both by default to help those that have
an external archiver change to the built in one if they want to.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
whether the listinfo overview will be constrained to only include
those lists that have their web_page_url configuration option found in
the URL by which the page was visited (ie, they're "on the virutal
host"), or whether the listing includes all advertised lists on the
host, regardless of web_page_url setting. The default is activated,
as it was before. I'm going to consult with the developers for input
about whether that should be changed.
I also did some tidying of some other comments, and noted that the
DEFAULT_FILTER_PROG value is not currently used. (We probably could
extend that programmable filtering of list traffic to the list
managers, *if* the filter prog was to be run in a restricted execution
(rexec) environment...)
|