| AbracadabraObject-2.0.3 | PropertyTools-2.1.0 | MailBoxer-3.4.1 | Epoz-2.0.2 | OrderedObjectManager-1.5.4 | NMimeTools-1.0 | HTMLDocument-1.0.3 | iungoCMS |
MailBoxer [3881 downloads]Download current release: MailBoxer-3.4.1.tar.gz (Released: 2010/03/02) [ Hide older releases ] |
Bug reports: maik (dot) jablonski (at) gmail (dot) com |
|
MailBoxer - a mailinglist/newsletter/mailarchive-toolbox for ZOPE Please note: If you plan to upgrade MailBoxer, read the CHANGES.txt and UPDATE.txt before installing MailBoxer. What is a MailBoxer?MailBoxer is a lightweight ZOPE-Product to run mailinglists, newsletters and mailarchives. Its main idea is to give you an extensible framework for building mailinglist-based applications with the power of ZOPE. Out of the box it provides a full featured mailinglist/newsletter/mailarchiving-framework. Features
What do I have to do to use a MailBoxer?Package-RequirementsMailBoxer requires Python 2.4. If you want transactional mail-bulking (read-/write-conflicts in the ZODB can result in rare doubled mails, so people will complain about useless traffic etc.pp.), please install the very nice MaildropHost from Jens Vagelpohl (http://www.dataflake.org/software/maildrophost). MaildropHost uses a seperate worker thread to send out the mails only when the ZODB-transaction was completed successfully. The setup for MaildropHost is easy, please read the README.txt & INSTALL.txt in the MaildropHost-Package. MailBoxer will use MaildropHost per default when it is installed. If you upgrade from previous versions of MailBoxer, please be sure to recreate the MailHost-object(s) used by MailBoxer as MaildropHost(s), so MailBoxer can use the transactional features of MaildropHost. SetupYou need python-script-access on a mail-server to work with MailBoxer. This is generally no problem for nix-users, but maybe one for Windows-users. The following description is nix-specific. If you want to use a MailBoxer, you must first install the gateway-script
foo: "|smtp2zope.py http://ZopeServer:Port/PathTo/IdOfMailBoxer/manage_mailboxer [maxBytes]" PLEASE NOTE: The last element of the URL should be If you only want to use MailBoxer as a mailarchiving-system for
your own mails, you can replace If you want to run an open list (everyone can post to the list, but only
subscribed members will receive the mail), simply check the
unclosed-property of a mailing-list. Another solution is to set up an alias
with If you want to setup bounce-detection, you have to set an alias pointing to the returnpath of the mailinglist (see below): returnpath: "|smtpzope.py http://.../manage_bounceboxer". After adding a MailBoxer (see below) you can send all your messages to
For example: To subscribe to the list send a mail with the subject (not the
body) Here is a configuration exampletestlist: "|smtp2zope.py http://127.0.0.1:8080/discussions/testlist/manage_mailboxer 20000" => Listname mjablonski: "|smtp2zope.py http://www.zfl.uni-bielefeld.de:8888/mjablonski/mailbox/manage_inboxer" => This is an example for storing my personal mail within ZOPE. Id of
MailBoxer = secured: "|smtp2zope.py http://user:passwd@localhost:8080/secured/manage_mailboxer" => Use something like this if you want to create a protected MailBoxer. Please check Security-Tab of MailBoxer and disable "View"-Permission for Anonymous. You can also set the authorization in smtp2zope.py directly. How do I add a MailBoxer?You need the "Add MailHosts"-Permission in order to add a MailBoxer:
What means all the DTML in a MailBoxer?After your MailBoxer is created, you can enter the MailBoxer-Folder. You will find there several DTML-Methods. You can change them for your needs:
If you want to use PageTemplates, you can include the archive-DTML's with something like:
How can I (re-)configure a MailBoxer?You can (re-)configure your MailBoxer with the properties of the MailBoxer-Folder. mailto - Set this to the email-address of your mailinglist. This should
be something like: maillist - In disabled - All adresses who exceeded the sender-loop-limitation will be put here. They aren't allowed to mail to the list anymore, but will still receive the traffic. Useful to prevent misconfigured vacation mailers to kill your server. moderator - Enter email-addresses of list moderators. Only a moderator
has the right to send emails to the list if returnpath - This will be used as returnpath for bouncing emails. verp - If checked, a dynamic return-path based on the current mailto is generated. Please note: if verp is used, the batch-size is set to 1. moderated - If you enable this, only the moderator has the right to send
mails to all the members of the list. You can use this feature for
unclosed - If you check this, everyone (no need to be subscribed) is allowed to mail into the list. plainmail - If you enable this, all mails to the list will be converted to plain-text and all attachments will be stripped of. This is very useful, if you hate HTML-Mails and all kind of useless attachments.. keepdate - If you enable this, all original mail-dates will be kept for the archive. This is only useful if you import existing mail-archives. includesender - If you enable this, the sender of the email receives a copy, regardless if he/she is subscribed to the list. relocate - If you want to relocate a mail, so the real recipient is addressed in the To-Field, check this property. Please note: use this feature only if MaildropHost is installed, because a batch-size of one is used. storage - A traverseable path to the archive-folder. You can use it to rename / localize the "archive" to something like "mailarchive" etc. archived - If you enable this, all mails to the list will be stored in the MailBoxer in date-folder-hierarchies with or without attachemnts. subscribe - Set this to the unsubscribe - Set this to the mtahosts - Here you can enter a space seperated list of IP's of hosts
which are allowed to gateway mails to your list. If you leave this empty, no
security checks will be taken. In order to avoid spamlist - If you want to disclose some addresses from subscribing / mailing to your list, put them here. You can use regular expressions as well to exclude whole domains etc. You can even give some taboo-words to get rid of XXX-advertising-mails and so on. atmask - This string will replace all @ in your mails when viewing mails in the archive. sniplist - Here you can define regular expressions for snipping mails. catalog - Traversable path to the Catalog for indexing mails. xmailer - In order to avoid endless mail-loops, MailBoxer must send an unique identifier in the header of the mail. Leave this untouched, if you don't know what to do. headers - If you enter a regular expression, all matching headers will
be stored in an additional mailHeader-property. For example: If you want
to store the message-id and the original date of the mail, use something
like (without quotes): batchsize - MailBoxer transfers usually only one mail to the smtp-server for all the recipients. The smtp-server is doing all the work (batchsize = 0). If you encounter problems with this configuration (esp. using large lists with more than 500 subscribers), you can set batchsize to a positive integer x, which means, that MailBoxer will deliver chunks of x mails at once. Example: If you set batchsize=50, a mail with 50 recipients is transfered to the smtp-server at once, then the next 50 recipients and so on until no more recipients are left. senderlimit - the number of mails a member is allowed to send in the time-interval determined by senderinterval. senderinterval - the number of seconds for the sender-loop-limitation. Something like 10 Mails (senderlimit) in 600 seconds (senderinterval) is a good starting point (no real person should write more than 10 mails in 10 minutes, I guess...) hashkey - This string is used to generate a encrypted key for subscriptions & unsubscriptions. Usually there is no need to change it. mailqueue - traversable path to a storage for queued mails waiting for approvals by a moderator. getter - Hook for application developers (see below). If you enter a traversable PythonScript, this will determine the property of the MailBoxers dynamically. setter - Opposite of the getter, see below. Some hints for application-developers MailBoxer is a subclass of the folder-class. So you can apply all the methods
for a regular folder, e.g. you can change the properties of your MailBoxer
with MailBoxer provides some hooks for application developers. Please have a look at the source to understand the MailBoxer-chain-reaction. In short:
Known Bugs
Where do I send questions, comments or bug reports?Please send all questions regarding MailBoxer to: maik.jablonski@gmail.com |
CHANGESChanges3.4.1 - added attribute for "Variable Envelope Return Path (VERP)": (see http://en.wikipedia.org/wiki/Variable_envelope_return_path) This way you can create dynamic return-paths to collect bounces which carry the (encoded) bouncing-email-address in the envelope of the bounced mail. - fixed deprectated import in init.py. Thanks to Marcus Schopen. 3.4.0 - fixed performance issue: for historical reasons the batchsize was forced to 1 when a MaildropHost was used. These reasons don't apply anymore (if ever?), so batchsize stays as is. - Sort maillist by domains before sending mails out. This way the communication between mailservers can be reduced a lot. - Removed support for SecureMailHost. The only supported & recommended MailHost-Implementation is MaildropHost. |
|