Skip to content

Commit 7a14a39

Browse files
author
Richard Jones
committed
better mailgw user docs
1 parent a24dc70 commit 7a14a39

File tree

1 file changed

+184
-119
lines changed

1 file changed

+184
-119
lines changed

doc/user_guide.txt

Lines changed: 184 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,193 @@
22
User Guide
33
==========
44

5-
:Version: $Revision: 1.4 $
5+
:Version: $Revision: 1.5 $
66

77
.. contents::
88

9+
Note: this document will refer to *issues* as the primary store of information
10+
in the tracker. This is the default of the classic template, bubt may vary in
11+
any given installation.
12+
13+
Web Interface
14+
-------------
15+
16+
Index views may be modified by the following arguments:
17+
18+
+-----------+--------------------------------------------------------------+
19+
| :sort | sort by prop name, optionally preceeded with '-' |
20+
| | to give descending or nothing for ascending sorting. |
21+
+-----------+--------------------------------------------------------------+
22+
| :group | group by prop name, optionally preceeded with '-' or |
23+
| | to sort in descending or nothing for ascending order. |
24+
+-----------+--------------------------------------------------------------+
25+
| :filter | selects which props should be displayed in the filter |
26+
| | section. Default is all. |
27+
+-----------+--------------------------------------------------------------+
28+
| :columns | selects the columns that should be displayed. |
29+
| | Default is all. |
30+
+-----------+--------------------------------------------------------------+
31+
| propname | selects the values the node properties given by propname |
32+
| | must have (very basic search/filter). |
33+
+-----------+--------------------------------------------------------------+
34+
35+
Searching
36+
~~~~~~~~~
37+
38+
TODO: some information about how searching works
39+
40+
41+
Access Controls
42+
~~~~~~~~~~~~~~~
43+
44+
45+
Managing Issues
46+
~~~~~~~~~~~~~~~
47+
48+
TODO: some mention of how the various widgets work
49+
50+
51+
E-Mail Gateway
52+
--------------
53+
54+
E-mail sent to Roundup is examined for several pieces of information:
55+
56+
1. `subject-line information`_ identifying the purpose of the e-mail
57+
2. `e-mail message content`_ which is to be extracted
58+
3. e-mail attachments which should be associated with the message
59+
60+
Subject-line information
61+
~~~~~~~~~~~~~~~~~~~~~~~~
62+
63+
The subject line of the incoming message is examined to find one of:
64+
65+
1. the item that the message is responding to,
66+
2. the type of item the message should create, or
67+
3. we default the item class and try some trickiness
68+
69+
If the subject line contains a prefix in ``[square brackets]`` then we're
70+
looking at case 1 or 2 above. Note that any "re:" or "fwd:" prefixes are
71+
stripped off the subject line before we start looking for real information.
72+
73+
If an item designator (class name and id number, for example ``issue123``)
74+
is found there, a new "msg" node is added to the "messages" property for
75+
that item, and any new "file" nodes are added to the "files" property for
76+
the item.
77+
78+
If just an item class name is found there, we attempt to create a new item of
79+
that class with its "messages" property initialized to contain the new "msg"
80+
node and its "files" property initialized to contain any new "file" nodes.
81+
82+
The third case above - where no ``[information]`` is provided, the tracker's
83+
``MAIL_DEFAULT_CLASS`` configuration variable defines what class of item
84+
the message relates to. We try to match the subject line to an existing
85+
item of the default class, and if there's a match, the message is related to
86+
that matched item. If not, then a new item of the default class is created.
87+
88+
Setting Properties
89+
::::::::::::::::::
90+
91+
The e-mail interface also provides a simple way to set properties on items. At
92+
the end of the subject line, propname=value pairs can be specified in square
93+
brackets, using the same conventions as for the roundup set shell command.
94+
95+
For example,
96+
97+
- setting the priority of an issue::
98+
99+
Subject: Re: [issue1] the coffee machine is broken! [priority=urgent]
100+
101+
- adding yourself to a nosy list::
102+
103+
Subject: Re: [issue2] we're out of widgets [nosy=+richard]
104+
105+
- setting the nosy list to just you::
106+
107+
Subject: Re: [issue2] we're out of widgets [nosy=richard]
108+
109+
- removing yourself from a nosy list::
110+
111+
Subject: Re: [issue2] we're out of widgets [nosy=-richard]
112+
113+
In all cases, the message relates to issue 2. The ``Re:`` prefix is stripped
114+
off.
115+
116+
117+
E-Mail Message Content
118+
~~~~~~~~~~~~~~~~~~~~~~
119+
120+
Roundup only associates plain text (MIME type ``text/plain``) as messages for
121+
items. Any other parts of a message are associated as downloadable files. If
122+
no plain text part is found, the message is rejected.
123+
124+
To do this, incoming messages are examined for multiple parts:
125+
126+
* In a multipart/mixed message or part, each subpart is extracted and
127+
examined. The text/plain subparts are assembled to form the textual body
128+
of the message, to be stored in the file associated with a "msg" class
129+
node. Any parts of other types are each stored in separate files and
130+
given "file" class nodes that are linked to the "msg" node.
131+
* In a multipart/alternative message or part, we look for a text/plain
132+
subpart and ignore the other parts.
133+
134+
If the message is a response to a previous message, and contains quoted
135+
sections, then these will be stripped out of the message if the
136+
``EMAIL_KEEP_QUOTED_TEXT`` configuration variable is set to ``'no'``.
137+
138+
Message summary
139+
:::::::::::::::
140+
141+
The "summary" property on message nodes is taken from the first non-quoting
142+
section in the message body. The message body is divided into sections by blank
143+
lines. Sections where the second and all subsequent lines begin with a ">" or
144+
"|" character are considered "quoting sections". The first line of the first
145+
non-quoting section becomes the summary of the message.
146+
147+
148+
Address handling
149+
~~~~~~~~~~~~~~~~
150+
151+
All of the addresses in the ``To:`` and ``Cc:`` headers of the incoming
152+
message are
153+
looked up among the tracker users, and the corresponding users are placed
154+
in the
155+
"recipients" property on the new "msg" node. The address in the ``From:`` header
156+
similarly determines the "author" property of the new "msg" node. The default
157+
handling for addresses that don't have corresponding users is to create new
158+
users with no passwords and a username equal to the address.
159+
160+
The addresses mentioned in the ``To:``, ``From:`` and ``Cc:`` headers of
161+
the message may be added to the `nosy list`_ depending on:
162+
163+
``ADD_AUTHOR_TO_NOSY``
164+
Does the author of a message get placed on the nosy list automatically?
165+
If 'new' is used, then the author will only be added when a message
166+
creates a new issue. If 'yes', then the author will be added on followups
167+
too. If 'no', they're never added to the nosy.
168+
169+
``ADD_RECIPIENTS_TO_NOSY``
170+
Do the recipients (To:, Cc:) of a message get placed on the nosy list?
171+
If 'new' is used, then the recipients will only be added when a message
172+
creates a new issue. If 'yes', then the recipients will be added on
173+
followups too. If 'no', they're never added to the nosy.
174+
175+
176+
Nosy List
177+
:::::::::
178+
179+
The nosy list watches for additions to the "messages" property of items.
180+
When a new message is added, it is sent to all the users
181+
on the "nosy" list for the item that are not already on the "recipients" list
182+
of the message. Those users are then appended to the "recipients" property on
183+
the message, so multiple copies of a message are never sent to the same user.
184+
The journal recorded by the hyperdatabase on the "recipients" property then
185+
provides a log of when the message was sent to whom.
186+
187+
If the author of the message is also in the nosy list for the item that the
188+
message is attached to, then the config var ``MESSAGES_TO_AUTHOR`` is queried
189+
to determine if they get a nosy list copy of the message too.
190+
191+
9192
Command Line Tool
10193
-----------------
11194

