authenticate/checkvpw.1
changeset 0 6f7a81934006
child 2 b3afb9f1e801
equal deleted inserted replaced
-1:000000000000 0:6f7a81934006
       
     1 .rn '' }`
       
     2 ''' $RCSfile$$Revision$$Date$
       
     3 '''
       
     4 ''' $Log$
       
     5 '''
       
     6 .de Sh
       
     7 .br
       
     8 .if t .Sp
       
     9 .ne 5
       
    10 .PP
       
    11 \fB\\$1\fR
       
    12 .PP
       
    13 ..
       
    14 .de Sp
       
    15 .if t .sp .5v
       
    16 .if n .sp
       
    17 ..
       
    18 .de Ip
       
    19 .br
       
    20 .ie \\n(.$>=3 .ne \\$3
       
    21 .el .ne 3
       
    22 .IP "\\$1" \\$2
       
    23 ..
       
    24 .de Vb
       
    25 .ft CW
       
    26 .nf
       
    27 .ne \\$1
       
    28 ..
       
    29 .de Ve
       
    30 .ft R
       
    31 
       
    32 .fi
       
    33 ..
       
    34 '''
       
    35 '''
       
    36 '''     Set up \*(-- to give an unbreakable dash;
       
    37 '''     string Tr holds user defined translation string.
       
    38 '''     Bell System Logo is used as a dummy character.
       
    39 '''
       
    40 .tr \(*W-|\(bv\*(Tr
       
    41 .ie n \{\
       
    42 .ds -- \(*W-
       
    43 .ds PI pi
       
    44 .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
       
    46 .ds L" ""
       
    47 .ds R" ""
       
    48 '''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
       
    49 '''   \*(L" and \*(R", except that they are used on ".xx" lines,
       
    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\}
       
    63 .el\{\
       
    64 .ds -- \(em\|
       
    65 .tr \*(Tr
       
    66 .ds L" ``
       
    67 .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\}
       
    80 .\"	If the F register is turned on, we'll generate
       
    81 .\"	index entries out stderr for the following things:
       
    82 .\"		TH	Title 
       
    83 .\"		SH	Header
       
    84 .\"		Sh	Subsection 
       
    85 .\"		Ip	Item
       
    86 .\"		X<>	Xref  (embedded
       
    87 .\"	Of course, you have to process the output yourself
       
    88 .\"	in some meaninful fashion.
       
    89 .if \nF \{
       
    90 .de IX
       
    91 .tm Index:\\$1\t\\n%\t"\\$2"
       
    92 ..
       
    93 .nr % 0
       
    94 .rr F
       
    95 .\}
       
    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
       
   100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
       
   101 .de CQ          \" put $1 in typewriter font
       
   102 .ft CW
       
   103 'if n "\c
       
   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 \{\
       
   115 .	ds #H 0
       
   116 .	ds #V .8m
       
   117 .	ds #F .3m
       
   118 .	ds #[ \f1
       
   119 .	ds #] \fP
       
   120 .\}
       
   121 .if t \{\
       
   122 .	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
       
   123 .	ds #V .6m
       
   124 .	ds #F 0
       
   125 .	ds #[ \&
       
   126 .	ds #] \&
       
   127 .\}
       
   128 .	\" simple accents for nroff and troff
       
   129 .if n \{\
       
   130 .	ds ' \&
       
   131 .	ds ` \&
       
   132 .	ds ^ \&
       
   133 .	ds , \&
       
   134 .	ds ~ ~
       
   135 .	ds ? ?
       
   136 .	ds ! !
       
   137 .	ds /
       
   138 .	ds q
       
   139 .\}
       
   140 .if t \{\
       
   141 .	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
       
   142 .	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
       
   143 .	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
       
   144 .	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
       
   145 .	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'
       
   147 .	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
       
   148 .	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
       
   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'
       
   153 .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'\*(#]
       
   159 .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'
       
   161 .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'\*(#]
       
   163 .ds ae a\h'-(\w'a'u*4/10)'e
       
   164 .ds Ae A\h'-(\w'A'u*4/10)'E
       
   165 .ds oe o\h'-(\w'o'u*4/10)'e
       
   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'
       
   169 .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)
       
   171 .if \n(.H>23 .if \n(.V>19 \
       
   172 \{\
       
   173 .	ds : e
       
   174 .	ds 8 ss
       
   175 .	ds v \h'-1'\o'\(aa\(ga'
       
   176 .	ds _ \h'-1'^
       
   177 .	ds . \h'-1'.
       
   178 .	ds 3 3
       
   179 .	ds o a
       
   180 .	ds d- d\h'-1'\(ga
       
   181 .	ds D- D\h'-1'\(hy
       
   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 .\}
       
   189 .rm #[ #] #H #V #F C
       
   190 .SH "NAME"
       
   191 checkvpw \- check passwords for virtual and non-virtual users
       
   192 .SH "SYNOPSIS"
       
   193 \fBcheckvpw\fR \fBsubprogram\fR [\fBarguments...\fR]
       
   194 .SH "DESCRIPTION"
       
   195 This program is a drop-in replacement for the standard checkpassword,
       
   196 written by D. J. Bernstein (djb@pobox.com).
       
   197 In the absence of virtual hosting (determined by the use of
       
   198 \fI/var/qmail/control/virtualdomainss\fR and IP aliases),
       
   199 it behaves identically to checkpassword.
       
   200 When virtual hosting is used, it permits logins from a unique set of
       
   201 users for each of the aliases.
       
   202 .PP
       
   203 \fIcheckvpw\fR must be run from either the \fItcp-env\fR program
       
   204 (part of the \fIqmail\fR
       
   205 package) or from a suitable substitute, such as \fItcpserver\fR
       
   206 (part of the \fIucspi-tcp\fR package).
       
   207 These packages are used to determine to
       
   208 which address a remote host is connecting.
       
   209 \fIcheckvpw\fR must also be passed the checkpassword-compatible
       
   210 authentication data on file descriptor three.
       
   211 This can be accomplished by running it from a tool such as
       
   212 \fIqmail-popup\fR.
       
   213 .PP
       
   214 \fIcheckvpw\fR accepts a command line in the following format:
       
   215 .PP
       
   216 .Vb 1
       
   217 \&        checkvpw [subprogram] [arguments...]
       
   218 .Ve
       
   219 If the authentication information is valid, the subprogram is run,
       
   220 otherwise \fIcheckvpw\fR returns an error to the program that invokes it.
       
   221 .PP
       
   222 If the user name contains the character \f(CW@\fR, the host name
       
   223 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
       
   225 \f(CW@\fR.
       
   226 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
       
   228 \fIprepend\fR string associated with the host name to the given user
       
   229 name.
       
   230 Wildcards in \fIvirtualdomains\fR are permitted and are handled in the
       
   231 same way \fIqmail\fR handles them (see the \fIqmail-send\fR manpage).
       
   232 For example, if the line \f(CW.bar.com:bar\fR appears in the virtual hosts
       
   233 file, it matches \f(CWone.two.bar.com\fR but not \f(CWbar.com\fR.
       
   234 .PP
       
   235 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
       
   237 local user and authenticated with the information from that file.
       
   238 If this authentication succeeds, the mail directory is set to the
       
   239 subdirectory named on the command line.
       
   240 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
       
   242 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.
       
   244 If this authentication succeeds, the mail directory is set to the
       
   245 subdirectory \fIusers/ext/\fR in the user's home directory, where
       
   246 \f(CWext\fR is from the above step.
       
   247 .PP
       
   248 \fIcheckvpw\fR also does some rewriting on the arguments of the
       
   249 subprogram.
       
   250 Any argument matching the string \*(L"\f(CWmaildir\fR\*(R" (ignoring case) is
       
   251 replaced with the full path of the mail directory, as determined by the
       
   252 steps above.
       
   253 .PP
       
   254 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
       
   256 \fI/etc/inetd.conf\fR configuration file (all one line):
       
   257 .PP
       
   258 .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/
       
   260 .Ve
       
   261 .SH "RETURN VALUE"
       
   262 0 if the user is successfully authenticated, nonzero if any error
       
   263 occurred.  Exit code 1 indicates that a bad password was given, 2
       
   264 indicates that the program was used incorrectly, and 111 indicates
       
   265 a temporary failure.
       
   266 .SH "ENVIRONMENT"
       
   267 \fIcheckvpw\fR requires that \f(CWTCPLOCALHOST\fR be set to the host name of
       
   268 the local address of the connection.
       
   269 .SH "SEE ALSO"
       
   270 \fIvdeliver\fR\|(1)
       
   271 .SH "AUTHOR"
       
   272 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