Provided by: enemies-of-carlotta_1.2.6-4_all bug

NAME

       enemies-of-carlotta - a simple mailing list manager

SYNOPSIS

       enemies-of-carlotta [options] [addresses]

DESCRIPTION

       enemies-of-carlotta  is  a  simple mailing list manager.  If you don't know what a mailing
       list manager is, you should learn what they are before trying to use one.  A  manual  page
       is unfortunately too short to explain it.

       Enemies  of  Carlotta  keeps  all  data  about  the  lists  in  the ~/.enemies-of-carlotta
       directory.  It will be created automatically when you create your first list.  You need to
       arrange  manually  for  the mails to be processed by the list manager.  The details differ
       from mail system to another.  For QMail and Postfix, see below.

       Each list has one or more owners, who also moderate subscriptions or moderate some or  all
       postings.   On  completely unmoderated lists the list owners are responsible for answering
       questions about the list.  On completely  moderated  lists,  they  have  to  approve  each
       message  before  it  is  sent  to  the  list.   On  lists with posting=auto, messages from
       subscribers are sent automatically to the list, and the moderators  have  to  approve  the
       rest.

OPTIONS

       --name=foo@example.com
              Specify  the  list  the  command  is  to operate on.  Most of the remaining options
              require you to set the list name with this option.  With the  --edit,  --subscribe,
              --unsubscribe,  and  --list  options, the name can be abbreviated to by leaving out
              the @ sign and domain.

       --create
              Create a new list.  You must specify at least one owner with --owner.

       --owner=address
              Specify a list owner when creating or editing a list.

       --moderator=address
              Specificy a list moderator when creating or editing a list.

       --language=language-code
              Set the language code used for looking up template files.  The code should be empty
              (the default, meaning English), or a two-letter code such as fi or es.

       --cleaning-woman
              Deal   with   bouncing   addresses   and   do   other   cleanup.    You   must  run
              enemies-of-carlotta --cleaning-woman periodically, such as once per hour.  It  will
              clean up all your lists.

       --destroy
              Destroy the list.

       --edit Modify the list configuration.

       --subscription=type
              When  creating  a  list,  set its subscription mode to free or moderated.  Use with
              --edit, or --create.

       --posting=type
              When creating a list, set its posting mode to free (anyone can  post),  auto  (only
              subscribers  can  post,  mails from others need to be moderated), or moderated (all
              mails are moderated).  Use with --edit, or --create.

       --archived=yes-or-no
              Should list messages be archived to the archive-box directory in the list directory
              under the ~/.enemies-of-carlotta directory.  Use yes or no.

       --mail-on-subscription-changes=yes-or-no
              Should  the list owners be notified when someone subscribes to or unsubscribes from
              the list?  Use yes or no.  Default is no.

       --mail-on-forced-unsubscription=yes-or-no
              Should list owners be notified when someone is forcibly dropped from the  list  due
              to too much bouncing?  Use yes or no.  Default is no.

       --ignore-bounce=yes-or-no
              Should bounces be ignored?  Use yes or no.  Default is no.

       --list List the subscribers of a list.

       --subscribe
              Add  subscribers  to  a  list.   The  non-option  arguments are the addresses to be
              subscribed.  Note  that  addresses  added  this  way  won't  be  sent  confirmation
              requests.

       --unsubscribe
              Remove  subscribers  from a list.  The non-option arguments are the addresses to be
              unsubscribed.  Note that addresses removed this  way  won't  be  sent  confirmation
              requests.

       --incoming
              Deal  with  an  incoming  message  in the standard input.  The SMTP envelope sender
              address must be given in the SENDER environment variable,  and  the  SMTP  envelope
              recipient  address  in  the  RECIPIENT environment variable.  (QMail and Postfix do
              this automatically.)

       --skip-prefix=string
              Before analyzing the recipient address to see which list it refers,  remove  string
              from  its  beginning.   This helps deal with QMail and Postfix virtual domains, see
              above.

       --domain=domain.name
              Before analyzing the recipient address to see which list  it  refers,  replace  the
              domain name part with domain.name.  This helps deal with Postfix virtual domains.

       --is-list
              Does  the  address specified with --name refer to a valid list?  This sets the exit
              code to zero (success) if it does, or one (failure) if it does not.

       --sendmail=pathname
              Use pathname instead of /usr/sbin/sendmail for sending  mail  via  a  command  line
              interface.  Note that the command must obey the sendmail command line interface.

       --smtp-server=hostname
              Send  mail  using  the  SMTP  server  at  hostname  (port  25).  The server must be
              configured to allow the list host to relay mail through it.  Note  that  a  command
              line  interface  is  used  by  default;  SMTP  sending is used only if you use this
              option.

       --qmqp-server=hostname
              Send mail using the QMQP server  at  hostname  (port  628).   The  server  must  be
              configured  to  allow  the list host to relay mail through it.  Note that a command
              line interface is used by default; QMQP sending  is  used  only  if  you  use  this
              option.

       --moderate
              Force  an  incoming  message  to  be moderated, even if it is going to a list where
              posting is free.  This can be used for spam filtering: you pipe  incoming  messages
              through  whatever  spam filter you choose to use and if the mssage looks like spam,
              you ask it to be moderated by a human.

       --post Force an incoming message to be posted, even if it is going to a list where posting
              is  moderated.  This can be used when there is an external check for whether a mail
              is acceptable to the list, e.g., by checking digital signatures.

       --quiet
              By default, debugging log messages are sent to the standard  error  output  stream.
              With this option, they aren't.

       --sender=foo@example.com

       --recipient=foo@example.com
              These  two  options  are  used  with  --incoming  and  --is-list  to  override  the
              environment variables SENDER and RECIPIENT, respectively.

       --get  Get the values of one or more configuration variables.  The name of  the  variables
              are  given  on  the  command  line  after  the options.  Each value is printed on a
              separate line.

       --set  Set the values of one or more configuration variables.  The names  and  values  are
              given  on the command line after the options and separated by an equals sign ("=").
              For  example,  the  following  would  set  the  language  of  a  list  to  Finnish:
              enemies-of-carlotta --name=foo@bar --set language=fi

       --version
              Print out the version of the program.

       --show-lists
              List the lists enemies-of-carlotta knows about.

