journaling
[citadel.git] / citadel / docs / journaling.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4   <title>Message Journaling with the Citadel System</title>
5   <meta http-equiv="content-type"
6  content="text/html; charset=ISO-8859-1">
7 </head>
8 <body>
9 <div align="center">
10 <h1>Message Journaling with the Citadel System</h1>
11 <h2>A technical guide</h2>
12 Copyright &copy;2006 by the Citadel development team.<br>
13 </div>
14
15 <div align="justify">
16
17 <hr>
18
19 <h3><a name="toc">Table of Contents</a></h3>
20
21
22 <hr>
23
24 <h3><a name="introduction">Introduction</a></h3>
25
26 <p>There are many different environments in which the Citadel system is
27 useful for messaging and collaboration tasks.  Naturally, many sites use
28 Citadel as their organization's primary email server.  Some of these
29 organizations are corporations which operate in industries that are subject
30 to regulations which dictate that all electronic messages must be archived
31 for some period of time.</p>
32
33 <p>Message journaling is a function of the Citadel system which provides the
34 ability to record all messages which are processed by the server.  Journaling,
35 by itself, is <i>not</i> a message archival service, nor should one attempt to
36 treat it as one.  We recommend that you combine Citadel journaling with a
37 third-party archival product or service, in order to assemble a data retention
38 solution that will meet the requirements of your organization.</p>
39
40 <h3><a name="overview">Technical overview of Citadel journaling</a></h3>
41
42 <p>In order to keep the configuration options simple and straightforward,
43 Citadel implements only one variety of journaling.  It is generally known
44 in the messaging universe as &quot;envelope journaling.&quot;  As you are
45 probably already aware, one cannot trust the headers of any particular
46 message to be a reliable indication of which users have read it.  In addition
47 to the declared sender and recipients, there may also be blind carbon copy
48 (BCC) recipients, recipients on one or more mailing lists, and even recipients
49 who are not listed due to forged or badly formed headers.</p>
50
51 <p>The format of a journalized message, therefore, contains extra information
52 about who <i>actually</i> sent and/or received the original message.  The very
53 first portion of the journalized message lists the sender, message ID, and
54 recipients.  It should be noted that the listed Sender and Recipients are
55 those which were relevant to delivery <i>on the Citadel server performing the
56 journaling of the message.</i>  If the message arrived via SMTP from the
57 outside world, any recipients not on the local Citadel server would not be
58 listed, because they were not involved in the transaction which delivered the
59 message to the server.</p>
60
61 <p>The original message is then included, as an attachment of type
62 <tt>message/rfc822</tt>, to the journal message.</p>
63
64 <p>This logic provides the ability to answer these questions:
65 <ul>
66 <li>If a message was sent <i>from</i> someone on this server, who received it?
67 <li>If a message was sent <i>to</i> someone on this server, who <i>else</i>
68 received it?
69 </ul>
70 Either question can be answered by searching your archive for the message in
71 question and reviewing the names and addresses listed in the journalized
72 messages.</p>
73
74
75 <h3><a name="resource">Additional resource utilization</a></h3>
76
77 <p>On a server with message journaling enabled, each message must pass through
78 the submit chain twice: once for the delivery of the original message, and once
79 for the delivery of the journalized message.  You must plan accordingly for the
80 additional overhead which will be incurred.  Nearly twice as much CPU, memory,
81 and disk space will be consumed by journaling.</p>
82
83 <p>Despite the extra processing, however, it should be noted that the Citadel
84 server performs journaling as a deferred background operation.  This allows
85 interactive users to continue along instead of waiting for the server to
86 synchronously journal each message that is submitted.</p>
87
88
89 <h3><a name="where">Where should I send the journalized messages?</a></h3>
90
91 <p>As previously noted, any valid email address may be used as the destination
92 for journalized messages.  Where you send your journalized messages will
93 likely depend upon how you are going to archive them.</p>
94
95 <p>Some archival systems contain their own email addresses.  With these
96 products and services, you are expected to email your journalized messages
97 directly to a specific address.  This is typically referred to as "push"
98 journaling because the transfer is initiated by your server.  If you intend
99 to use this type of system, the required configuration is obvious: the
100 journal destination is the email address of your archival system.</p>
101
102 <p>Other archival systems are built around the idea that you should provide
103 a dedicated email address on <i>your</i> server, and the archival system
104 periodically uses POP3 (or POP3S, the SSL-encrypted version of POP3) to poll
105 the mailbox for new journalized messages.  Upon successful retrieval of new
106 messages, the archival system deletes the journalized messages from your
107 server.  This is typically referred to as "pull" journaling because the
108 transfer is initiated externally.  If you intend to use this type of system,
109 you should create a dedicated account on your Citadel server for this purpose,
110 and then configure that account as the journal destination.  No real users
111 should ever log in to this account.  It exists solely as a drop box for
112 journalized messages.</p>
113
114 <p>In rare instances, you may wish to send the journalized messages to an
115 address on some other node on a private Citadel network.  This could be useful
116 if, for example, one server is used to aggregate messages journalized from
117 several other servers.  It might also be useful if, for some reason, you
118 require a dedicated server for journaling.</p>
119
120 <p>It should also be noted that the message data format contains a field which
121 declares that a message is actually a journalized copy of some other message.
122 The Citadel system will not journalize any message which carries this flag.
123 This prevents messages from being double journalized (or worse, caught in an
124 infinite loop of journaling).</p>
125
126
127 <h3><a name="configuration">How to configure journaling</a></h3>
128
129 <p>After you have formulated a strategy for combining journaling with some
130 third-party archival product or service as part of a compliance solution, the
131 actual configuration is very easy.  You only need to set the following three
132 configuration items in Citadel:
133 <ul>
134 <li>Perform journaling of email messages?  (Yes or No)
135 <li>Perform journaling of non-email messages?  (Yes or No)
136 <li>Address to which journalized messages are to be sent?  (Specify any email address)
137 </ul>
138 </p>
139
140 <p>From the text-based Citadel client, these options may be found in the
141 <tt><b>.A</b>ide <b>S</b>ystem-configuration <b>G</b>eneral</tt> command.  You
142 will see the following options among the many other options in this dialog:
143 <pre>
144 Perform journaling of email messages [Yes]: 
145 Perform journaling of non-email messages [Yes]: 
146 Email destination of journalized messages [example@example.com]:
147 </pre>
148 &quot;Non-email messages&quot; refers to any message which has no recipients.
149 This includes posts to public and private rooms, calendar items, address book
150 entries, notes, tasks, and any other data types which may be introduced in
151 the future.
152 </p>
153
154 <p>Configuration of journaling using WebCit is even easier.  Log in with your
155 web browser and then select Administration --&gt; Edit site-wide
156 configuration --&gt; Indexing/Journaling, and you will find the same three
157 options.</p>
158
159 <p>It is not necessary to restart the Citadel server when you change your
160 journaling options.  Changes will take effect immediately.</p>
161
162
163 <h3><a name="disclaimer">Disclaimer</a></h3>
164
165 <p>The message journaling feature of Citadel is only one component which may
166 be utilized as part of a larger solution for regulatory compliance.  The
167 Citadel developers do not make any guarantee, expressed or implied, that this
168 functionality by itself will cause your organization's email services to
169 be sufficiently archived.  It is up to you to design your complete archival
170 solution, to test it, and to evaluate its ability to comply with whatever
171 regulations are relevant to your organization.</p>
172
173
174
175 </div>
176 </body>
177 </html>
178