| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
Pychecker. Removed some unused local variables.
|
| |
|
|
|
|
|
| |
object, pass in the language that the message should be in. This
allows us to get the character set and header encodings right.
Patch by Ben Gertzfield, with modifications by Barry.
|
| |
|
|
|
|
|
|
|
|
|
| |
message object, pass in the language that the message should be in.
This allows us to get the character set and header encodings right.
Note that in the former method, we try to set the language to the
forwarding address, if it is a member of the list. If not, the list's
preferred language will be used.
Patch by Ben Gertzfield, with modifications by Barry.
|
| |
|
|
|
|
|
|
| |
creating the UserNotification message object, pass in the language
that the message should be in. This allows us to get the character
set and header encodings right.
Patch by Ben Gertzfield.
|
| |
|
|
|
|
|
|
| |
When creating the UserNotification message object, pass in the
language that the message should be in. This allows us to get the
character set and header encodings right.
Patch by Ben Gertzfield.
|
| |
|
|
|
|
|
|
| |
creating the UserNotification message object, pass in the language
that the message should be in. This allows us to get the character
set and header encodings right.
Patch by Ben Gertzfield.
|
| |
|
|
|
|
|
| |
charset information can be propagated into the headers, if necessary.
Use the new mimelib/email package's Charset and Header classes.
Patch by Ben Gertzfield. Requires email 0.97.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ourselves. Given the incompatible state of BDB libraries on most
modern Linux distros, and given the sorry state of affairs in Python's
BDB wrappers, this is the only sensible solution.
Essentially, I've kept all the plain text (data/aliases and
data/virtual-mailman) update code, and then we just call postalias and
postmap on the files to get the .db counterparts regenerated. This
should be foolproof since only Postfix itself needs to use consistent
libraries -- attempting to match Postfix and Python would be a
nightmare.
I don't believe we're opening ourselves up to any vulnerabilities by
using os.system() in this case.
Also: all functions which are not meant to be part of the public MTA
interface are now prefixed by a single underscore.
I'm too tired to give detailed changes...
|
| |
|
|
|
|
| |
the plain text aliases and virtual-mailman files to their .db
counterparts. This will be /much/ less fragile than direct BerkeleyDB
hacking. See accompanying change to Postfix.py.
|
| |
|
|
|
|
|
| |
member clears the bounce and delivery status information for a
member.
test_bounce_info(): Make sure that the case invariants are upheld.
|
| |
|
|
|
| |
operating case insensitively w.r.t. the member key. Coerce the member
argument to lower case before it's used.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
GetLangSelectBox() call for the <mm-list-langs> replacement, otherwise
a user's option page will always reset the user's language to the
list's preferred language.
|
| |
|
|
|
| |
delivery_status attributes when deleting a member. Don't call
setBounceInfo() directly.
|
| |
|
|
|
|
| |
removeMember() -- which is eventually called by ApprovedDeleteMember()
should to any necessary cleanup of the bounce info. Found by Dan
Mick.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
catalogs and .mo files generated.
Spanish and German translators take note: there were a bunch of
duplicate entries which I had to manually delete before msgfmt would
complete successfully. Please verify!
|
| |
|
|
|
|
|
|
| |
catalogs and .mo files generated.
Spanish and German translators take note: there were a bunch of
duplicate entries which I had to manually delete before msgfmt would
complete successfully. Please verify!
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- When Errors.EmailAddressError is raised, the translatable string in
the print statement was illegal.
- If an email address showed up twice in the sync file, a dry-run
would have shown that address to be addable, even if it was already
a member of the list.
- If there were legacy illegal address in the user database
(e.g. aperson@@dom.ain), then ApprovedDeleteMember() would fail on
it with an MMNoSuchUserError, because parseaddr() in the former
method would return some bogus address like "aperson@". In that
case, use a lower level routine to delete the bogus record from the
member database.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
unnecessary stuff on the screen
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
- Background was made grey to (I think) improve contrast
- gif -> png
|
| | |
|
| |
|
|
| |
directory.
|
| |
|
|
| |
refusal messages. Use the same default as in __handlepost().
|
| | |
|
| |
|
|
|
|
|
| |
Here, we're looking for members who are not yet disabled, but who have
a bounce score >= the threshold. This can happen if the list owner
lowers the threshold. There's no sense in waiting until another
bounce is received on the member before we disable them.
|
| |
|
|
|
| |
Added a --all / -a flag which says to run the callable against every
list in the system. Must be used w/ -r / --run.
|
| |
|
|
| |
catch it and return false.
|
| | |
|
| |
|
|
|
|
| |
members with bounce info. This overlaps w/ getDeliveryStatusMembers()
since it will return members who have bounced, but have not yet
reached the disable threshold.
|
| |
|
|
|
| |
sitedir to sys.path instead of appending it. This means our email
package will override the one in Python 2.2.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
administrator has adjusted the threshold (inspired by Dan Mick).
Specifically,
ZEROHOUR_PLUSONEDAY: New constant that is supposed to represent the
day containing the first midnight after the epoch. We'll add (0,)*6
to this tuple to get a value appropriate for time.mktime().
_BounceInfo.reset(): New method to encapsulate resetting stale bounce
scores. Also used in the constructor.
registerBounce(): Implement refined rules for setting and checking the
bounce score. As described in a message to mailman-developers:
1) are we a member? No, return
2) do we have previous bounces? No, register it, skip to step 7
3) is the member disabled? yes, return
4) is the bounce info from today? yes, don't increment, skip to step 7
5) is the info stale? yes, reset it and skip to step 7
6) increment score for today's bounce
7) is score > threshold? yes, disable 'em.
disableBouncingMember(): Refactor since cron/disabled can call this
method too now.
__sendAdminBounceNotice(): msg argument can now be a Message instance
or a string. Wrap in a MIME* instance as appropriate.
|
| | |
|
| |
|
|
| |
"raise NotImplemented".
|
| | |
|
| | |
|
| | |
|