| 1 | = Remote Administration of Project Lancelot Lists = |
|---|
| 2 | |
|---|
| 3 | == Abstract == |
|---|
| 4 | |
|---|
| 5 | This document explains how to administer Project Lancelot mailing |
|---|
| 6 | lists by e-mail. |
|---|
| 7 | |
|---|
| 8 | == Prerequisites == |
|---|
| 9 | |
|---|
| 10 | The methods described here require a version of Project Lancelot that |
|---|
| 11 | is at least 0.2.99. We assume the following: |
|---|
| 12 | |
|---|
| 13 | * We are dealing with a list called ''list@example.com''. |
|---|
| 14 | |
|---|
| 15 | * The list was created by the system administrator of |
|---|
| 16 | ''example.com'', who we shall call ''sysadmin@example.com''. |
|---|
| 17 | |
|---|
| 18 | * The list is to be administered remotely by the list administrator, |
|---|
| 19 | who we shall call ''listadmin@example.com''. |
|---|
| 20 | |
|---|
| 21 | We explain remote administration from the list administrator's point |
|---|
| 22 | first, stipulating that everything has been set up correctly by the |
|---|
| 23 | system administrator. Issues pertaining to list setup for remote |
|---|
| 24 | administration are explained at the end of this document. |
|---|
| 25 | |
|---|
| 26 | == Remote Administration for List Administrators == |
|---|
| 27 | |
|---|
| 28 | === Introduction === |
|---|
| 29 | |
|---|
| 30 | List administrators can ''administer'' Project Lancelot by sending |
|---|
| 31 | bahn.specially formatted e-mail messages to the list's ''administrative |
|---|
| 32 | address'', which is (by convention) ''list+admin@example.com'' |
|---|
| 33 | (''NOTE:'' Depending on local usage this address may be different in |
|---|
| 34 | practice. In particular, it could be ''list-admin@example.com''). |
|---|
| 35 | |
|---|
| 36 | The following operations are allowed in principle: |
|---|
| 37 | |
|---|
| 38 | * Adding new subscribers to the list |
|---|
| 39 | |
|---|
| 40 | * Removing existing subscribers from the list |
|---|
| 41 | |
|---|
| 42 | * Changing the properties of an existing subscription |
|---|
| 43 | |
|---|
| 44 | * Obtaining a list of current subscribers |
|---|
| 45 | |
|---|
| 46 | * Retrieving and changing the list configuration |
|---|
| 47 | |
|---|
| 48 | Any of these operations may be disallowed by the system administrator |
|---|
| 49 | on a per-list basis. |
|---|
| 50 | |
|---|
| 51 | |
|---|
| 52 | === Authentication === |
|---|
| 53 | |
|---|
| 54 | It is clear that not just anybody is supposed to be able to change the |
|---|
| 55 | mailing list. Therefore, as a list administrator you must |
|---|
| 56 | ''authenticate'' a message to ''list+admin@example.com'' so that |
|---|
| 57 | Project Lancelot can be reasonably sure that the message was, in fact, |
|---|
| 58 | sent by you. There are currently two ways of doing so. Your system |
|---|
| 59 | administrator will tell you which one is in operation. |
|---|
| 60 | |
|---|
| 61 | * ''Password authentication.'' The first line of text in your message |
|---|
| 62 | must contain a secret password, as in »'''password''' secret«. (Your |
|---|
| 63 | system administrator will be able to tell you the correct |
|---|
| 64 | password.) This method is reasonably secure; it is what most other |
|---|
| 65 | mailing list programs use, too. |
|---|
| 66 | |
|---|
| 67 | * ''GnuPG authentication.'' Your message must be signed using a GnuPG |
|---|
| 68 | key whose public key is part of the list's administrator |
|---|
| 69 | keyring. (If this is all Greek to you, then have your system |
|---|
| 70 | administrator explain it in more detail.) This is about as secure |
|---|
| 71 | as things get in e-mail. |
|---|
| 72 | |
|---|
| 73 | |
|---|
| 74 | === Adding New Subscribers === |
|---|
| 75 | |
|---|
| 76 | To add a new subscriber, send an authenticated message like |
|---|
| 77 | {{{ |
|---|
| 78 | subscribe Alfred E. Newman <alfred@example.net> |
|---|
| 79 | }}} |
|---|
| 80 | to ''list+admin@example.com''. (Use |
|---|
| 81 | {{{ |
|---|
| 82 | password secret |
|---|
| 83 | subscribe Alfred E. Newman <alfred@example.net> |
|---|
| 84 | }}} |
|---|
| 85 | if your list uses password authentication and your password is |
|---|
| 86 | ''secret''. We won't bother repeating this in the other examples.) |
|---|
| 87 | |
|---|
| 88 | You may leave off the name and give just the e-mail address: |
|---|
| 89 | {{{ |
|---|
| 90 | subscribe alfred@example.net |
|---|
| 91 | }}} |
|---|
| 92 | |
|---|
| 93 | You may add several subscribers either by giving multiple |
|---|
| 94 | '''subscribe''' commands as in |
|---|
| 95 | {{{ |
|---|
| 96 | subscribe Alfred E. Newman <alfred@example.net> |
|---|
| 97 | subscribe Mickey Mouse <mickey.mouse@example.org> |
|---|
| 98 | }}} |
|---|
| 99 | or by using an ''end marker'' as in |
|---|
| 100 | {{{ |
|---|
| 101 | subscribe <<END |
|---|
| 102 | Alfred E. Newman <alfred@example.net> |
|---|
| 103 | Mickey Mouse <mickey.mouse@example.org> |
|---|
| 104 | END |
|---|
| 105 | }}} |
|---|
| 106 | The second method is convenient if you have to add a lot of |
|---|
| 107 | subscribers from a pre-existing list. Whatever comes after the |
|---|
| 108 | '''<<''' on the first line of the command must occur on a line by |
|---|
| 109 | itself at the end of the list. |
|---|
| 110 | |
|---|
| 111 | By default, subscribers are added as regular (non-digest) subscribers |
|---|
| 112 | with no special options such as ''nomail''. To add a subscriber as a |
|---|
| 113 | digest or non-receiving subscriber, use |
|---|
| 114 | {{{ |
|---|
| 115 | subscribe --digest Alfred E. Newman <alfred@example.net> |
|---|
| 116 | subscribe --nomail Mickey Mouse <mickey.mouse@example.org> |
|---|
| 117 | }}} |
|---|
| 118 | where »--digest« adds a digest subscriber, and »--nomail« adds an |
|---|
| 119 | address that will not receive mail but will be allowed to submit |
|---|
| 120 | messages to the list. |
|---|
| 121 | |
|---|
| 122 | |
|---|
| 123 | === Removing Subscribers === |
|---|
| 124 | |
|---|
| 125 | To remove an existing subscriber, send a message like |
|---|
| 126 | {{{ |
|---|
| 127 | unsubscribe alfred@example.net |
|---|
| 128 | }}} |
|---|
| 129 | You just need to provide the subscriber's e-mail address (their name |
|---|
| 130 | will be ignored if given). There are no options for unsubscribing, but |
|---|
| 131 | you can mass-unsubscribe a list of subscribers using the end-marker |
|---|
| 132 | method as shown in the previous section. |
|---|
| 133 | |
|---|
| 134 | |
|---|
| 135 | === Obtaining a List of Subscribers === |
|---|
| 136 | |
|---|
| 137 | To receive a message containing a list of subscribers to the mailing |
|---|
| 138 | list, send a message like |
|---|
| 139 | {{{ |
|---|
| 140 | list |
|---|
| 141 | }}} |
|---|
| 142 | You will receive a list looking like |
|---|
| 143 | {{{ |
|---|
| 144 | SA---- admin@example.com List Administrator |
|---|
| 145 | S---n- mickey.mouse@example.net Mickey Mouse |
|---|
| 146 | S--d-- alfred@example.org Alfred E. Newman |
|---|
| 147 | }}} |
|---|
| 148 | This list is ordered by domain and gives all subscribers' addresses |
|---|
| 149 | and (if available) names. At the beginning of each line there is a |
|---|
| 150 | word of ''flags'' telling which options are set for this subscription: |
|---|
| 151 | ''S'' means the subscription is ''active''. The next five characters |
|---|
| 152 | are either ''-'' (if the corresponding option is not set) or one of |
|---|
| 153 | the option letters ''A'' (list administrator), ''M'' (list moderator), |
|---|
| 154 | ''d'' (digest subscriber), ''n'' (non-receiving subscriber), ''m'' |
|---|
| 155 | (moderated subscriber). |
|---|
| 156 | |
|---|
| 157 | You can give a search pattern on the '''list''' command in order to |
|---|
| 158 | restrict the resulting list to a certain subset of the |
|---|
| 159 | subscribers. For example, |
|---|
| 160 | {{{ |
|---|
| 161 | list *@example.com |
|---|
| 162 | }}} |
|---|
| 163 | would list just the subscribers in the ''example.com'' domain. |
|---|
| 164 | |
|---|
| 165 | |
|---|
| 166 | === Changing Subscription Options === |
|---|
| 167 | |
|---|
| 168 | (To be written.) |
|---|
| 169 | |
|---|
| 170 | |
|---|
| 171 | === Retrieving and Changing the List Configuration === |
|---|
| 172 | |
|---|
| 173 | (To be written.) |
|---|
| 174 | |
|---|
| 175 | |
|---|
| 176 | == Setting Up a List for Remote Administration == |
|---|
| 177 | |
|---|
| 178 | To enable remote administration for a list, the system administrator |
|---|
| 179 | must add an appropriate workflow like |
|---|
| 180 | {{{ |
|---|
| 181 | mail.workflow.admin = authenticate(level=1) admin |
|---|
| 182 | }}} |
|---|
| 183 | This enables the ''list+admin@example.com'' address and requires |
|---|
| 184 | password authentication (minimally -- GnuPG authentication would also |
|---|
| 185 | be fine). |
|---|
| 186 | |
|---|
| 187 | The system administrator must also designate one or more list |
|---|
| 188 | administrators and configure a suitable authentication method for |
|---|
| 189 | them: |
|---|
| 190 | {{{ |
|---|
| 191 | pl-subchange --admin --auth=password:secret list@example.com \ |
|---|
| 192 | listadmin@example.com |
|---|
| 193 | }}} |
|---|
| 194 | |
|---|
| 195 | There are some list configuration parameters that deal with remote |
|---|
| 196 | administration: |
|---|
| 197 | |
|---|
| 198 | '''admin.allowed''':: |
|---|
| 199 | If this is set, it contains a space-delimited list of commands that |
|---|
| 200 | the remote administration interface will honour. Use this, e.g., to |
|---|
| 201 | prevent list administrators from changing the list configuration. |
|---|
| 202 | |
|---|
| 203 | '''admin.setconfig.refuse'':: |
|---|
| 204 | If this is set, it contains a regular expression to be applied to |
|---|
| 205 | the names of configuration parameters in a '''setconfig''' command. |
|---|
| 206 | Any parameter whose name matches this regular expression will be |
|---|
| 207 | ignored. |
|---|
| 208 | |
|---|
| 209 | '''admin.setconfig.allow'':: |
|---|
| 210 | If this is set, it contains a regular expression to be applied to |
|---|
| 211 | the names of configuration parameters in a '''setconfig''' command. |
|---|
| 212 | Any parameter whose name does not match this regular expression |
|---|
| 213 | will be ignored. |
|---|