CONFIGURATION

       Each  list is represented by a directory, named after the list, in ~/.enemies-of-carlotta.
       That directory contains several files and directories, described below.  In general, it is
       not  necessary  to  touch  these at all.  However, some esoteric configuration can only be
       done by hand editing of the list configuration file.

       config The list configuration file.  Contents are described below.

       subscribers
              Subscriber database.  Each line contains a subscriber group, with  the  first  five
              space delimited fields being group identifier, status, timestamp for when the group
              was created, timestamp for the bounce that made  it  switch  from  status  'ok'  to
              'bounced', and the bounce identifier.

       archive-box
              Archived messages.

       bounce-box
              Bounce messages groups not in state 'ok'.

       headers-to-add
              These  headers  are  added  to  the mails sent to the list.  They are copied to the
              beginning of the existing headers exactly as they  are  in  the  file,  after  list
              headers   ("List-ID"   and   such)   have   been   added  and  those  mentioned  in
              headers-to-remove have been removed.

       headers-to-remove
              These headers are removed from mails sent to the list.

       moderation-box
              Messages waiting for moderator approval.

       subscription-box
              Subscription and unsubscription requests waiting to be confirmed by the user.

       templates
              Directory containing list specific templates (optional). If this directory  exists,
              templates  are  searched  from  it before going for system wide templates. An empty
              file here means the corresponding message  is  not  sent  at  all.  This  can,  for
              example, to be used to turn off the "please wait for moderator" mails on a per-list
              basis.

       plugins
              Directory containing plugins, Python source files that are loaded automatically  by
              EoC upon startup.  The plugins may change how EoC operates.

       The config file has a keyword=value format:

              [list]
              owners = liw@liw.iki.fi
              archived = no
              posting = free
              subscription = free
              mail-on-subscription-changes = yes
              mail-on-forced-unsubscribe = yes
              language = fi

       The  keywords  archived, posting, and subscription correspond to the options with the same
       names.  Other keywords are:

       owners List of addresses for the owners. Set with the --owner option.

       moderators
              List of addresses for the moderators. Set with the --moderator option.

       mail-on-subscription-changes
              Should the owners be mailed when users subscribe or unsubscribe?

       mail-on-forced-unsubscribe
              Should the owners be mailed when people are removed from the list due to  excessive
              bouncing?

       ignore_bounce
              Bounce  messages  are  ignored on this list. Useful for example if list should have
              static subscriber list.

       language
              Suffix for templates, to allow support for multiple languages.  (If language is set
              to "fi", then the template named "foo" is first searched as "foo.fi".)

       pristine-headers
              Do  not  MIME  encode  the  headers.  Set  to  "yes"  to  not encode, anything else
              (including empty or unset) means encoding will happen.