@@ -175,124 +358,6 @@ If either the name or password is not supplied, they are obtained from the
175358
command-line.
176359

177360

178-
Web Interface
179-
-------------
180-
181-
Index views may be modified by the following arguments:
182-
183-
+-----------+--------------------------------------------------------------+
184-
| :sort | sort by prop name, optionally preceeded with '-' |
185-
| | to give descending or nothing for ascending sorting. |
186-
+-----------+--------------------------------------------------------------+
187-
| :group | group by prop name, optionally preceeded with '-' or |
188-
| | to sort in descending or nothing for ascending order. |
189-
+-----------+--------------------------------------------------------------+
190-
| :filter | selects which props should be displayed in the filter |
191-
| | section. Default is all. |
192-
+-----------+--------------------------------------------------------------+
193-
| :columns | selects the columns that should be displayed. |
194-
| | Default is all. |
195-
+-----------+--------------------------------------------------------------+
196-
| propname | selects the values the node properties given by propname |
197-
| | must have (very basic search/filter). |
198-
+-----------+--------------------------------------------------------------+
199-
200-
Not sure what to put in here...
201-
202-
E-Mail Gateway
203-
--------------
204-
205-
Performing Actions
206-
~~~~~~~~~~~~~~~~~~
207-
208-
The subject line of the incoming message is examined to determine whether the
209-
message is an attempt to create a new item or to discuss an existing item. A
210-
designator enclosed in square brackets is sought as the first thing on the
211-
subject line (after skipping any "Fwd:" or "Re:" prefixes).
212-
If an item designator (class name and id number) is found there, the newly
213-
created "msg" node is added to the "messages" property for that item, and any
214-
new "file" nodes are added to the "files" property for the item.
215-
If just an item class name is found there, we attempt to create a new item of
216-
that class with its "messages" property initialized to contain the new "msg"
217-
node and its "files" property initialized to contain any new "file" nodes.
218-
219-
Setting Properties
220-
~~~~~~~~~~~~~~~~~~
221-
222-
The e-mail interface also provides a simple way to set properties on items. At
223-
the end of the subject line, propname=value pairs can be specified in square
224-
brackets, using the same conventions as for the roundup set shell command.
225-
226-
For example,
227-
228-
- setting the priority of an issue::
229-
230-
Subject: Re: [issue1] the coffee machine is broken! [priority=urgent]
231-
232-
- adding yourself to a nosy list (both of these are equivalent)::
233-
234-
Subject: Re: [issue2] we're out of widgets [nosy=+richard]
235-
Subject: Re: [issue2] we're out of widgets [nosy=richard]
236-
237-
- removing yourself from a nosy list::
238-
239-
Subject: Re: [issue2] we're out of widgets [nosy=-richard]
240-
241-
242-
Message content
243-
~~~~~~~~~~~~~~~
244-
245-
Incoming messages are examined for multiple parts:
246-
247-
* In a multipart/mixed message or part, each subpart is extracted and
248-
examined. The text/plain subparts are assembled to form the textual body
249-
of the message, to be stored in the file associated with a "msg" class
250-
node. Any parts of other types are each stored in separate files and
251-
given "file" class nodes that are linked to the "msg" node.
252-
* In a multipart/alternative message or part, we look for a text/plain
253-
subpart and ignore the other parts.
254-
255-
Message summary
256-
:::::::::::::::
257-
258-
The "summary" property on message nodes is taken from the first non-quoting
259-
section in the message body. The message body is divided into sections by blank
260-
lines. Sections where the second and all subsequent lines begin with a ">" or
261-
"|" character are considered "quoting sections". The first line of the first
262-
non-quoting section becomes the summary of the message.
263-
264-
Address handling
265-
~~~~~~~~~~~~~~~~
266-
267-
All of the addresses in the To: and Cc: headers of the incoming message are
268-
looked up among the user nodes, and the corresponding users are placed in the
269-
"recipients" property on the new "msg" node. The address in the From: header
270-
similarly determines the "author" property of the new "msg" node. The default
271-
handling for addresses that don't have corresponding users is to create new
272-
users with no passwords and a username equal to the address. (The web interface
273-
does not permit logins for users with no passwords.) If we prefer to reject
274-
mail from outside sources, we can simply register an auditor on the "user"
275-
class that prevents the creation of user nodes with no passwords.
276-
277-
Triggers
278-
~~~~~~~~
279-
280-
Both cases may trigger detectors (in the first case we are calling the set()
281-
method to add the message to the item's spool; in the second case we are
282-
calling the create() method to create a new node). If an auditor raises an
283-
exception, the original message is bounced back to the sender with the
284-
285-
Nosy Lists
286-
::::::::::
287-
288-
A standard detector is provided that watches for additions to the "messages"
289-
property. When a new message is added, the detector sends it to all the users
290-
on the "nosy" list for the item that are not already on the "recipients" list
291-
of the message. Those users are then appended to the "recipients" property on
292-
the message, so multiple copies of a message are never sent to the same user.
293-
The journal recorded by the hyperdatabase on the "recipients" property then
294-
provides a log of when the message was sent to whom.
295-
296361

297362
-----------------
298363

0 commit comments

Comments
 (0)