CHANGES 3.0
Changes
Version 3.1:
- added a authentification stage for all moderated mails, so noone except
a moderator can relay a mail onto a moderated list. Every mail to a
moderated list is queued and will result in a mail sent to the
moderators with "pin-signed" links to approve or discard the mail. Only
by clicking this link a mail can be relayed to the list. The internet is
a nasty place to play with mails...
- refactored mail_search as include to index_html so an integration in
ZPT should be much easier now (no more reference to
standard_html_header/footer in mail_search / mail_index).
- removed creation of mail_handler as default-policy. Most people won't
need it, people who need it, can create it. It is still called as hook
if it exists. But less is sometimes more...
- fixed some minor bugs regarding the character-decoding in
mime_decode_header; added an expression for unfolding headers.
- added check for empty return-path to checkMail. Most "autogenerated"
mails should have an empty return-path, so dropping them is a good idea
to avoid loops, etc. Thanks to Richard Waid from iOpen!
- made some fixes to MailBoxerTemplates: all lookups to the
mail-dictionary are now handled by get.
- made some log-messages a little bit more usable by adding the raised
exceptions. Moved log-messages to log-levels (INFO, PROBLEM, ERROR).
- truncated pin to only 8 digests, so urls and subject-lines won't get too
long.
- fixed bug: There were some changes in Zope 2.7 security machinery, so
the mail_template would need authorization in due of the ZopeFind.
Replaced ZopeFind with simple objectValues('File'). If you use other
content-types, you should adapt your templates to the correct meta_type
for storing attachements.
Version 3.0:
New Features
- added sender-loop-limitation; you can now determine
how many mails a sender (senderlimit) can send in x
seconds (senderinterval), before the sender will be put
onto a disabled-list. This is very useful to prevent a
denial-of-service caused by hosed vacation mailers or
other endless-loop-situations. Thanks to Richard Waid
for his ideas and patches!!!
- added mail-serialisation for smtp2zope-gateway. This
will avoid Zope-Read-Conflicts in heavy-duty-setups. Thanks
to Richard Waid for his nice work!!! Every post will lock the
smtp2zope-gateway until the request is finished. LockFile-code
is borrowed from Mailman. Thanks to all the Mailman-guys...:)
- added getter/setter-property as hook for getting/setting
dynamic property values from a PythonScript; added getValueFor
as a universal wrapper for property/getter-values; adapted
all dtml-templates.
- added unclosed-property: You can now declare a list as 'unclosed',
so everyone can mail into a list without being subscribed.
- added returnpath-property. No you can set a returnpath for mails
independent of the first moderator in the moderator-list.
- added storage-property as a traversed path to archive-folder. Now
you can set up your own archive with an customized id if you want to.
- added searchMailBoxerArchive: Now all replies to a mail will
be skipped on the search-page.
- added new wrappers: addMailBoxerFolder, addMailBoxerMail,
addMailBoxerFile, so you can easily subclass MailBoxer for
customized environments like CMF/Plone/etc.pp.
- added method archiveFolders: used to retrieve all
folderish elements from an archive. Maybe useful if someone uses
other containers than folders to store MailBoxer-Mails.
Changes of existing features
- synced bounce-detectors with current MailMan-Bouncers (only the
DSN-Bouncer seems to have changed).
- catalog-property is now evaluated as a traversable path to
a Catalog. You can now use a catalog in another folder for
cataloging mails.
- smtphost is now optional when adding a MailBoxer. If no smtphost
is given, no MailHost will be created.
- improved / changed semantics of moderated-lists:
only subscribed members will generate a moderation-request if a list
is closed. Unclose a list if you want the old semantics (every mail to
a moderated list generates a moderation request).
- refactored all TTW-callable-manage_*boxer into a public and private
part (manage_requestBoxer calls requestMail for example) to protect
all public available methods with a security check. Removed
TTW-callable manage_checkBoxer (it's now checkMail) due to
security reasons.
- refactored manage_frameBoxer (no need for a public interface at all)
into protected method processMail. Removed redundant security checks
(manage_checkBoxer was called several times without a need),
which will result in less server-load if you run many lists / mails
with MailBoxer.
- the hashkey for validation subscription-requests is now stored
as a property. Many people restarting their servers over night,
so regenerating this hashkey with every restart is bad,
because of regularly outdated subscription-tickets.
- made the messages in mail_subscribe/unsubscribe/reply/moderator
more verbose. Thanks to Jean Jordaan for his patches!!!
- added Reply-To-Header to mail_moderator, so a moderators reply
is redirected to the list. Thanks to Jean Jordaan for his patches!!!
Removed Reply-To from awaiting-and-error-replies to avoid
useless bounces in due to spam.
- removed list-archive-header from mail_header.
Bug fixes
- fixed bug: MailBoxer could loose some emails, if the Zope-Server
wasn't available. Added improved exception-handling for
smtp2zope-gateway. Switched from urllib to urllib2 to have
a better control over server-responses. Thanks to Richard Waid
for his initial ideas and patches!!!
- fixed bug: mail_reply could create a mailloop under some
wired circumstances.
- fixed bug: None/corrupted/doubled entries in maillist were sent
to smtp-server which resulted in minor error-messages in the
maillog-file.
- added some checks in previousObject / nextObject to get only
folderish objects from the archive.
- "Waiting for approval"-mails were redirected to the list, which
could lead to infinite loops when spam-bounces arrived. Fixed
template.
Cleanups
- cleaned up archive-templates.
- cleared up __init__; all properties will now be set directly
in manage_addMailBoxer.
Removed
- removed mail_in/out_members-hook; please use the universal
getter-hook instead.
- removed ConvertArchive.py: People updating from MailBoxer 1.x
(very, very old) should take this script from a previous release.
Version 3.1:
- added a authentification stage for all moderated mails, so noone except
a moderator can relay a mail onto a moderated list. Every mail to a
moderated list is queued and will result in a mail sent to the
moderators with "pin-signed" links to approve or discard the mail. Only
by clicking this link a mail can be relayed to the list. The internet is
a nasty place to play with mails...
- refactored mail_search as include to index_html so an integration in
ZPT should be much easier now (no more reference to
standard_html_header/footer in mail_search / mail_index).
- removed creation of mail_handler as default-policy. Most people won't
need it, people who need it, can create it. It is still called as hook
if it exists. But less is sometimes more...
- fixed some minor bugs regarding the character-decoding in
mime_decode_header; added an expression for unfolding headers.
- added check for empty return-path to checkMail. Most "autogenerated"
mails should have an empty return-path, so dropping them is a good idea
to avoid loops, etc. Thanks to Richard Waid from iOpen!
- made some fixes to MailBoxerTemplates: all lookups to the
mail-dictionary are now handled by get.
- made some log-messages a little bit more usable by adding the raised
exceptions. Moved log-messages to log-levels (INFO, PROBLEM, ERROR).
- truncated pin to only 8 digests, so urls and subject-lines won't get too
long.
- fixed bug: There were some changes in Zope 2.7 security machinery, so
the mail_template would need authorization in due of the ZopeFind.
Replaced ZopeFind with simple objectValues('File'). If you use other
content-types, you should adapt your templates to the correct meta_type
for storing attachements.
Version 3.0:
New Features
- added sender-loop-limitation; you can now determine
how many mails a sender (senderlimit) can send in x
seconds (senderinterval), before the sender will be put
onto a disabled-list. This is very useful to prevent a
denial-of-service caused by hosed vacation mailers or
other endless-loop-situations. Thanks to Richard Waid
for his ideas and patches!!!
- added mail-serialisation for smtp2zope-gateway. This
will avoid Zope-Read-Conflicts in heavy-duty-setups. Thanks
to Richard Waid for his nice work!!! Every post will lock the
smtp2zope-gateway until the request is finished. LockFile-code
is borrowed from Mailman. Thanks to all the Mailman-guys...:)
- added getter/setter-property as hook for getting/setting
dynamic property values from a PythonScript; added getValueFor
as a universal wrapper for property/getter-values; adapted
all dtml-templates.
- added unclosed-property: You can now declare a list as 'unclosed',
so everyone can mail into a list without being subscribed.
- added returnpath-property. No you can set a returnpath for mails
independent of the first moderator in the moderator-list.
- added storage-property as a traversed path to archive-folder. Now
you can set up your own archive with an customized id if you want to.
- added searchMailBoxerArchive: Now all replies to a mail will
be skipped on the search-page.
- added new wrappers: addMailBoxerFolder, addMailBoxerMail,
addMailBoxerFile, so you can easily subclass MailBoxer for
customized environments like CMF/Plone/etc.pp.
- added method archiveFolders: used to retrieve all
folderish elements from an archive. Maybe useful if someone uses
other containers than folders to store MailBoxer-Mails.
Changes of existing features
- synced bounce-detectors with current MailMan-Bouncers (only the
DSN-Bouncer seems to have changed).
- catalog-property is now evaluated as a traversable path to
a Catalog. You can now use a catalog in another folder for
cataloging mails.
- smtphost is now optional when adding a MailBoxer. If no smtphost
is given, no MailHost will be created.
- improved / changed semantics of moderated-lists:
only subscribed members will generate a moderation-request if a list
is closed. Unclose a list if you want the old semantics (every mail to
a moderated list generates a moderation request).
- refactored all TTW-callable-manage_*boxer into a public and private
part (manage_requestBoxer calls requestMail for example) to protect
all public available methods with a security check. Removed
TTW-callable manage_checkBoxer (it's now checkMail) due to
security reasons.
- refactored manage_frameBoxer (no need for a public interface at all)
into protected method processMail. Removed redundant security checks
(manage_checkBoxer was called several times without a need),
which will result in less server-load if you run many lists / mails
with MailBoxer.
- the hashkey for validation subscription-requests is now stored
as a property. Many people restarting their servers over night,
so regenerating this hashkey with every restart is bad,
because of regularly outdated subscription-tickets.
- made the messages in mail_subscribe/unsubscribe/reply/moderator
more verbose. Thanks to Jean Jordaan for his patches!!!
- added Reply-To-Header to mail_moderator, so a moderators reply
is redirected to the list. Thanks to Jean Jordaan for his patches!!!
Removed Reply-To from awaiting-and-error-replies to avoid
useless bounces in due to spam.
- removed list-archive-header from mail_header.
Bug fixes
- fixed bug: MailBoxer could loose some emails, if the Zope-Server
wasn't available. Added improved exception-handling for
smtp2zope-gateway. Switched from urllib to urllib2 to have
a better control over server-responses. Thanks to Richard Waid
for his initial ideas and patches!!!
- fixed bug: mail_reply could create a mailloop under some
wired circumstances.
- fixed bug: None/corrupted/doubled entries in maillist were sent
to smtp-server which resulted in minor error-messages in the
maillog-file.
- added some checks in previousObject / nextObject to get only
folderish objects from the archive.
- "Waiting for approval"-mails were redirected to the list, which
could lead to infinite loops when spam-bounces arrived. Fixed
template.
Cleanups
- cleaned up archive-templates.
- cleared up __init__; all properties will now be set directly
in manage_addMailBoxer.
Removed
- removed mail_in/out_members-hook; please use the universal
getter-hook instead.
- removed ConvertArchive.py: People updating from MailBoxer 1.x
(very, very old) should take this script from a previous release.