Git Product home page Git Product logo

opencore-listen's Introduction

Listen

Listen is a mailing list management application that integrates into the Plone Content Management System. It is based on the venerable MailBoxer Zope Product by Maik Jablonski, and offers most of the features of that product.

Features

Key features include:

  • Easily create mailing lists through the Plone interface.
  • Lists may be moderated or unmoderated, open to all or restricted to subscribers only.
  • Optional archiving of mail with or without attachments.
  • Fully threaded archive display, including a forum-like view.
  • Portal members and visitors can easily subscribe/unsubscribe themselves through the Plone interface.
  • Each list maintains its own catalog featuring a full text index of messages.
  • Members can make responses with quotation to archived messages through the Plone interface.
  • Automatic masking of member email addresses with links to author pages.
  • Provides a registry of lists on a Zope instance allowing lists to be added without any additional SMTP server configuration.
  • Performs well due to use of simple Zope types and z3/Five techniques. Capable of higher mail volume that MailBoxer itself, and much greater volume than Archetypes-based mailing list systems.

This product makes heavy use of Zope3 features within Plone via Five; it uses views, adapters, Zope3 schemas (add and edit views), local utilities, factories, and events. It is not an ideally componentized application because of its dependence on MailBoxer, which is used as the base class for the primary content type, and provides more logic/functionality than an ideal content class would. Hopefully, those parts which make heavy use of Five technologies can serve as a helpful example for those intending to use Five in their own products.

Examples

This add-on can be seen in action at the following sites:

Requirements

Highly Recommended

MaildropHost 1.13+ (http://www.dataflake.org/software/maildrophost/)

Any site that expects a reasonable amount of mail traffic (incoming and especially outgoing) needs to use this. It well not send duplicate mails when a conflict error forces a retry, and it increases potential incoming mail volume tremendously by not blocking on sending mail.

Translations

This product has been translated into:

  • Spanish
  • French
  • Portuguese

Documentation

Full documentation for end users can be found in the "docs" folder. It is also available online at https://www.coactivate.org/projects/listen/project-home

Installation and setup

Place this product folder in your Zope instance's Products folder and restart Zope. Go to the portal_quickinstaller in the ZMI and install the product. Now you may create mailing lists by using the add menu in any container in Plone, or (preferably) using the add view for the Mailing List class which can be accessed with a url of the following form:

http://mysite.example.com/my_portal/path/+/listen.add_mailinglist

Hopefully, Five add forms will be integrated into the Plone ui in the near future so that the more correct way is also the easy way to add a list.

Your SMTP server must be configured to route mail to the mailing list(s). For a simple single list instance the easiest way to do this is the standard MailBoxer way:

  1. Copy the smtp2zope.py script from your MailBoxer folder to the relevant SMTP server (if you are using sendmail with smrsh, then you need to place/link it in a folder accessible to smrsh; for postfix place/link it in /etc/postfix).
  2. Add an alias for the mailing list of the form:
[email protected]    "|/etc/smrsh/smtp2zope.py http://my_site.example.com/path/to/list/manage_mailboxer 200000"

for postfix:

my_list:      "|/etc/postfix/smtp2zope.py http://my_site.example.com/path/to/list/manage_mailboxer 200000"

Where the number at the end restricts the maximum size of a message intended for the list, this is optional, but highly recommended.

If you would like to be able to setup arbitrary lists on your server and have them automatically handled by your SMTP server the setup is slightly more involved and dependent on the particulars of your SMTP server. The end result is that you need to map a catch-all domain to a similar command which uses a tool in your Zope instance to decide where to route the mail. In sendmail the process is as follows:

  1. Same as step 1 above.
  2. Add an entry to your virtusertable to create the catch-all domain:
@lists.my_domain.com      my_zope_lists

3) Add an alias pointing to the script with the URL for the global list lookup utility:

my_zope_lists   "|/etc/smrsh/smtp2zope.py http://my_site.example.com/send_listen_mail 200000"

That should be about it. Site members and anonymous users can subscribe themselves to the list, the list creator and/or site manager can choose whether the list is moderated or closed and how it is archived.

Qmail

If you are using Qmail instead of postfix or sendmail, setting up the aliases is slightly different. You need to create a file .qmail-mylist, where mylist is the name of the list (i.e. [email protected]).

So on my system (which serves multiple domains), I had to create the file in this directory: /var/qmail/mailnames/example.com Depending on your setup, it might go somewhere else (i.e. /var/qmail/alias)

The contents of the file look like this:

/etc/smrsh/smtp2zope.py http://my_site.example.com/send_listen_mail 200000

Unlike with postfix/sendmail, you don't need to run a command 'newaliases'. The new alias should be active immediately after you create the file.

Migration

The following applies to listen lists created using instances of listen older than 3/21/2006:

Due to issues with unicode/ASCII and message thread handling a migration method was introduced for listen lists which will rebuild the archive catalog and fix improperly stored strings in archived mail. There are two steps involved in migrating your lists and fixing these issues, first go to the url for your search catalog http://site/path/to/list/utilities/ISearchableArchive/manage_main, and delete the existing 'mail_lexicon' and add a new ZCTextIndex Lexicon with:

id: mail_lexicon
Case Normalizer: True
Stop Words: Don't remove stop words
Word Splitter: Unicode Whitespace splitter

Then go to the following URL to reindex your archive http://site/path/to/list/fixupMessages

Contribute

License

The project is licensed under the GPLv2.

Enjoy!

Alec Mitchell <[email protected]>

opencore-listen's People

Contributors

ejucovy avatar macagua avatar slinkp avatar

Stargazers

 avatar

Watchers

 avatar  avatar

opencore-listen's Issues

No way to reimport subscribers from CSV export

Listen provides a MailingListSubscriberImport object which is intended to reimport subscribers previously exported into a subscribers.csv file. However, the provided object does not actually parse the exported file, and doesn't handle reimport of allowed senders. Specifically:

  1. The documentation around the code assumes an outdated subscribers.csv format with only three columns per row. The current format contains four.
  2. The code itself does not consume CSV files. It merely consumes email addresses so the caller is responsible for parsing the CSV file.
  3. The code does not handle the distinction between subscribers and allowed senders during import. It seems to assume that all entries from subscribers.csv represent full-fledged list subscribers.

These deficiencies mean that the provided object is useless for reimporting exported content.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.