* Docs update (only one section left to go!)
[citadel.git] / citadel / docs / citadel.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4   <title>Citadel/UX Documentation</title>
5                                                                         
6                         
7   <meta http-equiv="content-type"
8  content="text/html; charset=ISO-8859-1">
9 </head>
10   <body>
11                            
12 <div align="center">              
13 <h1>Citadel/UX</h1>
14                            
15 <h2>a messaging and collaboration platform for BBS and groupware applications</h2>
16               Copyright &copy;1987-2003 by the Citadel development team:<br>
17               <br>
18                            
19 <table cellpadding="2" cellspacing="2" border="0" align="center">
20                 <tbody>
21                   <tr>
22                     <td valign="top">Steven M. Bellovin<br>
23                     </td>
24                     <td valign="top"><i>author of public domain 'parsedate' 
25  function<br>
26                     </i></td>
27                   </tr>
28                   <tr>
29                     <td valign="top">Nathan Bryant<br>
30                     </td>
31                     <td valign="top"><i>build system, security, database
32 access,     and   others<br>
33                     </i></td>
34                   </tr>
35                   <tr>
36                     <td valign="top">Art Cancro<br>
37                     </td>
38                     <td valign="top"><i>overall system design and lead developer<br>
39                     </i></td>
40                   </tr>
41                   <tr>
42                     <td valign="top">Brian Costello<br>
43                     </td>
44                     <td valign="top"><i>cosmetics, additional commands<br>
45                     </i></td>
46                   </tr>
47                   <tr>
48                     <td valign="top">Michael Hampton<br>
49                     </td>
50                     <td valign="top"><i>client software development<br>
51                     </i></td>
52                   </tr>
53                   <tr>
54                     <td valign="top">Andru Luvisi<br>
55                     </td>
56                     <td valign="top"><i>troubleshooting and development assistance<br>
57                     </i></td>
58                   </tr>
59                   <tr>
60                     <td valign="top">Daniel Malament<br>
61                     </td>
62                     <td valign="top"><i>string compare function for IMAP
63 server<br>
64                     </i></td>
65                   </tr>
66                   <tr>
67                     <td valign="top">Stu Mark<br>
68                     </td>
69                     <td valign="top"><i>additional client features, IGnet 
70 protocol     design<br>
71                     </i></td>
72                   </tr>
73                   <tr>
74                     <td valign="top">Ben Mehlman<br>
75                     </td>
76                     <td valign="top"><i>additional client features<br>
77                     </i></td>
78                   </tr>
79                   <tr>
80                     <td valign="top">Ari Samson<br>
81                     </td>
82                     <td valign="top"><i>assistance with project management<br>
83                     </i></td>
84                   </tr>
85                   <tr>
86                     <td valign="top">John Walker<br>
87                     </td>
88                     <td valign="top"><i>author of public domain base64 encoder/decoder<br>
89                     </i></td>
90                   </tr>
91                   <tr>
92                     <td valign="top">Steve Williams<br>
93                     </td>
94                     <td valign="top"><i>documentation<br>
95                     </i></td>
96                   </tr>
97                   <tr>
98                     <td valign="top">Ethan Young<br>
99                     </td>
100                     <td valign="top"><i>IGnet protocol design<br>
101                     </i></td>
102                   </tr>
103                                                        
104   </tbody>              
105 </table>
106         </div>
107               <br>
108                            
109 <div align="justify">The entire package is open source; you can redistribute
110        and/or modify it under the terms of the GNU General Public License
111 as   published    by the Free Software Foundation; either version 2 of the
112 License,   or (at   your option) any later version.<br>
113               <br>
114               This program is distributed in the hope that it will be useful, 
115   but   WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
116     or FITNESS   FOR A PARTICULAR PURPOSE.&nbsp; See the GNU General Public 
117   License  for more   details.       </div>
118                      
119 <div align="justify"><br>
120               For more information, visit either of these locations on the
121  web:<br>
122                            
123 <ul>
124                 <li>The Citadel home page: <a
125  href="http://www.citadel.org">http://www.citadel.org</a></li>
126                 <li>UNCENSORED! BBS, the home of Citadel: <a
127  href="http://uncensored.citadel.org">http://uncensored.citadel.org</a></li>
128                            
129 </ul>
130                            
131 <hr width="100%" size="2">              
132 <h2 align="center">Table of Contents</h2>
133                          
134 <ol>
135                <li><a href="#GPL">License</a></li>
136                <li><a href="#Installation">Installation</a></li>
137                            
138   <ol>
139            <li><a href="#Everything_in_its_place...">Everything in its place...</a></li>
140            <li><a href="#The_BBS_Login">The BBS Login</a></li>
141            <li><a href="#Bypassing_the_login:_prompt">Bypassing the login:
142  prompt</a></li>
143            <li><a href="#Compiling_the_programs">Compiling the programs</a></li>
144            <li><a href="#Upgrading">Upgrading</a></li>
145            <li><a href="#The_citadel.rc_file">The citadel.rc file</a></li>
146            <li><a href="#Using_an_external_editor_for_message">Using an external 
147    editor for message composition</a></li>
148            <li><a href="#Printing_messages">Printing messages</a></li>
149            <li><a href="#URL_viewing">URL viewing</a></li>
150            <li><a href="#Setup_and_login">Setup and login</a></li>
151            <li><a href="#Configuring_your_host_system_to_start">Configuring 
152  your   host system to start the service</a></li>
153            <li><a href="#Logging_in_for_the_first_time">Logging in for the
154  first   time</a></li>
155            <li><a href="#Welcoming_new_users">Welcoming new users</a></li>
156            <li><a href="#Space_for_adding_your_own_client">Space for adding 
157  your   own client features (doors)</a></li>
158            <li><a href="#Troubleshooting_and_getting_help">Troubleshooting
159  and   getting help</a><br>
160            </li>
161                            
162   </ol>
163                <li><a href="#sysop">System Administration</a></li>
164                            
165   <ol>
166            <li><a href="#Overview_">Overview</a></li>
167            <li><a href="#Aide_commands">Aide commands</a></li>
168            <li><a href="#Editing_rooms">Editing rooms</a></li>
169            <li><a href="#File_directories">File directories</a></li>
170            <li><a href="#Creating_and_editing_user_accounts">Creating and 
171 editing    user accounts</a></li>
172            <li><a href="#Deleting_and_moving_messages">Deleting and moving
173  messages</a></li>
174            <li><a href="#Customizing_the_help_files">Customizing the help 
175 files</a></li>
176            <li><a href="#Site_configuration">Site configuration</a><br>
177            </li>
178                            
179   </ol>
180                <li> <a href="#Configuring_Citadel_for_Internet_e-mail">Configuring 
181   Citadel for Internet e-mail</a></li>
182                    
183   <ol>
184          <li><a href="#Introduction">Introduction</a></li>
185          <li><a href="#Basic_site_configuration">Basic site configuration</a></li>
186          <li><a href="#Enabling_the_Internet_mail_protocols">Enabling the 
187 Internet   mail protocols</a></li>
188          <li><a href="#Hosting_an_Internet_mailing_list">Hosting an Internet
189   mailing list</a><br>
190          </li>
191         <li><a href="#citmail">Using Citadel in conjunction with another
192 MTA</a></li>
193                         
194   </ol>
195       <li><a href="#Building_or_joining_a_Citadel_network">Building or joining
196   a Citadel network</a></li>
197                
198   <ol>
199         <li><a href="#Overview__">Overview</a></li>
200         <li><a href="#Conventions_and_etiquette_when">Conventions and etiquette
201   when connecting to the public Citadel network</a></li>
202         <li><a href="#Getting_ready_to_join_the_network">Getting ready to 
203 join  the network</a></li>
204         <li><a href="#Defining_neighbor_nodes">Defining neighbor nodes</a></li>
205         <li><a href="#Sharing_rooms">Sharing rooms</a></li>
206         <li><a href="#Sending_mail">Sending mail</a></li>
207         <li><a href="#Changing_the_polling_interval">Changing the polling 
208 interval</a></li>
209                
210   </ol>
211     <li><a href="#Database_maintenance">Database maintenance</a></li>
212        
213   <ol>
214       <li><a href="#Introduction_">Introduction</a></li>
215       <li><a href="#Database_repair">Database repair</a></li>
216       <li><a href="#ImportingExporting_your_Citadel">Importing/Exporting
217 your  Citadel database</a><br>
218       </li>
219        
220   </ol>
221                                    
222 </ol>
223               <br>
224                            
225 <hr width="100%" size="2"><br>
226                            
227 <h2 align="center"><a name="GPL"></a>GNU General Public License<br>
228              </h2>
229              </div>
230                             
231 <p>  Version 2, June 1991  </p>
232                             
233 <pre>Copyright (C) 1989, 1991 Free Software Foundation, Inc.  <br>59 Temple Place - Suite 330, Boston, MA  02111-1307, USA<br><br>Everyone is permitted to copy and distribute verbatim copies<br>of this license document, but changing it is not allowed.<br></pre>
234                               
235 <h3 align="justify">Preamble</h3>
236                          
237 <div align="justify">  </div>
238                          
239 <p align="justify">   The licenses for most software are designed to take 
240       away your freedom to share and change it.  By contrast, the GNU General 
241     Public  License is intended to guarantee your freedom to share and change 
242     free software--to  make sure the software is free for all its users. 
243 This    General Public License  applies to most of the Free Software Foundation's 
244     software and to any other  program whose authors commit to using it. 
245 (Some    other Free Software Foundation  software is covered by the GNU Library
246  General   Public License instead.)  You can apply it to your programs, too.
247   </p>
248                          
249 <div align="justify"> </div>
250                          
251 <p align="justify">    When we speak of free software, we are referring to 
252       freedom, not price.  Our General Public Licenses are designed to make 
253   sure    that you have the freedom to distribute copies of free software 
254 (and  charge    for this service if you wish), that you receive source code 
255 or can get it   if you want it, that you can change the software or use pieces 
256  of it in new free programs; and that you know you can do these things.  </p>
257                          
258 <div align="justify"> </div>
259                          
260 <p align="justify">   To protect your rights, we need to make restrictions 
261       that forbid anyone to deny you these rights or to ask you to surrender 
262    the   rights. These restrictions translate to certain responsibilities 
263 for   you  if you distribute copies of the software, or if you modify it. 
264  </p>
265                          
266 <div align="justify"> </div>
267                          
268 <p align="justify">   For example, if you distribute copies of such a program, 
269       whether gratis or for a fee, you must give the recipients all the rights 
270      that you have.  You must make sure that they, too, receive or can get 
271  the     source code.  And you must show them these terms so they know their 
272  rights.      </p>
273                          
274 <div align="justify"> </div>
275                          
276 <p align="justify">   We protect your rights with two steps: (1) copyright 
277       the software, and (2) offer you this license which gives you legal permission
278       to copy, distribute and/or modify the software.  </p>
279                          
280 <div align="justify"> </div>
281                          
282 <p align="justify">   Also, for each author's protection and ours, we want 
283       to make certain that everyone understands that there is no warranty 
284 for    this  free software.  If the software is modified by someone else and
285 passed    on,  we want its recipients to know that what they have is not
286 the original,    so  that any problems introduced by others will not reflect
287 on the original     authors' reputations.   </p>
288                          
289 <div align="justify"> </div>
290                          
291 <p align="justify">   Finally, any free program is threatened constantly by
292 software patents.  We wish to avoid the danger that redistributors of a free
293 program will individually obtain patent licenses, in effect making the program
294 proprietary.  To prevent this, we have made it clear that any  patent must
295 be licensed for everyone's free use or not licensed at all.  </p>
296                          
297 <div align="justify"> </div>
298                          
299 <p align="justify">   The precise terms and conditions for copying, distribution 
300       and modification follow.  </p>
301                          
302 <div align="justify">   </div>
303                          
304 <h3>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h3>
305                          
306 <div align="justify">   </div>
307                          
308 <p align="justify">  <strong>0.</strong>  This License applies to any program 
309       or other work which contains a notice placed by the copyright holder 
310  saying     it may be distributed under the terms of this General Public License.
311    The   "Program", below, refers to any such program or work, and a "work
312  based  on  the Program" means either the Program or any derivative work
313 under  copyright    law: that is to say, a work containing the Program or
314 a portion  of it, either   verbatim or with modifications and/or translated 
315 into another  language.   (Hereinafter, translation is included without limitation 
316 in the  term "modification".)    Each licensee is addressed as "you". </p>
317                          
318 <p align="justify">  Activities other than copying, distribution and modification 
319       are not covered by this License; they are outside its scope.  The act 
320   of   running the Program is not restricted, and the output from the Program
321     is   covered only if its contents constitute a work based on the Program
322    (independent   of having been made by running the Program). Whether that
323   is true depends   on what the Program does.  </p>
324                          
325 <p align="justify">  <strong>1.</strong>  You may copy and distribute verbatim 
326       copies of the Program's source code as you receive it, in any medium, 
327   provided    that you conspicuously and appropriately publish on each copy 
328   an appropriate    copyright notice and disclaimer of warranty; keep intact 
329   all the notices    that refer to this License and to the absence of any 
330 warranty;  and give  any  other recipients of the Program a copy of this License
331 along  with the  Program.  </p>
332                          
333 <p align="justify">  You may charge a fee for the physical act of transferring 
334       a copy, and you may at your option offer warranty protection in exchange 
335      for a fee. </p>
336                          
337 <p align="justify">  <strong>2.</strong>  You may modify your copy or copies 
338       of the Program or any portion of it, thus forming a work based on the 
339   Program,    and copy and distribute such modifications or work under the 
340  terms of Section    1 above, provided that you also meet all of these conditions: 
341   </p>
342                          
343 <p align="justify">  </p>
344                          
345 <div align="justify">             
346 <ul>
347                <li><strong>a)</strong>      You must cause the modified files 
348   to  carry   prominent notices      stating that you changed the files and 
349   the  date of   any change.                                             
350                     
351     <p> </p>
352                </li>
353                <li><strong>b)</strong>      You must cause any work that
354 you   distribute     or publish, that in      whole or in part contains or
355 is derived  from the    Program or any      part thereof, to be licensed
356 as a whole at  no charge   to all third      parties under the terms of this
357 License.                                                                
358    
359     <p> </p>
360                </li>
361                <li><strong>c)</strong>      If the modified program normally
362   reads    commands  interactively      when run, you must cause it, when
363 started  running   for such      interactive use in the most ordinary way,
364 to print  or display   an       announcement including an appropriate copyright
365 notice  and a      notice  that there is no warranty (or else, saying that
366 you provide       a warranty)  and that users may redistribute the program
367 under      these   conditions, and telling the user how to view a copy of
368 this      License.    (Exception: if the Program itself is interactive but
369      does not normally   print such an announcement, your work based on 
370     the Program is not required   to print  an announcement.) </li>
371                          
372 </ul>
373                These requirements apply to the modified work as a whole.
374  If  identifiable     sections of that work are not derived from the Program,
375  and can be reasonably     considered independent and separate works in themselves,
376   then this License,     and its terms, do not apply to those sections when
377   you distribute them  as   separate works.  But when you distribute the
378 same   sections as part of  a whole  which is a work based on the Program,
379 the distribution  of the whole   must be on the terms of this License, whose
380 permissions for  other licensees   extend  to the entire whole, and thus
381 to each and every  part regardless of  who wrote  it. </div>
382                          
383 <p align="justify">  Thus, it is not the intent of this section to claim rights
384 or contest your rights to work written entirely by you; rather, the intent
385 is to exercise the right to control the distribution of derivative or collective
386 works based on the Program. </p>
387                          
388 <p align="justify">  In addition, mere aggregation of another work not based 
389       on the Program with the Program (or with a work based on the Program) 
390   on   a volume of a storage or distribution medium does not bring the other 
391   work   under the scope of this License.  </p>
392                          
393 <p align="justify">  <strong>3.</strong>   You may copy and distribute the 
394       Program (or a work based on it, under Section 2) in object code or executable
395       form under the terms of Sections 1 and 2 above provided that you also
396   do   one of the following:   <!-- we use this doubled UL to get the sub-sections indented, -->
397        <!-- while making the bullets as unobvious as possible. --> </p>
398                          
399 <div align="justify">             
400 <ul>
401                <li><strong>a)</strong>      Accompany it with the complete
402  corresponding      machine-readable      source code, which must be distributed
403  under the   terms   of Sections      1 and 2 above on a medium customarily
404  used for software    interchange; or,                                  
405                                 
406     <p> </p>
407                </li>
408                <li><strong>b)</strong>      Accompany it with a written offer,
409    valid    for at least three      years, to give any third party, for a
410 charge   no  more  than your      cost of physically performing source distribution,
411    a  complete        machine-readable copy of the corresponding source code,
412    to  be      distributed under the terms of Sections 1 and 2 above on a
413 medium         customarily used for software interchange; or,           
414                                                        
415     <p> </p>
416                </li>
417                <li><strong>c)</strong>       Accompany it with the information
418    you   received  as to the offer      to distribute corresponding source
419  code.   (This alternative  is      allowed only for noncommercial distribution
420  and   only if you      received the program in object code or executable
421 form with  such      an offer, in accord with Subsection b above.) </li>
422                          
423 </ul>
424                The source code for a work means the preferred form of the 
425 work   for   making  modifications to it.  For an executable work, complete 
426 source   code   means all the source code for all modules it contains, plus 
427 any associated     interface  definition files, plus the scripts used to control
428 compilation     and installation  of the executable.  However, as a special
429 exception,  the   source code distributed  need not include anything that
430 is normally  distributed   (in either source or binary form) with the major
431 components  (compiler, kernel,   and so on) of the operating system on which
432 the executable  runs, unless that  component itself  accompanies the executable.
433 </div>
434                          
435 <p align="justify">  If distribution of executable or object code is made 
436       by offering access to copy from a designated place, then offering equivalent
437        access to copy the source code from the same place counts as distribution 
438       of the source code, even though third parties are not compelled to copy
439     the  source along with the object code. </p>
440                          
441 <p align="justify">  <strong>4.</strong>  You may not copy, modify, sublicense, 
442       or distribute the Program except as expressly provided under this License. 
443        Any attempt otherwise to copy, modify, sublicense or distribute the 
444  Program     is void, and will automatically terminate your rights under this
445  License.     However, parties who have received copies, or rights, from
446 you  under this    License will not have their licenses terminated so long
447 as such parties   remain  in full compliance.  </p>
448                          
449 <p align="justify">  <strong>5.</strong>   You are not required to accept 
450       this License, since you have not signed it.  However, nothing else grants
451       you permission to modify or distribute the Program or its derivative 
452  works.      These actions are prohibited by law if you do not accept this 
453  License.    Therefore, by modifying or distributing the Program (or any work
454  based on   the Program), you indicate your acceptance of this License to
455 do so, and  all its terms and conditions for copying, distributing or modifying
456  the Program   or works based on it.  </p>
457                          
458 <p align="justify">  <strong>6.</strong>  Each time you redistribute the Program
459 (or any work based on the Program), the recipient automatically receives a
460 license from the original licensor to copy, distribute or modify the Program 
461       subject to these terms and conditions.  You may not impose any further 
462    restrictions   on the recipients' exercise of the rights granted herein. 
463   You are not responsible   for enforcing compliance by third parties to this
464   License.  </p>
465                          
466 <p align="justify">  <strong>7.</strong>  If, as a consequence of a court 
467       judgment or allegation of patent infringement or for any other reason 
468   (not    limited to patent issues), conditions are imposed on you (whether 
469   by court    order, agreement or otherwise) that contradict the conditions 
470   of this License,    they do not excuse you from the conditions of this License.
471    If you cannot    distribute so as to satisfy simultaneously your obligations
472    under this License  and any other pertinent obligations, then as a consequence
473    you may not distribute  the Program at all.  For example, if a patent
474 license    would not permit royalty-free  redistribution of the Program by
475 all those    who receive copies directly or  indirectly through you, then
476 the only way    you could satisfy both it and this  License would be to refrain
477 entirely   from distribution of the Program. </p>
478                          
479 <p align="justify">  If any portion of this section is held invalid or unenforceable 
480       under any particular circumstance, the balance of the section is intended 
481       to apply and the section as a whole is intended to apply in other circumstances.
482         </p>
483                          
484 <p align="justify">  It is not the purpose of this section to induce you to
485 infringe any patents or other property right claims or to contest validity 
486       of any such claims; this section has the sole purpose of protecting 
487 the    integrity  of the free software distribution system, which is implemented 
488     by public license practices.  Many people have made generous contributions 
489     to the wide range of software distributed through that system in reliance 
490     on consistent application of that system; it is up to the author/donor 
491  to   decide if he or she is willing to distribute software through any other 
492   system  and a licensee cannot impose that choice. </p>
493                          
494 <p align="justify">  This section is intended to make thoroughly clear what 
495       is believed to be a consequence of the rest of this License.  </p>
496                          
497 <p align="justify">  <strong>8.</strong>  If the distribution and/or use of
498 the Program is restricted in certain countries either by patents or by copyrighted
499 interfaces, the original copyright holder who places the Program under this
500 License may add an explicit geographical distribution limitation excluding
501 those countries, so that distribution is permitted only in or among  countries
502 not thus excluded.  In such case, this License incorporates the limitation
503 as if written in the body of this License.  </p>
504                          
505 <p align="justify">  <strong>9.</strong>  The Free Software Foundation may 
506       publish revised and/or new versions of the General Public License from 
507    time   to time.  Such new versions will be similar in spirit to the present 
508    version,   but may differ in detail to address new problems or concerns. 
509    </p>
510                          
511 <p align="justify">  Each version is given a distinguishing version number. 
512        If the Program specifies a version number of this License which applies 
513      to it and "any later version", you have the option of following the terms
514      and conditions either of that version or of any later version published
515    by  the Free Software Foundation.  If the Program does not specify a version
516     number of this License, you may choose any version ever published by
517 the    Free Software Foundation.  </p>
518                          
519 <p align="justify">   <strong>10.</strong>  If you wish to incorporate parts 
520       of the Program into other free programs whose distribution conditions 
521   are    different, write to the author to ask for permission.  For software 
522   which    is copyrighted by the Free Software Foundation, write to the Free 
523   Software    Foundation; we sometimes make exceptions for this.  Our decision 
524   will be   guided by the two goals of preserving the free status of all derivatives
525     of our free software and of promoting the sharing and reuse of software
526   generally.       </p>
527                          
528 <p align="justify"><strong>NO WARRANTY</strong></p>
529                          
530 <div align="justify">  </div>
531                          
532 <p align="justify">  <strong>11.</strong>   BECAUSE THE PROGRAM IS LICENSED 
533       FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT 
534 PERMITTED      BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING 
535 THE COPYRIGHT      HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" 
536 WITHOUT WARRANTY      OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 
537 BUT NOT LIMITED TO,    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
538 FOR A PARTICULAR  PURPOSE.     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE 
539 OF THE PROGRAM  IS WITH    YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
540 THE COST OF ALL NECESSARY    SERVICING, REPAIR OR CORRECTION.  </p>
541                          
542 <p align="justify">  <strong>12.</strong>  IN NO EVENT UNLESS REQUIRED BY 
543       APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR 
544  ANY    OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED 
545    ABOVE,  BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
546     OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
547   PROGRAM    (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
548   INACCURATE    OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE
549 OF   THE PROGRAM  TO  OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
550 OR   OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  </p>
551                          
552 <p align="justify">   </p>
553                          
554 <h3>END OF TERMS AND CONDITIONS</h3>
555               <br>
556                            
557 <hr width="100%" size="2"><br>
558                          
559 <div align="center">        
560 <h2><a name="Installation"></a>Installation</h2>
561         </div>
562                        
563 <div align="justify">             
564 <h3>Overview</h3>
565                        
566 <p>Citadel/UX is an advanced, multiuser, client/server, room-based BBS program. 
567       It is designed to handle the needs of both small dialup systems and 
568 large-scale     Internet-connected systems.  It was originally developed on
569 an Altos system     running Xenix, and has been installed and tested on various
570 Unix and Unix-like     platforms.  The author's current development environment
571 (and BBS) is an   ordinary Linux system.  The current distribution includes:
572 </p>
573                      
574 <ul>
575             <li>The Citadel/UX server (this is the back end that does all 
576 processing)        </li>
577              <li>A text-based client program designed with the traditional
578  Citadel     "look  and feel" (room prompts, dot commands, and the like)
579   </li>
580              <li>Setup programs </li>
581              <li>A set of utilities for system administration and maintenance 
582     </li>
583              <li>Documentation </li>
584                      
585 </ul>
586                         
587 <p>Some knowledge of the Unix system is necessary to install and manage the
588       system. It is mandatory that the sysop have "root" access to the operating
589       system. The following are required to install Citadel/UX: </p>
590                      
591 <ul>
592             <li>A Unix operating system (Linux, BSD, Solaris, Tru64, HP/UX) 
593    </li>
594              <li>C compiler (such as gcc or egcs) and "make" </li>
595              <li>POSIX threads (the "pthreads" library) </li>
596              <li>TCP/IP </li>
597              <li><a href="http://www.sleepycat.com">Berkeley DB</a> v4.1
598 or  newer    (GDBM  also works, but its use is officially depracated.  If
599 you  are building    a new system, do <i>not</i> use GDBM.  If you have an
600 existing  system which    uses GDBM, you should migrate it to Berkeley DB
601 as soon as  possible.) </li>
602              <li>Enough disk space to hold all of the programs and data </li>
603                      
604 </ul>
605                          
606 <p>If you are running Citadel/UX on a Linux system, it is STRONGLY recommended
607       that you run it on a recent distribution (such as  <a
608  href="http://www.redhat.com">Red Hat</a> 7.3 or newer).  A new-ish distribution 
609      will have most or all of the prerequisite tools and libraries already 
610  integrated    for you.</p>
611                              
612 <h3>Now available:</h3>
613                         
614 <ul>
615             <li>"WebCit", a gateway program to allow full access to Citadel 
616  via   the  World Wide Web.  Interactive access through any Web browser. 
617  </li>
618              <li>Access to Citadel via <i>any</i> standards-compliant e-mail
619   program,   thanks  to Citadel's built-in SMTP, POP, and IMAP services.
620 &nbsp;You   can  use Netscape/Mozilla, Evolution, Eudora, Pine, or even Microsoft
621 VirusSpreader    (better known as "Outlook") with Citadel. </li>
622                      
623 </ul>
624                          
625 <h3>Coming soon:</h3>
626                        
627 <ul>
628             <li>Newer and better GUI-based clients. </li>
629                      
630 </ul>
631                       
632 <h3><a name="Everything_in_its_place..."></a>Everything in its place...</h3>
633                       
634 <p>Hopefully you've unpacked the distribution archive into its own directory.
635      This is the directory in which all Citadel files are located and in
636 which      all activity will take place.  Several subdirectories have already
637 been    created  during the unpacking process, and others may be created
638 by the  software  if  needed.  Make sure you have Berkeley DB installed on
639 your system,  and  that  you have all the development libraries and headers
640 in place so  that  you can  compile against them.  If you don't, you can
641 get the latest  Berkeley   DB at  <a href="http://www.sleepycat.com">http://www.sleepycat.com</a>.
642    If your  operating system uses a separate library to support POSIX threads
643    (pthreads),  make sure that library is installed as well.  This is almost
644    never the case  with Linux, but some commercial Unix flavors might need
645  it.</p>
646                   
647 <h3><a name="The_BBS_Login"></a></h3>
648              
649 <h3>The BBS Login</h3>
650                   
651 <p>As with many Unix programs, Citadel wants to run under its own user ID. 
652     Unlike other programs, however, this user ID will do double-duty as a 
653 public    login for your system if you are running a BBS.  This account is 
654 typically    called "bbs" or "citadel" or something to that effect. You will 
655 tell Citadel   what the user-id of that account is, and when someone logs 
656 in under that  account, Citadel will prompt for a user name.</p>
657                   
658 <p>The Citadel user should have a unique uid. The home directory should be
659     the one your Citadel installation resides in (in this example we will
660 use    /usr/local/citadel) and the shell should be either "citadel" in that
661 directory,    or a script that will start up citadel (you may wish to set
662 up an external    text editor; see below). Example:</p>
663                   
664 <pre>bbs::100:1:BBS Login:/usr/local/citadel:/usr/local/citadel/citadel<br></pre>
665                   
666 <p>When you run setup later, you will be required to tell it what the Citadel 
667     user's numeric user ID is, so it knows what user to run as.  If you create 
668     an account called <tt>bbs</tt>, <tt>guest</tt>, or <tt>citadel</tt>, the
669    setup program will automatically pick up the user ID by default.</p>
670                   
671 <p>For all other users in /etc/passwd, Citadel will automatically set up
672 an account using the full name (or 'gecos' in Unixspeak) of the user.  It'll
673     also ignore any password you supply, because it uses the user's password
674    on the host system.  This allows a 'single sign on' type of environment.
675   Note  that this does have to be enabled at compile time -- it's the configure
676   option  called <tt>--enable-autologin</tt>.  Keep in mind that these users
677   can use  *either* their Citadel login name or their login name on the host
678   computer,  and their password on the host computer.</p>
679                   
680 <h3><a name="Bypassing_the_login:_prompt"></a></h3>
681              
682 <h3>Bypassing the <tt>login:</tt> prompt</h3>
683                   
684 <p>If you normally log in to your host system using some method other than 
685     telnet (such as ssh), you might want the telnet service to go straight 
686  to   the Citadel BBS, instead of displaying the <tt>login:</tt> prompt first.
687      You can do this by having telnetd start citadel directly instead of
688 <tt>/bin/login</tt>.     This is actually very simple to implement; all you
689 need to do is make a  simple change to your <tt>inetd</tt> or <tt>xinetd</tt>
690 configuration.  Here  are some configuration examples.</p>
691                   
692 <p>An example for <tt>inetd</tt> (put the following line in <tt>/etc/inetd.conf</tt>, 
693     replacing any existing telnet configuration line already there):</p>
694                   
695 <pre>telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -L /usr/local/citadel/citadel<br></pre>
696                   
697 <p>An example for <tt>xinetd</tt> (if you have a file called <tt>/etc/xinetd.d/telnet</tt> 
698     then simply replace that file with this one):</p>
699                   
700 <pre>service telnet<br>{<br>    flags           = REUSE<br>     socket_type     = stream<br>    wait            = no<br>        user            = root<br>      server          = /usr/sbin/in.telnetd<br>      server_args     = -L /usr/local/citadel/citadel<br>     log_on_failure  += USERID<br>   disable         = no<br>}<br></pre>
701                   
702 <p>Please make sure you know what you're doing before you install this!  If
703 you are going to put Citadel somewhere other than <tt>/usr/local/citadel</tt>
704     then change the directory name accordingly.  If you know of any other
705 local    peculiarities which need to be observed, edit the above configuration
706 accordingly    as well.  And, of course, if you're working remotely, make
707 sure you can  successfully  log in using SSH before you start changing your
708 telnet configuration,  otherwise  you could lock yourself out of your system
709 (ask any networking  specialist  about the dangers of "working inline" --
710 then pull up a chair  and get a fresh  cup of coffee, because you're going
711 to hear some war stories).</p>
712                   
713 <h3><a name="Compiling_the_programs"></a>Compiling the programs</h3>
714                   
715 <p>You can easily compile the Citadel system with the following commands:</p>
716                   
717 <pre>./configure<br>make<br>make install<br></pre>
718                   
719 <p>The 'configure' script will generate a Makefile from the Makefile.in,
720 and it will also write the file "sysdep.h" to your Citadel directory.  Please
721     do not edit sysdep.h or Makefile.in yourself.  The configure script will
722    figure out your system dependencies and set everything correctly.</p>
723                   
724 <p>Mac OS X 10.1 and later are now supported.  (Sorry, 10.0 cannot be supported, 
725    now or in the future.)  You need to install the Developer Tools CD, which 
726    you can purchase or download for free from <a
727  href="http://developer.apple.com">http://developer.apple.com</a>. Then run
728     configure like this:</p>
729                 
730 <pre>env CC=/usr/bin/cc ./configure (options - see below)<br></pre>
731                 
732 <p>By default, the Citadel system will install in <tt>/usr/local/citadel</tt>.
733     If you wish to place it in a different directory, you can instead do:</p>
734                   
735 <pre>./configure --prefix=/export/home/citadel      (or whatever)<br></pre>
736                   
737 <p>If you've got Berkeley DB installed in a non-standard location, you can 
738    help the configure script find it by doing something like this:</p>
739                   
740 <pre>./configure --with-db=/usr/local/BerkeleyDB-4.1<br></pre>
741                   
742 <p>The configure script prefers Berkeley DB if it is available, but will fall
743 back to GDBM if it has to.</p>
744                   
745 <p>File permissions are always a bother to work with. You don't want Citadel 
746    to crash because someone couldn't access a file, but you also don't  want 
747    shell users peeking into the binaries to do things like reading others' 
748   mail, finding private rooms, etc.  The Citadel server needs to be started
749     as root in order to bind to privileged ports, but as soon as its initialization
750    is finished, it changes its user ID to your BBS user ID in order to avoid
751    security holes.</p>
752                   
753 <h3><a name="Upgrading"></a></h3>
754              
755 <h3>Upgrading</h3>
756               
757 <p>Any existing Citadel installation which is at version 5.50 or newer may
758    be upgraded in place without the need to discard your existing data files.</p>
759               
760 <p>Upgrading to a new version uses the same build procedure as compiling
761 the program for a fresh install, except that you want to do <tt>make install-exec</tt> 
762     instead of <tt>make install</tt>.  This will overwrite the programs but 
763   not your data.  <b>Be sure to shut down citserver during this process!</b> 
764    If Citadel is running while you upgrade, you may face data corruption issues.<br>
765        </p>
766               
767 <p>After doing <tt>make install-exec</tt>, you should run <tt>setup</tt>
768 again to bring your data files up to date.  Please see the setup section
769 below for more information on this.</p>
770                 
771 <h3><a name="The_citadel.rc_file"></a>The <tt>citadel.rc</tt> file</h3>
772                   
773 <p>The text-based client included with Citadel is suitable for BBS applications. 
774     Much of its command set and other behavior is configurable through a Run
775    Control (RC) file. The standard client looks for this file in the following
776    locations: </p>
777              
778 <ul>
779         <li><tt>$HOME/.citadelrc</tt></li>
780         <li><tt>/usr/local/lib/citadel.rc</tt></li>
781         <li><i>your-Citadel-directory</i><tt>/citadel.rc</tt></li>
782                
783 </ul>
784         The next couple of sections deal with client-side configuration.
785            
786 <h3><a name="Using_an_external_editor_for_message"></a>Using an external editor
787 for message composition</h3>
788                   
789 <p>Citadel/UX has a built-in message editor.  However, you can also use your 
790    favorite text editor to write messages.  To do this you simply put a line 
791    in your citadel.rc file like this:</p>
792                   
793 <pre>editor=/usr/bin/vi<br></pre>
794                 
795 <p>The above example would make Citadel call the vi editor when using  the 
796    <tt><b>.E</b>nter <b>E</b>ditor</tt> command. You can also make it the 
797 default   editor for the <tt><b>E</b>nter</tt> command by editing the <tt>citadel.rc</tt>
798     file.  <b>But be warned:</b> external editors on public systems can be
799  a  security hole, because they usually provide users with the ability to
800 drop  into a shell on the host system, or save files using names other than
801 the  name of the temporary file they are editing.  If you intend to use an
802 external  editor on a public BBS, make sure you use one that has been hardened
803 for such a purpose -- one which has had the 'shell' and 'save as' commands
804 disabled,   as well as any other functions which a destructive user could
805 use to gain   unauthorized access to your host system.</p>
806                   
807 <h3><a name="Printing_messages"></a>Printing messages</h3>
808                   
809 <p>Citadel/UX can send messages to a printer, or just about anywhere else 
810    in your system.  The variable <tt>PRINTCMD</tt> in <tt>citadel.rc</tt> 
811 specifies   what command you use to print.  Text is sent to the standard input
812 (stdin)   of the print command.</p>
813                   
814 <p>So if you did this:</p>
815                   
816 <pre>printcmd="nl|pr|lpr -Plocal"<br></pre>
817                   
818 <p>...that would add line numbers, then paginate, then print on the printer 
819    named "local".  There's tons of stuff you can do with this feature.  For 
820   example, you could use a command like <tt>cat &lt;&lt;$HOME/archive</tt> 
821  to save copies of important messages in a textfile.  Again, this is probably 
822    something you don't want to configure for a public BBS host -- most system 
823    administrators don't want remote users sending arbitrary things to local 
824   printers.</p>
825                   
826 <h3><a name="URL_viewing"></a>URL viewing</h3>
827                   
828 <p>This is one more feature which is appropriate for local users.  While reading
829 a message that has Internet URL's in it, you can select the <tt><b>U</b>RL-view</tt> 
830    command, and it will perform some pre-defined action (usually, this is 
831 to   open up the URL in a web browser).  For example:</p>
832                   
833 <pre>urlcmd=netscape -remote "openURL(%s)"<br></pre>
834                   
835 <p>In the above example, it would open up the URL in an open <a
836  href="http://www.netscape.com/download">Netscape</a> window.</p>
837                   
838 <h3><a name="Setup_and_login"></a></h3>
839              
840 <h3>Setup and login</h3>
841                   
842 <p>Before logging in for the first time, you must run the setup program. 
843 To begin this procedure, enter the following commands:</p>
844                   
845 <pre>cd /usr/local/citadel<br>./setup<br></pre>
846                   
847 <p>The setup program will guide you through a simple configuration procedure. 
848    It will ask you what directory to place your data files in -- the default 
849    is the current directory, which is usually the sensible thing to select. 
850    If you want to run more than one instance of Citadel on the same host, 
851 however,   you can specify a different directory here -- just remember to 
852 specify the   directory name again when you start up the server later on.</p>
853                   
854 <p><tt>setup</tt> will then shut down the Citadel service if it is found to
855 be running.</p>
856                   
857 <p>You will then be prompted for the name of the system administrator. This 
858    is not merely a cosmetic option -- when you log in to your system a little 
859    while from now, you'll log in with this name, and it will automatically 
860  assign  your account the highest access level.</p>
861                   
862 <p>Next, you will be prompted for the User ID of the Citadel account on your 
863    host system.  If you have an account called <tt>bbs</tt>, <tt>guest</tt>,
864     or <tt>citadel</tt>, that account's UID will be the default.  If you
865 are    upgrading or reconfiguring an existing system, the existing value
866 will be   preserved.</p>
867                   
868 <p>Then you will be prompted for a server port number.  This is the TCP port 
869    which Citadel clients use to connect to your Citadel server.  In almost 
870  all  cases, you want to use the default -- port 504, which is the official 
871  port  number assigned by the IANA for Citadel implementations.</p>
872                   
873 <p>The Citadel service will then be started, and you will see the following 
874    message:</p>
875                   
876 <pre>Setup is finished.  You may now log in.<br></pre>
877                   
878 <p>Setup is now complete, on most systems, anyway.  Please see below to find 
879    out if you need to do anything else:</p>
880                   
881 <h3><a name="Configuring_your_host_system_to_start"></a>Configuring your host
882 system to start the service</h3>
883                   
884 <p><b>Please note:</b> this topic involves modifications made to <tt>/etc/services</tt> 
885    and <tt>/etc/inittab</tt> in order to configure your host system to automatically 
886    start the Citadel service.  <tt>setup</tt> will automatically perform these
887    steps if it can, and if you allow it to -- just answer 'Yes' when prompted,
888    and everything will be taken care of for you.  If you answer 'No' -- or
889  if  your system is a little bit odd (for example, BSD systems don't have
890 <tt>/etc/inittab</tt>)  -- read this section and do what you need to in order
891 to get things configured.</p>
892                    
893 <p>Before you can use Citadel, you must define the "citadel" service to your 
894     system.  This is accomplished by adding a line to your /etc/services file
895    that looks something like this:</p>
896                   
897 <pre>citadel            504/tcp                 # Citadel/UX Server<br></pre>
898                   
899 <p>504 is the port number officially designated by the IANA for use by Citadel. 
900     There should not be any need to use a different port number, unless you 
901   are  running multiple Citadels on the same computer and therefore need a
902  different port for each one.</p>
903                   
904 <p>The next step is to arrange for the server to start.  The <tt>citserver</tt> 
905     program is the main Citadel server.  Before we cover the recommended method
906    of starting the server, let's examine its usage options:</p>
907                   
908 <pre>citserver [-hHomeDir] [-xDebugLevel] [-tTraceFile] [-d] [-f]<br></pre>
909                   
910 <p>The options are as follows:</p>
911                   
912 <p><tt>-hHomeDir</tt> - the directory your BBS data files live in.  This should,
913 of course, be a directory that you've run the <tt>setup</tt> program against
914 to set up some data files.  If a directory is not specified, the directory
915 name which was specified in the <tt>Makefile</tt> will be used.</p>
916                   
917 <p><tt>-xDebugLevel</tt> - Set the verbosity of trace messages printed.  The
918 available  debugging levels are: </p>
919                
920 <ul>
921          <li>1 - Internal errors (failed thread creation, malloc problems,
922  etc.)     </li>
923           <li>2 - Network errors (broken sockets, failed socket creation) 
924        </li>
925           <li>3 - Begin and end of sessions, startup/shutdown of server </li>
926           <li>5 - Server commands being sent from clients </li>
927           <li>7 - Entry and exit of various functions  </li>
928           <li>8 - Entry and exit of critical sections </li>
929           <li>9 - Various debugging checkpoints (insanely verbose) </li>
930                
931 </ul>
932                   
933 <p><tt>-tTraceFile</tt> - Tell the server where to send its debug/trace output. 
934      Normally it is sent to stdout.</p>
935                   
936 <p><tt>-d</tt> - Run as a daemon; i.e. in the background.  This switch would 
937    be necessary if you were  starting the Citadel server, for example, from 
938   an rc.local script (which is  not recommended, because this won't allow 
939 the  server to automatically restart when it is shut down).</p>
940                   
941 <p><tt>-f</tt> - Defragment all the databases upon startup.  This isn't normally 
942    necessary due to the nature of the data stored in Citadel, but the option 
943    is provided in case you need it.  (Note that this only applies to GDBM 
944 installations;   if you are using Berkeley DB it has no effect.)</p>
945                   
946 <p>The preferred method of starting the Citadel server is to place an entry 
947    in your /etc/inittab file.  This will conveniently bring the server up 
948 when   your  system is up, and terminate it gracefully when your system is 
949 shutting   down.   The exact syntax for your system may vary, but here's an
950 entry that   could be used on a Linux system:</p>
951                   
952 <pre>cit:2345:respawn:/usr/local/citadel/citserver -h/usr/local/citadel -t/dev/tty9 -x3<br></pre>
953                   
954 <p>In this example, we've chosen debugging level 3, and have the trace stuff 
955    output to one of the virtual consoles.  It's important to remember to turn
956    off any getty that is set up on that virtual console, if you do this. 
957 After   making this change, the command <tt>init q</tt> works on most systems 
958 to  tell init to re-read the file.  If in doubt, just reboot the computer.</p>
959                   
960 <h3><a name="Logging_in_for_the_first_time"></a>Logging in for the first time</h3>
961                   
962 <p>At this point, your system is ready to run. Run the <tt>citadel</tt> program 
963    from the shell and log in as a new user.  NOTE: the first user account 
964 to   be created will automatically be set to access level 6 (Aide).  This 
965 overcomes   some obvious logistical problems - normally, Aide access is given 
966 by another   Aide, but since there aren't any on your system yet, this isn't 
967 possible.</p>
968                   
969 <h3><a name="Welcoming_new_users"></a>Welcoming new users</h3>
970                   
971 <p>Sometimes you might decide that you want a welcome message (or several 
972    different messages) automatically mailed to new users upon their first 
973 login.   Now there is a way to do this.  If you create a room called <tt>New 
974 User  Greetings</tt>, and it is a <i>private</i> room (invitation-only probably 
975    makes the most sense), any messages you enter into that room will automatically 
976    be delivered to all new users upon registration.</p>
977                   
978 <p>You can put anything you want there: a welcome message, system policies, 
979    special information, etc.  You can also put as many messages there as you
980    want to (although it really doesn't make sense to clutter new users' mailboxes
981    with lots of junk).</p>
982                   
983 <p>Don't worry about wasting disk space, either.  Citadel has a single-instance 
984     message store, so all the new users are actually looking at the same copy
985    of the message on disk.</p>
986                     
987 <h3><a name="Space_for_adding_your_own_client"></a>Space for adding your own
988 client features (doors)</h3>
989                   
990 <p><b>Please take note!</b>  This function really represents the "old" way 
991    of doing things, and it doesn't fit in well with the client/server  paradigm. 
992     Please consider it "deprecated" because it may be removed someday.</p>
993                   
994 <p>The "doorway" feature is just a generic way to add features to the system. 
995    I called it "Doorway" to make it resemble the doors on non-Unix boards, 
996  but  as we all know, us Unix types don't have to write special code to access 
997   the modem. :-)  Anyway, when a user hits the <tt><b>*</b></tt> (doorway) 
998  command, Citadel does...</p>
999                   
1000 <pre>USERNAME=(username); export USERNAME<br>./subsystem (user-number) (screen-width) (access level)<br></pre>
1001                   
1002 <p>...so you can put whatever you want in there.  I suggest putting in a menu
1003 program to allow the users to pick one of a number of programs, etc.  Do
1004 be aware that door programs will only be available when the client and server
1005 programs are running on the <i>same</i> computer, and when the user is running
1006 the text-mode client.  Because of these restrictions, Door programs are being
1007 utilized less and less every day.</p>
1008                   
1009 <h3><a name="Troubleshooting_and_getting_help"></a>Troubleshooting and getting 
1010    help</h3>
1011                   
1012 <p>That's just about all the information you need to install the system. 
1013 But if you get stuck, you can visit UNCENSORED! BBS and report a problem or
1014 ask for help.  But if you intend to report a problem getting the Citadel server
1015 to run, <i>please</i> double-check the following things first:  </p>
1016                
1017 <ul>
1018          <li>Did you do <tt>./configure &amp;&amp; make &amp;&amp; make install</tt>
1019      ?? </li>
1020           <li>Did you run setup? </li>
1021           <li>Did you start the server? </li>
1022                
1023 </ul>
1024                   
1025 <p>To report a problem, you can log on to UNCENSORED! or any other BBS on 
1026    the Citadel network which carries the <tt>Citadel/UX&gt;</tt> room.  Please 
1027    DO NOT e-mail the developers directly.  Post a request for help on the 
1028 BBS,   with all of the following information: </p>
1029                
1030 <ul>
1031          <li>The exact nature of your difficulty </li>
1032           <li>A transcript of the error message(s) if possible </li>
1033           <li>The version of Citadel you are running </li>
1034           <li>The version of Berkeley DB present on your system </li>
1035           <li>Which operating system you are running, and what version </li>
1036           <li>If you are running a Linux system, we need to know which distribution,
1037     and the version of the kernel, libc, and pthreads you are using (it would
1038     help to post the output of a <tt>ldd ./citserver</tt> command). </li>
1039                
1040 </ul>
1041           </div>
1042                  
1043 <div align="center">        
1044 <hr width="100%" size="2">              
1045 <h2><a name="sysop"></a>System Administration</h2>
1046         </div>
1047                 
1048 <div align="justify">         
1049 <h3><a name="Overview_"></a>Overview</h3>
1050                 
1051 <p>Citadel/UX, when installed properly, will do most of its maintenance by
1052     itself.  It is intended to be run unattended for extended periods of
1053 time,    and most installations do just that without any software failures.</p>
1054                 
1055 <p>The system has seven access levels.  Most users are at the bottom and have
1056 no special privileges. Aides are selected people who have special access within
1057 the Citadel program.  Room Aides only have this access in a certain room.
1058  Preferred users can be selected by Aides for access to preferred only rooms.
1059  A sysop is anyone who has access to the various sysop utilities - these
1060 are in their own executable files, which should have their permissions set
1061 to allow only sysops to run them.  You should either create a sysops group
1062 in /etc/group, or use some other existing group for this purpose.</p>
1063                    
1064 <p>Aides have access to EVERY room on the system, public and private (all
1065     types). They also have access to commands starting with <tt>.<b>A</b>ide</tt> 
1066    in addition to being able to delete and move messages.  The system room,
1067    <tt>Aide&gt;</tt>, is accessible only by those users designated as Aides.</p>
1068                   
1069 <h3><a name="Aide_commands"></a>Aide commands</h3>
1070                     
1071 <p>Aides have the following commands available to them that are not available
1072     to normal users. They are:</p>
1073                
1074 <table>
1075          <tbody>
1076            <tr>
1077              <td width="30%"><tt> .<b>A</b>ide <b>K</b>ill this room </tt></td>
1078              <td> Deletes the current room from the system. </td>
1079            </tr>
1080          <tr>
1081              <td width="30%"><tt> .<b>A</b>ide <b>E</b>dit this room </tt></td>
1082              <td> Allows editing of the properties of the current room. 
1083 This   is  explained in greater detail below. </td>
1084            </tr>
1085          <tr>
1086              <td width="30%"><tt> .<b>A</b>ide <b>W</b>ho knows room </tt></td>
1087              <td> For private rooms with access controls, or mailbox rooms, 
1088  this   command displays a list of users who have access to the current room. 
1089        </td>
1090            </tr>
1091          <tr>
1092              <td width="30%"><tt> .<b>A</b>ide edit <b>U</b>ser </tt></td>
1093              <td> Allows editing of the properties of any user account on 
1094 the   system.        </td>
1095            </tr>
1096          <tr>
1097              <td width="30%"><tt> .<b>A</b>ide <b>V</b>alidate new users
1098       </tt></td>
1099              <td> For public access systems, this command reviews all new 
1100 user   registrations  and allows you to set each new user's access level (or
1101 simply   delete the accounts).        </td>
1102            </tr>
1103          <tr>
1104              <td width="30%"><tt> .<b>A</b>ide enter <b>I</b>nfo file </tt></td>
1105              <td> Each room may contain a short textual description of its
1106  purpose,   which is displayed to users upon entering the room for the first
1107  time (or   in the room banner, for users of the Web client).  This command
1108  allows you   to enter or edit that description. </td>
1109            </tr>
1110          <tr>
1111              <td width="30%"><tt> .<b>A</b>ide <b>R</b>oom <b>I</b>nvite
1112 user         </tt></td>
1113              <td> Access control command to grant any specific user access
1114  to  a  private room. </td>
1115            </tr>
1116          <tr>
1117              <td width="30%"><tt> .<b>A</b>ide <b>R</b>oom <b>K</b>ick out
1118  user         </tt></td>
1119              <td> Access control command to revoke any specifc user's access
1120   to  the current room.  This works regardless of whether the room is public
1121   or  private. </td>
1122            </tr>
1123          <tr>
1124              <td width="30%"><tt> .<b>A</b>ide <b>F</b>ile <b>D</b>elete
1125       </tt></td>
1126              <td> If the current room has an associated file directory, this
1127   command  may be used to delete files from it. </td>
1128            </tr>
1129          <tr>
1130              <td width="30%"><tt> .<b>A</b>ide <b>F</b>ile <b>S</b>end over 
1131  net        </tt></td>
1132              <td> If the current room has an associated file directory, this
1133   command  may be used to transmit a copy of any file in that directory to
1134  another node  on a Citadel network. </td>
1135            </tr>
1136          <tr>
1137              <td width="30%"><tt> .<b>A</b>ide <b>F</b>ile <b>M</b>ove </tt></td>
1138              <td> If the current room has an associated file directory, this
1139   command  may be used to move any file in that directory to another room.
1140   The target  room must also have an associated file directory. </td>
1141            </tr>
1142          <tr>
1143              <td width="30%"><tt> .<b>A</b>ide <b>M</b>essage edit </tt></td>
1144              <td> This command allows editing of any of the various system
1145  banners   and messages which are displayed to users.  Type the name of the
1146  banner or  message you wish to edit. </td>
1147            </tr>
1148          <tr>
1149              <td width="30%"><tt> .<b>A</b>ide <b>P</b>ost </tt></td>
1150              <td> This is the functional equivalent of the <tt><b>E</b>nter 
1151  message</tt>   command available to all users, except that it allows you 
1152 to post using any  user name. </td>
1153            </tr>
1154          <tr>
1155              <td width="30%"><tt> .<b>A</b>ide <b>S</b>ystem configuration
1156        <b>G</b>eneral          </tt></td>
1157              <td> This command allows configuration of a large number of
1158 global    settings for your Citadel system.  These settings will be explained
1159 in greater   detail below. </td>
1160            </tr>
1161          <tr>
1162              <td width="30%"><tt> .<b>A</b>ide <b>S</b>ystem configuration
1163        <b>I</b>nternet          </tt></td>
1164              <td> This command allows configuration of settings which affect
1165   how  your Citadel system sends and receives messages on the Internet. </td>
1166            </tr>
1167          <tr>
1168              <td width="30%"><tt> .<b>A</b>ide <b>S</b>ystem configuration
1169  check         <b>M</b>essage base </tt></td>
1170              <td> Perform a consistency check on your message store.  This
1171  is  a  very time-consuming operation which should not be performed unless
1172  you  have  reason to believe there is trouble with your database. </td>
1173            </tr>
1174          <tr>
1175              <td width="30%"><tt> .<b>A</b>ide <b>S</b>ystem configuration
1176        <b>N</b>etwork          </tt></td>
1177              <td> Configure networking (e-mail, room sharing, etc.) with
1178 other    Citadel nodes. </td>
1179            </tr>
1180          <tr>
1181              <td width="30%"><tt> .<b>A</b>ide <b>S</b>ystem configuration
1182  network         <b>F</b>ilter list </tt></td>
1183              <td> If you are on a large public or semi-public network of
1184 Citadel    nodes and you find content from certain systems or individuals
1185 objectionable,    you can use this command to define a rule set to automatically
1186 reject those    messages when they arrive on your system. </td>
1187            </tr>
1188          <tr>
1189              <td width="30%"><tt> .<b>A</b>ide <b>T</b>erminate server <b>N</b>ow
1190           </tt></td>
1191              <td> Immediately shut down the Citadel service, disconnecting
1192  any   users who are logged in.  Please keep in mind that it will start right
1193  back   up again if you are running the service from <tt>/etc/inittab</tt>,
1194  so in   practice this command will probably not get much use. </td>
1195            </tr>
1196          <tr>
1197              <td width="30%"><tt> .<b>A</b>ide <b>T</b>erminate server <b>S</b>cheduled
1198           </tt></td>
1199              <td> Shut down the Citadel service the next time there are zero
1200   users  connected. This allows you to automatically wait until all users
1201 are  logged  out. </td>
1202            </tr>
1203          <tr>
1204              <td width="30%"><tt> .<b>A</b>ide mailing <b>L</b>ist recipients 
1205         </tt></td>
1206              <td> Any room may be made into a mailing list.  Enter this command 
1207    to open an editor window containing the list of Internet e-mail addresses 
1208    to which every message posted in the room will be sent. </td>
1209            </tr>
1210          <tr>
1211              <td width="30%"><tt> .<b>A</b>ide mailing list <b>D</b>igest 
1212 recipients          </tt></td>
1213              <td> Similar to the regular mailing list command, except the 
1214 messages    will be sent out in 'digest' form -- recipients will see messages 
1215 from the   address of the room itself rather than the address of the author 
1216 of each  message, and a digest may contain more than one message.  Each room 
1217 may have  any combination of List and Digest recipients. </td>
1218            </tr>
1219          <tr>
1220              <td width="30%"><tt> .<b>A</b>ide <b>N</b>etwork room sharing
1221        </tt></td>
1222              <td> Configures the sharing of the current room's contents with
1223   other  Citadel nodes.  Messages posted in this room on any Citadel system
1224   will automatically  be replicated to other Citadel systems carrying the
1225 room.        </td>
1226            </tr>
1227                               
1228   </tbody>       
1229 </table>
1230                 
1231 <h3><a name="Editing_rooms"></a>Editing rooms</h3>
1232                   
1233 <p>This command allows any aide to change the parameters of a room.  Go to
1234     the room you wish to edit and enter the <tt><b>.A</b>ide <b>E</b>dit
1235 room</tt>    command.  A series of prompts will be displayed.  The existing
1236 parameters    will be displayed in brackets; simply press return if you want
1237 to leave  any  or all of them unchanged.</p>
1238                 
1239 <pre> <br>Room name [IG's Fun Room]:<br></pre>
1240                  
1241 <p>...the name of the room.</p>
1242                 
1243 <pre>Private room [Yes]? <br></pre>
1244                  
1245 <p>...enter Yes if you wish to restrict access to the room, or no if the room
1246 is to be accessible by all users.  Note that Citadel doesn't bother users
1247 about access to rooms every time they need to access the room.  Once a user
1248 gains access to a private room, it then behaves like a public room to them.
1249 The following four questions will only be asked if you selected Private...</p>
1250                 
1251 <pre>Accessible by guessing room name [No]?<br></pre>
1252                  
1253 <p>...if you enter Yes, the room will not show up in users' <tt><b>K</b>nown 
1254    rooms</tt> listing, but if they <tt><b>.G</b>oto</tt> the room (typing 
1255 the   room's full name), they will gain access to the room.</p>
1256                 
1257 <pre>Accessible by entering a password [No]?<br>Room password [mypasswd]:  <br></pre>
1258                  
1259 <p>...this adds an additional layer of security to the room, prompting users
1260     for a password before they can gain access to the room.</p>
1261                  
1262 <p>If you did not select guessname or passworded, then the only way users 
1263    can access the room is if an Aide explicitly invites them to the room using
1264    the <tt><b>.A</b>ide <b>R</b>oom <b>I</b>nvite user</tt> command.</p>
1265                 
1266 <pre>Cause current users to forget room [No] ? No<br></pre>
1267                  
1268 <p>Enter Yes if you wish to kick out anyone who currently has access to the 
1269    room.</p>
1270                 
1271 <pre>Preferred users only [No]? No<br></pre>
1272                  
1273 <p>Enter Yes if you wish to restrict the room to only users who have level 
1274    5 (Preferred User) status (and Aides too, of course).  You should make 
1275 the   room public if you intend to do this, otherwise the two restrictions 
1276 will   be COMBINED.</p>
1277                  
1278 <pre>Read-only room [No]? No<br></pre>
1279                  
1280 <p>If you set a room to Read-Only, then normal users will not be allowed to
1281 post messages in it.  Messages may only be posted by Aides, and by utility
1282     programs such as the networker and the "aidepost" utility.  This is useful
1283     in situations where a room is used exclusively for important announcements,
1284     or if you've set up a room to receive an Internet mailing list and posting
1285     wouldn't make sense.  Other uses will, of course, become apparent as
1286 the    need arises.</p>
1287                 
1288 <p>Now for a few other attributes...</p>
1289                 
1290 <pre>Directory room [Yes]? Yes<br></pre>
1291                  
1292 <p>...enter Yes if you wish to associate a directory with this room.  This 
1293    can be used as a small file repository for files relevant to the topic 
1294 of   the room. If you enter Yes, you will also be prompted with the following 
1295   four questions:</p>
1296                 
1297 <pre>Directory name [mydirname]: <br></pre>
1298                  
1299 <p>...the name of the subdirectory to put this room's files in.  The name 
1300    of the directory created will be <tt><i>&lt;your BBS directory&gt;</i>/files/<i>&lt;room 
1301    dir name&gt;</i></tt>.</p>
1302                     
1303 <pre>Uploading allowed [Yes]? Yes<br></pre>
1304                  
1305 <p>...enter Yes if users are allowed to upload to this room.</p>
1306                 
1307 <pre>Downloading allowed [Yes]? Yes<br></pre>
1308                   
1309 <p>...enter Yes if users are allowed to download from this room.</p>
1310                 
1311 <pre>Visible directory [Yes]? Yes<br></pre>
1312                   
1313 <p>...enter Yes if users can read the directory of this room.</p>
1314                 
1315 <pre>Network shared room [No]? No<br></pre>
1316                   
1317 <p>...you can share a room over a network without setting this flag, and
1318 vice versa, but what this flag does is twofold: </p>
1319              
1320 <ul>
1321         <li>It prevents people with no network access from entering messages
1322   here     </li>
1323          <li>Messages are displayed with the name of their originating system 
1324   in  the header. </li>
1325              
1326 </ul>
1327                  
1328 <pre>Permanent room [No]? No<br></pre>
1329                  
1330 <p>Citadel contains an 'auto purger' which is capable of removing rooms which
1331     have not been posted in for a pre-defined period of time (by default
1332 this    is set to two weeks).  If you wish to keep this from happening to
1333 a particular     room, you can set this option.  (Keep in mind that <tt>Lobby&gt;</tt>,
1334  <tt>Aide&gt;</tt>,   any private mailbox rooms, any network shared rooms,
1335  and any rooms with a  file directory are automatically permanent.)</p>
1336                 
1337 <pre>Anonymous messages [No]? No<br>Ask users whether to make messages anonymous [No]? No<br></pre>
1338                   
1339 <p>...you can have rooms in which all messages are automatically anonymous,
1340     and you can have rooms in which users are prompted whether to make a
1341 message     anonymous when they enter it.  The real identity of the author
1342 of each  message  is still revealed to the Room Aide for this room, as well
1343 as any  system-wide  Aides.</p>
1344                 
1345 <pre>Room aide [Joe Responsible]: <br></pre>
1346                  
1347 <p>...on larger systems, it helps to designate a person to be responsible 
1348    for a room.  Room Aides have access to a restricted set of Aide commands, 
1349    ONLY when they are in the room in which they have this privilege.  They 
1350  can  edit the room, delete the room, delete and move messages, and invite 
1351  or kick  out users (if it is a private room), but they cannot perform aide 
1352  commands  that are not room-related (such as changing users access levels).</p>
1353                 
1354 <pre>Listing order [64]: <br></pre>
1355                 
1356 <p>This is just a simple way to try to control the order rooms are listed 
1357    in when users call up a <tt><b>K</b>nown Rooms</tt> listing.  Rooms with 
1358   a lower listing order are displayed prior to rooms with a higher listing 
1359  order.  It has no other effect.  For users who list rooms in floor order, 
1360  the display will sort first by floor, then by listing order.</p>
1361                 
1362 <pre>Message expire policy (? for list) [0]:<br></pre>
1363                 
1364 <p>This provides you with the opportunity to select how long each message 
1365    will remain in a room before automatically being deleted.  Press <tt><b>?</b></tt>
1366     for a list of options.  You can choose to keep messages around forever
1367  (or   until they are manually deleted), until they become a certain number
1368  of days  old, or until a certain number of additional messages are posted
1369  in the room,  at which time the oldest ones will scroll out.</p>
1370                 
1371 <p>You will notice that you can also fall back to the default expire policy 
1372    for the floor upon which the room resides.  This is the default setting. 
1373    You can change the floor's default with the <tt><b>;A</b>ide <b>E</b>dit 
1374   floor</tt> command.  The default setting for the floor default, in turn, 
1375  is the system default setting, which can be changed using the <tt><b>.A</b>ide 
1376   <b>S</b>ystem configuration <b>G</b>eneral</tt> command.</p>
1377                 
1378 <pre>Save changes (y/n)? Yes<br></pre>
1379                 
1380 <p>...this gives you an opportunity to back out, if you feel you really messed 
1381    things up while editing.</p>
1382                 
1383 <h3><a name="File_directories"></a>File directories</h3>
1384                  
1385 <p>If you have created any directory rooms, you can attach file descriptions 
1386    to the filenames through a special file called <tt>filedir</tt>. Each line
1387    contains the name of a file in the directory, followed by a space and
1388 then    a description of the file, such as:</p>
1389                  
1390 <pre>myfile.txt This is a description of my file.<br>phluff A phile phull of phluff!<br></pre>
1391                  
1392 <p>...this would create file descriptions for the files <tt>myfile.txt</tt>
1393     and <tt>phluff</tt> which would be displayed along with the directory.
1394   It should also be noted that when users upload files to your system, they
1395   will be prompted for file descriptions, which will be added to the <tt>filedir</tt> 
1396    file.  If one does not exist, it will be created.</p>
1397                 
1398 <h3><a name="Creating_and_editing_user_accounts"></a>Creating and editing 
1399    user accounts</h3>
1400                 
1401 <p>Anyone with Aide level access may use the <tt><b>.A</b>ide edit <b>U</b>ser</tt>
1402     command to create and/or edit user accounts.  There are several parameters 
1403    which can be set here.</p>
1404                 
1405 <p>To create a user:</p>
1406                 
1407 <pre>Lobby&gt; . Aide edit User <br>User name: New User Name<br>No such user.<br>Do you want to create this user? Yes<br></pre>
1408                 
1409 <p>At this point, the new user account has been created, and the command will
1410 continue as if you were editing an existing account.  Therefore the remainder
1411 of this procedure is the same for creating and editing:</p>
1412                 
1413 <pre>Lobby&gt; . Aide edit User <br>User name: person of significance<br>User #70 - Person of Significance  PW: <br> <br><br>,  <br> <br> <br><br>Current access level: 4 (Network User)<br></pre>
1414                 
1415 <p>The blank lines are the user's 'registration' information -- personal
1416 information such as full name, address, telephone number, etc.  This information
1417 will comprise the user's vCard in both their user profile and in the Global
1418 Address Book.</p>
1419                 
1420 <pre>Change password [No]: No<br></pre>
1421                 
1422 <p>...answer Yes to set or change the password for this account.</p>
1423                 
1424 <pre>Access level [4]: <br></pre>
1425                 
1426 <p>...this allows you to set or change the access level for this account. 
1427     The access levels available are as follows: </p>
1428              
1429 <ul>
1430         <li>0 - Deleted.  (This immediately deletes the account.) </li>
1431          <li>1 - New, unvalidated user </li>
1432          <li>2 - Problem user (severely restricts account - use for probationary 
1433    access) </li>
1434          <li>3 - User with no network privileges.  Same access as a normal
1435  user   except cannot post messages in rooms shared on a network. </li>
1436          <li>4 - Normal user </li>
1437          <li>5 - Preferred user (access is granted to privileged rooms) </li>
1438          <li>6 - Aide (administrative access to the whole system) </li>
1439              
1440 </ul>
1441                    
1442 <pre>Permission to send/receive Internet mail [ No]? No<br></pre>
1443                 
1444 <p>If your system is configured to only allow Internet mail privileges to
1445     certain users, this is where you can grant or revoke that privilege.</p>
1446                 
1447 <pre>Ask user to register again [Yes]: Yes<br></pre>
1448                 
1449 <p>If you answer Yes to this question, the user will be presented with a
1450 'registration' screen or set of prompts, the next time they log in using
1451 a Citadel client.  This will prompt them for their full name, address, telephone
1452 number, etc.</p>
1453                 
1454 <pre>Times called [0]: <br>Messages posted [0]: <br></pre>
1455                 
1456 <p>These statistics are available for informational purposes only, so there
1457     is normally no need to change them.</p>
1458                 
1459 <pre>Set last call to now [No]: No<br>Purge time (in days, 0 for system default [0]: <br></pre>
1460                 
1461 <p>Citadel contains an auto-purger which is capable of automatically deleting
1462     accounts which have not been accessed in a predefined period of time.
1463  If   you choose to perform this operation, you can 'touch' the account of
1464  a wayward   user by setting their 'last call' time to 'now'.  You can also
1465  adjust, on  a per-user basis, the amount of time which must pass before
1466 their  account  is purged by the system.  This time is set in days.  You
1467 can also  specify  0 days to indicate that you wish to use the system default
1468 setting.</p>
1469                  
1470 <h3><a name="Deleting_and_moving_messages"></a>Deleting and moving messages</h3>
1471                 
1472 <p>Aides and Room Aides have the ability to delete and move messages.  After
1473     each message, the normal prompt appears:</p>
1474                 
1475 <pre>(8) &lt;B&gt;ack &lt;A&gt;gain &lt;Q&gt;uote &lt;R&gt;eply &lt;N&gt;ext &lt;S&gt;top m&lt;Y&gt; next &lt;?&gt;help -&gt;<br></pre>
1476                    
1477 <p>Entering <tt><b>D</b>elete</tt> will delete the message. A <tt>(y/n)</tt> 
1478    prompt will appear to confirm that you really want to delete the message.
1479     Entering <tt><b>M</b>ove</tt> will prompt for a room to which the message
1480     should be moved.</p>
1481                 
1482 <h3><a name="Customizing_the_help_files"></a>Customizing the help files</h3>
1483                      
1484 <p>The subdirectory called <tt>help</tt> contains your system's help files.
1485     There's nothing hard-coded into the system that dictates what files should 
1486    be there. Whenever a user types the command <tt><b>.H</b>elp</tt> followed 
1487    by the name of a help file, it displays the contents of that help file.</p>
1488                  
1489 <p>The help files that come with the system, of course, are enough to guide
1490     a user through its operation.  But you can add, change, or remove help
1491  files   to suit whatever is appropriate for your system.</p>
1492                  
1493 <p>There are several strings that you can put in help files that will be automatically
1494 substituted with other strings.  They are:</p>
1495                 
1496 <pre> <br> ^nodename    = The node name of your system on a Citadel/UX network<br> ^humannode   = Human-readable node name (also your node name on C86Net)<br> ^fqdn        = Your system's fully-qualified domain name<br> ^username    = The name of the user reading the help file<br> ^usernum     = The user number of the user reading the help file<br> ^sysadm      = The name of the system administraor (i.e., you)<br> ^variantname = The name of the BBS software you're running<br> ^bbsdir      = The directory on the host system in which you have<br>                installed the Citadel system.<br></pre>
1497                  
1498 <p>So, for example, you could create a help file which looked like:</p>
1499                  
1500 <pre>  "Lots of help, of course, is available right here on ^humannode.  Of<br>course, if you still have trouble, you could always bug ^sysadm about it!"<br></pre>
1501                         
1502 <h3><a name="Site_configuration"></a>Site configuration</h3>
1503                 
1504 <p>Once your Citadel server is up and running, the first thing you'll want 
1505    to do is customize and tune it.  This can be done from the text-based client
1506    with the <tt><b>.A</b>ide <b>S</b>ystem configuration <b>G</b>eneral</tt>
1507     command, or from WebCit (if you have it installed) by clicking 'Advanced 
1508    Options' followed by 'Edit site-wide configuration.'   Either method will 
1509    offer the same configuration options.  This document shows the text mode 
1510   client being used.</p>
1511                 
1512 <p>The first set of options deal with the identification of your system.</p>
1513                   
1514 <pre>Lobby&gt; . Aide System configuration General<br>Node name [uncnsrd]: <br>Fully qualified domain name [uncensored.citadel.org]: <br>Human readable node name [Uncensored]: <br>Modem dialup number [US 914 999 9999]: <br>Geographic location of this system [Mount Kisco, NY]: <br>Name of system administrator [IGnatius T Foobar]: <br>Paginator prompt [<jinkies
1515  !="" more="" text="" on="" the="" next="" screen="">]: <br></jinkies></pre>
1516                 
1517 <p>'Node name' refers to the short, unqualified node name by which your system 
1518    is known on a Citadel network.  Generally it will be the same as the unqualified 
1519    host name of your computer; this is, in fact, the default setting.</p>
1520                 
1521 <p>Then enter the fully-qualified domain name (FQDN) of your system.  If you
1522 are not on the Internet, you can simply set it to the same as your unqualified 
1523    host name.  Otherwise you should set this value to the host name by which 
1524    your system is most commonly known.</p>
1525                 
1526 <p>The field called 'Human-readable node name' (also known as the 'node title' 
1527    or 'organization name' in other software) is used solely for display purposes. 
1528     Set it to the actual name of your system as you want it to appear in banners,
1529    messages, etc.</p>
1530                 
1531 <p>If you have a modem or bank of modems answering data calls for your system, 
1532    enter it in the field marked 'Modem dialup number.'  Otherwise you may 
1533 leave   it blank.</p>
1534                 
1535 <p>'Geographic location of this system' is another display field.  Enter a
1536  city and state, or city and country. </p>
1537                 
1538 <p>'Name of system administrator' is important!  Any user who logs on with 
1539     the name you enter here will automatically be granted Aide privileges. 
1540  This  is one of two ways for the system administrator to grant himself/herself 
1541   Aide access to the system when initially setting it up.  (The other is simply
1542   to have the first account created on a new installation.)</p>
1543                    
1544 <p>The next set of options are your system's security settings.  Before delving 
1545    into the actual options, we should review the various access levels available 
1546    on the system.  Citadel has seven access levels:</p>
1547                 
1548 <ul>
1549         <li>0 (Deleted).  A user whose access level is set to 0 will automatically 
1550    be deleted by the system.  </li>
1551          <li>1 (New User).   Users at this level may only read messages.
1552  Entering    messages is prohibited, except in the <tt>Mail&gt;</tt> room, 
1553 where a message    to 'sysop' may be entered.  </li>
1554          <li>2 (Problem User).  Also known as 'Twit.'  </li>
1555          <li>3 (Local User).  May enter messages, except in rooms shared
1556 on  a    Citadel network.  </li>
1557          <li>4 (Network User).  May enter messages in every accessible room.
1558      </li>
1559          <li>5 (Preferred User).  Use of this level is up to the whim of
1560 the   system  administrator.  </li>
1561          <li>6 (Aide).  Access is granted to the administrative functions 
1562 of  the   system.  (This access level may also be granted to a user only for
1563 a specific  room, please see 'Room Aide' for more information.)  </li>
1564              
1565 </ul>
1566                 
1567 <pre>Require registration for new users [No]: No<br>Disable self-service user account creation [No]: No<br>Initial access level for new users [4]:<br>Access level required to create rooms [4]: <br>Automatically give room aide privs to a user who creates a private room [No]: No<br><br>Automatically move problem user messages to twit room [Yes]: Yes<br>Name of twit room [Trashcan]: <br>Restrict Internet mail to only those with that privilege [No]: No<br>Allow Aides to Zap (forget) rooms [Yes]: Yes<br>Allow system Aides access to user mailboxes [Yes]: Yes<br>Log all pages [No]: No<br></pre>
1568                   
1569 <p>'Registration' refers to the process of a user entering various personal
1570     contact information (real name, address, telephone number, etc.) into
1571 the    system.  When enabled, this information is stored as a vCard object
1572 on the  system in two places: the user's <tt>My Citadel Config&gt;</tt> room,
1573  and  in the <tt>Global Address Book&gt;</tt> room.  (Note: the latter should 
1574   be  made private on publicly-accessible systems, for obvious reasons.)</p>
1575                 
1576 <p>If you answer Yes to 'Require registration for new users' then each new
1577     user, upon creating a new account, will immediately be entered into the
1578   registration process.  On the other hand, if you answer Yes to 'Disable
1579 self-service  user account creation' then new users will not be able to log
1580 in at all --  all accounts must be created by an Aide.</p>
1581                 
1582 <p>'Initial access level for new users' should be set to 1 (New User) if you
1583   would like to review each new user's registration info before granting
1584     them higher access.  This would be done periodically with the <tt><b>.A</b>ide 
1585    <b>V</b>alidate new users</tt> command.   If you do not require registration, 
1586    you should set the initial access level to 4 (Network User).</p>
1587                 
1588 <p>Given the above options, it then becomes clear that there are generally
1589     two ways you can set up your Citadel system, depending on its purpose:</p>
1590                 
1591 <ul>
1592         <li><b>A public access BBS or message board</b> - since you do not
1593  know   who might want to log in, self-service account creation needs to
1594 stay  enabled.    If you want to be strict about users identifying themselves,
1595 then you should    also require users to register (just remember to post
1596 a privacy policy if   you're going to collect personal information) -- then
1597 set the initial access  level to 1 (New User), so new users cannot post messages
1598 until after you've  validated them.  For a more lax environment, you can
1599 remove the registration   requirement and grant new accounts level 4 (Normal
1600 User) access on the first   visit. </li>
1601          <li><b>A private email/groupware system for your organization</b>
1602  -  in  this case, disable self-service account creation; you don't want
1603 strangers    welcoming themselves to your system.  You'll probably also want
1604 to disable    registration, because you or some other site administrator
1605 will be entering    users' contact info when you create their accounts. 
1606 Since this is also  how  you assign their Internet e-mail addresses, it's
1607 probably a good idea  to do it yourself instead of expecting them to do it.
1608   </li>
1609              
1610 </ul>
1611                 
1612 <p>'Access level required to create rooms' is up to you.  You might wish to
1613 restrict the creation of new rooms only to Aides, or you might wish to  allow
1614 anyone to create a room.  The latter is one of the Citadel culture's most
1615 long-standing traditions; the former may be appropriate if users are abusing
1616 this privilege.</p>
1617                 
1618 <p>You have the ability to 'Automatically give room aide privs to a user who
1619   creates a private room.'  If you answer Yes, then any user who creates a
1620 guess-name, passworded, or invitation-only room will automatically become
1621     the room aide, and will have access to a subset of the <tt><b>.A</b>ide</tt>
1622     command set while in that room.  If you would rather grant this permission 
1623      manually, answer No.</p>
1624                 
1625 <p>Another tradition in the Citadel culture is to refrain from deleting 
1626 problem users, but instead to 'twit' them (reduce their access level to 2
1627 [Problem User]).   You can then 'Automatically move problem user messages
1628 to twit room' (answer Yes, then specify 'Name of twit room' and remember
1629 to create that room).  If you employ this logic, any user with level 2 (Problem
1630 User) access will continue to have access to the same set of rooms, but all
1631 messages posted will automatically be routed to the Trashcan (or whatever
1632 you call your twit room).</p>
1633                 
1634 <p>If you have Internet mail configured, you have the option of restricting 
1635    its use on a user-by-user basis.  If you wish to do this, answer Yes to 
1636  'Restrict  Internet mail to only those with that privilege.' Obviously this 
1637  makes no  sense for an internal e-mail system, but for a public BBS it might 
1638  be appropriate.</p>
1639                 
1640 <p>Normally, Aides have access to every room, public or private, except for 
1641    user mailboxes.  They are also forbidden from <tt><b>Z</b>ap</tt>ping rooms,
1642    because the review of content is considered one of their roles.  If you
1643  wish  to change these policies, the next two options allow you to.  You
1644 may  'Allow  Aides to Zap (forget) rooms', in which case they may use the
1645 <tt><b>Z</b>ap</tt>    command just like any other user.  Furthermore, if
1646 you 'Allow system Aides    access to user mailboxes', then they may <tt><b>.G</b>oto</tt> 
1647 any private    mailbox belonging to any user, using a special room name format.</p>
1648                 
1649 <p>If your local security and/or privacy policy dictates that you keep a
1650 log of all pages (instant messages) that go through the system, then answer
1651 Yes to 'Log all pages'.  If you answer Yes, you will be prompted for the
1652 name of a room to which all pages will be logged.  If you answer No, then
1653 only the sender and recipient of each individual message will receive a copy.</p>
1654                 
1655 <p>The next set of options deals with the tuning of your system.  It is usually 
1656    safe to leave these untouched.</p>
1657                 
1658 <pre>Server connection idle timeout (in seconds) [900]: <br>Maximum concurrent sessions [20]: <br>Maximum message length [2147483647]: <br>Minimum number of worker threads [5]: <br>Maximum number of worker threads [256]: <br></pre>
1659                 
1660 <p>The 'Server connection idle timeout' is for the connection between client
1661     and server software.  It is <b>not</b> an idle timer for the user interface.
1662     900 seconds (15 minutes) is the default and a sane setting.</p>
1663                 
1664 <p>'Maximum concurrent sessions' is the highest number of user sessions you
1665     wish to allow on your system at any given time.  Citadel can scale to
1666 hundreds   of concurrent users, but if you have limited hardware or (more
1667 likely) limited   bandwidth, you might wish to set a maximum.  You can also
1668 set it to zero  for no limit.</p>
1669                 
1670 <p>'Maximum message length' is just that.  This could be a good way to prevent 
1671    enormous multimedia files from finding their way into your message base. 
1672    This maximum is enforced in all protocols and is also advertised by the 
1673  ESMTP service.</p>
1674                 
1675 <p>The minimum and maximum number of worker threads can be tuned to your
1676 liking.  Citadel will attempt to keep one worker thread running per session,
1677 within these constraints.  You should be aware that due to the use of the
1678 worker thread model, Citadel can handle a large number of concurrent sessions
1679 with a much smaller thread pool.  If you don't know the programming theory
1680 behind multithreaded servers, you should leave these parameters alone.</p>
1681                 
1682 <p>The next set of options affect how Citadel behaves on a network.</p>
1683                 
1684 <pre>How often to run network jobs (in seconds) [3600]: <br>SMTP server port (-1 to disable) [25]: <br>POP3 server port (-1 to disable) [110]:<br>IMAP server port (-1 to disable) [143]:<br></pre>
1685                 
1686 <p>'How often to run network jobs' refers to the sharing of content on a
1687 Citadel network.  If your system is on a Citadel network, this configuration
1688 item dictates how often the Citadel server will contact other Citadel servers 
1689    to send and receive messages.  In reality, this will happen more frequently 
1690    than you specify, because other Citadel servers will be contacting yours 
1691   at regular intervals as well.</p>
1692                 
1693 <p>Then you can specify TCP port numbers for the SMTP, POP3, and IMAP services. 
1694     For a system being used primarily for Internet e-mail, these are essential, 
1695    so you'll want to specify the standard port numbers: 25, 110, and 143. 
1696  If  Citadel is running alongside some other mail system, though, then you 
1697  might  want to choose other, unused port numbers, or enter -1 for any protocol 
1698  to  disable it entirely.</p>
1699                 
1700 <p>The final set of options configures system-wide defaults for the auto-purger:</p>
1701                 
1702 <pre>Default user purge time (days) [120]: <br>Default room purge time (days) [30]: <br>System default message expire policy (? for list) [2]: <br>Keep how many messages online? [150]:<br></pre>
1703                 
1704 <p>Any user who does not log in for the period specified in 'Default user
1705     purge time' will be deleted the next time a purge is run.  This setting
1706   may be modified on a per-user basis.</p>
1707                 
1708 <p>'Default room purge time' behaves the same way, and may also be modified
1709     on a per-room basis.</p>
1710                 
1711 <p>'System default message expire policy' defines the way in which old messages 
1712    are expired (purged) off the system.  You can specify any of:</p>
1713                 
1714 <ul>
1715         <li>Purge by age (specify in days)  </li>
1716          <li>Purge by message count in the room (specify number of messages)
1717      </li>
1718          <li>Do not purge at all </li>
1719              
1720 </ul>
1721                 
1722 <p>Again, this setting may be overridden on a per-floor basis, and the floor 
1723    setting may be overridden on a per-room basis.</p>
1724                   
1725 <pre>Save this configuration? No<br></pre>
1726                 
1727 <p>When you're done, enter 'Yes' to confirm the changes, or 'No' to discard
1728     the changes.</p>
1729          </div>
1730             
1731 <hr width="100%" size="2">     
1732 <h2 align="center"><a name="Configuring_Citadel_for_Internet_e-mail"></a>Configuring 
1733   Citadel for Internet e-mail</h2>
1734          
1735 <div align="justify">     
1736 <h3><a name="Introduction"></a>Introduction</h3>
1737      As you know by now, Citadel is a completely self-contained, full-featured 
1738   Internet e-mail system. &nbsp;When you run Citadel you do not need any other
1739   mail software on your host system. &nbsp;This eliminates the need for tedious
1740   mucking about with sendmail, qmail, postfix, Cyrus, the UW IMAP server,
1741 or  any of countless other needlessly complex programs that lead some people
1742  to the false assumption that Unix systems are difficult to administer.<br>
1743      <br>
1744      Some of the many features supported by Citadel are:<br>
1745          
1746 <ul>
1747        <li>Built-in SMTP and ESMTP service, for delivering and receiving
1748 e-mail   on the Internet</li>
1749        <li>Built-in POP3 service, for remote fetching of messages</li>
1750        <li>Built-in IMAP service, for access to mail using any standard mail
1751   client program</li>
1752        <li>Web mail (implemented using the "WebCit" middleware, which is
1753 installed   separately)</li>
1754        <li>Support for mailing lists, in both "individual message" and "digest" 
1755   formats</li>
1756        <li>Multiple/virtual domain support</li>
1757        <li>Any user may have multiple Internet e-mail addresses, in multiple
1758   domains</li>
1759        <li>Global address book (Users with addresses in a domain may be spread 
1760   out across many servers on a Citadel network)</li>
1761        <li>Easy-to-configure integration with <a
1762  href="http://www.spamassassin.org/">SpamAssassin</a> can block spam <i>before</i> 
1763   it enters the mail system</li>
1764          
1765 </ul>
1766      This section of the documentation will demonstrate how to configure
1767 these   features.<br>
1768      <br>
1769          
1770 <h3><a name="Basic_site_configuration"></a>Basic site configuration</h3>
1771           
1772 <p>Basic configuration of your Citadel system for Internet e-mail begins with
1773 the <tt><b>.A</b>ide <b>S</b>ystem configuration <b>I</b>nternet</tt> command:</p>
1774           
1775 <pre>Lobby&gt; <b>.A</b>ide <b>S</b>ystem configuration <b>I</b>nternet<br><br>###                    Host or domain                     Record type<br>--- -------------------------------------------------- --------------------<br>  1<br>&lt;A&gt;dd &lt;D&gt;elete &lt;S&gt;ave &lt;Q&gt;uit  -&gt;<br></pre>
1776           
1777 <p>This is a "clean" setup.  For a simple, standalone e-mail system you simply
1778   have to enter the <tt><b>A</b>dd</tt> command:</p>
1779           
1780 <pre>&lt;A&gt;dd &lt;D&gt;elete &lt;S&gt;ave &lt;Q&gt;uit  -&gt; <b>A</b>dd<br><br>Enter host name: schmeep.splorph.com<br> (1) localhost       (Alias for this computer)<br> (2) gateway domain  (Domain for all Citadel systems)<br> (3) smart-host      (Forward all outbound mail to this host)<br> (4) directory       (Consult the Global Address Book)<br> (5) SpamAssassin    (Address of SpamAssassin server)<br><br>Which one [1]:<br></pre>
1781           
1782 <p><b>localhost:</b> Basically what you're doing here is telling Citadel
1783 what any aliases for your machine are. If your machine were <tt>schmeep.splorph.com</tt>
1784   and you also had a DNS entry set up for <tt>blah.com</tt>, you might want
1785   to enter '1' and enter <tt>blah.com</tt> as your alias, so that e-mail
1786 sent   to that address won't bounce.</p>
1787           
1788 <p><i>Important tip:</i> if your system is known by one name and <i>only</i> 
1789   one domain, you might not even need to do this at all.  You will recall 
1790 that  you entered your system's fully qualified domain name earlier when you
1791 went  through the <tt><b>.A</b>ide <b>S</b>ystem configuration <b>G</b>eneral</tt> 
1792   command.  The domain name you entered there is automatically considered 
1793 by  Citadel to be a 'localhost' entry in your Internet mail configuration. 
1794  It  does not hurt to enter it in both locations, though.</p>
1795           
1796 <p><b>gateway domain:</b> this is a simple way of mapping various Citadel 
1797   hosts in an Internet domain.  For example, if you enter <tt>bar.com</tt> 
1798  as a gateway domain, then mail to users at <tt>foo.bar.com</tt> will be forwarded
1799  to the host called <tt>foo</tt> on a Citadel network, mail to users at <tt>kunst.bar.com</tt>
1800  will be delivered to the Citadel server called <tt>kunst</tt>, etc.  This
1801  feature has limited usefulness; if you are operating a network of Citadel
1802  servers, it is more likely that you will use the 'directory' feature, explained
1803  below.</p>
1804           
1805 <p><b>smart-host:</b> Normally, Citadel sends outbound Internet e-mail directly
1806   to its destination.  This may not be appropriate for some sites; you may
1807  require (due to local convention, security policy, or whatever) that all
1808 outbound  mail be sent to an SMTP relay or forwarder.  To configure this
1809 functionality,  simply enter the domain name or IP address of your relay
1810 as a 'smart-host'  entry.</p>
1811           
1812 <p><b>directory:</b> a domain for which you are participating in directory 
1813   services across any number of Citadel nodes.  For example, if users who 
1814 have  addresses in the domain <tt>citadel.org</tt> are spread out across multiple
1815  Citadel servers on your network, then enter <tt>citadel.org</tt> as a 'directory'
1816 entry.  <i>For this to work, all Citadel servers participating in directory
1817 service <b>must</b> carry and share the <tt>Global Address Book&gt;</tt>
1818   room.</i></p>
1819           
1820 <p><b>spamassassin:</b> if you are running a <a
1821  href="http://www.spamassassin.org">SpamAssassin</a> service anywhere on your
1822 <b>local</b> network, enter its name or IP address as a 'spamassassin' entry.
1823  This may be (and, in fact, will usually be) <tt>127.0.0.1</tt> to specify
1824 that the service is running on the same host computer as the Citadel server.</p>
1825           
1826 <p>Please install SpamAssassin as per its own documentation.  You will want 
1827   to run SpamAssassin in client/server mode, where a <tt>spamd</tt> daemon
1828   is always running on your computer.  Citadel does not utilize the <tt>spamc</tt> 
1829   client; instead, it implements SpamAssassin's protocol on its own.</p>
1830           
1831 <p>Connecting to a SpamAssassin service across a wide area network is strongly
1832   discouraged.  In order to determine whether an incoming e-mail is spam,
1833 Citadel  must feed the <i>entire message</i> to the SpamAssassin service.
1834  Doing this  over a wide area network would consume time and bandwidth, which
1835 would affect  performance.</p>
1836           
1837 <p>Citadel invokes the SpamAssassin service when incoming messages are arriving
1838   via SMTP.  Before a message is accepted, it is submitted to SpamAssassin.
1839    If SpamAssassin determines that the message is spam, the Citadel SMTP
1840 service   <i>rejects the message,</i> causing a delivery failure on the sending
1841 host.    This is superior to software which files away spam in a separate
1842 folder,   because delivery failures will cause some spammers to assume the
1843 address  is invalid and remove it from their mailing lists.</p>
1844           
1845 <p>Now select <tt><b>S</b>ave</tt> and you are just about ready for Internet
1846   e-mail.</p>
1847           
1848 <h3><a name="Enabling_the_Internet_mail_protocols"></a>Enabling the Internet 
1849   mail protocols</h3>
1850           
1851 <p>As previously mentioned, Citadel contains its own SMTP, POP3, and IMAP 
1852   services.  Enabling them is simple.</p>
1853           
1854 <p>Check for the existance of a current MTA (sendmail, qmail, etc.) by connecting
1855   to port 25 on your host. If you see something similar to the following
1856 you're   running an MTA already and you'll need to shut it down:</p>
1857           
1858 <pre>smw @ pixel % telnet localhost 25<br>Trying 127.0.0.1...<br>Connected to localhost.<br>Escape character is '^]'.<br>220 pixel.citadel.org ESMTP Sendmail 8.9.3/8.9.3; Wed, 15 Mar 2000 19:00:53 -0500<br></pre>
1859           
1860 <p>In the above example, we see that the host already has Sendmail listening 
1861   on port 25.  Before Citadel can use port 25, Sendmail must be shut off. 
1862 Please consult the documentation for your operating system for instructions 
1863 on how to do this.  (On a Red Hat Linux system, for example, you can run the
1864 <tt>ntsysv</tt> utility, un-checking <tt>sendmail</tt> to disable it at the
1865 next reboot; then, run <tt>service sendmail stop</tt> to shut off the currently
1866 running service.)</p>
1867           
1868 <p>If you get a 'connection refused' message when you telnet to port 25 there's
1869    nothing running and you should be able to continue. You might also want
1870  to turn off POP (try the above test substituting 110 for 25) and IMAP (port
1871  143) and use Citadel's POP and IMAP services.</p>
1872           
1873 <p>Citadel will look for an existing pop/smtp server on startup. If they
1874 don't  exist (and you've configured them properly) then Citadel should  enable
1875 them at startup.  You can check your logs to be sure, or you can  start the
1876 server from a shell and watch it load.  It might look something like this:</p>
1877       <font size="-2"> </font>   
1878 <pre><font size="-2">smw @ pixel % ./citserver<br><br>Multithreaded message server for Citadel/UX<br>Copyright (C) 1987-2000 by the Citadel/UX development team.<br>Citadel/UX is open source, covered by the GNU General Public License, and<br>you are welcome to change it and/or distribute copies of it under certain<br>conditions.  There is absolutely no warranty for this software.  Please<br>read the 'COPYING.txt' file for details.<br><br>Loading citadel.config<br>Opening databases<br>This is GDBM version 1.8.0, as of May 19, 1999.<br>Checking floor reference counts<br>Creating base rooms (if necessary)<br>Registered a new service (TCP port 504)<br>Registered a new service (TCP port 0)<br>Initializing loadable modules<br>Registered server command CHAT (Begin real-time chat)<br>Registered server command PEXP (Poll for express messages)<br>Registered server command GEXP (Get express messages)<br>Registered server command SEXP (Send an express message)<br>Registered server command DEXP (Disable express messages)<br>Registered a new session function (type 0)<br>Registered a new x-msg function (priority 0)<br>Loaded module: $Id$<br>Registered a new session function (type 1)<br>Registered a new message function (type 201)<br>Registered a new message function (type 202)<br>Registered server command REGI (Enter registration info)<br>Registered server command GREG (Get registration info)<br>Registered a new user function (type 100)<br>Loaded module: $Id$<br>Server-hosted upgrade level is 5.62<br>Loaded module: $Id$<br>Registered server command EXPI (Expire old system objects)<br>Registered server command FSCK (Check message ref counts)<br>Loaded module: $Id$<br><b>citserver: Can't bind: Address already in use<br>ERROR: could not bind to TCP port 25.</b><br>Registered a new service (TCP port 0)<br>Registered a new session function (type 50)<br>Loaded module: $Id$<br><b>citserver: Can't bind: Address already in use<br>ERROR: could not bind to TCP port 110.</b><br>Registered a new session function (type 0)<br>Loaded module: $Id$<br>Registered a new message function (type 202)Loaded module: $Id$<br>Registered server command RWHO (Display who is online)<br>Registered server command HCHG (Masquerade hostname)<br>Registered server command RCHG (Masquerade roomname)<br>Registered server command UCHG (Masquerade username)<br>Registered server command STEL (Enter/exit stealth mode)<br>Loaded module: $Id$<br>Changing uid to 513<br>Starting housekeeper thread<br></font></pre>
1879           
1880 <p>The lines emphasized in boldface in the above log output tell you that 
1881   Citadel "can't bind" to various ports.  The error 'address already in use' 
1882   generally means that something else is already running on the requested 
1883 port.  Make SURE you've followed the above steps to remove sendmail/pop and 
1884  start your Citadel server again.</p>
1885           
1886 <h3><a name="citmail"></a>Using Citadel in conjunction with another MTA</h3>
1887           
1888 <p>Occationally it is not practical to remove a non-Citadel MTA on your host
1889   system.  For example, you might have multiple groups of users, some of
1890 which   are using Citadel and some of which are using a legacy Unix mail
1891 spool. This  type of configuration is discouraged, but a tool is provided
1892 to allow it.</p>
1893           
1894 <p>The tool is called <tt>citmail</tt> and it is, quite simply, a local MDA 
1895   (Mail Delivery Agent) which you can configure into your MTA for final delivery
1896   of incoming messages to Citadel users.  A full discussion of the finer
1897 points   of complex Sendmail configurations is beyond the scope of this document; 
1898  however, you might want to visit <a
1899  href="http://pixel.citadel.org/citadel/docs/">Pixel BBS</a> where some useful
1900  HOWTO documents are provided.</p>
1901           
1902 <p>For outbound mail, you can either allow Citadel to perform deliveries directly
1903 (this won't affect your other mail system because outbound mail doesn't tie
1904 up port 25) or enter <tt>127.0.0.1</tt> as your smart-host, which will tell
1905 Citadel to forward all of its outbound mail to your other mail system.</p>
1906           
1907 <h3><a name="Hosting_an_Internet_mailing_list"></a>Hosting an Internet mailing 
1908  list</h3>
1909       
1910 <p>Citadel has built in mailing list service (known in the 'net vernacular 
1911  as "listserv") functionality. &nbsp;You can turn any room into a mailing 
1912 list. &nbsp;Users can then choose how they participate -- by logging on to 
1913 your Citadel server directly, or by having the room's contents mailed to them
1914 somewhere else. &nbsp;Configuring this is easy.</p>
1915       
1916 <p>Citadel supports two modes of mailing list delivery: </p>
1917    
1918 <ul>
1919      <li>"List mode" -- each individual message is delivered as a single
1920 e-mail  to each list mode recipient. &nbsp;The "From:" header will display
1921 the address  of the message's original author.</li>
1922      <li>"Digest mode" -- groups of one or more messages are delivered to 
1923 digest  mode recipients. &nbsp;The number of messages in the group depends 
1924 on how  many new messages arrived since the last batch was delivered. &nbsp;The 
1925 "From:"  header will display the address of the room itself, which allows 
1926 replies to be posted back to the room.</li>
1927      
1928 </ul>
1929    A room may have any combination of list mode and digest mode recipients.
1930       
1931 <p>As alluded to above, every room on your Citadel system has an Internet
1932  e-mail address of its own. &nbsp;Messages sent to that address will be posted
1933  in the room (and sent back out to mailing list recipients, as well as to
1934 any other Citadels you share the room with). &nbsp;The address format is
1935 <tt>room_</tt> plus the name of the room, with any spaces replaced by underscores,
1936 followed by <tt>@</tt> and your hostname. For example, if your system is
1937 known as <tt>phlargmalb.orc.org</tt> on the Internet, and you have a room
1938  called <tt>Bubblegum Collectors</tt>, you can post to that room from anywhere
1939 on the Internet simply by sending an e-mail to <tt>room_bubblegum_collectors@phlargmalb.orc.org</tt>. 
1940  When the message arrives, it's automatically posted in that room.</p>
1941       
1942 <p>To manually edit the list of "list mode" recipients, simply enter the <tt><b>.A</b>ide
1943 mailing <b>L</b>ist management</tt> command.  Your text editor will open
1944 up and you will be able to create or edit a list of recipients, one per line.
1945  Lines beginning with a hash (<tt>#</tt>) are comments.</p>
1946       
1947 <p>To manually edit the list of "digest mode" recipients, enter the <tt><b>.A</b>ide
1948  mailing list <b>D</b>igest recipients</tt> command.  As with the previous
1949  command, the text editor will open up and you can edit the list of digest
1950  mode recipients, one per line.</p>
1951       
1952 <p>Citadel also has a facility which allows users to subscribe or unsubscribe 
1953  to mailing lists using a web browser.  In order to do this, WebCit must also
1954  be running on your server in addition to Citadel.  WebCit is obtained and
1955  installed separately from the rest of the Citadel system.</p>
1956       
1957 <p>In order to prevent "just anyone" from subscribing to any room on your 
1958  system, there is a setting in the <tt><b>.A</b>ide <b>E</b>dit room</tt> 
1959 command:</p>
1960       
1961 <pre>CitaNews} . Aide Edit this room<br>Room name [CitaNews]:<br><br><i>(lots of other stuff omitted for brevity...)</i><br><br>Self-service list subscribe/unsubscribe [No]: Yes<br></pre>
1962       
1963 <p>When you answer "Yes" to self-service list subscribe/unsubscribe, you are
1964 enabling that feature.  Now, all you have to do is tell the world about the
1965 web page they need to visit.  It looks like this:</p>
1966        
1967 <center><tt>http://foobar.baz.org:2000/listsub</tt></center>
1968        
1969 <p>In this example, the server is called <tt>foobar.baz.org</tt> and WebCit 
1970  is running on port 2000.  Edit appropriately.</p>
1971       
1972 <p>Citadel offers a subscribe/unsubscribe facility that is more intuitive 
1973  than other listservs.  With most systems, sending commands to the listserv 
1974  requires that you e-mail it commands in a special format.  It's easy to get
1975 it wrong.  Citadel simply uses your web browser.  You select the list you
1976 want to subscribe or unsubscribe (hint: it's the list of rooms you've enabled
1977 self-service for), select whether you want list mode or digest mode, and
1978 enter your e-mail address.  For security purposes, a confirmation message
1979  is sent to the address you enter.  But you don't have to reply to the message
1980  in a weird format, either: the confirmation contains another URL which you
1981  simply click on (or paste into your browser if you can't click on URL's
1982 in  your e-mail software) and the confirmation is automatically completed.</p>
1983       
1984 <hr width="100%" size="2">      
1985 <center>    
1986 <h2><a name="Building_or_joining_a_Citadel_network"></a>Building or joining
1987   a Citadel network</h2>
1988     </center>
1989           
1990 <h3><a name="Overview__"></a>Overview</h3>
1991           
1992 <p>If you are running Citadel as a BBS or other forum type of application, 
1993   one way to 'keep the conversation going' is to share rooms with other Citadel
1994   systems. In a shared room, a message posted to the room is automatically
1995  propagated to every system on the network.  It's kind of like a UseNet newsgroup,
1996  but without the spam.</p>
1997           
1998 <p>If you are using Citadel as the e-mail and groupware platform for a large
1999   organization, you can use its networking features to build a large network
2000   of Citadel servers which share content (think of rooms as public folders),
2001   redistribute e-mail throughout the organization, and integrate the global
2002   address book. &nbsp;It might make sense, for example, in a large corporation
2003   to give each department or location its own Citadel server. &nbsp;Thanks
2004  to Citadel's global address book features, you could still have all of the
2005  users share a single e-mail domain.</p>
2006            
2007 <p>Obviously, the first thing you have to do is find another Citadel to share 
2008   rooms with, and make arrangements with them.  The following Citadels are
2009   a good place to start:</p>
2010            
2011 <ul>
2012      <li>UNCENSORED! - <a href="http://uncensored.citadel.org">uncensored.citadel.org</a> 
2013     </li>
2014       <li>The Dog Pound II - <a href="http://dogpound2.citadel.org">dogpound2.citadel.org</a> 
2015     </li>
2016       <li>PixelBBS - <a href="http://pixel.citadel.org">pixel.citadel.org</a> 
2017     </li>
2018        
2019 </ul>
2020            
2021 <p>You don't have to be a part of the citadel.org domain to participate in
2022   the public Citadel network, but the DNS service is provided free of charge
2023   by the Citadel community if you wish to do this.</p>
2024           
2025 <h3><a name="Conventions_and_etiquette_when"></a>Conventions and etiquette
2026   when connecting to the public Citadel network</h3>
2027            
2028 <p>Before we get into the technical nitty gritty, there are two points of 
2029   etiquette to keep in mind.  The first thing to keep in mind is that the 
2030 operator of any particular Citadel may not be willing to share some of his/her 
2031 rooms.  Some sites are proud to offer exclusive content in certain areas. 
2032 Chances are, if a room is already being shared on the network, it's available 
2033 for anyone to share; if not, it can't hurt to ask -- but take care not to 
2034 demand it of them.  Ask if you may share the room instead of telling them 
2035 that you wish to share the room.  When looking at a <tt><b>K</b></tt>nown 
2036 rooms list, network rooms are the ones ending in parentheses instead of angle 
2037 brackets.  For example, <tt>Gateway)</tt> would be a network room, <tt>Lobby&gt;</tt> 
2038   would not.</p>
2039            
2040 <p>The other point of etiquette to remember is that you should be making
2041 the arrangements in advance, and then set it up.  It is extremely rude to
2042 simply begin networking with another Citadel, or unilaterally start sharing
2043 a new room, without first obtaining permission from its operator.  Always
2044 ask first.  Most Citadel operators are more than happy to network with you.
2045  Also, if later on you decide to take your system down, please take the time
2046 to notify the operators of any other Citadels you network with, so they can
2047 unconfigure their end.</p>
2048           
2049 <h3><a name="Getting_ready_to_join_the_network"></a>Getting ready to join
2050   the network</h3>
2051            
2052 <p>Ok, first things first.  On a Citadel room sharing network, the first
2053 thing you need to know is your own system's node name.  Presumably you set
2054 this up during installation, but if you want to change it you can do so using
2055 the <tt><b>.A</b>ide <b>S</b>ysconfig <b>G</b>eneral</tt> command:</p>
2056           
2057 <pre>Lobby&gt; . Aide System configuration General<br>Node name [uncnsrd]:<br>Fully qualified domain name [uncensored.citadel.org]:<br>Human readable node name [Uncensored]:<br></pre>
2058            
2059 <p>The "node name" is important, it's how the network identifies messages 
2060   coming from your system.  The "human readable node name" is simply a label; 
2061   it shows up in messages coming from your system.  "Fully qualified domain 
2062   name" is your DNS name; it's used for routing messages on the Internet. 
2063 In the above example, the node name is "uncnsrd".</p>
2064           
2065 <h3><a name="Defining_neighbor_nodes"></a>Defining neighbor nodes</h3>
2066            
2067 <p>The next thing you need to do is configure your neighbor node(s).  You
2068   need to do this for each node you network with.  Let's say you wanted to
2069  talk to a Citadel system called "frobozz".  Use the <tt><b>.A</b>ide <b>S</b>ysconfig
2070   <b>N</b>etwork</tt> command:</p>
2071           
2072 <pre>Lobby&gt; . Aide System configuration Network<br>###    Node            Secret                   Host or IP             Port#<br>--- ---------------- ---------------- -------------------------------- -----<br>&lt;A&gt;dd &lt;D&gt;elete &lt;S&gt;ave &lt;Q&gt;uit  -&gt; Add<br><br>Enter node name    : frobozz<br>Enter shared secret: frotz<br>Enter host or IP   : frobozz.magick.org<br>Enter port number  :  [504]: 504<br><br>###    Node            Secret                   Host or IP             Port#<br>--- ---------------- ---------------- -------------------------------- -----<br>  1 frobozz          frotz            frobozz.magick.org               504<br>&lt;A&gt;dd &lt;D&gt;elete &lt;S&gt;ave &lt;Q&gt;uit  -&gt; Save<br><br>Lobby&gt;<br></pre>
2073           
2074 <p>As you can see in the above example, you have to enter the Citadel node
2075   name, the DNS name or IP address of the server, and the port number the
2076 Citadel  service is running on.  The "shared secret" is a password to allow
2077 the two  Citadel nodes to connect to each other to exchange network data.
2078  The password  must be <i>identical</i> on both ends of the connection --
2079 when the operator  of the other Citadel node sets up the connection with
2080 your system, he/she  must use the same password.</p>
2081           
2082 <h3><a name="Sharing_rooms"></a>Sharing rooms</h3>
2083            
2084 <p>Now you're ready to share rooms.  You have to do this for each room you
2085   want to share, and you have to do it from BOTH ENDS -- again, when you
2086 share   a room with another Citadel, they must share it with you as well.
2087  Let's  say you have a room called "Quiche Recipes&gt;" and you want to share
2088 it with the node you set up above.  First, edit the room and flag it as a
2089 network   room:</p>
2090           
2091 <pre>Quiche Recipes&gt; . Aide Edit this room<br>Room name [Quiche Recipes]:<br>Private room  [No]: No<br>Preferred users only  [No]: No<br>Read-only room  [No]: No<br>Directory room  [No]: No<br>Permanent room  [No]: No<br>Network shared room  [No]: Yes<br>Automatically make all messages anonymous  [No]: No<br>Ask users whether to make messages anonymous  [No]: No<br>Listing order [64]:<br>Room aide (or 'none') [none]:<br>Message expire policy (? for list) [0]:<br>Save changes (y/n)? Yes<br>Ok<br><br>Quiche Recipes)<br></pre>
2092            
2093 <p>Notice how the prompt changed?  It was &gt; before, but it's ) now. That
2094   means it's a network room.  Now you can tell Citadel that you want to share
2095   the room with frobozz.  Enter this command:</p>
2096           
2097 <pre>Quiche Recipes) . Aide Network room sharing<br></pre>
2098            
2099 <p>Your text editor will pop up (you <i>did</i> configure Citadel to use
2100 your favorite text editor, right?) with a screen that looks like this:</p>
2101           
2102 <pre># Configuration for room: Quiche Recipes<br># Nodes with which we share this room<br># Specify one per line.<br></pre>
2103           
2104 <p>All you have to do is enter the name of the other Citadel node (i.e. "frobozz"
2105   in our example) on a line by itself.  As usual, lines starting with a "#"
2106   are comments.  Just go to the end of the file, type "frobozz" (without
2107 the   quotes), save the file... and you're done!</p>
2108            
2109 <p>At this point, you just sit back and enjoy.  Your Citadel and the other
2110   one will begin polling each other at regular intervals (once per hour by
2111  default) and sharing messages.</p>
2112           
2113 <h3><a name="Sending_mail"></a>Sending mail</h3>
2114           
2115 <p>You can send mail to any user on any node of your Citadel network.  It 
2116   may take a little while for your system to learn the entire node list, though,
2117   as this is done by watching incoming messages on the network and learning
2118   which nodes are out there.</p>
2119           
2120 <p>To send a private message, just enter <tt>user @ host</tt> as the recipient:</p>
2121           
2122 <pre>Mail&gt; Enter message                                                            <br>Enter recipient: Some other user @ frobozz<br> Feb 11 2003 11:36pm from I. M. Me to Some other user @ frobozz<br>type message here...<br><br>Entry command (? for options)  -&gt;<br></pre>
2123           
2124 <h3><a name="Changing_the_polling_interval"></a>Changing the polling interval</h3>
2125           
2126 <p>As previously mentioned, Citadel will poll other Citadel nodes for messages 
2127   once per hour.  If this is not an acceptable interval, you can change it 
2128  using the <tt><b>.A</b>ide <b>S</b>ystem configuration <b>G</b>eneral</tt> 
2129  command.  Enter this command and look for the option:</p>
2130           
2131 <pre>How often to run network jobs (in seconds) [3600]:<br></pre>
2132           
2133 <p>Change it to whatever you like.  For example, 15 minutes is 900 seconds.
2134    So if you changed the default value to 900, network polling would occur
2135  every 15 minutes.</p>
2136           
2137 <hr>      
2138 <h2 align="center"><a name="Database_maintenance"></a>Database maintenance</h2>
2139    
2140 <h3><a name="Introduction_"></a>Introduction</h3>
2141   The data store used by Citadel is reliable and self-maintaining. &nbsp;It
2142  requires very little maintenance. &nbsp;This is primarily due to its use
2143 of the <a href="http://www.sleepycat.com">Berkeley DB</a> record manager.
2144 &nbsp;It is robust, high-performance, and transactional.<br>
2145   <br>
2146   A few small data files are kept in your main Citadel directory, but the 
2147 databases are in the <tt>data/</tt> subdirectory. &nbsp;The files with names 
2148 that begin with "cdb" are the databases themselves; the files with names that
2149 begin with "log" are the journals. &nbsp;Journal files will come and go as
2150 you use your system; when the database engine has determined that a particular
2151 log file is no longer needed, the file will automatically be deleted. &nbsp;Nevertheless,
2152 you should always ensure that there is ample disk space for the files to
2153 grow.<br>
2154  <br>
2155  There is no need to shut down Citadel during backups. &nbsp;The data store 
2156 may be backed up "hot." &nbsp;The makers of Berkeley DB suggest that you should
2157 back up the data files <i>first</i> and the log files <i>second</i>. &nbsp;This
2158 is the only method that will guarantee that a database which is being changed
2159 while you back it up will still be usable when you restore it from the tape
2160 later.<br>
2161   <br>
2162    
2163 <h3><a name="Database_repair"></a>Database repair</h3>
2164   Although Citadel's data store is quite reliable, database corruption can 
2165 occur in rare instances. &nbsp;External factors such as an operating system 
2166 crash or an unexpected loss of power might leave the database in an unknown 
2167 state. &nbsp;A utility is provided which may be able to repair your database 
2168 if this occurs. &nbsp;If you find that your Citadel server is not running, 
2169 and reading the logs shows that it is crashing because of an inability to 
2170 validate a database, follow these steps:<br>
2171  
2172 <ol>
2173    <li>Edit <tt>/etc/inittab</tt> and switch the Citadel service from "respawn"
2174 to "off." &nbsp;Type <tt>init q</tt> to make this setting permanent.</li>
2175    <li><b>Make a backup of your data.</b> &nbsp;Either write it out to tape 
2176 or copy it to another directory, or a tarball.<br>
2177    </li>
2178    <li><tt>cd</tt> to your Citadel directory and type <tt>./database_cleanup.sh</tt></li>
2179    <li>Edit <tt>/etc/inittab</tt> and switch the Citadel service from "off"
2180 to "respawn". &nbsp;Type <tt>init q</tt> to activate your changes.</li>
2181  
2182 </ol>
2183  If this procedure does not work, you must restore from your most recent
2184 backup.<br>
2185   <br>
2186    
2187 <h3><a name="ImportingExporting_your_Citadel"></a>Importing/Exporting your
2188  Citadel database<br>
2189   </h3>
2190    
2191 <p>Citadel/UX now contains an importer/exporter module, affectionaly known
2192  as the "Art Vandelay" module (a not-so-obscure Seinfeld reference).  It
2193 allows  you to export the entire contents of your Citadel databases to a
2194 flat file,  which may then be imported on another system.  (This procedure
2195 is also known  as "dump and load" to some database gurus.)</p>
2196        
2197 <p>Why would you want to do this?  Here are some scenarios: </p>
2198    
2199 <ul>
2200    <li>You are moving a Citadel installation to another computer, which uses
2201  a different CPU.  Since Citadel stores data in an architecture-dependent 
2202 format, the data files wouldn't work on the new computer as-is. </li>
2203     <li>Your computer crashed, lost power, etc. and you suspect that your 
2204 databases have become corrupted. </li>
2205     <li>You want to switch to a different back-end data store.  (For example,
2206  from GDBM to Berkeley DB) </li>
2207    
2208 </ul>
2209         
2210 <p>So ... how do we work this magic?  Follow these steps <i>exactly</i> as 
2211  documented and you should be able to do it all with very little trouble.</p>
2212       
2213 <ol>
2214     <li>This should be obvious, but it's still worth mentioning: MAKE SURE
2215  YOU TAKE A BACKUP OF EVERYTHING BEFORE YOU START THIS!!  You're performing
2216  a major operation here.  Don't risk it.  </li>
2217     <li>First, get all the users logged off from your system.  Disconnect 
2218 it  from the network if possible.  You don't want anyone logging in while 
2219 you're doing this.  </li>
2220     <li>Log on as root, or some other user that has read/write access to
2221 all  relevant files.  </li>
2222     <li>Go to the directory that Citadel is installed in.  For example, issue
2223  a command like <tt>cd /usr/local/citadel</tt>  </li>
2224     <li>Export the databases with the following command:<br>
2225    <br>
2226    <tt>./sendcommand "ARTV export" &gt;exported.dat</tt><br>
2227    <br>
2228    This command may run for a while.  On a very large system it could take 
2229 an hour or more.  Please be patient!  </li>
2230     <li>When the export completes, check to make sure that <tt>exported.dat</tt>
2231  exists and has some data in it. (Type "ls -l exported.dat")  </li>
2232     <li>Shut down the Citadel server.  If you have a line in <tt>/etc/inittab</tt> 
2233  that reads like this:<br>
2234    <br>
2235    <tt>c1:2345:respawn:/usr/local/citadel/citserver -h/usr/local/citadel</tt> 
2236      <br>
2237    ...then you should change the <tt>respawn</tt> to <tt>off</tt> and then
2238  type <tt>/sbin/init q</tt> to make the changes take effect.  </li>
2239     <li>Now it's time to delete your current binary databases.  Type:<br>
2240    <br>
2241     <tt>rm -f citadel.config citadel.control data/*</tt>  </li>
2242     <li>If you're moving Citadel to another computer, you should move the 
2243     <i>entire</i> directory over at this time. <tt>exported.dat</tt> only 
2244 contains the information that was in the binary databases.  Information which 
2245 was stored in portable formats doesn't need to be exported/imported, so you 
2246 must bring it all over in its current form.  </li>
2247     <li>Now get Citadel running on the new computer (or whatever).  Run <tt>setup</tt>
2248  and turn the service back on (from <tt>/etc/inittab</tt>) but DO NOT log
2249 in.  </li>
2250     <li>As root, run the import command:<br>
2251    <br>
2252    <tt>./sendcommand "ARTV import" &lt;exported.dat</tt><br>
2253    <br>
2254    This will import your databases.  Again, it may run for a long time. 
2255   </li>
2256     <li>Restart the Citadel server.  You can do this any way you like.  From 
2257  the command line, you can do it with a command like:<br>
2258    <br>
2259     <tt>./sendcommand "DOWN"</tt> <br>
2260    </li>
2261     <li>Now you're finished.  Log in and test everything.  You may delete 
2262 exported.dat at this time, or you might want to save it somewhere as a sort 
2263 of pseudo-backup.    </li>
2264    
2265 </ol>
2266      </div>
2267    <br>
2268    
2269 </body>
2270 </html>