1. LAIKA Open Source
  2. ruby-ezmlm


Clone wiki

ruby-ezmlm / Home

Ruby Ezmlm

This module provides a programmatic interface to ezmlm-idx lists, their archives, and the command line utilities that interact with them.

High-Level Features

The library is intended to provide two sets of functionality: the management and setup of lists, and programmatic access to the message archive.

Manage Lists

  • create/delete a list
  • configure list - options - owner - templates
  • subscribers
  • moderators
  • ''.qmail file config'' (?)
  • ''extra flags for ezmlm binaries'' (?)

Message Archive

  • Fetch a list of subject
  • Fetch a list of threads
  • Fetch a list of authors
  • Fetch message bodies by message id
  • Fetch message headers by message id
  • Fetch various items of archive metadata - last post date - last post author - last post subject - message count
  • ''message searching/full-text indexing''

Design Ideas

I would anticipate using this like so:

require 'pathname'

LISTSDIR = Pathname.new( '/var/qmail/alias/lists' )

Ezmlm.each_list( LISTSDIR ) do |list|

# Create an object that will provide the interface to the 'announcements' list
announcelist = Ezmlm::List.new( LISTSDIR + 'announcements' )

# Create a mailing list and modify the configuration for it
announcelist = Ezmlm::List.create( LISTSDIR + 'announcements' ) do |config|
        config.archived = true
        config.blocked  = true
        config.guard    = true
        config.kill     = true
        config.prefix   = 'ANNOUNCEMENT! '

# Fetch the list of subscribers to the list
subscribers = announcelist.subscribers

# Fetch the list of moderators to the list
moderators = announcelist.moderators

# Fetch the list of the subjects of all posts to the list
subject_idx = announcelist.subject_index
subjects = announcelist.subjects

# Fetch the Hash of message threads and their corresponding messages from the archive
thread_idx = announcelist.thread_index
threads = announcelist.threads

# Fetch the list of every author that has posted to the list and the messages that they've posted
author_index = announcelist.author_index
authors = announcelist.authors

# Fetch a message body by message id
message = announcelist[ 'ppbhckhnjglcocfaaocc' ]
message = announcelist.fetch( 'ppbhckhnjglcocfaaocc' )

# Fetch a message's header by message id
message = announcelist.fetch_header( 'ppbhckhnjglcocfaaocc' )

# Fetch different bits of archive metadata