EXAMPLES

       To create  a  list  called  moviefans@example.com,  owned  by  ding@example.com,  use  the
       following command (all on one line):

              enemies-of-carlotta --name=moviefans@example.com
              --owner=ding@example.com --create

       Note  that  you  need to arrange mail to arrive at the list (and its command addresses) by
       configuring your mail system.  For Qmail and Postfix, see below.

       To see the subscribers on that list:

              enemies-of-carlotta --name=moviefans@example.com --list

       People wanting to subscribe to the list should mail

              moviefans-subscribe@example.com

QMAIL

       With QMail, to arrange for incoming mail to be processed by Enemies of Carlotta, you  need
       to  create  a couple of .qmail-extension files per list.  For example, if your username is
       joe and you wish to run  the  joe-fans  mailing  list,  you  need  to  create  two  files,
       .qmail-fans and .qmail-fans-default, containing

              |enemies-of-carlotta --incoming

       If  you're running a virtual domain, example.com, and the mails are being delivered to via
       /var/qmail/control/virtualdomains  to  joe-exampledotcom,  the  files  would   be   called
       .qmail-exampledotcom-fans and .qmail-exampledotcom-fans-default and would contain


              |enemies-of-carlotta --incoming --skip-prefix=joe-exampledotcom-
       (all  on  one  line,  of  course,  in  case the manual page formatter breaks it on several
       lines).

COURIER-MTA

       For Courier-MTA, the instructions are similar to the Qmail ones above.  If your user  name
       is  joe  and  you  wish  to  run the joe-fans email list, you need to create the two files
       .courier-fans and .courier-fans-default in your home directory with the content

              |enemies-of-carlotta --is-list --name $RECIPIENT || exit 67
              |enemies-of-carlotta --incoming

       (The former file needs only the second line, but the first line does no  harm  and  it  is
       easier to keep track of things when the files have the same content.  Note that $RECIPIENT
       should be included verbatim, it is not a metavariable for you to expand.)

       If you are running a virtual domain configured so that all mail to the domain @example.com
       is  delivered  to  joe-exampledotcom, you need to create the files .courier-exampledotcom-
       fans and .courier-exampledotcom-fans-default containing the two following lines:

              |enemies-of-carlotta --is-list --name $RECIPIENT --skip-prefix=joe-exampledotcom ||
              exit 67
              |enemies-of-carlotta --incoming --skip-prefix=joe-exampledotcom

       If  the virtual domain is for list use only, then it is sufficient to create only the file
       .courier-exampledotcom-default containing the latter two lines.

POSTFIX

       With Postfix, you need to set up a .forward file containing

              "|procmail -p"

       and then a .procmailrc file containing

              :0
              * ? enemies-of-carlotta --name=$RECIPIENT --is-list
              | enemies-of-carlotta --incoming

       To use Enemies of Carlotta with a Postfix virtual domain, you need to  set  up  a  virtual
       regular  expression  map, typically called /etc/postfix/virtual_regexp (add virtual_maps =
       regexp:/etc/postfix/virtual_regexp to your /etc/postfix/main.cf file to enable  it).   The
       regexp  file needs to do ugly things to preserve the recipient address.  Add the following
       to the regexp file:

              /^your.virtual.domain$/ dummy
              /^(yourlist|yourlist-.*)@(your.virtual.domain)$/ joe+virtual-$1

       That's two lines. Use joe-virtual instead, if  recipient_delimiter  for  your  Postfix  is
       configured  to  a  minus  instead  of  a  plus..   Then, in your .procmailrc file, add the
       --skip-prefix=joe-virtual- and  --domain=your.virtual.domain  options  to  both  calls  to
       enemies-of-carlotta.

       (Yes, I think these things are much too complicated, too.)

