makeuserdb.html.in
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:9k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
  2.                       "http://www.w3.org/TR/REC-html40/loose.dtd">
  3. <html>
  4. <head>
  5.   <title>makeuserdb - Create @userdb@.dat</title>
  6.   <!-- $Id: makeuserdb.html.in,v 1.8 2000/03/06 17:41:12 mrsam Exp $ -->
  7.   <!-- Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for -->
  8.   <!-- distribution information. -->
  9.   <!-- SECTION 8 -->
  10.   <meta http-equiv="Content-Type" content="text/html">
  11. </head>
  12. <body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B"
  13. alink="#FF0000">
  14. <h1>makeuserdb - Create @userdb@.dat</h1>
  15. <h2>SYNOPSIS</h2>
  16. <pre>   makeuserdb
  17.    pw2userdb
  18.    vchkpw2userdb [ --vpopmailhome=dir ] [ --todir=dir ] </pre>
  19. <h2>DESCRIPTION</h2>
  20. <p>These commands are used to create the <code>@userdb@.dat</code> database.
  21. <code>makeuserdb</code> creates <code>@userdb@.dat</code> based on the
  22. contents of <code>@userdb@</code>. <code>@userdb@.dat</code> is used by
  23. <i>maildrop</i>, <i>Courier</i>, and other applications as a
  24. substitute/complement for your system password file. The usual purpose for
  25. <code>@userdb@.dat</code> is to specify "virtual" accounts - accounts that do
  26. not have an associated login. Typically all virtual accounts share the same
  27. system userid. <code>@userdb@.dat</code> can also be used as a replacement for
  28. your system password file. Because the system password file is a text file,
  29. when there's a large number of accounts it will be significantly faster to
  30. search a binary database, instead of a text file.</p>
  31. <p>The <code>makeuserdb</code> command creates <code>@userdb@.dat</code> based
  32. on the contents of <code>@userdb@</code>. <code>@userdb@</code> is a plain
  33. text file, or a directory. If it is a directory, the contents of all files in
  34. the directory are simply concatenated together.</p>
  35. <p><code>makeuserdb</code> command can be safely executed during normal system
  36. activity.</p>
  37. <h2>Format of <code>@userdb@</code></h2>
  38. <code>@userdb@</code> is a plain text file that can be created using any text
  39. editor. Blank lines are ignored. Lines that start with the # character are
  40. comments, and are also ignored. Other lines define properties of a single
  41. account, one line per account.  If <code>@userdb@</code> is a directory, each
  42. file in <code>@userdb@</code> is formatted the same way. Each line takes the
  43. following format:<br>
  44. <br>
  45. <pre>name&lt;TAB>field=value|field=value</pre>
  46. <p><i>name</i> is the account name. If Courier is configured to treat
  47. lowercase and uppercase account names as identical, <i>name</i> MUST contain
  48. lowercase characters only. <i>name</i> is followed by exactly one tab
  49. character, then a list of field/value pairs separated by vertical slashes.
  50. <i>field</i> is the name of the field, <i>value</i> is the field value. The
  51. field value itself cannot contain slashes or control characters. Fields can be
  52. specified in any order. Here are all the currently defined fields.  Note that
  53. not every field is used by every application that reads
  54. <code>@userdb@.dat</code>.</p>
  55. <ul>
  56.   <li><code>uid</code> - <i>value</i> specifies a (possibly) unique numerical
  57.     user ID for this account.<br>
  58.     <br>
  59.   </li>
  60.   <li><code>gid</code> - <i>value</i> specifies a (possibly) unique numerical
  61.     group ID for this account.<br>
  62.     <br>
  63.   </li>
  64.   <li><code>home</code> - <i>value</i> specifies the account's home
  65.     directory.<br>
  66.     <br>
  67.   </li>
  68.   <li><code>shell</code> - <i>value</i> specifies the account's default
  69.     shell.<br>
  70.     <br>
  71.   </li>
  72.   <li><code>systempw</code> - <i>value</i> specifies the account's system
  73.     password. See <a href="userdbpw.html">userdbpw(8)</a> for a way to set
  74.     this field.<br>
  75.     <br>
  76.   </li>
  77.   <li><code>pop3pw, esmtppw, imappw...</code> - <i>value</i> specifies a
  78.     separate password used only for authenticating access via some service,
  79.     such as POP3, IMAP, or anything else. If not defined, <i>systempw</i> is
  80.     always used. This allows you to define separate passwords for each
  81.     service, or always use the same password for everything, your choice.<br>
  82.     <br>
  83.   </li>
  84.   <li><code>mail</code> - <i>value</i> specifies the location of the account's
  85.     Maildir mailbox. If missing, the account's Maildir is expected to be
  86.     present in the default location for system accounts.<br>
  87.     <br>
  88.   </li>
  89.   <li><code>quota</code> - <i>value</i> specifies the quota for the account's
  90.     Maildir. See maildirquota(8) for more information.</li>
  91. </ul>
  92. <p>The <code>uid</code>, <code>gid</code>, and <code>home</code> fields MUST
  93. be specified. The remaining fields are optional.  If missing, system defaults
  94. will be used.<br>
  95. <br>
  96. </p>
  97. <pre>=uid&lt;TAB>name</pre>
  98. <p>This entry is used to specify reverse mapping from userids to names.
  99. <i>uid</i> specifies the system userid, <i>name</i> specifies the system
  100. username. <i>name</i> must point to another record in <code>userdb</code>.</p>
  101. <h2>@userdb@shadow.dat</h2>
  102. <p>All fields whose name ends with 'pw' will NOT copied to
  103. <code>@userdb@.dat</code>. These fields will be copied to
  104. <code>@userdb@shadow.dat</code>. <code>makeuserdb</code> will turn off all
  105. group and world permissions on <code>@userdb@shadow.dat</code>.
  106. <code>makeuserdb</code> will also fail if <code>@userdb@</code> has any group
  107. or world permissions.</p>
  108. <h2>CONVERTING /etc/passwd and vpopmail to @userdb@ format</h2>
  109. <p>The <code>pw2userdb</code> script reads <code>/etc/passwd</code> and
  110. <code>/etc/shadow</code> then converts all entries to the format used in
  111. <code>@userdb@</code>, printing the result on standard output. The output can
  112. be redirected to <code>@userdb@</code>, or to a file in this subdirectory.
  113. Linear searches of <code>/etc/passwd</code> can be very slow when you have
  114. tens of thousands of accounts. Programs like <i>maildrop</i> always look in
  115. <code>@userdb@</code> first, so by having the system password file in the
  116. <code>@userdb@</code> it is possible to significantly reduce the amount of
  117. time it takes to look it up.</p>
  118. <p>After saving the output of <code>pw2userdb</code>, you must still run
  119. <code>makeuserdb</code> to create <code>@userdb@.dat</code>.</p>
  120. <p>The <code>vchkpw2userdb</code> script is used to convert vpopmail-style
  121. directory hierarchy to the <code>@userdb@</code> format.
  122. <code>vpopmail/vchkpw</code> is often used to implement virtual mailboxes that
  123. share the same userid.</p>
  124. <p>Generally, an account named 'vpopmail' is reserved for this purpose.  In
  125. that account the file <code>users/vpasswd</code> has the same structure as
  126. <code>/etc/passwd</code>, and performs a similar function, except that all
  127. userid in <code>users/vpasswd</code> have the same userid.  Additionally, the
  128. <code><i>domains</i></code> subdirectory is used to store virtual accounts for
  129. multiple domains.  For example, <code>domains/example.com/vpasswd</code>
  130. contains the passwd file for domain <code>example.com</code>.  Additionally,
  131. some systems implement a soft link, <code>domains/default</code>, that points
  132. to a domain that's considered a "default" domain.</p>
  133. <p>The <code>vchkpw2userdb</code> script takes all of this, and attempts to
  134. convert it into the <code>@userdb@</code> format.  The
  135. <code>--vpopmailhost</code> option specifies the top level directory, if it is
  136. not the home directory of the vpopmail account.</p>
  137. <p>The <code>vchkpw2userdb</code> script prints the results on standard
  138. output. If specified, the --todir option, attempts to convert all
  139. <code>vpasswd</code> files one at a time, saving each one individually in
  140. <i>dir</i>. For example:</p>
  141. <p><code>mkdir @userdb@</code><br>
  142. <code>vchkpw2userdb --todir=@userdb@/vpopmail<br>
  143. <code>makeuserdb</code></code></p>
  144. <p>It is still necessary to run <code>makeuserdb</code>, of course, to create
  145. the binary database.</p>
  146. <p>NOTE:  You are still required to create the @userdb@ entry which maps
  147. system userids back to accounts, <code>"=uid&lt;TAB>name"</code>, if that's
  148. applicable. <code>vchkpw2userdb</code> will not do it for you.</p>
  149. <p>NOTE:  <code>makeuserdb</code> may complain about duplicate entries, if
  150. your "default" entries in <code>users/vpasswd</code> or
  151. <code>domains/default/vpasswd</code> are the same as anything in any other
  152. <code>@userdb@</code> file.  It is also likely that you'll end up with
  153. duplicate, but distinct, entries for every account in the default domain.  For
  154. example, if your default domain is example.com, you'll end up with duplicate
  155. entries - you'll have entries for both <code>user</code> and
  156. <code>user@example.com</code>.</p>
  157. <p>If you intend to maintain the master set of accounts using vchkpw/vpopmail,
  158. in order to avoid cleaning this up every time, you might want to consider
  159. doing the following: run <code>vchkpw2userdb</code> once, using the
  160. <code>--todir</code> option.  Then, go into the resulting directory, and
  161. replace one of the redundant files with a soft link to <code>/dev/null</code>.
  162. This allows you to run <code>vchkpw2userdb</code> without having to go in and
  163. cleaning up again, afterwards.</p>
  164. <h2>FILES</h2>
  165. <ul>
  166.   <li><code>@userdb@</code></li>
  167.   <li><code>@userdb@.dat</code></li>
  168.   <li><code>@userdb@shadow.dat</code></li>
  169.   <li><code>@tmpdir@/userdb.tmp</code> - temporary file</li>
  170.   <li><code>@tmpdir@/userdbshadow.tmp</code> - temporary file</li>
  171. </ul>
  172. <h2>BUGS</h2>
  173. <p><code>*pw</code> must be encrypted via crypt.</p>
  174. <p><code>makeuserdb</code> is a Perl script, and uses Perl's portable locking.
  175. Perl's documentation notes that certain combinations of locking options may
  176. not work with some networks.</p>
  177. <h2>SEE ALSO</h2>
  178. <p><a href="userdb.html">userdb(8)</a>, maildrop(1), courier(1),
  179. maildirquota(8)</p>
  180. </body>
  181. </html>