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