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