<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Managing project mailing lists</title>
 </head>

 <body class="docs" onLoad="self.focus()">
  <div class="docs" id="projectownermailinglists">
   <h2>Managing project mailing lists</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    <ul>
     <li>
      <a href="/nonav/docs/ProjectOwnerAdmin.html">Project owner administration</a> 

      <ul>
       <li><a href="/nonav/docs/ProjectOwnerEdit.html">Editing and maintaining the Project Home page</a></li>

       <li><a href="/nonav/docs/ProjectOwnerNews.html">Managing project site news</a></li>

       <li><a href="/nonav/docs/ProjectOwnerMembers.html">Adding project members and approving roles</a></li>

       <li>
        Configuring and managing project mailing lists 

        <ul>
         <li><a href="#aboutlists">About default project mailing lists</a></li>

         <li><a href="#addlists">Adding and deleting mailing lists</a></li>

         <li><a href="#archivedel">Deleting archived mail items</a></li>

         <li><a href="#mailadmin">Mailing list administration and policies</a></li>

         <li><a href="#editsubscribers">Editing subscribers and moderators</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/ProjectOwnerDocuments.html">Managing project documentation</a></li>

       <li><a href="/nonav/docs/ProjectOwnerSource.html">Managing project source code</a></li>

       <li><a href="/nonav/docs/ProjectOwnerIssues.html">Tracking project issues</a></li>
       <li><a href="/nonav/docs/ProjectOwnerCustomStyle.html">Managing custom HTML styling</a></li>
	  </ul>
     </li>
    </ul>
   </div>

   <h3><a id="aboutlists" name="aboutlists">About default project mailing lists</a></h3>

   <p>All project mailing lists are created with <a href="http://anzu.tigris.org/">Anzu</a>, an open source mail alias and list management extension of qmail simple mail transfer protocol (smtp). Anzu supports multiple domains, enabling each project to define and manage its own unique set of mailing lists for the project domain.</p>

   <p>If you created your project as a standard development project, your project begins its life with five built-in, pre-configured mailing lists:</p>

   <dl>
    <dt>dev@projectname.domain.com</dt>

    <dd>The main list for developers to discuss specific project development issues and requirements for version control in the project.</dd>

    <dt>cvs@projectname.domain.com</dt>

    <dd>Automated notifications of file version control changes and discussion of those changes.</dd>

    <dt>announce@projectname.domain.com</dt>

    <dd>Announcements of new releases and other major project events.</dd>

    <dt>issues@projectname@domain.com</dt>

    <dd>Automated notifications and discussions of the project's reported issues (defects, enhancements, features, tasks, and patches) and changes made to issues, such as reassignment, comments, or resolution.</dd>

    <dt>users@projectname.domain.com</dt>

    <dd>A more general discussion list for the project's end users.</dd>
   </dl>

   <p>Discussion-only projects are set up with one discussion mailing list initially.</p>

   <p>You can access your project's existing mailing lists in two different ways:</p>

   <ul>
    <li>Clicking the <i>Mailing Lists</i> link in the Project Resources tool bar displays your project's <b>Mailing Lists</b> page. An edit link appears for each mailing list that opens a <b>Mailing List Edit</b> screen for that particular list.</li>

    <li>In the <b>Project Edit</b> page (reached by clicking the <i>Admin</i> link in the Project Resources tool bar), links at the bottom of the page lead to a <b>Mailing List Edit</b> screen for each list.</li>
   </ul>

   <p>For an explanation of fields and options on the <b>Mailing List Edit</b> page, see <a href="#mailadmin">Mailing list administration and policies</a> below.</p>

   <h3><a id="addlists" name="addlists">Adding and deleting mailing lists</a></h3>

   <p>Your project's growth and progression may warrant adding mailing lists at some point ... or perhaps deleting lists. The default mailing lists created along with your project are "top-level" lists. Should traffic relating to a particular module or component becomes too high for one or more of these lists, you can splinter that discussion off into its own arena by create a separate new mailing list.</p>

   <p>Add a new mailing list by going to the <b>Project Edit</b> page and clicking the "new" link in the bottom Mailing Lists section. This action leads you to the <b>Add New Mailing List</b> page to set up and configure your newest list. See the following section about list administration and policies for more information about the fields and settings in this screen.</p>

   <p>To delete a mailing list, click the mailing list link in the <b>Project Edit</b> page to open <b>Edit Mailing List</b> page. Click the <i>Delete Mailing List</i> link just above the buttons on this screen. Another page displays asking for delete confirmation before the action is completed.</p>

   <h3><a id="archivedel" name="archivedel"></a>Deleting archived mail items</h3>

   <p>Periodically, you may find a need to delete obsoleted archived messages from a mail list. To do this, navigate to the archive of the mail list in which the item appears. Select the time period and then find the item you want to delete. Click the <i>Delete</i> link. You will need to verify the delete on the next screen by selecting either the yes or no radio button and clicking on the <em>Submit Query</em> button.</p>

   <h3><a id="mailadmin" name="mailadmin">Mailing list administration and policies</a></h3>

   <p>As the project owner you can choose to modify your project's default mailing list settings, add new lists, delete unnecessary lists, add and remove subscribers, designate moderators, and set other mailing list parameters.</p>

   <p>Both the <b>Add Mailing List</b> and <b>Edit Mailing List</b> page settings include:</p>

   <ul>
    <li>a list description text field,</li>

    <li>a prefix to appear on the subject line of all messages,</li>

    <li>an automatically generated trailer with subscribe/unsubscribe instructions which can be toggled on or off.</li>
   </ul>
  <dl> 
    <dt>List Type</dt>
    <dd>These options refer to how you want to set the mailing list policies for 
      handling subscriptions and posting.</dd>
    <dd> 
      <ul>
        <li><b>Private checkbox:</b> If your project is private, your mailing 
          lists are restricted to project members only and the list archives are 
          also private by default. Only users who are members of your private 
          project have the necessary permissions to view these mailing lists and 
          the associated archives.</li>
        <li>If your project is public, you can select among several different 
          combination of these policies, depending upon the purpose of the list.</li>
      </ul>
    </dd>
    <dt>Posting policy</dt>
    <dd>These options determine how the list handles posts from non-subscribers 
      and subscribers. For open source projects, mailing lists can be configured 
      to handle message posts at three different levels: </dd>
    <dd> 
      <ul>
        <li>"<b>Discuss</b>" allows subscribers to post, and moderates posts (requires 
          approval) from non-subscribers.</li>
        <li>"<b>Moderated</b>" moderates <i>all</i> posts.</li>
        <li>"<b>Unmoderated</b>" allows anyone to post messages without moderation.</li>
      </ul>
    </dd>
    <dt>Subscription moderation</dt>
    <dd> This determines whether subscription to the list is "open" or "private." 
      Anyone can subscribe to open lists. Marking a list as "private" has two 
      implications: 
      <ul>
        <li>Subscribers must be approved by the list moderator.</li>
        <li>List archives are not publicly viewable. Users who do not have permission 
          to see the archives do not see links to subscribe to these lists either.</li>
      </ul>
      <p>By default, subscriptions to the mailing lists in a private project are 
        on an approval basis because these lists are always private. This means 
        that even members of a private project must be approved by a list moderator 
        to subscribe to project mailing lists.</p>
    </dd>
  </dl>

   <h3><a id="editsubscribers" name="editsubscribers">Editing subscribers and moderators</a></h3>

   <p>You can add and remove mailing list subscribers, designate list moderators, and suppress certain users from posting messages using the links in the "Members" section of the <b>Edit Mailing List</b> page: <i>Edit Subscribers</i>, <i>Edit Digest Subscribers</i>, <i>Edit Moderators</i>, <i>Edit Allowed Posters</i>.</p>

   <p>These links display an edit screen where you can designate users by email address for the desired action. You may also alter the Private component; on to allow only project members to see the contents of the maillist archive, off to allow anyone who can see the project access to the archive.</p>

   <p>For those mailing lists designated as unmoderated, you always have control over who may post messages to any of your project mailing lists as the project owner. If someone abuses list privileges or fails to comply with mailing list etiquette on an unmoderated list, you must be able to disallow further postings from this person. For moderated lists, your designated moderator has the permissions to edit list subscribers.</p>

   <p><!--
                  <P>Other pre-set mailing list features include:
                 <ul>
                 <li>Indexing 
                 <li>Archiving 
                 <li>List digest setup
                 *** <li>No archive guards, enabling any user to retrieve archived list messages in the case of open mailing lists.
                 *** <li>Public          = true (the list will respond to admin commands like
                                         subscribe)

                 *** <li>request_address = true (makes life easier for people who are used to majordomo)
                 *** <li>Remote administration, allowing list moderators to subscribe people to the list via e-mail  (other useful things***)
                 </ul>

                  <p>Discussion lists include two addition features when the posting policy is set for either "announce" or "automated-notification":

                 <ul>
                 ***<li>Message "extras" are disallowed, stripping messages of certain mime types.
                 ***<li>Posted message size restrictions requiring messages to be a minimum of 2 bytes and a maximum of 400 kb. This restriction is not applied to the other types of mailing lists by default but can be set up through domain level administration.
                 </ul>
                 -->
   </p>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


