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)