cat1/condredirect.0.html 100644 0 0 2543 6244431464 13471 0 ustar root root
condredirect - perhaps redirect mail to another address
in .qmail: |condredirect newaddress program [ arg ... ]
condredirect feeds each new mail message to program with the given arguments. If program exits 0, condredirect forwards the mail message to newaddress, and then exits 99, so further commands in .qmail are ignored. If program exits 111, condredirect exits 111, so delivery will be retried later. If program exits anything else (or does not exist), con- dredirect exits 0, so the rest of .qmail will be processed as usual. Note that it is not safe for program to fork a child that reads the message in the background.
dot-qmail(5), qmail-command(8), qmail-queue(8)cat1/condredirect.0.html.html 100644 0 0 3446 6244431465 14440 0 ustar root root
cat1/condredirect.0.html.html.html 100644 0 0 4246 6244431466 15403 0 ustar root rootdot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG>
dot-qmail(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html"><STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG></A></STRONG> cat1/condredirect.0.html.html.html.html 100644 0 0 4675 6244431467 16355 0 ustar root root
forwards the mail message to &lt;EM&gt;newaddress&lt;/EM&gt;, and then exits 99, so further commands in &lt;STRONG&gt;.qmail&lt;/STRONG&gt; are ignored. If &lt;EM&gt;program&lt;/EM&gt; exits 111, &lt;STRONG&gt;condredirect&lt;/STRONG&gt; exits 111, so delivery will be retried later. If &lt;EM&gt;program&lt;/EM&gt; exits anything else (or does not exist), &lt;STRONG&gt;con-&lt;/STRONG&gt; &lt;STRONG&gt;dredirect&lt;/STRONG&gt; exits 0, so the rest of &lt;STRONG&gt;.qmail&lt;/STRONG&gt; will be processed as usual. Note that it is not safe for &lt;EM&gt;program&lt;/EM&gt; to fork a child that reads the message in the background.dot-qmail(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-command.0.html"&gt;<STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-queue.0.html"&gt;<STRONG><A HREF="../cat8/qmail-queue.0.html"><STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/forward.0.html 100644 0 0 1700 6244431470 12457 0 ustar root root
forward - forward new mail to one or more addresses
in .qmail: |forward address ...
forward forwards each new mail message to the specified list of addresses. It is a simple wrapper around qmail- queue. It achieves the same results as listing each address separately in .qmail, but it is more programmable since address can be constructed on the fly.
dot-qmail(5), qmail-command(8), qmail-queue(8)cat1/forward.0.html.html 100644 0 0 2433 6244431471 13427 0 ustar root root
cat1/forward.0.html.html.html 100644 0 0 3156 6244431472 14376 0 ustar root rootdot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG>
dot-qmail(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html"><STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG></A></STRONG> cat1/forward.0.html.html.html.html 100644 0 0 3577 6244431473 15351 0 ustar root root
&lt;STRONG&gt;queue&lt;/STRONG&gt;. It achieves the same results as listing each &lt;EM&gt;address&lt;/EM&gt; separately in &lt;STRONG&gt;.qmail&lt;/STRONG&gt;, but it is more programmable since &lt;EM&gt;address&lt;/EM&gt; can be constructed on the fly.dot-qmail(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-command.0.html"&gt;<STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-queue.0.html"&gt;<STRONG><A HREF="../cat8/qmail-queue.0.html"><STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/maildir2mbox.0.html 100644 0 0 2137 6244431474 13415 0 ustar root root
maildir2mbox - move mail from a maildir to an mbox
maildir2mbox
maildir2mbox moves mail from a maildir-format directory to an mbox-format file. You must supply three environment variables to maildir2mbox: MAILDIR is the name of your maildir direc- tory; MAIL is the name of your mbox file; and MAILTMP is a temporary file that maildir2mbox can overwrite. MAILTMP and MAIL must be on the same filesystem. maildir2mbox is reliable: it will not remove messages from MAILDIR until the messages have been successfully appended to MAIL.
maildir(5)cat1/maildir2mbox.0.html.html 100644 0 0 2533 6244431475 14361 0 ustar root root
cat1/maildir2mbox.0.html.html.html 100644 0 0 3260 6244431476 15323 0 ustar root rootmaildir(5)</A></STRONG>
maildir(5)</A></STRONG></A></STRONG> cat1/maildir2mbox.0.html.html.html.html 100644 0 0 3442 6244431477 16271 0 ustar root root
You must supply three environment variables to &lt;STRONG&gt;maildir2mbox&lt;/STRONG&gt;: &lt;STRONG&gt;MAILDIR&lt;/STRONG&gt; is the name of your &lt;EM&gt;maildir&lt;/EM&gt; direc- tory; &lt;STRONG&gt;MAIL&lt;/STRONG&gt; is the name of your &lt;EM&gt;mbox&lt;/EM&gt; file; and &lt;STRONG&gt;MAILTMP&lt;/STRONG&gt; is a temporary file that &lt;STRONG&gt;maildir2mbox&lt;/STRONG&gt; can overwrite. &lt;STRONG&gt;MAILTMP&lt;/STRONG&gt; and &lt;STRONG&gt;MAIL&lt;/STRONG&gt; must be on the same filesystem. &lt;STRONG&gt;maildir2mbox&lt;/STRONG&gt; is reliable: it will not remove messages from &lt;STRONG&gt;MAILDIR&lt;/STRONG&gt; until the messages have been successfully appended to &lt;STRONG&gt;MAIL&lt;/STRONG&gt;.maildir(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/maildir2qmtp.0.html 100644 0 0 1370 6244431500 13415 0 ustar root root
maildir2qmtp - blast a maildir across QMTP
maildir2smtp dir prefix targetip
maildir2qmtp is just like maildir2smtp except that (1) it uses QMTP instead of SMTP and (2) it does not take a helo- host argument. maildir2qmtp is faster than maildir2smtp.
maildir2smtp(1), qmail-qmtpd(8)cat1/maildir2qmtp.0.html.html 100644 0 0 2013 6244431501 14354 0 ustar root root
cat1/maildir2qmtp.0.html.html.html 100644 0 0 2364 6244431502 15331 0 ustar root rootmaildir2smtp(1)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-qmtpd.0.html">qmail-qmtpd(8)</A></STRONG>
maildir2smtp(1)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-qmtpd.0.html"><STRONG><A HREF="../cat8/qmail-qmtpd.0.html">qmail-qmtpd(8)</A></STRONG></A></STRONG> cat1/maildir2qmtp.0.html.html.html.html 100644 0 0 2477 6244431503 16302 0 ustar root root
&lt;EM&gt;host&lt;/EM&gt; argument. &lt;STRONG&gt;maildir2qmtp&lt;/STRONG&gt; is faster than &lt;STRONG&gt;maildir2smtp&lt;/STRONG&gt;.maildir2smtp(1)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-qmtpd.0.html"&gt;<STRONG><A HREF="../cat8/qmail-qmtpd.0.html"><STRONG><A HREF="../cat8/qmail-qmtpd.0.html">qmail-qmtpd(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/maildir2smtp.0.html 100644 0 0 5435 6244431505 13432 0 ustar root root
maildir2smtp - blast a maildir across SMTP
maildir2smtp dir prefix targetip helohost
maildir2smtp removes messages from a maildir-format direc- tory, dir, and sends them to targetip via SMTP. targetip must be a dotted-decimal IP address. maildir2smtp retrieves a message's envelope sender address and envelope recipient address from the Return-Path and Delivered-To lines at the top of the message header. It removes these lines before passing the message along. maildir2smtp removes prefix from the beginning of each envelope recipient address. It ignores any message whose recipient address does not begin with prefix. maildir2smtp is designed to pass messages along a SLIP or PPP link. To set this up on the disconnected end, create a new maildir in ~alias: # maildirmake ~alias/pppdir # chown -R alias ~alias/pppdir Put :alias-ppp into control/virtualdomains and ./pppdir/ into ~alias/.qmail-ppp-default. Don't forget the extra slash in pppdir/. Then, in the PPP startup script, do maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname` replacing $IP with the remote IP address. A similar pro- cedure works on the connected end: put virt.host:joe-ppp into control/virtualdomains and ./pppdir/ into ~joe/.qmail-ppp-default; then joe can run maildir2smtp $HOME/pppdir joe-ppp- $IP `hostname` when he establishes a connection. maildir2smtp is reliable: it will not remove a message maildir2smtp uses helohost as the local host name for say- ing hello to the remote SMTP server. helohost must be a fully-qualified domain name. maildir2smtp supports ESMTP PIPELINING. maildir2smtp assumes that all sender and recipient domain names have already been canonicalized.
maildir2qmtp(1), maildir(5), qmail-send(8)cat1/maildir2smtp.0.html.html 100644 0 0 4720 6244431506 14372 0 ustar root root
cat1/maildirmake.0.html.html.html.html 100644 0 0 1222 6244431514 16141 0 ustar root rootcat1/maildir2smtp.0.html.html.html 100644 0 0 5214 6244431507 15335 0 ustar root root
cat1/maildir2smtp.0.html.html.html.html 100644 0 0 5046 6244431510 16275 0 ustar root rootmust be a dotted-decimal IP address. &lt;STRONG&gt;maildir2smtp&lt;/STRONG&gt; retrieves a message's envelope sender address and envelope recipient address from the &lt;STRONG&gt;Return-Path&lt;/STRONG&gt; and &lt;STRONG&gt;Delivered-To&lt;/STRONG&gt; lines at the top of the message header. It removes these lines before passing the message along. &lt;STRONG&gt;maildir2smtp&lt;/STRONG&gt; removes &lt;EM&gt;prefix&lt;/EM&gt; from the beginning of each envelope recipient address. It ignores any message whose recipient address does not begin with &lt;EM&gt;prefix&lt;/EM&gt;. &lt;STRONG&gt;maildir2smtp&lt;/STRONG&gt; is designed to pass messages along a SLIP or PPP link. To set this up on the disconnected end, create a new maildir in &lt;STRONG&gt;~alias&lt;/STRONG&gt;: # maildirmake ~alias/pppdir # chown -R alias ~alias/pppdir Put :alias-ppp into &lt;STRONG&gt;control/virtualdomains&lt;/STRONG&gt; and ./pppdir/ into &lt;STRONG&gt;~alias/.qmail-ppp-default&lt;/STRONG&gt;. Don't forget the extra slash in &lt;STRONG&gt;pppdir/&lt;/STRONG&gt;. Then, in the PPP startup script, do maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname` replacing $IP with the remote IP address. A similar pro- cedure works on the connected end: put virt.host:joe-ppp into &lt;STRONG&gt;control/virtualdomains&lt;/STRONG&gt; and &lt;STRONG&gt;./pppdir/&lt;/STRONG&gt; into &lt;STRONG&gt;~joe/.qmail-ppp-default&lt;/STRONG&gt;; then &lt;STRONG&gt;joe&lt;/STRONG&gt; can run maildir2smtp $HOME/pppdir joe-ppp- $IP `hostname` when he establishes a connection. &lt;STRONG&gt;maildir2smtp&lt;/STRONG&gt; is reliable: it will not remove a messagecat1/maildirmake.0.html 100644 0 0 726 6244431511 13255 0 ustar root rootmaildirmake - create a maildir for incoming mailSYNOPSIS
maildirmake dirDESCRIPTION
maildirmake makes a new directory, dir, in maildir format.SEE ALSO
maildir(5)cat1/maildirmake.0.html.html 100644 0 0 1120 6244431512 14226 0 ustar root rootcat1/maildirmake.0.html.html.html 100644 0 0 1315 6244431513 15200 0 ustar root rootmaildir(5)</A></STRONG>
maildir(5)</A></STRONG></A></STRONG>
maildir(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/maildirwatch.0.html 100644 0 0 1362 6244431515 13467 0 ustar root root
maildirwatch - look for new mail in a maildir
maildirwatch
maildirwatch watches your maildir for new mail. You must supply a MAILDIR environment variable with the name of your maildir directory. maildirwatch prints a new mail summary twice per minute. It is designed to run inside a (VT100-compatible) window; it clears the window before each summary.
maildir(5)cat1/maildirwatch.0.html.html 100644 0 0 1573 6244431516 14437 0 ustar root root
cat1/maildirwatch.0.html.html.html 100644 0 0 2060 6244431517 15373 0 ustar root rootmaildir(5)</A></STRONG>
maildir(5)</A></STRONG></A></STRONG> cat1/maildirwatch.0.html.html.html.html 100644 0 0 1724 6244431520 16336 0 ustar root root
your &lt;EM&gt;maildir&lt;/EM&gt; directory. &lt;STRONG&gt;maildirwatch&lt;/STRONG&gt; prints a new mail summary twice per minute. It is designed to run inside a (VT100-compatible) window; it clears the window before each summary.maildir(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/mailsubj.0.html 100644 0 0 1704 6244431521 12622 0 ustar root root
mailsubj - send a mail message with a subject line
mailsubj subject recip ...
mailsubj inserts subject and the list of recips into a mail message: Subject: subject To: recip ... body mailsubj reads the body of the message from its standard input. Then it sends the message. Note that subject and recip must be quoted properly for the message header.
addresses(5), qmail-header(8), qmail-inject(8)cat1/mailsubj.0.html.html 100644 0 0 2440 6244431522 13564 0 ustar root root
cat1/mailsubj.0.html.html.html 100644 0 0 3200 6244431523 14523 0 ustar root rootaddresses(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-header.0.html">qmail-header(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG>
addresses(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-header.0.html"><STRONG><A HREF="../cat8/qmail-header.0.html">qmail-header(8)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-inject.0.html"><STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG></A></STRONG> cat1/mailsubj.0.html.html.html.html 100644 0 0 3621 6244431524 15476 0 ustar root root
Subject: subject To: recip ... body &lt;STRONG&gt;mailsubj&lt;/STRONG&gt; reads the body of the message from its standard input. Then it sends the message. Note that &lt;EM&gt;subject&lt;/EM&gt; and &lt;EM&gt;recip&lt;/EM&gt; must be quoted properly for the message header.addresses(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-header.0.html"&gt;<STRONG><A HREF="../cat8/qmail-header.0.html"><STRONG><A HREF="../cat8/qmail-header.0.html">qmail-header(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-inject.0.html"&gt;<STRONG><A HREF="../cat8/qmail-inject.0.html"><STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/preline.0.html 100644 0 0 3045 6244431525 12456 0 ustar root root
preline - prepend lines to message
in .qmailext: | preline command
preline feeds each incoming mail message through command. At the top of each message it inserts a UUCP-style From_ line, a Return-Path line, and a Delivered-To line. preline is useful for procmail and ELM's filter, which do not understand the qmail-command environment variables.
-d Do not include the Delivered-To line. You should use this option when the recipient of the incoming mail message is actually under remote control, but was sent here through control/virtualdomains for manual routing. -f Do not include the From_ line. You should use this option except for commands that create mbox files. -r Do not include the Return-Path line.
mbox(5), qmail-command(8)cat1/preline.0.html.html 100644 0 0 3746 6244431526 13432 0 ustar root root
cat1/preline.0.html.html.html 100644 0 0 4575 6244431530 14371 0 ustar root rootmbox(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG>
mbox(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG> cat1/preline.0.html.html.html.html 100644 0 0 5232 6244431531 15324 0 ustar root root
line, a &lt;STRONG&gt;Return-Path&lt;/STRONG&gt; line, and a &lt;STRONG&gt;Delivered-To&lt;/STRONG&gt; line. &lt;STRONG&gt;preline&lt;/STRONG&gt; is useful for &lt;STRONG&gt;procmail&lt;/STRONG&gt; and ELM's &lt;STRONG&gt;filter&lt;/STRONG&gt;, which do not understand the &lt;STRONG&gt;qmail-command&lt;/STRONG&gt; environment variables.mbox(5)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;A HREF="../cat8/qmail-command.0.html"&gt;<STRONG><A HREF="../cat8/qmail-command.0.html"><STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG></A></STRONG>&lt;/A&gt;&lt;/STRONG&gt; cat1/qbiff.0.html 100644 0 0 1551 6244431532 12105 0 ustar root root
qbiff - announce new mail the moment it arrives
in .qmail: |qbiff
qbiff writes a message to your screen whenever a new mail message is delivered, if you ran biff y after logging in. WARNING: If you create a .qmail file to enable qbiff, make sure to also add a line specifying delivery to your normal mailbox. For example: /home/joe/Mailbox |qbiff
biff(1), dot-qmail(5)cat1/qbiff.0.html.html 100644 0 0 2125 6244431533 13047 0 ustar root root
cat1/qbiff.0.html.html.html 100644 0 0 2545 6244431534 14021 0 ustar root rootbiff(1)</A></STRONG>, <STRONG><A HREF="../cat5/dot-qmail.0.html">dot-qmail(5)</A></STRONG>
biff(1)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat5/dot-qmail.0.html"><STRONG><A HREF="../cat5/dot-qmail.0.html">dot-qmail(5)</A></STRONG></A></STRONG> cat1/qlist.0.html 100644 0 0 6040 6244431535 12153 0 ustar root root
qlist - handle mailing list subscription requests
in .qmail-list-request: |qlist user-list@host user-list-request@host .qmail-list .qmail-list-request .qtemp-list owner [ moreinfo ] (all on one line)
qlist manages a qmail mailing list. When qlist receives a message, it looks through the body of the message for commands. WARNING: qlist looks for a command only at the beginning of a line. Exception: qlist also looks at Subject lines. qlist supports two commands. SUBSCRIBE adds a new sub- scription to the mailing list; UNSUBSCRIBE removes a sub- scription. qlist looks for the subscription address in the Reply-To, From, or Return-Path fields in the message. qlist inserts an acknowledgment of each action it took, along with general help instructions, into the message. It then forwards the message to the subscription address, with a copy to owner. qlist's general help instructions identify user-list@host as the address of the mailing list, user-list-request@host as the address of qlist itself, and owner as the address of the mailing list owner. If moreinfo is supplied, it is inserted into the middle of the instructions, surrounded by blank lines. qlist maintains its address list in .qmail-list, so mail to user-list will be forwarded to each subscription address. While qlist is editing .qmail-list, it locks .qmail-list-request. It uses .qtemp-list as a temporary file. Note that qlist only manipulates lines beginning with an ampersand; if you manually add an address without an ampersand, it cannot be removed by qlist. qlist automatically sets the execute bit on qmail-list, so qmail-alias will ignore any program or file instructions in qmail-list.
dot-qmail(5), envelopes(5), qmail-queue(8)cat1/qlist.0.html.html 100644 0 0 7611 6244431536 13124 0 ustar root root
cat1/qlist.0.html.html.html 100644 0 0 11040 6244431537 14077 0 ustar root rootdot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG>
<EM>owner</EM> [ <EM>moreinfo</EM> ] (all on one line)dot-qmail(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html"><STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG></A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html"><STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG></A></STRONG> cat1/qreceipt.0.html 100644 0 0 1726 6244431540 12635 0 ustar root root
qreceipt - respond to delivery notice requests
in .qmail: |qreceipt youraddress
When a mail message arrives with youraddress listed in a Notice-Requested-Upon-Delivery-To header field, qreceipt sends a success notice back to the envelope sender. WARNING: If you create a .qmail file to enable qreceipt, make sure to also add a line specifying delivery to your normal mailbox. For example: /home/joe/Mailbox |qreceipt joe@nowhere.mil
dot-qmail(5), envelopes(5)cat1/qreceipt.0.html.html 100644 0 0 2324 6244431541 13574 0 ustar root root
cat1/tcp-env.0.html 100644 0 0 3407 6244431542 12375 0 ustar root rootdot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>
tcp-env - set up TCP-related environment variables
tcp-env [ -rR ] [ -ttimeout ] program [ arg ... ]
The input for tcp-env must be a TCP connection. tcp-env finds out information about that connection, puts the information into several environment variables as described in tcp-environ(5), and runs program with the given arguments. Usually tcp-env is run from inetd. It might instead be run from another server that already sets up the right environment variables; if PROTO is set to TCP when tcp-env is invoked, tcp-env assumes that all the other variables are set up properly, and it does not check whether the input is a TCP connection.
-r (Default.) Attempt to obtain TCPREMOTEINFO from the remote host. -R Do not attempt to obtain TCPREMOTEINFO from the remote host. -ttimeout Give up on the TCPREMOTEINFO connection attempt after timeout seconds. Default: 30.
tcp-environ(5), inetd(8)cat1/tcp-env.0.html.html 100644 0 0 4411 6244431543 13335 0 ustar root root
tcp-environ(5)</A></STRONG>, <STRONG><A HREF="../cat8/inetd.0.html">inetd(8)</A></STRONG> cat5/addresses.0.html 100644 0 0 17240 6244431545 13025 0 ustar root roottcp-environ(5),</STRONG> and runs <EM>program</EM> with the given arguments. Usually <STRONG>tcp-env</STRONG> is run from <STRONG>inetd</STRONG>. It might instead be run from another server that already sets up the right environment variables; if <STRONG>PROTO</STRONG> is set to <STRONG>TCP</STRONG> when <STRONG>tcp-env</STRONG> is invoked, <STRONG>tcp-env</STRONG> assumes that all the other variables are set up properly, and it does not check whether the input is a TCP connection.
addresses - formats for Internet mail addresses
A mail address is a string of characters containing @. Every mail address has a local part and a domain part. The domain part is everything after the final @. The local part is everything before. For example, the mail addresses God@heaven.af.mil @heaven.af.mil @at@@heaven.af.mil all have domain part heaven.af.mil. The local parts are God, empty, and @at@. Some domains have owners. It is up to the owner of heaven.af.mil to say how mail messages will be delivered to addresses with domain part heaven.af.mil. The domain part of an address is interpreted without regard to case, so God@heaven.af.mil God@HEAVEN.AF.MIL God@Heaven.AF.Mil all refer to the same domain. There is one exceptional address that does not contain an @: namely, the empty string. The empty string cannot be used as a recipient address. It can be used as a sender address so that the real sender doesn't receive bounces.
The qmail system allows several further types of addresses in mail envelopes. First, an envelope recipient address without an @ is interpreted as being at envnoathost. For example, if envnoathost is heaven.af.mil, the address God will be rewritten as God@heaven.af.mil. Second, the address #@[] is used as an envelope sender address for double bounces. Third, envelope sender addresses of the form pre@host-@[] are used to support the owner hack. qmail-send will rewrite pre@host-@[] as prerecip=domain@host for deliver- ies to recip@domain. Bounces directly from qmail-send Here are some suggestions on choosing mail addresses for the Internet. Do not use non-ASCII characters. Under RFC 822 and RFC 821, these characters cannot be used in mail headers or in SMTP commands. In practice, they are regularly corrupted. Do not use ASCII control characters. NUL is regularly corrupted. CR and LF cannot be used in some combinations and are corrupted in all. None of these characters are usable on business cards. Avoid spaces and the characters \"<>()[],;: These all require quoting in mail headers and in SMTP. Many existing mail programs do not handle quoting prop- erly. Do not use @ in a local part. @ requires quoting in mail headers and in SMTP. Many programs incorrectly look for the first @, rather than the last @, to find the domain part of an address. In a local part, do not use two consecutive dots, a dot at the beginning, or a dot at the end. Any of these would require quoting in mail headers. Do not use an empty local part; it cannot appear in SMTP commands. Avoid local parts longer than 64 characters. Be wary of uppercase letters in local parts. Some mail programs (and users!) will incorrectly convert God@heaven.af.mil to god@heaven.af.mil. Be wary of the following characters: $&!#~`'^*|{} Some users will not know how to feed these characters safely to their mail programs. In domain names, stick to letters, digits, dash, and dot. One popular DNS resolver has, under the banner of secu- rity, recently begun destroying domain names that contain certain other characters, including underscore. Excep- tion: A dotted-decimal IP address in brackets, such as [127.0.0.1], identifies a domain owned by whoever owns the host at that IP address, and can be used safely. at the beginning, or a dot at the end. This means that, when a domain name is broken down into components sepa- rated by dots, there are no empty components. Always use at least one dot in a domain name. If you own the mil domain, don't bother using the address root@mil; most users will be unable to send messages to that address. Same for the root domain. Avoid domain names longer than 64 characters.
RFC 821 defines an encoding of mail addresses in SMTP. For example, the addresses God@heaven.af.mil a"quote@heaven.af.mil The Almighty.One@heaven.af.mil could be encoded in RCPT commands as RCPT TO:<God@heaven.af.mil> RCPT TO:<a\"quote@heaven.af.mil> RCPT TO:<The\ Almighty.One@heaven.af.mil> There are several restrictions in RFC 821 on the mail addresses that can be used over SMTP. Non-ASCII charac- ters are prohibited. The local part must not be empty. The domain part must be a sequence of elements separated by dots, where each element is either a component, a sequence of digits preceded by #, or a dotted-decimal IP address surrounded by brackets. The only allowable char- acters in components are letters, digits, and dashes. Every component must (believe it or not) have at least three characters; the first character must be a letter; the last character must not be a hyphen.
RFC 822 defines an encoding of mail addresses in certain header fields in a mail message. For example, the addresses God@heaven.af.mil a"quote@heaven.af.mil The Almighty.One@heaven.af.mil could be encoded in a To field as To: God@heaven.af.mil, <@brl.mil:"a\"quote"@heaven.af.mil>, "The Almighty".One@heaven.af.mil "a\"quote" (Who?) @ heaven . af. mil , God<"The Almighty.One"@heaven.af.mil> There are several restrictions on the mail addresses that can be used in these header fields. Non-ASCII characters are prohibited. The domain part must be a sequence of elements separated by dots, where each element either (1) begins with [ and ends with ] or (2) is a nonempty string of printable ASCII characters not including any of \".<>()[],;: and not including space.
envelopes(5), qmail-header(5), qmail-inject(8), qmail- remote(8), qmail-smtpd(8)cat5/addresses.0.html.html 100644 0 0 17171 6244431546 13774 0 ustar root root
cat5/dot-qmail.0.html 100644 0 0 24215 6244431547 12741 0 ustar root rootenvelopes(5)</A></STRONG>, <STRONG><A HREF="../cat5/qmail-header.0.html">qmail-header(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG>, qmail- <STRONG><A HREF="../cat8/remote.0.html">remote(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-smtpd.0.html">qmail-smtpd(8)</A></STRONG>
dot-qmail - control the delivery of mail messages
Normally the qmail-alias program delivers each incoming message to your system mailbox, homedir/Mailbox, where homedir is your home directory. It can instead write the mail to a different file or directory, forward it to another address, distribute it to a mailing list, or even execute programs, all under your control.
To change qmail-alias's behavior, set up a .qmail file in your home directory. .qmail contains one or more lines. Each line is a deliv- ery instruction. qmail-alias follows each instruction in turn. There are five types of delivery instructions: (1) comment; (2) program; (3) forward; (4) mbox; (5) maildir. (1) A comment line begins with a number sign: # this is a comment qmail-alias ignores the line. (2) A program line begins with a vertical bar: |/usr/ucb/vacation djb qmail-alias takes the rest of the line as a command to supply to sh. See qmail-command(8) for further information. (3) A forward line begins with an ampersand: &me@new.job.com qmail-alias takes the rest of the line as a mail address; it uses qmail-queue to forward the message to that address. The address must contain a fully qualified domain name; it must not contain extra spaces, angle brackets, or comments: # the following examples are WRONG &me@new &<me@new.job.com> & me@new.job.com &me@new.job.com (New Address) If the address begins with a letter or number, you Note that qmail-alias omits its new Return-Path line when forwarding messages. (4) An mbox line begins with a slash or dot, and does not end with a slash: /home/djb/Mailbox.sos qmail-alias takes the entire line as a filename. It appends the mail message to that file, using flock- style file locking if possible. qmail-alias stores the mail message in mbox format, as described in mbox(5). WARNING: On many systems, anyone who can read a file can flock it, and thus hold up qmail-alias's delivery forever. Do not deliver mail to a publicly accessi- ble file! If qmail-alias is able to lock the file, but has trouble writing to it (because, for example, the disk is full), it will truncate the file back to its orig- inal length. However, it cannot prevent mailbox cor- ruption if the system crashes during delivery. (5) A maildir line begins with a slash or dot, and ends with a slash: /home/djb/Maildir/ qmail-alias takes the entire line as the name of a directory in maildir format. It reliably stores the incoming message in that directory. See maildir(5) for more details. If .qmail has the execute bit set, it must not contain any program lines, mbox lines, or maildir lines. If qmail- alias sees any such lines, it will stop and indicate a temporary failure. If .qmail is completely empty (0 bytes long), or does not exist, qmail-alias appends the mail message to your system mailbox in mbox format. .qmail may contain extra spaces and tabs at the end of a line. Blank lines are allowed, but not for the first line of .qmail. If .qmail is world-writable or group-writable, qmail-alias stops and indicates a temporary failure. Incoming messages can arrive at any moment. If you want to safely edit your .qmail file, first set the sticky bit on your home directory: chmod +t $HOME qmail-alias will temporarily defer delivery of any message to you if your home directory is sticky (or group-writable or other-writable, which should never happen). Make sure to chmod -t $HOME when you are done! It's a good idea to test your new .qmail file as follows: qmail-alias -n $USER $HOME $USER '' '' '' ''
In the qmail system, you control all local addresses of the form user-anything, as well as the address user itself, where user is your account name. Delivery to user-anything is controlled by the file home- dir/.qmail-anything. (These rules may be changed by the system administrator; see qmail-users(5).) The alias user controls all other addresses. Delivery to local is controlled by the file homedir/.qmail-local, where homedir is alias's home directory. In the following description, qmail-alias is handling a message addressed to local@domain, where local is con- trolled by .qmail-ext. Here is what it does. If .qmail-ext is completely empty, qmail-alias appends the mail message to your system mailbox. If .qmail-ext doesn't exist, qmail-alias will try some default .qmail files. For example, if ext is foo-bar, qmail-alias will try first .qmail-foo-bar, then .qmail- foo-default, and finally .qmail-default. If none of these exist, qmail-alias will bounce the message. (Exception: for the basic user address, qmail-alias treats a nonexis- tent .qmail the same as an empty .qmail.) WARNING: For security, qmail-alias replaces any dots in ext with colons before checking .qmail-ext. For conve- nience, qmail-alias converts any uppercase letters in ext to lowercase. When qmail-alias forwards a message as instructed in .qmail-ext (or .qmail-default), it checks whether sage. Otherwise it retains the envelope sender of the original message. Exception: qmail-alias always retains the original envelope sender if it is the empty address or #@[], i.e., if this is a bounce message. qmail-alias also supports the owner hack: if .qmail-ext- owner and .qmail-ext-owner-default both exist, it uses local-owner- as the envelope sender. This will cause a recipient recip@reciphost to see an envelope sender of local-owner-recip=reciphost@domain.
If a delivery instruction fails, qmail-alias stops immedi- ately and reports failure. qmail-alias handles forwarding after all other instructions, so any error in another type of delivery will prevent all forwarding. If a program returns exit code 99, qmail-alias ignores all succeeding lines in .qmail, but it still pays attention to previous forward lines. To set up independent instructions, where a temporary or permanent failure in one instruction does not affect the others, move each instruction into a separate .qmail-ext file, and set up a central .qmail file that forwards to all of the .qmail-exts. Note that qmail-alias can handle any number of forward lines simultaneously.
envelopes(5), maildir(5), mbox(5), qmail-users(5), qmail- alias(8), qmail-command(8), qmail-queue(8), qmail- lspawn(8)cat5/dot-qmail.0.html.html 100644 0 0 22555 6244431551 13704 0 ustar root root
cat5/envelopes.0.html 100644 0 0 13665 6244431552 13055 0 ustar root rootqmail-command(8)</STRONG> for further information. (3) A forward line begins with an ampersand: &me@new.job.com <STRONG>qmail-alias</STRONG> takes the rest of the line as a mail address; it uses <STRONG>qmail-queue</STRONG> to forward the message to that address. The address must contain a fully qualified domain name; it must not contain extra spaces, angle brackets, or comments: # the following examples are WRONG &me@new &<me@new.job.com> & me@new.job.com &me@new.job.com (New Address) If the address begins with a letter or number, you <STRONG>WARNING:</STRONG> On many systems, anyone who can read a file can <STRONG>flock</STRONG> it, and thus hold up <STRONG>qmail-alias</STRONG>'s delivery forever. Do not deliver mail to a publicly accessi- ble file! If <STRONG>qmail-alias</STRONG> is able to lock the file, but has trouble writing to it (because, for example, the disk is full), it will truncate the file back to its orig- inal length. However, it cannot prevent mailbox cor- ruption if the system crashes during delivery. (5) A <EM>maildir</EM> line begins with a slash or dot, and ends with a slash: /home/djb/Maildir/ <STRONG>qmail-alias</STRONG> takes the entire line as the name of a directory in <EM>maildir</EM> format. It reliably stores the incoming message in that directory. See <STRONG>maildir(5)</STRONG> for more details. If <STRONG>.qmail</STRONG> has the execute bit set, it must not contain any program lines, <EM>mbox</EM> lines, or <EM>maildir</EM> lines. If <STRONG>qmail-</STRONG> <STRONG>alias</STRONG> sees any such lines, it will stop and indicate a temporary failure. If <STRONG>.qmail</STRONG> is completely empty (0 bytes long), or does not exist, <STRONG>qmail-alias</STRONG> appends the mail message to your system mailbox in <EM>mbox</EM> format. <STRONG>.qmail</STRONG> may contain extra spaces and tabs at the end of a line. Blank lines are allowed, but not for the first line of <STRONG>.qmail</STRONG>. If <STRONG>.qmail</STRONG> is world-writable or group-writable, <STRONG>qmail-alias</STRONG> stops and indicates a temporary failure. Incoming messages can arrive at any moment. If you want to safely edit your <STRONG>.qmail</STRONG> file, first set the sticky bit on your home directory: chmod +t $HOME <STRONG>qmail-alias</STRONG> will temporarily defer delivery of any message to you if your home directory is sticky (or group-writable or other-writable, which should never happen). Make sure to chmod -t $HOME when you are done! It's a good idea to test your new The <STRONG>alias</STRONG> user controls all other addresses. Delivery to <EM>local</EM> is controlled by the file <EM>homedir/</EM><STRONG>.qmail-</STRONG><EM>local</EM>, where <EM>homedir</EM> is <STRONG>alias</STRONG>'s home directory. In the following description, <STRONG>qmail-alias</STRONG> is handling a message addressed to <EM>local@domain</EM>, where <EM>local</EM> is con- trolled by <STRONG>.qmail-</STRONG><EM>ext</EM>. Here is what it does. If <STRONG>.qmail-</STRONG><EM>ext</EM> is completely empty, <STRONG>qmail-alias</STRONG> appends the mail message to your system mailbox. If <STRONG>.qmail-</STRONG><EM>ext</EM> doesn't exist, <STRONG>qmail-alias</STRONG> will try some default <STRONG>.qmail</STRONG> files. For example, if <EM>ext</EM> is <STRONG>foo-bar</STRONG>, <STRONG>qmail-alias</STRONG> will try first <STRONG>.qmail-foo-bar</STRONG>, then <STRONG>.qmail-</STRONG> <STRONG>foo-default</STRONG>, and finally <STRONG>.qmail-default</STRONG>. If none of these exist, <STRONG>qmail-alias</STRONG> will bounce the message. (Exception: for the basic <EM>user</EM> address, <STRONG>qmail-alias</STRONG> treats a nonexis- tent <STRONG>.qmail</STRONG> the same as an empty <STRONG>.qmail</STRONG>.) <STRONG>WARNING:</STRONG> For security, <STRONG>qmail-alias</STRONG> replaces any dots in <EM>ext</EM> with colons before checking <STRONG>.qmail-</STRONG><EM>ext</EM>. For conve- nience, <STRONG>qmail-alias</STRONG> converts any uppercase letters in <EM>ext</EM> to lowercase. When <STRONG>qmail-alias</STRONG> forwards a message as instructed in <STRONG>.qmail-</STRONG><EM>ext</EM> (or <STRONG>.qmail-default</STRONG>), it checks whether sage. Otherwise it retains the envelope sender of the original message. Exception: <STRONG>qmail-alias</STRONG> always retains the original envelope sender if it is the empty address or <STRONG>#@[]</STRONG>, i.e., if this is a bounce message. <STRONG>qmail-alias</STRONG> also supports the <STRONG>owner</STRONG> <STRONG>hack</STRONG>: if <STRONG>.qmail-</STRONG><EM>ext</EM><STRONG>-</STRONG> <STRONG>owner</STRONG> and <STRONG>.qmail-</STRONG><EM>ext</EM><STRONG>-owner-default</STRONG> both exist, it uses <EM>local</EM><STRONG>-owner-</STRONG> as the envelope sender. This will cause a recipient <EM>recip</EM><STRONG>@</STRONG><EM>reciphost</EM> to see an envelope sender of <EM>local</EM><STRONG>-owner-</STRONG><EM>recip</EM><STRONG>=</STRONG><EM>reciphost</EM><STRONG>@</STRONG><EM>domain</EM>.
envelopes - sender/recipient lists attached to messages
Electronic mail messages are delivered in envelopes. An envelope lists a sender and one or more recipients. Usually these envelope addresses are the same as the addresses listed in the message header: (envelope) from djb to root From: djb To: root In more complicated situations, though, the envelope addresses may differ from the header addresses.
When a message is delivered to several people at different locations, it is first photocopied and placed into several envelopes: (envelope) from djb to root From: djb Copy #1 of message To: root, god@brl.mil (envelope) from djb to god@brl.mil From: djb Copy #2 of message To: root, god@brl.mil When a message is delivered to several people at the same location, the sender doesn't have to photocopy it. He can instead stuff it into one envelope with several addresses; the recipients will make the photocopy: (envelope) from djb to god@brl.mil, angel@brl.mil From: djb To: god@brl.mil, angel@brl.mil, joe, frde Bounced mail is sent back to the envelope sender address. The bounced mail doesn't list an envelope sender, so bounce loops are impossible: (envelope) from <> to djb From: MAILER-DAEMON To: djb Subject: unknown user frde The recipient of a message may make another copy and for- ward it in a new envelope: (envelope) from djb to joe From: djb Original message From: djb Forwarded message To: joe A mailing list works almost the same way: (envelope) from djb to sos-list From: djb Original message To: sos-list (envelope) from sos-owner to god@brl.mil From: djb Forwarded message To: sos-list to recipient #1 (envelope) from sos-owner to frde From: djb Forwarded message To: sos-list to recipient #2 Notice that the mailing list is set up to replace the envelope sender with something new, sos-owner. So bounces will come back to sos-owner: (envelope) from <> to sos-owner From: MAILER-DAEMON To: sos-owner Subject: unknown user frde It's a good idea to set up an extra address, sos-owner, like this: the original envelope sender (djb) has no way to fix bad sos-list addresses, and of course bounces must not be sent to sos-list itself.
Envelope sender and envelope recipient addresses are transmitted and recorded in several ways. When a user injects mail through qmail-inject, he can sup- ply a Return-Path line or a -f option for the envelope sender; by default the envelope sender is his login name. The envelope recipient addresses can be taken from the command line or from various header fields, depending on the options to qmail-inject. Similar comments apply to sendmail. When a message is transferred from one machine to another through SMTP, the envelope sender is given in a MAIL FROM command, the envelope recipients are given in RCPT TO com- mands, and the message is supplied separately by a DATA command. When a message is delivered by qmail to a single local recipient, qmail-alias records the recipient in Delivered- To and the envelope sender in Return-Path. It uses Deliv- Path. It does not record envelope recipient addresses, on the theory that they are redundant: you received the mail, so you must have been one of the envelope recipients. Note that, if the header doesn't have any recipient addresses, sendmail will move envelope recipient addresses back into the header. This situation occurs if all addresses were originally listed as Bcc, since Bcc is automatically removed. When sendmail sees this, it cre- ates a new Apparently-To header field with the envelope recipient addresses. This has the strange effect that each blind-carbon-copy recipient will see a list of all recipients on the same machine. When a message is stored in mbox format, the envelope sender is recorded at the top of the message as a UUCP- style From (no colon) line. Note that this line is less reliable than the Return-Path line added by qmail-alias or sendmail.
qmail-header(5), qmail-alias(8), qmail-inject(8)cat5/envelopes.0.html.html 100644 0 0 12304 6244431553 14006 0 ustar root root
addresses(5)</A></STRONG>, <STRONG><A HREF="../cat5/dot-qmail.0.html">dot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-header.0.html">qmail-header(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG> cat7/qmail.0.html 100644 0 0 6031 6244431605 12126 0 ustar root rootcat5/maildir.0.html 100644 0 0 14736 6244431555 12501 0 ustar root root
maildir - directory for incoming mail messagesINTRODUCTION
maildir is a structure for directories of incoming mail messages. It solves the reliability problems that plague mbox files and mh folders.RELIABILITY ISSUES
A machine may crash while it is delivering a message. For both mbox files and mh folders this means that the message will be silently truncated. Even worse: for mbox format, if the message is truncated in the middle of a line, it will be silently joined to the next message. The mail transport agent will try again later to deliver the mes- sage, but it is unacceptable that a corrupted message should show up at all. In maildir, every message is guar- anteed complete upon delivery. A machine may have two programs simultaneously delivering mail to the same user. The mbox and mh formats require the programs to update a single central file. If the pro- grams do not use some locking mechanism, the central file will be corrupted. There are several mbox and mh locking mechanisms, none of which work portably and reliably. In contrast, in maildir, no locks are ever necessary. Dif- ferent delivery processes never touch the same file. A user may try to delete messages from his mailbox at the same moment that the machine delivers a new message. For mbox and mh formats, the user's mail-reading program must know what locking mechanism the mail-delivery programs use. In contrast, in maildir, any delivered message can be safely updated or deleted by a mail-reading program. Many sites use Sun's Network Failure System (NFS), presum- ably because the operating system vendor does not offer anything else. NFS exacerbates all of the above problems. Some NFS implementations don't provide any reliable lock- ing mechanism. With mbox and mh formats, if two machines deliver mail to the same user, or if a user reads mail anywhere except the delivery machine, the user's mail is at risk. maildir works without trouble over NFS.THE MAILDIR STRUCTURE
A directory in maildir format has three subdirectories, all on the same filesystem: tmp, new, and cur. Each file in new is a newly delivered mail message. The modification time of the file is the delivery date of the message. The message is delivered without an extra UUCP- style From_ line, without any >From quoting, and without an extra blank line at the end. The message is probably Files in cur are just like files in new. The big differ- ence is that files in cur are no longer new mail: they have been seen by the user's mail-reading program.HOW A MESSAGE IS DELIVERED
The tmp directory is used to ensure reliable delivery, as discussed here. A program delivers a mail message in six steps. First, it chdir()s to the maildir directory. Second, it stat()s the name tmp/time.pid.host, where time is the number of sec- onds since the beginning of 1970 GMT, pid is the program's process ID, and host is the host name. Third, if stat() returned anything other than ENOENT, the program sleeps for two seconds, updates time, and tries the stat() again, a limited number of times. Fourth, the program creates tmp/time.pid.host. Fifth, the program NFS-writes the mes- sage to the file. Sixth, the program link()s the file to new/time.pid.host. At that instant the message has been successfully delivered. The delivery program is required to start a 24-hour timer before creating tmp/time.pid.host, and to abort the deliv- ery if the timer expires. Upon error, timeout, or normal completion, the delivery program may attempt to unlink() tmp/time.pid.host. NFS-writing means (1) as usual, checking the number of bytes returned from each write() call; (2) calling fsync() and checking its return value; (3) calling close() and checking its return value. (Standard NFS implementations handle fsync() incorrectly but make up for it by abusing close().)HOW A MESSAGE IS READ
A mail reader operates as follows. It looks through the new directory for new messages. Say there is a new message, new/time.pid.host. The reader may freely display the contents of new/time.pid.host, delete new/time.pid.host, or rename new/time.pid.host as cur/time.pid.host:info. The meaning of info is up to the mail reader. The reader is also expected to look through the tmp direc- tory and to clean up any old files found there. A file in tmp may be safely removed if it has not been accessed in 36 hours.ENVIRONMENT VARIABLES
Mail readers supporting maildir use the MAILDIR environ-SEE ALSO
mbox(5), qmail-alias(8)cat5/maildir.0.html.html 100644 0 0 15643 6244431556 13443 0 ustar root rootcat5/mbox.0.html 100644 0 0 14447 6244431557 12026 0 ustar root rootmbox(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-alias.0.html">qmail-alias(8)</A></STRONG>
mbox - file containing mail messagesINTRODUCTION
The most common format for storage of mail messages is mbox format. An mbox is a single file containing zero or more mail messages.MESSAGE FORMAT
A message encoded in mbox format begins with a From_ line, continues with a series of non-From_ lines, and ends with a blank line. A From_ line means any line that begins with the characters F, r, o, m, space: From god@heaven.af.mil Sat Jan 3 01:05:34 1996 Return-Path: <god@heaven.af.mil> Delivered-To: djb@silverton.berkeley.edu Date: 3 Jan 1996 01:05:34 -0000 From: God <god@heaven.af.mil> To: djb@silverton.berkeley.edu (D. J. Bernstein) How's that mail system project coming along? The final line is a completely blank line (no spaces or tabs). Notice that blank lines may also appear elsewhere in the message. The From_ line always looks like From envsender date more- info. envsender is one word, without spaces or tabs; it is usually the envelope sender of the message. date is the delivery date of the message. It always contains exactly 24 characters in asctime format. moreinfo is optional; it may contain arbitrary information. Between the From_ line and the blank line is a message in RFC 822 format, as described in qmail-header(5), subject to >From quoting as described below.HOW A MESSAGE IS DELIVERED
Here is how a program appends a message to an mbox file. It first creates a From_ line given the message's envelope sender and the current date. If the envelope sender is empty (i.e., if this is a bounce message), the program uses MAILER-DAEMON instead. If the envelope sender con- tains spaces, tabs, or newlines, the program replaces them with hyphens. The program then copies the message, applying >From quot- ing to each line. >From quoting ensures that the result- ing lines are not From_ lines: the program prepends a > to any From_ line, >From_ line, >>From_ line, >>>From_ line, If the last line of the message was a partial line, it writes two newlines; otherwise it writes one.HOW A MESSAGE IS READ
A reader scans through an mbox file looking for From_ lines. Any From_ line marks the beginning of a message. The reader should not attempt to take advantage of the fact that every From_ line (past the beginning of the file) is preceded by a blank line. Once the reader finds a message, it extracts a (possibly corrupted) envelope sender and delivery date out of the From_ line. It then reads until the next From_ line or end of file, whichever comes first. It strips off the final blank line and deletes the quoting of >From_ lines and >>From_ lines and so on. The result is an RFC 822 message.COMMON MBOX VARIANTS
There are many variants of mbox format. The variant described above is mboxrd format, popularized by Rahul Dhesi in June 1995. The original mboxo format quotes only From_ lines, not >From_ lines. As a result it is impossible to tell whether From: djb@silverton.berkeley.edu (D. J. Bernstein) To: god@heaven.af.mil >From now through August I'll be doing beta testing. Thanks for your interest. was quoted in the original message. An mboxrd reader will always strip off the quoting. mboxcl format is like mboxo format, but includes a Con- tent-Length field with the number of bytes in the message. mboxcl2 format is like mboxcl but has no >From quoting. These formats are used by SVR4 mailers. mboxcl2 cannot be read safely by mboxrd readers.UNSPECIFIED DETAILS
There are many locking mechanisms for mbox files. qmail- alias always uses flock on systems that have it, otherwise lockf. The delivery date in a From_ line does not specify a time zone. qmail-alias always creates the delivery date in GMT so that mbox files can be safely transported from one time zone to another. than the atime, the new mail has been read. If the atime equals the mtime, there is no way to tell whether the file has new mail, since qmail-alias takes much less than a second to run. One solution is for a mail reader to arti- ficially set the atime to the mtime plus 1. Then the file has new mail if and only if the atime is less than or equal to the mtime. Some mail readers place Status fields in each message to indicate which messages have been read.SEE ALSO
maildir(5), qmail-header(5), qmail-alias(8)cat5/mbox.0.html.html 100644 0 0 13655 6244431560 12763 0 ustar root rootcat5/qmail-control.0.html 100644 0 0 6452 6244431561 13612 0 ustar root rootqmail-header(5)</STRONG>, subject to <STRONG>>From</STRONG> <STRONG>quoting</STRONG> as described below.
qmail-control - qmail configuration filesINTRODUCTION
You can change the behavior of the qmail system by modify- ing qmail's control files. qmail can survive with just one control file, me, contain- ing the fully-qualified name of the current host. This file is used as the default for other hostname-related control files. Blank lines and comments are not allowed in control files. Trailing spaces and tabs are allowed. The following table lists all control files other than me. See the corresponding man pages for further details. control default used by bouncefrom MAILER-DAEMON qmail-send bouncehost me qmail-send concurrencylocal 10 qmail-send concurrencyremote 20 qmail-send defaultdomain me qmail-inject defaulthost me qmail-inject doublebouncehost me qmail-send doublebounceto postmaster qmail-send envnoathost me qmail-send helohost me qmail-remote idhost me qmail-inject localiphost me qmail-smtpd locals me qmail-send percenthack (none) qmail-send plusdomain me qmail-inject queuelifetime 604800 qmail-send rcpthosts (none) qmail-smtpd smtpgreeting me qmail-smtpd smtproutes (none) qmail-remote timeoutconnect 60 qmail-remote timeoutremote 1200 qmail-remote timeoutsmtpd 1200 qmail-smtpd virtualdomains (none) qmail-sendHOW TO FIND THE CONTROL FILES
All qmail operations take place in qmail's home directory. Run qmail-home to see the name of the home directory. Control files are stored in the control subdirectory.SEE ALSO
qmail-inject(8), qmail-remote(8), qmail-send(8), qmail- showctl(8), qmail-smtpd(8)cat5/qmail-control.0.html.html 100644 0 0 7643 6244431562 14561 0 ustar root rootcat5/qmail-header.0.html 100644 0 0 17522 6244431564 13405 0 ustar root rootqmail-inject(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-remote.0.html">qmail-remote(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-send.0.html">qmail-send(8)</A></STRONG>, qmail-
qmail-header - format of a mail messageOVERVIEW
At the top of every mail message is a highly structured header. Many programs expect the header to carry certain information, as described below. The main function of qmail-inject is to make sure that each outgoing message has an appropriate header. For more detailed information, see RFC 822 and RFC 1123.MESSAGE STRUCTURE
A message contains a series of header fields, a blank line, and a body: Received: (qmail-queue invoked by uid 666); 30 Jul 1996 11:54:54 -0000 From: djb@silverton.berkeley.edu (D. J. Bernstein) To: fred@silverton.berkeley.edu Date: 30 Jul 1996 11:54:54 -0000 Subject: Go, Bears! I've got money on this one. How about you? ---Dan (this is the third line of the body) Each header field has a name, a colon, some contents, and a newline: Subject: Go, Bears! The field contents may be folded across several lines. Each line past the first must begin with a space or tab: Received: (qmail-queue invoked by uid 666); 30 Jul 1996 11:54:54 -0000 The field name must not contain spaces, tabs, or colons. Also, an empty field name is illegal. qmail-inject does not allow field names with unprintable characters. Case is irrelevant in field names: subject and SUBJECT and SuBjEcT have the same meaning.ADDRESS LISTS
Certain fields, such as To, contain address lists. An address list contains some number of addresses or address groups, separated by commas: a@b, c@d (Somebody), A Person <e@f>, random group: g@h, i@j;, k@l addresses, and a semicolon: random group: g@h, i@j; An address can appear in several forms. The most common form is box@host. Every address must include a host name. If qmail-inject sees a lone box name it adds the default host name. All host names should be fully qualified. qmail-inject appends the default domain name to any name without dots: djb@silverton -> djb@silverton.berkeley.edu It appends the plus domain name to any name that ends with a plus sign: eric@mammoth.cs+ -> eric@mammoth.cs.berkeley.edu A host name may be a dotted-decimal address: djb@[128.32.183.163] RFC 822 allows mailbox names inside angle brackets to include source routes, but qmail-inject strips all source routes out of addresses.SENDER ADDRESSES
qmail-inject looks for sender address lists in the follow- ing fields: Sender, From, Reply-To, Return-Path, Return- Receipt-To, Errors-To, Resent-Sender, Resent-From, Resent- Reply-To. If there is no From field, qmail-inject adds a new From field with the name of the user invoking qmail-inject. RFC 822 requires that certain sender fields contain only a single address, but qmail-inject does not enforce this restriction.RECIPIENT ADDRESSES
qmail-inject looks for recipient address lists in the fol- lowing fields: To, Cc, Bcc, Apparently-To, Resent-To, Resent-Cc, Resent-Bcc. Every message must contain at least one To or Cc or Bcc. qmail-inject deletes any Bcc field. If there is no To or Cc field, qmail-inject adds a line Cc: recipient list not shown: ; through sendmail on another machine.STAMPS
Every message must contain a Date field, with the date in a strict format defined by RFC 822. If necessary qmail- inject creates a new Date field with the current date (in GMT). Every message should contain a Message-Id field. The field contents are a unique worldwide identifier for this message. If necessary qmail-inject creates a new Message- Id field. Another important field is Received. Every time the mes- sage is sent from one system to another, a new Received field is added to the top of the message. qmail-inject does not create any Received fields.RESENT MESSAGES
A message is forwarded if it contains any of the following fields: Resent-Sender, Resent-From, Resent-Reply-To, Resent-To, Resent-Cc, Resent-Bcc, Resent-Date, Resent-Mes- sage-ID. If a message is forwarded, qmail-inject changes its behav- ior as follows. It deletes any Resent-Bcc field (as well as any Bcc field); if there are no Resent-To or Resent-Cc fields, qmail-inject adds an appropriate Resent-Cc line. It does not add a Cc line, even if neither To nor Cc is present. If there is no Resent-From field, qmail-inject adds a new Resent-From field. It does not add a new From field. qmail-inject adds Resent-Date if one is not already pre- sent; same for Resent-Message-Id. It does not add new Date or Message-Id fields.OTHER FEATURES
For compatibility with sendmail, if qmail-inject sees a line containing (the beginning of) a Message or Text field, it will consider all further lines to be part of the message body. Addresses are separated by commas, not spaces. When qmail-inject sees an illegal space, it inserts a comma: djb fred -> djb, fred qmail-inject removes all Return-Path header fields. addresses(5), envelopes(5), qmail-inject(8)cat5/qmail-header.0.html.html 100644 0 0 20235 6244431565 14344 0 ustar root rootcat5/qmail-log.0.html 100644 0 0 25010 6244431567 12730 0 ustar root rootaddresses(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG>
qmail-log - the qmail activity recordDESCRIPTION
qmail-send prints a series of lines describing its activi- ties. Each possible line is described below.STARTING AND STOPPING
running qmail-send is ready to deliver messages. local deliveries will be put on hold The local concurrency limit is 0, so qmail-send will not perform any local deliveries. remote deliveries will be put on hold The remote concurrency limit is 0, so qmail-send will not perform any remote deliveries. number of deliveries left before exiting: ... qmail-send wants to exit as soon as possible, usu- ally because it was sent a TERM signal, but it has to wait for some deliveries to finish. It will not start any new deliveries. exiting qmail-send is done.FATAL PROBLEMS
alert: cannot start: ... qmail-send is unable to prepare itself for deliver- ing messages; it is giving up. This normally indi- cates a serious configuration error, but it can be caused by a temporary lack of resources. alert: oh no! lost ... One of the other daemons has died. qmail-send will exit as soon as possible.SERIOUS PROBLEMS
alert: unable to append to bounce message... qmail-send is unable to record a permanent failure, usually because the disk is full. This is a very serious problem; qmail-send cannot proceed without recording the results. It will try again in ten seconds. alert: out of memory... qmail-send tried to allocate more memory and failed. It will try again in ten seconds. alert: unable to opendir... qmail-send is having trouble reading a file list missions are set incorrectly. It will try again in ten seconds.MESSAGES
new msg m qmail-send is going to preprocess a queued message. The message number, m, is its disk inode number. After a message is removed from the queue, its num- ber can be reused immediately. info msg m: bytes b from <s> qp q uid u Message m contains b bytes; its envelope sender is s; it was queued by a user with user ID u. q is a long-term queue identifier, the process ID of the qmail-queue that queued the message. bounce msg m qp q Message m had some delivery failures. The long- term queue identifier of the bounce (or double- bounce) message is q. triple bounce: discarding ... Message m had some delivery failures, but it is already a double-bounce message, so it must be thrown away. Triple-bounce messages do not exist. end msg m qmail-send is about to remove message m from the queue.DELIVERIES
starting delivery d: msg m to ... qmail-send is telling qmail-lspawn or qmail-rspawn to deliver message m to one recipient. The deliv- ery number, d, starts at 1 and increases by 1 for each new delivery. delivery d: success: ... Delivery d was successful. delivery d: failure: ... Delivery d failed permanently. The message will bounce. delivery d: deferral: ... Delivery d failed temporarily. This recipient will be retried later. delivery d: report mangled, will defer There is a serious bug in qmail-lspawn or qmail- rspawn. This recipient will be retried later. internal error: delivery report out of range qmail-lspawn or qmail-rspawn has supplied a report on a nonexistent delivery. This is a serious bug. qmail-clean unable to clean up ... For some reason qmail-clean is unable to remove the indicated file. It will try again later. trouble fsyncing ... qmail-send was unable to write to disk the results of preprocessing a queued message. It will try again later. trouble in select There is an operating system bug. trouble injecting bounce message... qmail-send was unable to queue a bounce message, usually because the disk is full. It will try again later. trouble marking ... qmail-send was unable to record the result of a successful or permanently unsuccessful delivery. This means that the delivery will be tried again later. trouble opening ... qmail-send was unable to open the list of local or remote recipients for a message. It will try again later. trouble reading ... Either qmail-send is unable to read a recipient list, or it is unable to read the envelope of a queued message, or it is out of memory. Whatever it was doing, it will try again later. trouble writing to ... qmail-send was unable to preprocess a queued mes- sage, usually because the disk is full. It will try again later. unable to create ... qmail-send was unable to preprocess a queued mes- sage, usually because the disk is out of inodes. It will try again later. unable to open ... qmail-send is unable to read the envelope of a queued message for preprocessing. It will try again later. qmail-send is unable to queue a bounce message, usually because the machine is almost out of mem- ory. It will try again later. unable to stat ... qmail-send is unable to obtain information about a file that should exist. It will try again later. unable to unlink ... qmail-send is unable to remove a file. It will try again later. unable to utime ... qmail-send is about to exit, and it is unable to record on disk the next scheduled delivery time for a message. The message will be retried as soon as qmail-send is restarted. unknown record type in ... There is a serious bug in either qmail-queue or qmail-send.SEE ALSO
qmail-send(8)cat5/qmail-log.0.html.html 100644 0 0 26626 6244431570 13703 0 ustar root rootcat5/tcp-environ.0.html 100644 0 0 3730 6244431574 13275 0 ustar root rootcat5/qmail-users.0.html 100644 0 0 5616 6244431571 13275 0 ustar root root
qmail-users - assign mail addresses to usersOVERVIEW
The file /var/qmail/users/assign assigns addresses to users. For example, =joe.shmoe:joe:503:78:/home/joe::: says that mail for joe.shmoe should be delivered to user joe, with uid 503 and gid 78, as specified by /home/joe/.qmail. Assignments fed to qmail-newuser will be used by qmail- lspawn to control qmail-alias's deliveries. See qmail- newuser(8). A change to /var/qmail/users/assign will have no effect until qmail-newuser is run.STRUCTURE
/var/qmail/users/assign is a series of assignments, one per line. It ends with a line containing a single dot. Lines must not contain NUL.SIMPLE ASSIGNMENTS
A simple assignment is a line of the form =local:user:uid:gid:homedir:dash:ext: Here local is an address; user, uid, and gid are the account name, uid, and gid of the user in charge of local; and messages to local will be controlled by home- dir/.qmaildashext. If there are several assignments for the same local address, qmail-lspawn will use the first one. local is interpreted without regard to case.WILDCARD ASSIGNMENTS
A wildcard assignment is a line of the form +loc:user:uid:gid:homedir:dash:pre: This assignment applies to any address beginning with loc, including loc itself. It means the same as =locext:user:uid:gid:homedir:dash:preext: for every string ext. A more specific wildcard assignment overrides a less spe- cific assignment, and a simple assignment overrides any wildcard assignment. For example: +joe-:joe:507:100:/home/joe:-:: =joe:joe:507:100:/home/joe::: The address joe is handled by the third line; the address joe-direct is handled by the second line; the address bill is handled by the first line.SEE ALSO
qmail-pw2user(8), qmail-newuser(8), qmail-lspawn(8)cat5/qmail-users.0.html.html 100644 0 0 6121 6244431573 14232 0 ustar root rootqmail-pw2user(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-newuser.0.html">qmail-newuser(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-lspawn.0.html">qmail-lspawn(8)</A></STRONG>newuser(8)</A></STRONG>. A change to <STRONG>/var/qmail/users/assign</STRONG> will have no effect until <STRONG>qmail-newuser</STRONG> is run.
tcp-environ - TCP-related environment variablesDESCRIPTION
The following environment variables describe a TCP connec- tion. They are set up by tcp-env, tcpclient, and tcpserver. Note that TCPLOCALHOST, TCPREMOTEHOST, and TCPREMOTEINFO can contain arbitrary characters. PROTO The string TCP. TCPLOCALHOST The domain name of the local host, with uppercase letters converted to lowercase. If there is no cur- rently available domain name for the local IP address, TCPLOCALHOST is not set. TCPLOCALIP The IP address of the local host, in dotted-decimal form. TCPLOCALPORT The local TCP port number, in decimal. TCPREMOTEHOST The domain name of the remote host, with uppercase letters converted to lowercase. If there is no cur- rently available domain name for the remote IP address, TCPREMOTEHOST is not set. TCPREMOTEINFO A connection-specific string, perhaps a username, supplied by the remote host via 931/1413/IDENT/TAP. If the remote host did not supply connection informa- tion, TCPREMOTEINFO is not set. TCPREMOTEIP The IP address of the remote host. TCPREMOTEPORT The remote TCP port number.SEE ALSO
tcpclient(1), tcpserver(1), tcp-env(1), tcp(4)cat5/tcp-environ.0.html.html 100644 0 0 4551 6244431575 14243 0 ustar root rootcat7/forgeries.0.html 100644 0 0 7460 6244431576 13026 0 ustar root roottcpclient(1)</A></STRONG>, <STRONG><A HREF="../cat1/tcpserver.0.html">tcpserver(1)</A></STRONG>, <STRONG><A HREF="../cat1/tcp-env.0.html">tcp-env(1)</A></STRONG>, <STRONG><A HREF="../cat4/tcp.0.html">tcp(4)</A></STRONG>
forgeries - how easy it is to forge mailSUMMARY
An electronic mail message can easily be forged. Almost everything in it, including the return address, is com- pletely under the control of the sender. An electronic mail message can be manually traced to its origin if (1) all system administrators of intermediate machines are both cooperative and competent, (2) the sender did not break low-level TCP/IP security, and (3) all intermediate machines are secure. Users of cryptography can automatically ensure the integrity and secrecy of their mail messages, as long as the sending and receiving machines are secure.FORGERIES
Like postal mail, electronic mail can be created entirely at the whim of the sender. From, Sender, Return-Path, and Message-ID can all contain whatever information the sender wants. For example, if you inject a message through sendmail or qmail-inject or SMTP, you can simply type in a From field. In fact, qmail-inject lets you set up MAILUSER, MAILHOST, and MAILNAME environment variables to produce your desired From field on every message.TRACING FORGERIES
Like postal mail, electronic mail is postmarked when it is sent. Each machine that receives an electronic mail mes- sage adds a Received line to the top. A modern Received line contains quite a bit of informa- tion. In conjunction with the machine's logs, it lets a competent system administrator determine where the machine received the message from, as long as the sender did not break low-level TCP/IP security or security on that machine. Large multi-user machines often come with inadequate log- ging software. Fortunately, a system administrator can easily obtain a copy of a 931/1413/Ident/TAP server, such as pidentd. Unfortunately, many incompetent system admin- istrators fail to do this, and are thus unable to figure out which local user was responsible for generating a mes- sage. If all intermediate system administrators are competent, and the sender did not break machine security or low-level TCP/IP security, it is possible to trace a message back- or untrustworthy.CRYPTOGRAPHY
The sender of a mail message may place his message into a cryptographic envelope stamped with his seal. Strong cryptography guarantees that any two messages with the same seal were sent by the same cryptographic entity: per- haps a single person, perhaps a group of cooperating peo- ple, but in any case somebody who knows a secret origi- nally held only by the creator of the seal. The seal is called a public key. Unfortunately, the creator of the seal is often an inse- cure machine, or an untrustworthy central agency, but most of the time seals are kept secure. One popular cryptographic program is pgp.SEE ALSO
pgp(1), identd(8), qmail-header(8)cat7/forgeries.0.html.html 100644 0 0 7236 6244431577 13773 0 ustar root rootcat7/qmail-limits.0.html 100644 0 0 2376 6244431600 13430 0 ustar root rootpgp(1)</A></STRONG>, <STRONG><A HREF="../cat8/identd.0.html">identd(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-header.0.html">qmail-header(8)</A></STRONG>
qmail-limits - artificial limits in the qmail systemDESCRIPTION
The qmail system is able to handle messages of any size, addresses of any size, mailing lists of any size, and so on, except as limited by the available memory and disk space. However, it imposes certain artificial limits: 1. qmail-lspawn silently limits the number of simultane- ous local deliveries to 120. qmail-rspawn silently limits the number of simultaneous remote deliveries to 120. 2. qmail-queue rejects any message with an envelope address longer than 1000 characters. 3. qmail-lspawn truncates any overly long error report from a delivery program. It appends a note saying that it did so.SEE ALSO
qmail-lspawn(8), qmail-queue(8), qmail-rspawn(8)cat7/qmail-limits.0.html.html 100644 0 0 3016 6244431601 14364 0 ustar root rootcat7/qmail-upgrade.0.html 100644 0 0 14431 6244431602 13573 0 ustar root rootqmail-lspawn(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-queue.0.html">qmail-queue(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-rspawn.0.html">qmail-rspawn(8)</A></STRONG>
qmail-upgrade - user-visible differences between qmail and sendmailINTRODUCTION
You will notice some differences when the system switches from sendmail to qmail. 1. qmail-alias sends incoming mail to ~you/Mailbox by default, not /usr/spool/mail/you. Your system admin- istrator has changed your MAIL environment variable so that your mail reader looks for ~you/Mailbox. (/usr/spool/mail is a massive security problem.) 2. qmail-alias pays no attention to .forward. It has a much better mechanism, .qmail, so that you can handle not only forwarding but even your own mailing lists. See below for more details. 3. qmail-alias pays no attention to /etc/aliases. Your system administrator can use the .qmail mechanism instead. See below. 4. qmail does not support the \you mechanism for ignor- ing aliases. The .qmail mechanism is much more flex- ible; see below. 5. qmail-inject has a completely different philosophy from sendmail on interpreting non-fully-qualified host names. It uses fixed rules, not DNS. Some examples at UIC: russet -> russet.math.uic.edu newton -> newton.math.uic.edu ut.ee -> ut.ee (a host in Estonia) ut.ee+ -> ut.ee.uic.edu uicvm+ -> uicvm.uic.edu Here the default domain name (for hosts without dots) is math.uic.edu, and the plus domain name is uic.edu. 6. Unlike sendmail, qmail-inject doesn't replace host names with canonical names. Example: qmail-inject won't change postmaster@ftp.cs.berkeley.edu in your header to postmaster@kohler.cs.berkeley.edu. The sendmail documentation claims that qmail-inject's behavior is illegal under RFC 822 and RFC 1123; that claim is based on a questionable interpretation of an ambiguous phrase in RFC 822. Besides, do you want to have hostnames changed behind your back? 7. qmail-alias adds a new field, Delivered-To, before every delivery. It uses the contents of Delivered-To qmail-inject will add Cc: recipient list not shown:;, rather than sendmail's privacy-invading Apparently-To header field.QMAIL MAILING LISTS
sendmail deals with aliases, forwarding, and mailing lists at the very heart of the mail system. qmail takes a radically different approach. It gives you the power to set up your own mailing lists without pester- ing your system administrator. Under qmail, you are in charge of all addresses of the form you-anything. The delivery of you-anything is con- trolled by ~you/.qmail-anything, a file in your home directory. For example, if you want to set up a sick-of-sendmail mailing list, you can put a list of addresses into ~you/.qmail-sos. Any mail to you-sos will be forwarded to all of those addresses. Mail directly to you is con- trolled by ~you/.qmail. You can even set up a catch-all, ~you/.qmail-default, to handle unknown you- addresses. Your .qmail files, like your old .forward, may list files, forwarding addresses, or other programs to run. (But beware that the syntax is a bit different; see dot- qmail(8) for more details.) qmail-alias automatically detects forwarding loops the instant they occur, even if they happen indirectly through other hosts. As a helpful special case, if a .qmail file is empty, it refers to ~you/Mailbox. For example, if you touch ~you/.qmail-direct, mail for you-direct will act like \you did under sendmail. Addresses that don't contain a username are handled by the alias user. For example, your system administrator has set up ~alias/.qmail-postmaster to handle mail for Post- master. (Note to administrators: ~alias doesn't apply to addresses that start with a user name, with certain excep- tions.)SEE ALSO
addresses(5), dot-qmail(5), envelopes(5), qmail-header(8), qmail-inject(8)cat7/qmail-upgrade.0.html.html 100644 0 0 16317 6244431604 14545 0 ustar root rootqmail(8)</STRONG> for more details.) <STRONG>qmail-alias</STRONG> automatically detects forwarding loops the instant they occur, even if they happen indirectly through other hosts. As a helpful special case, if a <STRONG>.qmail</STRONG> file is empty, it refers to <STRONG>~</STRONG><EM>you</EM><STRONG>/Mailbox</STRONG>. For example, if you touch <STRONG>~</STRONG><EM>you</EM><STRONG>/.qmail-direct</STRONG>, mail for <EM>you</EM><STRONG>-direct</STRONG> will act like <STRONG>\</STRONG><EM>you</EM> did under <STRONG>sendmail</STRONG>. Addresses that don't contain a username are handled by the <STRONG>alias</STRONG> user. For example, your system administrator has set up <STRONG>~alias/.qmail-postmaster</STRONG> to handle mail for <STRONG>Post-</STRONG> <STRONG>master</STRONG>. (Note to administrators: <STRONG>~alias</STRONG> doesn't apply to addresses that start with a user name, with certain excep- tions.)
qmail - overview of qmail documentation
qmail is a secure, reliable, efficient, simple message transfer agent. Users who want to control incoming messages should read dot-qmail(5). Available commands for the .qmail file include qbiff(1), qlist(1), qreceipt(1), forward(1), and (for advanced users) condredirect(1). Other helpful com- mands include maildirmake(1), maildir2mbox(1), maildir2qmtp(1), maildir2smtp(1), and maildirwatch(1). System administrators who want to control the entire qmail system should start with qmail-control(5) and qmail- start(8). There are three queue-monitoring tools: qmail- qread(8), qmail-qstat(8), and qmail-tcpto(8). Incoming SMTP connections are handled by qmail-smtpd(8). qmail offers two command-line message-sending interfaces: qmail-inject(8) and mailsubj(1). For background informa- tion on Internet mail messages, see addresses(5), envelopes(5), qmail-header(5), and forgeries(7). Miscellaneous documentation includes qmail-upgrade(7), qmail-limits(7), and qmail-pop3d(8). This documentation describes version 0.92 of qmail. See http://pobox.com/~djb/qmail.html for other qmail-related software.cat7/qmail.0.html.html 100644 0 0 12247 6244431606 13120 0 ustar root root
cat8/qmail-alias.0.html 100644 0 0 5267 6244431607 13232 0 ustar root rootdot-qmail(5)</A></STRONG>. Available commands for the <STRONG>.qmail</STRONG> file include <STRONG><A HREF="../cat1/qbiff.0.html">qbiff(1)</A></STRONG>, <STRONG><A HREF="../cat1/qlist.0.html">qlist(1)</A></STRONG>, <STRONG><A HREF="../cat1/qreceipt.0.html">qreceipt(1)</A></STRONG>, <STRONG><A HREF="../cat1/forward.0.html">forward(1)</A></STRONG>, and (for advanced users) <STRONG><A HREF="../cat1/condredirect.0.html">condredirect(1)</A></STRONG>. Other helpful com- mands include <STRONG><A HREF="../cat1/maildirmake.0.html">maildirmake(1)</A></STRONG>, <STRONG><A HREF="../cat1/maildir2mbox.0.html">maildir2mbox(1)</A></STRONG>, <STRONG><A HREF="../cat1/maildir2qmtp.0.html">maildir2qmtp(1)</A></STRONG>, <STRONG><A HREF="../cat1/maildir2smtp.0.html">maildir2smtp(1)</A></STRONG>, and <STRONG><A HREF="../cat1/maildirwatch.0.html">maildirwatch(1)</A></STRONG>. System administrators who want to control the entire <STRONG>qmail</STRONG> system should start with <STRONG><A HREF="../cat5/qmail-control.0.html">qmail-control(5)</A></STRONG> and <STRONG>qmail-</STRONG> <STRONG><A HREF="../cat8/start.0.html">start(8)</A></STRONG>. There are three queue-monitoring tools: <STRONG>qmail-</STRONG> <STRONG><A HREF="../cat8/qread.0.html">qread(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-qstat.0.html">qmail-qstat(8)</A></STRONG>, and <STRONG><A HREF="../cat8/qmail-tcpto.0.html">qmail-tcpto(8)</A></STRONG>. Incoming SMTP connections are handled by <STRONG><A HREF="../cat8/qmail-smtpd.0.html">qmail-smtpd(8)</A></STRONG>. <STRONG>qmail</STRONG> offers two command-line message-sending interfaces: <STRONG><A HREF="../cat8/qmail-inject.0.html">qmail-inject(8)</A></STRONG> and <STRONG><A HREF="../cat1/mailsubj.0.html">mailsubj(1)</A></STRONG>. For background informa- tion on Internet mail messages, see <STRONG><A HREF="../cat5/addresses.0.html">addresses(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat5/qmail-header.0.html">qmail-header(5)</A></STRONG>, and <STRONG><A HREF="../cat7/forgeries.0.html">forgeries(7)</A></STRONG>. Miscellaneous documentation includes <STRONG><A HREF="../cat7/qmail-upgrade.0.html">qmail-upgrade(7)</A></STRONG>, <STRONG><A HREF="../cat7/qmail-limits.0.html">qmail-limits(7)</A></STRONG>, and <STRONG><A HREF="../cat8/qmail-pop3d.0.html">qmail-pop3d(8)</A></STRONG>. This documentation describes version 0.92 of <STRONG>qmail</STRONG>. See <STRONG>http://pobox.com/~djb/qmail.html</STRONG> for other <STRONG>qmail</STRONG>-related software.
qmail-alias - deliver or forward a mail message
qmail-alias [ -nN ] user homedir local dash ext domain sender
qmail-alias reads a mail message and delivers it to user by the procedure described in dot-qmail(5). The message's envelope recipient is local@domain. qmail- alias records local@domain in a new Delivered-To header field. If exactly the same Delivered-To: local@domain already appears in the header, qmail-alias bounces the message, to prevent mail forwarding loops. The message's envelope sender is sender. qmail-alias records sender in a new Return-Path header field. homedir is the user's home directory. It must be an abso- lute directory name. dash and ext identify the .qmaildashext file used by qmail-alias; see dot-qmail(5). Normally dash is either empty or a lone hyphen. If it is empty, qmail-alias treats a nonexistent .qmailext the same way as an empty .qmailext. The standard input for qmail-alias must be a seekable file, so that qmail-alias can read it more than once.
-n Instead of reading and delivering the message, print a description of the delivery instructions. -N (Default.) Read and deliver the message.
0 if the delivery is completely successful; nonzero if any delivery instruction failed. Exit code 111 indicates tem- porary failure.
dot-qmail(5), envelopes(5), qmail-command(8), qmail- queue(8), qmail-send(8), qmail-lspawn(8)cat8/qmail-alias.0.html.html 100644 0 0 7410 6244431611 14160 0 ustar root root
dot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-command.0.html">qmail-command(8)</A></STRONG>, qmail- <STRONG><A HREF="../cat8/queue.0.html">queue(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-send.0.html">qmail-send(8)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-lspawn.0.html">qmail-lspawn(8)</A></STRONG> cat8/qmail-clean.0.html 100644 0 0 1003 6244431612 13177 0 ustar root rootdot-qmail(5)</STRONG>. The message's envelope recipient is <EM>local@domain</EM>. <STRONG>qmail-</STRONG> <STRONG>alias</STRONG> records <EM>local@domain</EM> in a new <STRONG>Delivered-To</STRONG> header field. If exactly the same <STRONG>Delivered-To:</STRONG> <EM>local@domain</EM> already appears in the header, <STRONG>qmail-alias</STRONG> bounces the message, to prevent mail forwarding loops. The message's envelope sender is <EM>sender</EM>. <STRONG>qmail-alias</STRONG> records <EM>sender</EM> in a new <STRONG>Return-Path</STRONG> header field. <EM>homedir</EM> is the user's home directory. It must be an abso- lute directory name. <EM>dash</EM> and <EM>ext</EM> identify the <STRONG>.qmail</STRONG><EM>dashext</EM> file used by <STRONG>qmail-alias</STRONG>; see <STRONG>dot-qmail(5)</STRONG>. Normally <EM>dash</EM> is either empty or a lone hyphen. If it is empty, <STRONG>qmail-alias</STRONG> treats a nonexistent <STRONG>.qmail</STRONG><EM>ext</EM> the same way as an empty <STRONG>.qmail</STRONG><EM>ext</EM>. The standard input for <STRONG>qmail-alias</STRONG> must be a seekable file, so that <STRONG>qmail-alias</STRONG> can read it more than once.
qmail-clean - clean up the queue directory
qmail-clean
qmail-clean reads a cleanup command from descriptor 0, performs the cleanup, prints the results to descriptor 1, and repeats.
qmail-send(8)cat8/qmail-clean.0.html.html 100644 0 0 1142 6244431613 14147 0 ustar root root
cat8/qmail-command.0.html 100644 0 0 6434 6244431614 13552 0 ustar root rootqmail-send(8)</A></STRONG>
qmail-command - user-specified mail delivery program
in .qmailext: |command
qmail-alias will, upon your request, feed each incoming mail message through a program of your choice. When a mail message arrives, qmail-alias runs sh -c com- mand in your home directory. It makes the message avail- able on command's standard input. WARNING: The mail message does not begin with qmail- alias's usual Return-Path and Delivered-To lines. Note that qmail-alias uses the same file descriptor for every delivery in your .qmail file, so it is not safe for command to fork a child that reads the message in the background while the parent exits. command's exit codes are interpreted as follows: 0 means that the delivery was successful; 99 means that the deliv- ery was successful, but that qmail-alias should ignore all further delivery instructions; 71, 74, 75, 111, or 120 means that the delivery failed but should be tried again in a little while; anything else means that the delivery failed permanently. qmail-alias supplies several useful environment variables to command. SENDER is the envelope sender address. NEWSENDER is the forwarding envelope sender address, as described in dot-qmail(5). RECIPIENT is the envelope recipient address, local@domain. USER is user. HOME is your home directory, homedir. HOST is the domain part of the recipient address. LOCAL is the local part. EXT is the .qmail extension, ext. EXT2 is the portion of EXT following the first dash; EXT3 is the portion following the second dash; EXT4 is the portion following the third dash. DTLINE and RPLINE are the usual Delivered-To and Return-Path lines, including newlines. UFLINE is the UUCP-style From_ line that qmail-alias adds to mbox-format files. WARNING: These environment variables are not quoted. They may contain special characters. They are under the con- trol of a possibly malicious remote user.
dot-qmail(5), envelopes(5), qmail-alias(8)cat8/qmail-command.0.html.html 100644 0 0 10242 6244431615 14526 0 ustar root root
dot-qmail(5)</A></STRONG>, <STRONG><A HREF="../cat5/envelopes.0.html">envelopes(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-alias.0.html">qmail-alias(8)</A></STRONG> cat8/qmail-getpw.0.html 100644 0 0 5265 6244431616 13265 0 ustar root rootdot-qmail(5)</STRONG>. <STRONG>RECIPIENT</STRONG> is the envelope recipient address, <EM>local@domain</EM>. <STRONG>USER</STRONG> is <EM>user</EM>. <STRONG>HOME</STRONG> is your home directory, <EM>homedir</EM>. <STRONG>HOST</STRONG> is the <EM>domain</EM> part of the recipient address. <STRONG>LOCAL</STRONG> is the <EM>local</EM> part. <STRONG>EXT</STRONG> is the <STRONG>.qmail</STRONG> extension, <EM>ext</EM>. <STRONG>EXT2</STRONG> is the portion of <STRONG>EXT</STRONG> following the first dash; <STRONG>EXT3</STRONG> is the portion following the second dash; <STRONG>EXT4</STRONG> is the portion following the third dash. <STRONG>DTLINE</STRONG> and <STRONG>RPLINE</STRONG> are the usual <STRONG>Delivered-To</STRONG> and <STRONG>Return-Path</STRONG> lines, including newlines. <STRONG>UFLINE</STRONG> is the UUCP-style <STRONG>From_</STRONG> line that <STRONG>qmail-alias</STRONG> adds to <EM>mbox</EM>-format files. <STRONG>WARNING:</STRONG> These environment variables are not quoted. They may contain special characters. They are under the con- trol of a possibly malicious remote user.
qmail-getpw - give addresses to users
qmail-getpw local
In qmail, each user controls a vast array of local addresses. qmail-getpw finds the user that controls a particular address, local. It prints six pieces of infor- mation, each terminated by NUL: user; uid; gid; homedir; dash; and ext. The user's account name is user; the user's uid and gid in decimal are uid and gid; the user's home directory is homedir; and messages to local will be handled by homedir/.qmaildashext. In case of trouble, qmail-getpw exits nonzero without printing anything. WARNING: The operating system's getpwnam function, which is at the heart of qmail-getpw, is inherently unreliable.
qmail-getpw considers an account in /etc/passwd to be a user if (1) the account has a nonzero uid, (2) the account's home directory exists, and (3) the account owns its home directory. qmail-getpw ignores account names containing uppercase letters or - characters. qmail-getpw gives each user control over the basic user address and all addresses of the form user-anything. When local is user, dash and ext are both empty. When local is user-anything, dash is a hyphen and ext is anything. user may appear in any combination of uppercase and lowercase letters at the front of local. A catch-all user, alias, controls all other addresses. In this case ext is local and dash is a hyphen. You can override all of qmail-getpw's decisions with the qmail-users mechanism, which is reliable, highly config- urable, and much faster than qmail-getpw.
qmail-users(5), qmail-lspawn(8)cat8/qmail-getpw.0.html.html 100644 0 0 6725 6244431617 14233 0 ustar root root
cat8/qmail-inject.0.html 100644 0 0 16546 6244431621 13433 0 ustar root rootqmail-users(5)</A></STRONG>, <STRONG><A HREF="../cat8/qmail-lspawn.0.html">qmail-lspawn(8)</A></STRONG>
qmail-inject - preprocess and send a mail message
qmail-inject [ -nNaAhH ] [ -fsender ] [ recip ... ]
qmail-inject reads a mail message from its standard input, adds appropriate information to the message header, and invokes qmail-queue to send the message to one or more recipients. See qmail-header(5) for information on how qmail-inject rewrites header fields. qmail-inject normally exits 0. It exits 1 if it was invoked improperly or if there is a severe syntax error in the message. It exits 111 for temporary errors.
For the convenience of users who do not run qmail-inject directly, qmail-inject takes many options through environ- ment variables. The user name in the From header field is set by QMAILUSER, MAILUSER, USER, or LOGNAME, whichever comes first. The host name is normally set by the defaulthost control but can be overridden with QMAILHOST or MAILHOST. The personal name is QMAILNAME, MAILNAME, or NAME. The envelope sender address is normally the same as the address in the From header field, but it can be overridden with QMAILSUSER and QMAILSHOST. It may also be modified by the r and m letters described below. Bounces will be sent to this address. The QMAILINJECT environment variable can contain any of the following letters: c Use address-comment style for the From field. Nor- mally qmail-inject uses name-address style. s Do not look at any incoming Return-Path field. Normally, if Return-Path is supplied, it sets the envelope sender address, overriding all environment variables. Return-Path is deleted in any case. f Delete any incoming From field. Normally, if From is supplied, it overrides the usual From field cre- ated by qmail-inject. Message-ID is supplied, it overrides the usual Mes- sage-ID field created by qmail-inject. r Use the per-recipient owner hack. qmail-inject will append each recipient address to the envelope sender of the copy going to that recipient. m Use the per-message owner hack. qmail-inject will append the current date and process ID to the enve- lope sender.
-a Send the message to all addresses given as recip arguments; do not use header recipient addresses. -h Send the message to all header recipient addresses. For non-forwarded messages, this means the addresses listed under To, Cc, Bcc, Apparently-To. For forwarded messages, this means the addresses listed under Resent-To, Resent-Cc, Resent-Bcc. Do not use any recip arguments. -A (Default.) Send the message to all addresses given as recip arguments. If no recip arguments are sup- plied, send the message to all header recipient addresses. -H Send the message to all header recipient addresses, and to all addresses given as recip arguments. -fsender Pass sender to qmail-queue as the envelope sender address. This overrides Return-Path and all envi- ronment variables. -N (Default.) Feed the resulting message to qmail- queue. -n Print the message rather than feeding it to qmail- queue.
defaultdomain Default domain name. Default: me, if that is sup- plied; otherwise the literal name defaultdomain, which is probably not what you want. qmail-inject adds this name to any host name without dots, includ- ing defaulthost if defaulthost does not have dots. (Exception: see plusdomain.) defaulthost Default host name. Default: me, if that is supplied; name to any address without a host name. defaulthost need not be the current host's name. For example, you may prefer that outgoing mail show just your domain name. idhost Host name for Message-IDs. Default: me, if that is supplied; otherwise the literal name idhost, which is certainly not what you want. idhost need not be the current host's name. For example, you may prefer to use fake host names in Message-IDs. However, idhost must be a fully-qualified name within your domain, and each host in your domain should use a different idhost. plusdomain Plus domain name. Default: me, if that is supplied; otherwise the literal name plusdomain, which is prob- ably not what you want. qmail-inject adds this name to any host name that ends with a plus sign, includ- ing defaulthost if defaulthost ends with a plus sign. If a host name does not have dots but ends with a plus sign, qmail-inject uses plusdomain, not default- domain.
addresses(5), qmail-control(5), qmail-header(5), qmail- queue(8)cat8/qmail-lspawn.0.html 100644 0 0 2777 6244431622 13445 0 ustar root root
qmail-lspawn - schedule local deliveries
qmail-lspawn
qmail-lspawn reads a series of local delivery commands from descriptor 0, invokes qmail-alias to perform the deliveries, and prints the results to descriptor 1. qmail-lspawn invokes qmail-alias asynchronously, so the results may not be in the same order as the commands. For each recipient address, qmail-lspawn first checks the qmail-users mechanism, and then invokes qmail-getpw if necessary, to find out which local user controls that address. qmail-lspawn runs qmail-alias under the user's uid and gid. It does not set up any supplementary groups. qmail-lspawn treats an empty mailbox name as a trash address.
envelopes(5), qmail-users(5), qmail-getpw(8), qmail- send(8), qmail-alias(8)cat8/qmail-newuser.0.html 100644 0 0 2623 6244431623 13620 0 ustar root root
qmail-newuser - prepare address assignments for qmail- lspawn
qmail-newuser
qmail-newuser reads the assignments in /var/qmail/users/assign and writes them into /var/qmail/users/cdb in a binary format suited for quick access by qmail-lspawn. If there is a problem with users/assign, qmail-newuser complains and leaves users/cdb alone. qmail-newuser ensures that users/cdb is updated atomi- cally, so qmail-lspawn never has to wait for qmail-newuser to finish. However, qmail-newuser makes no attempt to protect against two simultaneous updates of users/cdb. The binary users/cdb format is portable across machines.
qmail-users(5), qmail-lspawn(8), qmail-pw2user(8)cat8/qmail-pop3d.0.html 100644 0 0 2534 6244431624 13157 0 ustar root root
qmail-pop3d - distribute mail via POP
qmail-pop3d maildirname
qmail-pop3d lets a user read and delete his mail through the network. Mail is stored in a maildir called maildirname, normally Maildir, in the user's home directory. qmail-pop3d is normally invoked under qmail-popup, which reads a username and password, and /bin/checkpassword, which checks the password and sets up environment vari- ables. qmail-pop3d has a 20-minute idle timeout. qmail-pop3d supports UIDL and TOP. qmail-pop3d appends an extra blank line to every message to work around serious bugs in certain clients. qmail-pop3d is based on a program contributed by Russ Nel- son.
maildir(5), qmail-alias(8), qmail-popup(8)cat8/qmail-popup.0.html 100644 0 0 3761 6244431625 13301 0 ustar root root
qmail-popup - read a POP username and password
qmail-popup hostname subprogram
qmail-popup reads a POP username and password from the network. It then runs subprogram. qmail-popup is most commonly invoked from inetd as qmail-popup CHANGEME checkpassword qmail-pop3d Maildir with CHANGEME replaced by the fully qualified domain name of the local host. qmail-popup expects descriptor 0 to read from the network and descriptor 1 to write to the network. It reads a username and password from descriptor 0 in POP's USER-PASS style or APOP style. It invokes subprogram, with the same descriptors 0 and 1; descriptor 2 writing to the network; and descriptor 3 reading the username, a 0 byte, the pass- word, another 0 byte, an APOP timestamp derived from host- name, and a final 0 byte. qmail-popup then waits for sub- program to finish. It prints an error message if subpro- gram crashes or exits nonzero. qmail-popup should be used only within a secure network. Otherwise an eavesdropper can steal passwords. Even if you use APOP, an active attacker can still take over the connection and wreak havoc. qmail-popup has a 20-minute idle timeout. qmail-popup is based on a program contributed by Russ Nel- son.
maildir(5), qmail-alias(8), qmail-pop3d(8)cat8/qmail-pw2user.0.html 100644 0 0 12367 6244431626 13570 0 ustar root root
qmail-pw2user - build address assignments from a passwd file
qmail-pw2user [ -ohHuUbBC ] [ -cchar ]
qmail-pw2user reads a V7-format passwd file from standard input and prints a qmail-users-format assignment file. A V7-format passwd file is a series of lines. Each line has the format user:password:uid:gid:gecos:home:shell where user is an account name, uid and gid are the user id and group id of that account, and home is the account's home directory. password, gecos, and shell are ignored by qmail-pw2user. If you put the output of qmail-pw2user into /var/qmail/users/assign, and then run qmail-newuser, qmail-lspawn will obey the assignments printed by qmail- pw2user. WARNING: After changing any users, uids, gids, or home directories in your passwd file, you must run qmail-pw2user and qmail-newuser again if you want qmail- lspawn to see the changes.
By default, qmail-pw2user follows the same rules as qmail- getpw. It skips user if (1) uid is zero, (2) home does not exist, (3) user does not own home, (4) user contains uppercase letters, or (5) user contains - characters. It then gives each remaining user control over the basic user address and all addresses of the form user-anything. A catch-all user, alias, controls all other addresses. You may change these rules by setting up files in /var/qmail/users: include A list of allowed users, one per line. If include exists, and user is not listed in include, user is ignored. exclude A list of ignored users, one per line. If exclude exists, and user is listed in exclude, user is ignored. mailnames Replacement names for users. Each line has the The addresses mailname1 and mailname1-ext and mail- name2 and so on will be delivered to user. The addresses user and user-ext will not be delivered to user unless user is listed as one of the mail- names. A line in mailnames is silently ignored if the user does not exist. subusers Extra addresses. Each line has the form sub:user:pre: sub will be handled by home/.qmail-pre, where home is user's home directory; sub-ext will be handled by home/.qmail-pre-ext.
-o (Default.) Skip user if home does not exist. Skip user if home is not owned by user. -h Stop if home does not exist. This is appropriate if every user is supposed to have a home directory. Skip user if home is not owned by user. -H Do not check the existence or ownership of home. -U (Default.) Skip user if there are any uppercase letters in user. -u Allow uppercase letters in user. -B (Default.) Skip user if it contains -. -b Allow - in user. -cchar Use char as the user-extension delimiter in place of -. -C Disable the user-extension mechanism.
qmail-users(5), qmail-lspawn(8), qmail-newuser(8), qmail- getpw(8)cat8/qmail-qmtpd.0.html 100644 0 0 2220 6244431627 13252 0 ustar root root
qmail-qmtpd - receive mail via QMTP
qmail-qmtpd
qmail-qmtpd receives mail messages via the Quick Mail Transfer Protocol (QMTP) and invokes qmail-queue to deposit them into the outgoing queue. qmail-qmtpd must be supplied several environment variables; see tcp-envi- ron(5). qmail-qmtpd supports the rcpthosts and RELAYCLIENT mecha- nisms described in qmail-smtpd(8).
tcp-env(1), tcp-environ(5), qmail-control(5), qmail- queue(8), qmail-smtpd(8)cat8/qmail-qread.0.html 100644 0 0 1633 6244431630 13222 0 ustar root root
qmail-qread - list outgoing messages and recipients
qmail-qread
qmail-qread scans the outgoing queue of messages. For each message it prints various human-readable information, including the date the message entered the queue, the num- ber of bytes in the message, the message sender, and all the recipients still under consideration. qmail-qread must be run either as root or with user id qmails and group id qmail.
qmail-qstat(8), qmail-send(8)cat8/qmail-qstat.0.html 100644 0 0 1262 6244431631 13261 0 ustar root root
qmail-qstat - summarize status of mail queue
qmail-qstat
qmail-qstat gives a human-readable breakdown of the number of messages at various spots in the mail queue. qmail-qstat must be run either as root or with group id qmail.
qmail-qread(8), qmail-send(8)cat8/qmail-queue.0.html 100644 0 0 4356 6244431632 13261 0 ustar root root
qmail-queue - queue a mail message for delivery
qmail-queue
qmail-queue reads a mail message from descriptor 0. It then reads envelope information from descriptor 1. It places the message into the outgoing queue for future delivery by qmail-send. The envelope information is an envelope sender address followed by a list of envelope recipient addresses. The sender address is preceded by the letter F and terminated by a 0 byte. Each recipient address is preceded by the letter T and terminated by a 0 byte. The list of recipi- ent addresses is terminated by an extra 0 byte. If qmail- queue sees end-of-file before the extra 0 byte, it aborts without placing the message into the queue. Every envelope recipient address must contain a username, an @ sign, and a fully qualified domain name. qmail-queue always adds a Received line to the top of the message. Other than this, qmail-queue does not inspect the message and does not enforce any restrictions on its contents. However, the recipients probably expect to see a proper header, as described in qmail-header(5).
0 if qmail-queue has successfully queued the message, nonzero if qmail-queue has failed to queue the message. qmail-queue does not print diagnostics.
addresses(5), envelopes(5), qmail-header(5), qmail- inject(8), qmail-send(8), qmail-smtpd(8)cat8/qmail-remote.0.html 100644 0 0 12512 6244431634 13443 0 ustar root root
qmail-remote - send mail via SMTP
qmail-remote host sender recip [ recip ... ]
qmail-remote reads a mail message from its input and sends the message to one or more recipients at a remote host. The remote host is qmail-remote's first argument, host. qmail-remote sends the message to host, or to a mail exchanger for host listed in the Domain Name System, via the Simple Mail Transfer Protocol (SMTP). host can be either a fully-qualified domain name: silverton.berkeley.edu or an IP address enclosed in brackets: [128.32.183.163] The envelope recipient addresses are listed as recip argu- ments to qmail-remote. The envelope sender address is listed as sender. Note that qmail-remote does not take options and does not follow the getopt standard.
End-of-file in SMTP is encoded as dot CR LF. A dot at the beginning of a line is encoded as dot dot. qmail-remote converts the UNIX newline convention into the SMTP newline convention by inserting CR before each LF. It is impossi- ble in SMTP to send a message that does not end with a newline; qmail-remote will add a final CR LF if necessary. It is a violation of the SMTP protocol to send a message that contains long lines or non-ASCII characters. How- ever, qmail-remote will happily send such messages. It is the user's responsibility to avoid generating illegal mes- sages.
qmail-remote prints some number of recipient reports, fol- lowed by a message report. Each report is terminated by a 0 byte. Each report begins with a single letter: r Recipient report: acceptance. h Recipient report: permanent rejection. s Recipient report: temporary rejection. ity for delivering the message to each acceptable recipient. Z Message report: temporary failure. D Message report: permanent failure. After this letter comes a human-readable description of what happened. The recipient reports will always be printed in the same order as qmail-remote's recip arguments. Note that in failure cases there may be fewer recipient reports than recip arguments. qmail-remote always exits zero.
helohost Current host name, for use solely in saying hello to the remote SMTP server. Default: me, if that is sup- plied; otherwise qmail-remote refuses to run. smtproutes Artificial SMTP routes. Each route has the form domain:relay, without any extra spaces. If domain matches host, qmail-remote will connect to relay, as if host had relay as its only MX. (It will also avoid doing any CNAME lookups on sender and recip.) host may include a colon and a port number to use instead of the normal SMTP port, 25: inside.af.mil:firewall.af.mil:26 relay may be empty; this tells qmail-remote to look up MX records as usual. smtproutes may include wild- cards: .af.mil: :heaven.af.mil Here any address ending with .af.mil (but not af.mil itself) is routed by its MX records; any other address is artificially routed to heaven.af.mil. The qmail system does not protect you if you create an artificial mail loop between machines. However, you are always safe using smtproutes if you do not accept mail from the network. timeoutconnect Number of seconds qmail-remote will wait for the limit. timeoutremote Number of seconds qmail-remote will wait for each response from the remote SMTP server. Default: 1200.
addresses(5), envelopes(5), qmail-control(5), qmail- send(8), qmail-smtpd(8)cat8/qmail-rspawn.0.html 100644 0 0 1446 6244431635 13447 0 ustar root root
qmail-rspawn - schedule remote deliveries
qmail-rspawn
qmail-rspawn reads a series of remote delivery commands from descriptor 0, invokes qmail-remote to perform the deliveries, and prints the results to descriptor 1. qmail-rspawn invokes qmail-remote asynchronously, so the results may not be in the same order as the commands.
qmail-send(8), qmail-remote(8)cat8/qmail-send.0.html 100644 0 0 15417 6244431636 13112 0 ustar root root
qmail-send - deliver mail messages from the queue
qmail-send
qmail-send handles messages placed into the outgoing queue by qmail-queue. It uses qmail-lspawn to deliver messages to local recipients and qmail-rspawn to deliver messages to remote recipients. If a message is temporarily unde- liverable to one or more addresses, qmail-send leaves it in the queue and tries the addresses again later. qmail-send prints a readable record of its activities to descriptor 0. It writes commands to qmail-lspawn, qmail- rspawn, and qmail-clean on descriptors 1, 3, and 5, and reads responses from descriptors 2, 4, and 6. qmail-send is responsible for avoiding deadlock. If qmail-send receives a TERM signal, it will exit cleanly, after waiting (possibly more than a minute) for current delivery attempts to finish.
WARNING: qmail-send reads its control files only when it starts. If you change the control files, you must stop and restart qmail-send. bouncefrom Bounce username. Default: MAILER-DAEMON. bouncehost Bounce host. Default: me, if that is supplied; oth- erwise the literal name bouncehost, which is probably not what you want. If a message is permanently unde- liverable, qmail-send sends a single-bounce notice back to the message's envelope sender. The notice is From: bouncefrom@bouncehost, although its envelope sender is empty. concurrencylocal Maximum number of simultaneous local delivery attempts. Default: 10. If 0, local deliveries will be put on hold. concurrencylocal is limited at com- pile time to 120. concurrencyremote Maximum number of simultaneous remote delivery attempts. Default: 20. If 0, remote deliveries will be put on hold. concurrencyremote is limited at com- pile time to 120. Double-bounce host. Default: me, if that is sup- plied; otherwise the literal name doublebouncehost, which is probably not what you want. doublebounceto User to receive double-bounces. Default: postmaster. If a single-bounce notice is permanently undeliver- able, qmail-send sends a double-bounce notice to dou- blebounceto@doublebouncehost. (If that bounces, qmail-send gives up.) envnoathost Presumed domain name for addresses without @ signs. Default: me, if that is supplied; otherwise the lit- eral name envnoathost, which is probably not what you want. If qmail-send sees an envelope recipient address without an @ sign, it appends @envnoathost. locals List of domain names that the current host receives mail for, one per line. Default: me, if that is sup- plied; otherwise qmail-send refuses to run. An address user@domain is considered local if domain is listed in locals. percenthack List of domain names where the percent hack is applied. If domain is listed in percenthack, any address of the form user%fqdn@domain is rewritten as user@fqdn. user may contain %, so the percent hack may be applied repeatedly. qmail-send handles per- centhack before locals. queuelifetime Number of seconds a message can stay in the queue. Default: 604800 (one week). After this time expires, qmail-send will try the message once more, but it will treat any temporary delivery failures as perma- nent failures. virtualdomains List of virtual domains, one per line. Each virtual domain has the form domain:prepend, without any extra spaces. When qmail-send sees a recipient address at domain, say user@domain, it converts it to prepend- user@domain and treats it as local. For example, if nowhere.mil:joe-foo is in virtualdomains, and a message arrives for info@nowhere.mil, qmail-send will rewrite the recipi- ent address as joe-foo-info@nowhere.mil and deliver .fax:uucp-fax :alias-catchall .nowhere.mil:joe-foo-host virtualdomains may also contain exceptions: an empty prepend means that domain is not a virtual domain. qmail-send handles virtualdomains after locals.
nice(1), addresses(5), envelopes(5), qmail-control(5), qmail-log(5), qmail-queue(8), qmail-clean(8), qmail- lspawn(8), qmail-rspawn(8)cat8/qmail-showctl.0.html 100644 0 0 720 6244431637 13574 0 ustar root root
qmail-showctl - analyze the qmail configuration files
qmail-showctl
qmail-showctl explains the current qmail configuration.
qmail-control(8)cat8/qmail-smtpd.0.html 100644 0 0 6423 6244431640 13260 0 ustar root root
qmail-smtpd - receive mail via SMTP
qmail-smtpd
qmail-smtpd receives mail messages via the Simple Mail Transfer Protocol (SMTP) and invokes qmail-queue to deposit them into the outgoing queue. qmail-smtpd must be supplied several environment variables; see tcp-envi- ron(5). qmail-smtpd is responsible for counting hops. It rejects any message with 100 or more Received or Delivered-To header fields. qmail-smtpd supports ESMTP, including the 8BITMIME and PIPELINING options.
qmail-smtpd converts the SMTP newline convention into the UNIX newline convention by converting CR LF into LF. qmail-smtpd accepts messages that contain long lines or non-ASCII characters, even though such messages violate the SMTP protocol.
localiphost Replacement host name for local IP addresses. Default: me, if that is supplied. qmail-smtpd is responsible for recognizing dotted-decimal addresses for the current host. When it sees a recipient address of the form box@[d.d.d.d], where d.d.d.d is a local IP address, it replaces [d.d.d.d] with localiphost. This is done before rcpthosts. rcpthosts Allowed RCPT domains. If rcpthosts is supplied, qmail-smtpd will reject any envelope recipient address with a domain not listed in rcpthosts. Exception: If the environment variable RELAYCLIENT is set, qmail-smtpd will ignore rcpthosts, and will append the value of RELAYCLIENT to each incoming recipient address. smtpgreeting SMTP greeting message. Default: me, if that is sup- plied; otherwise qmail-smtpd will refuse to run. The first word of smtpgreeting should be the current host's name. Number of seconds qmail-smtpd will wait for each new buffer of data from the remote SMTP client. Default: 1200.
tcp-env(1), tcp-environ(5), qmail-control(5), qmail- inject(8), qmail-queue(8), qmail-remote(8)cat8/qmail-start.0.html 100644 0 0 4542 6244431641 13267 0 ustar root root
qmail-start - turn on mail delivery
qmail-start [ logger arg ... ]
qmail-start invokes qmail-send, qmail-lspawn, qmail- rspawn, and qmail-clean. These four daemons cooperate to deliver messages from the queue. qmail-start arranges for qmail-send's activity record to be sent to qmail-start's output. See qmail-log(5) for the format of the activity record. Other than this, qmail- start does not print anything, even on failure. If logger is supplied, qmail-start invokes logger with the given arguments, and feeds qmail-send's activity record through logger. Environment variables given to qmail-start will eventually be passed on to qmail-alias, so make sure to clean up the environment if you run qmail-start manually: # env - PATH="/var/qmail/bin:$PATH" qmail-start logger -p mail.info -t qmail & (all on one line) qmail-start sets the uid and gid of each daemon properly. Note that qmail-send normally juggles several simultaneous deliveries. To reduce qmail-send's impact on other pro- grams, you can run qmail-start with a low priority.
logger(1), nice(1), qmail-log(5), qmail-alias(8), qmail- clean(8), qmail-lspawn(8), qmail-rspawn(8), qmail-send(8)cat8/qmail-tcpto.0.html 100644 0 0 1713 6244431642 13261 0 ustar root root
qmail-tcpto - print TCP timeout table
qmail-tcpto
After an SMTP connection attempt times out, qmail-remote records the relevant IP address. If the same address fails again, qmail-remote assumes that further attempts will fail for at least another hour. qmail-tcpto prints qmail-remote's current list of time- outs. qmail-tcpto must be run either as root or with user id qmailr and group id qmail.
qmail-qread(8), qmail-remote(8)