MAIL COMMANDS

       Users  and  list owners use Enemies of Carlotta via e-mail using command addresses such as
       foo-subscribe@example.com.  Here is a list of all command addresses list users and  owners
       can give.  In all these examples, the name of the mailing list is foo@example.com.

   Mail commands anyone can use
       These commands are meant for everyone's use.  They don't require any special priviledges.

       foo@example.com
              Send mail to all list subscribers.  The message may have to be manually approved by
              the list moderators first, and they have the power to reject a message.

       foo-owner@example.com
              Send mail to the list owner or owners instead.

       foo-help@example.com
              Sending mail to this address makes the list manager reply with the help message for
              the list.

       foo-subscribe@example.com
              Send  mail  to  this address to subscribe to a list.  The list manager will respond
              with a confirmation request.  You won't be  subscribed  unless  you  reply  to  the
              confirmation  request.   This  way,  malicious  people  can't put your address on a
              mailing list, or many mailing lists.

       foo-subscribe-joe=example.com@example.com
              This is a second form of the subscription address.  If you want to subscribe to the
              list  with another address than the one you're sending mail from, use this one.  In
              this case, the  address  to  be  subscribed  is  joe@example.com.   Note  that  the
              confirmation request is sent to Joe, since it is his address that is to be added to
              the list.

       foo-unsubscribe@example.com
              To unsubscribe from a list, send mail to this address  from  the  address  that  is
              subscribed to the list.  Again, you will receive a confirmation request, to prevent
              malicious people from unsubscribing you against your will.

       foo-unsubscribe-joe=example.com@example.com
              To unsubscribe Joe, use this address.  Again, it is Joe who gets to confirm.

   Mail commands for the list owners
       These are commands that list owners can use to administer their list.

       foo-subscribe-joe=example.com@example.com
              If a list owner sends mail like this, it is they who get the confirmation  request,
              not  Joe.  It is generally better for people to subscribe themselves, but sometimes
              list owners want to do it, when they have  permission  from  the  person  and  feel
              helpful.

       foo-unsubscribe-joe=example.com@example.com
              List owners can also unsubscribe other people.

       foo-list@example.com
              To  see  who  are  on  the  list, this is the address to use.  It only works if the
              sender address is one of the list owners.  The sender address is the  one  used  on
              the SMTP level, not the one in the From: header.

       foo-setlist@example.com
              This  lets  a list owner set the whole subscriber list at once.  This is similar to
              using lots and lots and lots of -subscribe and  -unsubscribe  commands,  only  less
              painful.   Everyone  who  is added to the list gets a welcome message, and everyone
              who is removed from the list gets a goodbye message.

       foo-setlistsilently@example.com
              This is similar to -setlist, but no welcome and goodbye messages are sent.

PLUGINS

       Enemies of Carlotta supports plugins.  If you don't know what Python programming  is,  you
       may want to skip this section.

       A   plugin   is   a  Python  module  (file  named  with  a  .py  suffix),  placed  in  the
       ~/.enemies-of-carlotta/plugins directory.   The  plugins  are  loaded  automatically  upon
       startup,  if  their  declared  interface version matches the one implemented by Enemies of
       Carlotta.   The  interface  version  is   declared   by   the   module   global   variable
       PLUGIN_INTERFACE_VERSION.

       Plugins  can  define hook functions that are called by appropriate places in the EoC code.
       At the  moment,  the  only  hook  function  is  send_mail_to_subscribers_hook,  which  can
       manipulate  a  mail  message before it is sent to the subscribers.  The function must look
       like this:

            def send_mail_to_subscribers_hook(list, text):

       The list argument is a reference to the MailingList object that corresponds to the list in
       question,  and  text  is the complete text of the mail message as it exists.  The function
       must return the new contents of the mail message.

FILES

       ~/.enemies-of-carlotta
              All files related to your mailing lists.

       ~/.enemies-of-carlotta/secret
              Secret  password  used  to  generate  signed  addresses  for  bounce  checking  and
              subscription verification.

       ~/.enemies-of-carlotta/foo@example.com
              Directory  containing  data pertaining to the foo@example.com list.  Except for the
              config file in this directory, you shouldn't edit anything by hand.

       ~/.enemies-of-carlotta/foo@example.com/config
              Configuration file for the mailing list.  You may need to edit this file by hand if
              you wish to change moderation status or list owners.

SEE ALSO

       You may want to visit the Enemies of Carlotta home page at http://www.iki.fi/liw/eoc/.

                                                                           ENEMIES-OF-CARLOTTA(1)