authenticate/checkvpw.1
changeset 2 b3afb9f1e801
parent 0 6f7a81934006
equal deleted inserted replaced
1:30113bfbe723 2:b3afb9f1e801
     1 .rn '' }`
     1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
     2 ''' $RCSfile$$Revision$$Date$
     2 .\"
     3 '''
     3 .\" Standard preamble:
     4 ''' $Log$
     4 .\" ========================================================================
     5 '''
     5 .de Sh \" Subsection heading
     6 .de Sh
       
     7 .br
     6 .br
     8 .if t .Sp
     7 .if t .Sp
     9 .ne 5
     8 .ne 5
    10 .PP
     9 .PP
    11 \fB\\$1\fR
    10 \fB\\$1\fR
    12 .PP
    11 .PP
    13 ..
    12 ..
    14 .de Sp
    13 .de Sp \" Vertical space (when we can't use .PP)
    15 .if t .sp .5v
    14 .if t .sp .5v
    16 .if n .sp
    15 .if n .sp
    17 ..
    16 ..
    18 .de Ip
    17 .de Vb \" Begin verbatim text
    19 .br
       
    20 .ie \\n(.$>=3 .ne \\$3
       
    21 .el .ne 3
       
    22 .IP "\\$1" \\$2
       
    23 ..
       
    24 .de Vb
       
    25 .ft CW
    18 .ft CW
    26 .nf
    19 .nf
    27 .ne \\$1
    20 .ne \\$1
    28 ..
    21 ..
    29 .de Ve
    22 .de Ve \" End verbatim text
    30 .ft R
    23 .ft R
    31 
       
    32 .fi
    24 .fi
    33 ..
    25 ..
    34 '''
    26 .\" Set up some character translations and predefined strings.  \*(-- will
    35 '''
    27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
    36 '''     Set up \*(-- to give an unbreakable dash;
    28 .\" double quote, and \*(R" will give a right double quote.  | will give a
    37 '''     string Tr holds user defined translation string.
    29 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
    38 '''     Bell System Logo is used as a dummy character.
    30 .\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
    39 '''
    31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
    40 .tr \(*W-|\(bv\*(Tr
    32 .tr \(*W-|\(bv\*(Tr
       
    33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
    41 .ie n \{\
    34 .ie n \{\
    42 .ds -- \(*W-
    35 .    ds -- \(*W-
    43 .ds PI pi
    36 .    ds PI pi
    44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
    37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
    45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
    38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
    46 .ds L" ""
    39 .    ds L" ""
    47 .ds R" ""
    40 .    ds R" ""
    48 '''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
    41 .    ds C` ""
    49 '''   \*(L" and \*(R", except that they are used on ".xx" lines,
    42 .    ds C' ""
    50 '''   such as .IP and .SH, which do another additional levels of
       
    51 '''   double-quote interpretation
       
    52 .ds M" """
       
    53 .ds S" """
       
    54 .ds N" """""
       
    55 .ds T" """""
       
    56 .ds L' '
       
    57 .ds R' '
       
    58 .ds M' '
       
    59 .ds S' '
       
    60 .ds N' '
       
    61 .ds T' '
       
    62 'br\}
    43 'br\}
    63 .el\{\
    44 .el\{\
    64 .ds -- \(em\|
    45 .    ds -- \|\(em\|
    65 .tr \*(Tr
    46 .    ds PI \(*p
    66 .ds L" ``
    47 .    ds L" ``
    67 .ds R" ''
    48 .    ds R" ''
    68 .ds M" ``
       
    69 .ds S" ''
       
    70 .ds N" ``
       
    71 .ds T" ''
       
    72 .ds L' `
       
    73 .ds R' '
       
    74 .ds M' `
       
    75 .ds S' '
       
    76 .ds N' `
       
    77 .ds T' '
       
    78 .ds PI \(*p
       
    79 'br\}
    49 'br\}
    80 .\"	If the F register is turned on, we'll generate
    50 .\"
    81 .\"	index entries out stderr for the following things:
    51 .\" If the F register is turned on, we'll generate index entries on stderr for
    82 .\"		TH	Title 
    52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
    83 .\"		SH	Header
    53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
    84 .\"		Sh	Subsection 
    54 .\" output yourself in some meaningful fashion.
    85 .\"		Ip	Item
    55 .if \nF \{\
    86 .\"		X<>	Xref  (embedded
    56 .    de IX
    87 .\"	Of course, you have to process the output yourself
    57 .    tm Index:\\$1\t\\n%\t"\\$2"
    88 .\"	in some meaninful fashion.
    58 ..
    89 .if \nF \{
    59 .    nr % 0
    90 .de IX
    60 .    rr F
    91 .tm Index:\\$1\t\\n%\t"\\$2"
    61 .\}
    92 ..
    62 .\"
    93 .nr % 0
    63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
    94 .rr F
    64 .\" way too many mistakes in technical documents.
    95 .\}
    65 .hy 0
    96 .TH CHECKVPW 1 "vmailmgr 0.96.9" "2000-09-30" "VMailMgr Tools Documentation"
       
    97 .UC
       
    98 .if n .hy 0
       
    99 .if n .na
    66 .if n .na
   100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
    67 .\"
   101 .de CQ          \" put $1 in typewriter font
    68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
   102 .ft CW
    69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
   103 'if n "\c
    70 .    \" fudge factors for nroff and troff
   104 'if t \\&\\$1\c
       
   105 'if n \\&\\$1\c
       
   106 'if n \&"
       
   107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
       
   108 '.ft R
       
   109 ..
       
   110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
       
   111 .	\" AM - accent mark definitions
       
   112 .bd B 3
       
   113 .	\" fudge factors for nroff and troff
       
   114 .if n \{\
    71 .if n \{\
   115 .	ds #H 0
    72 .    ds #H 0
   116 .	ds #V .8m
    73 .    ds #V .8m
   117 .	ds #F .3m
    74 .    ds #F .3m
   118 .	ds #[ \f1
    75 .    ds #[ \f1
   119 .	ds #] \fP
    76 .    ds #] \fP
   120 .\}
    77 .\}
   121 .if t \{\
    78 .if t \{\
   122 .	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
    79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
   123 .	ds #V .6m
    80 .    ds #V .6m
   124 .	ds #F 0
    81 .    ds #F 0
   125 .	ds #[ \&
    82 .    ds #[ \&
   126 .	ds #] \&
    83 .    ds #] \&
   127 .\}
    84 .\}
   128 .	\" simple accents for nroff and troff
    85 .    \" simple accents for nroff and troff
   129 .if n \{\
    86 .if n \{\
   130 .	ds ' \&
    87 .    ds ' \&
   131 .	ds ` \&
    88 .    ds ` \&
   132 .	ds ^ \&
    89 .    ds ^ \&
   133 .	ds , \&
    90 .    ds , \&
   134 .	ds ~ ~
    91 .    ds ~ ~
   135 .	ds ? ?
    92 .    ds /
   136 .	ds ! !
       
   137 .	ds /
       
   138 .	ds q
       
   139 .\}
    93 .\}
   140 .if t \{\
    94 .if t \{\
   141 .	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
    95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
   142 .	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
    96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
   143 .	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
    97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
   144 .	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
    98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
   145 .	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
    99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
   146 .	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
   100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
   147 .	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
   101 .\}
   148 .	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
   102 .    \" troff and (daisy-wheel) nroff accents
   149 .	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
       
   150 .\}
       
   151 .	\" troff and (daisy-wheel) nroff accents
       
   152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
   103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
   153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
   104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
   154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
       
   155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
       
   156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
       
   157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
       
   158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
   105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
   159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
   106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
   160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
   107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
   161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
   108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
   162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
   109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
   163 .ds ae a\h'-(\w'a'u*4/10)'e
   110 .ds ae a\h'-(\w'a'u*4/10)'e
   164 .ds Ae A\h'-(\w'A'u*4/10)'E
   111 .ds Ae A\h'-(\w'A'u*4/10)'E
   165 .ds oe o\h'-(\w'o'u*4/10)'e
   112 .    \" corrections for vroff
   166 .ds Oe O\h'-(\w'O'u*4/10)'E
       
   167 .	\" corrections for vroff
       
   168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
   113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
   169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
   114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
   170 .	\" for low resolution devices (crt and lpr)
   115 .    \" for low resolution devices (crt and lpr)
   171 .if \n(.H>23 .if \n(.V>19 \
   116 .if \n(.H>23 .if \n(.V>19 \
   172 \{\
   117 \{\
   173 .	ds : e
   118 .    ds : e
   174 .	ds 8 ss
   119 .    ds 8 ss
   175 .	ds v \h'-1'\o'\(aa\(ga'
   120 .    ds o a
   176 .	ds _ \h'-1'^
   121 .    ds d- d\h'-1'\(ga
   177 .	ds . \h'-1'.
   122 .    ds D- D\h'-1'\(hy
   178 .	ds 3 3
   123 .    ds th \o'bp'
   179 .	ds o a
   124 .    ds Th \o'LP'
   180 .	ds d- d\h'-1'\(ga
   125 .    ds ae ae
   181 .	ds D- D\h'-1'\(hy
   126 .    ds Ae AE
   182 .	ds th \o'bp'
       
   183 .	ds Th \o'LP'
       
   184 .	ds ae ae
       
   185 .	ds Ae AE
       
   186 .	ds oe oe
       
   187 .	ds Oe OE
       
   188 .\}
   127 .\}
   189 .rm #[ #] #H #V #F C
   128 .rm #[ #] #H #V #F C
       
   129 .\" ========================================================================
       
   130 .\"
       
   131 .IX Title "CHECKVPW 1"
       
   132 .TH CHECKVPW 1 "2003-12-01" "vmailmgr 0.97" "VMailMgr Tools Documentation"
   190 .SH "NAME"
   133 .SH "NAME"
   191 checkvpw \- check passwords for virtual and non-virtual users
   134 checkvpw \- check passwords for virtual and non\-virtual users
   192 .SH "SYNOPSIS"
   135 .SH "SYNOPSIS"
   193 \fBcheckvpw\fR \fBsubprogram\fR [\fBarguments...\fR]
   136 .IX Header "SYNOPSIS"
       
   137 \&\fBcheckvpw\fR \fBsubprogram\fR [\fBarguments...\fR]
   194 .SH "DESCRIPTION"
   138 .SH "DESCRIPTION"
       
   139 .IX Header "DESCRIPTION"
   195 This program is a drop-in replacement for the standard checkpassword,
   140 This program is a drop-in replacement for the standard checkpassword,
   196 written by D. J. Bernstein (djb@pobox.com).
   141 written by D. J. Bernstein (djb@pobox.com).
   197 In the absence of virtual hosting (determined by the use of
   142 In the absence of virtual hosting (determined by the use of
   198 \fI/var/qmail/control/virtualdomainss\fR and IP aliases),
   143 \&\fI/var/qmail/control/virtualdomainss\fR and \s-1IP\s0 aliases),
   199 it behaves identically to checkpassword.
   144 it behaves identically to checkpassword.
   200 When virtual hosting is used, it permits logins from a unique set of
   145 When virtual hosting is used, it permits logins from a unique set of
   201 users for each of the aliases.
   146 users for each of the aliases.
   202 .PP
   147 .PP
   203 \fIcheckvpw\fR must be run from either the \fItcp-env\fR program
   148 \&\fIcheckvpw\fR must be run from either the \fItcp-env\fR program
   204 (part of the \fIqmail\fR
   149 (part of the \fIqmail\fR
   205 package) or from a suitable substitute, such as \fItcpserver\fR
   150 package) or from a suitable substitute, such as \fItcpserver\fR
   206 (part of the \fIucspi-tcp\fR package).
   151 (part of the \fIucspi-tcp\fR package).
   207 These packages are used to determine to
   152 These packages are used to determine to
   208 which address a remote host is connecting.
   153 which address a remote host is connecting.
   209 \fIcheckvpw\fR must also be passed the checkpassword-compatible
   154 \&\fIcheckvpw\fR must also be passed the checkpassword-compatible
   210 authentication data on file descriptor three.
   155 authentication data on file descriptor three.
   211 This can be accomplished by running it from a tool such as
   156 This can be accomplished by running it from a tool such as
   212 \fIqmail-popup\fR.
   157 \&\fIqmail-popup\fR.
   213 .PP
   158 .PP
   214 \fIcheckvpw\fR accepts a command line in the following format:
   159 \&\fIcheckvpw\fR accepts a command line in the following format:
   215 .PP
   160 .PP
   216 .Vb 1
   161 .Vb 1
   217 \&        checkvpw [subprogram] [arguments...]
   162 \&        checkvpw [subprogram] [arguments...]
   218 .Ve
   163 .Ve
       
   164 .PP
   219 If the authentication information is valid, the subprogram is run,
   165 If the authentication information is valid, the subprogram is run,
   220 otherwise \fIcheckvpw\fR returns an error to the program that invokes it.
   166 otherwise \fIcheckvpw\fR returns an error to the program that invokes it.
   221 .PP
   167 .PP
   222 If the user name contains the character \f(CW@\fR, the host name
   168 If the user name contains the character \f(CW\*(C`@\*(C'\fR, the host name
   223 reported by \fItcp-env\fR is replaced by the string following the
   169 reported by \fItcp-env\fR is replaced by the string following the
   224 \f(CW@\fR, and the user name is replaced by the string preceding the
   170 \&\f(CW\*(C`@\*(C'\fR, and the user name is replaced by the string preceding the
   225 \f(CW@\fR.
   171 \&\f(CW\*(C`@\*(C'\fR.
   226 If the local host name reported by \fItcp-env\fR matches one of those
   172 If the local host name reported by \fItcp-env\fR matches one of those
   227 in \fI/var/qmail/control/virtualdomains\fR, \fIcheckvpw\fR prepends the
   173 in \fI/var/qmail/control/virtualdomains\fR, \fIcheckvpw\fR prepends the
   228 \fIprepend\fR string associated with the host name to the given user
   174 \&\fIprepend\fR string associated with the host name to the given user
   229 name.
   175 name.
   230 Wildcards in \fIvirtualdomains\fR are permitted and are handled in the
   176 Wildcards in \fIvirtualdomains\fR are permitted and are handled in the
   231 same way \fIqmail\fR handles them (see the \fIqmail-send\fR manpage).
   177 same way \fIqmail\fR handles them (see qmail-send).
   232 For example, if the line \f(CW.bar.com:bar\fR appears in the virtual hosts
   178 For example, if the line \f(CW\*(C`.bar.com:bar\*(C'\fR appears in the virtual hosts
   233 file, it matches \f(CWone.two.bar.com\fR but not \f(CWbar.com\fR.
   179 file, it matches \f(CW\*(C`one.two.bar.com\*(C'\fR but not \f(CW\*(C`bar.com\*(C'\fR.
   234 .PP
   180 .PP
   235 If the user name resulting from the above step appears in the system
   181 If the user name resulting from the above step appears in the system
   236 password file (typically \fI/etc/passwd\fR), the user is treated as a
   182 password file (typically \fI/etc/passwd\fR), the user is treated as a
   237 local user and authenticated with the information from that file.
   183 local user and authenticated with the information from that file.
   238 If this authentication succeeds, the mail directory is set to the
   184 If this authentication succeeds, the mail directory is set to the
   239 subdirectory named on the command line.
   185 subdirectory named on the command line.
   240 If the user name does not appear in the system password file and is of
   186 If the user name does not appear in the system password file and is of
   241 the form \f(CWname-ext\fR where \f(CWname\fR does appear in the password
   187 the form \f(CW\*(C`name\-ext\*(C'\fR where \f(CW\*(C`name\*(C'\fR does appear in the password
   242 file, the user is treated as a \*(L"virtual\*(R" user and authenticated with the
   188 file, the user is treated as a \*(L"virtual\*(R" user and authenticated with the
   243 information from a file named \fIpasswd\fR in the user's home directory.
   189 information from a file named \fIpasswd\fR in the user's home directory.
   244 If this authentication succeeds, the mail directory is set to the
   190 If this authentication succeeds, the mail directory is set to the
   245 subdirectory \fIusers/ext/\fR in the user's home directory, where
   191 subdirectory \fIusers/ext/\fR in the user's home directory, where
   246 \f(CWext\fR is from the above step.
   192 \&\f(CW\*(C`ext\*(C'\fR is from the above step.
   247 .PP
   193 .PP
   248 \fIcheckvpw\fR also does some rewriting on the arguments of the
   194 \&\fIcheckvpw\fR also does some rewriting on the arguments of the
   249 subprogram.
   195 subprogram.
   250 Any argument matching the string \*(L"\f(CWmaildir\fR\*(R" (ignoring case) is
   196 Any argument matching the string "\f(CW\*(C`maildir\*(C'\fR" (ignoring case) is
   251 replaced with the full path of the mail directory, as determined by the
   197 replaced with the full path of the mail directory, as determined by the
   252 steps above.
   198 steps above.
   253 .PP
   199 .PP
   254 This program may be invoked in combination with \fIqmail-popup\fR and
   200 This program may be invoked in combination with \fIqmail-popup\fR and
   255 \fIqmail-pop3d\fR from inetd by placing the following line in the
   201 \&\fIqmail\-pop3d\fR from inetd by placing the following line in the
   256 \fI/etc/inetd.conf\fR configuration file (all one line):
   202 \&\fI/etc/inetd.conf\fR configuration file (all one line):
   257 .PP
   203 .PP
   258 .Vb 1
   204 .Vb 1
   259 \&        pop-3 stream tcp nowait root /var/qmail/bin/tcp-env tcp-env -R /var/qmail/bin/qmail-popup <hostname> /usr/bin/checkvpw /var/qmail/bin/qmail-pop3d Maildir/
   205 \&        pop-3 stream tcp nowait root /var/qmail/bin/tcp-env tcp-env -R /var/qmail/bin/qmail-popup <hostname> /usr/bin/checkvpw /var/qmail/bin/qmail-pop3d Maildir/
   260 .Ve
   206 .Ve
   261 .SH "RETURN VALUE"
   207 .SH "RETURN VALUE"
       
   208 .IX Header "RETURN VALUE"
   262 0 if the user is successfully authenticated, nonzero if any error
   209 0 if the user is successfully authenticated, nonzero if any error
   263 occurred.  Exit code 1 indicates that a bad password was given, 2
   210 occurred.  Exit code 1 indicates that a bad password was given, 2
   264 indicates that the program was used incorrectly, and 111 indicates
   211 indicates that the program was used incorrectly, and 111 indicates
   265 a temporary failure.
   212 a temporary failure.
   266 .SH "ENVIRONMENT"
   213 .SH "ENVIRONMENT"
   267 \fIcheckvpw\fR requires that \f(CWTCPLOCALHOST\fR be set to the host name of
   214 .IX Header "ENVIRONMENT"
       
   215 \&\fIcheckvpw\fR requires that \f(CW\*(C`TCPLOCALHOST\*(C'\fR be set to the host name of
   268 the local address of the connection.
   216 the local address of the connection.
   269 .SH "SEE ALSO"
   217 .SH "SEE ALSO"
   270 \fIvdeliver\fR\|(1)
   218 .IX Header "SEE ALSO"
       
   219 \&\fIvdeliver\fR\|(1)
   271 .SH "AUTHOR"
   220 .SH "AUTHOR"
       
   221 .IX Header "AUTHOR"
   272 Bruce Guenter <\fIbruceg@em.ca\fR>.
   222 Bruce Guenter <\fIbruceg@em.ca\fR>.
   273 
       
   274 .rn }` ''
       
   275 .IX Title "CHECKVPW 1"
       
   276 .IX Name "checkvpw - check passwords for virtual and non-virtual users"
       
   277 
       
   278 .IX Header "NAME"
       
   279 
       
   280 .IX Header "SYNOPSIS"
       
   281 
       
   282 .IX Header "DESCRIPTION"
       
   283 
       
   284 .IX Header "RETURN VALUE"
       
   285 
       
   286 .IX Header "ENVIRONMENT"
       
   287 
       
   288 .IX Header "SEE ALSO"
       
   289 
       
   290 .IX Header "AUTHOR"
       
   291