debian/rules: Use `git' potty wrapper.
[qmail] / FAQ
diff --git a/FAQ b/FAQ
index 214cc1b..8540dbd 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -1,6 +1,7 @@
 1. Controlling the appearance of outgoing messages
 1.1. How do I set up host masquerading?
 1.2. How do I set up user masquerading?
 1. Controlling the appearance of outgoing messages
 1.1. How do I set up host masquerading?
 1.2. How do I set up user masquerading?
+1.3. How do I set up Mail-Followup-To automatically?
 
 2. Routing outgoing messages
 2.1. How do I send local messages to another host?
 
 2. Routing outgoing messages
 2.1. How do I send local messages to another host?
 4.4. How do I use procmail with qmail?
 4.5. How do I use elm's filter with qmail?
 4.6. How do I create aliases with dots?
 4.4. How do I use procmail with qmail?
 4.5. How do I use elm's filter with qmail?
 4.6. How do I create aliases with dots?
+4.7. How do I use sendmail's .forward files with qmail?
+4.8. How do I use sendmail's /etc/aliases with qmail?
+4.9. How do I make qmail defer messages during NFS or NIS outages?
+4.10. How do I change which account controls an address?
 
 5. Setting up servers
 5.1. How do I run qmail-smtpd under tcpserver?
 
 5. Setting up servers
 5.1. How do I run qmail-smtpd under tcpserver?
 5.3. How do I set up qmail-pop3d?
 5.4. How do I allow selected clients to use this host as a relay?
 5.5. How do I fix up messages from broken SMTP clients?
 5.3. How do I set up qmail-pop3d?
 5.4. How do I allow selected clients to use this host as a relay?
 5.5. How do I fix up messages from broken SMTP clients?
+5.6. How do I set up qmail-qmqpd?
 
 6. Configuring MUAs to work with qmail
 6.1. How do I make BSD mail generate a Date with the local time zone?
 
 6. Configuring MUAs to work with qmail
 6.1. How do I make BSD mail generate a Date with the local time zone?
-6.2. How do I stop pine from crashing?
+6.2. How do I make pine work with qmail?
 6.3. How do I make MH work with qmail?
 6.4. How do I stop Sun's dtcm from hanging?
 
 6.3. How do I make MH work with qmail?
 6.4. How do I stop Sun's dtcm from hanging?
 
@@ -41,6 +47,8 @@
 7.3. How do I rejuvenate a message?
 7.4. How do I organize a big network?
 7.5. How do I back up and restore the queue disk?
 7.3. How do I rejuvenate a message?
 7.4. How do I organize a big network?
 7.5. How do I back up and restore the queue disk?
+7.6. How do I run a supervised copy of qmail?
+7.7. How do I avoid syslog?
 
 8. Miscellany
 8.1. How do I tell qmail to do more deliveries at once?
 
 8. Miscellany
 8.1. How do I tell qmail to do more deliveries at once?
@@ -69,6 +77,14 @@ override From lines supplied by your MUA, add QMAILINJECT=f to your
 environment.
 
 
 environment.
 
 
+1.3. How do I set up Mail-Followup-To automatically? When I send a
+message to the sos@heaven.af.mil mailing list, I'd like to include
+``Mail-Followup-To: sos@heaven.af.mil''.
+
+Answer: Add QMAILMFTFILE=$HOME/.lists to your environment, and put
+sos@heaven.af.mil into ~/.lists.
+
+
 
 2. Routing outgoing messages
 
 
 2. Routing outgoing messages
 
@@ -102,11 +118,11 @@ Answer: Put
 
 into control/virtualdomains and
 
 
 into control/virtualdomains and
 
-   |preline -df /usr/bin/uux - -r -gC -a"$SENDER" gonzo!rmail "($EXT2@$HOST)"
+   |preline -df /usr/bin/uux - -r -gC
+      -a"${SENDER:-MAILER-DAEMON}" gonzo!rmail "($DEFAULT@$HOST)"
 
 
-into ~alias/.qmail-uucp-default. (For some UUCP software you will need
-to use -d instead of -df. Also, you may need to insert a space between
--a and "$SENDER" for bounces to work properly.) If qmail-send is
+(all on one line) into ~alias/.qmail-uucp-default. (For some UUCP
+software you will need to use -d instead of -df.) If qmail-send is
 running, give it a HUP.
 
 
 running, give it a HUP.
 
 
@@ -120,9 +136,9 @@ showed that a message was deferred for this reason. Why is qmail doing
 CNAME lookups, anyway?
 
 Answer: The SMTP standard does not permit aliased hostnames, so qmail
 CNAME lookups, anyway?
 
 Answer: The SMTP standard does not permit aliased hostnames, so qmail
-has to do a CNAME lookup in DNS for every sender and recipient host. If
-the relevant DNS server is down, qmail defers the message. It will try
-again soon.
+has to do a CNAME lookup in DNS for every recipient host. If the
+relevant DNS server is down, qmail defers the message. It will try again
+soon.
 
 
 
 
 
 
@@ -135,7 +151,8 @@ an MX from af.mil to pokey.af.mil, but how do I get pokey to treat
 af.mil as a name for the local host?
 
 Answer: Add af.mil to /var/qmail/control/locals and to
 af.mil as a name for the local host?
 
 Answer: Add af.mil to /var/qmail/control/locals and to
-/var/qmail/control/rcpthosts. If qmail-send is running, give it a HUP.
+/var/qmail/control/rcpthosts. If qmail-send is running, give it a HUP
+(or do svc -h /var/run/qmail if qmail is supervised).
 
 
 3.2. How do I set up a virtual domain? I'd like any mail for
 
 
 3.2. How do I set up a virtual domain? I'd like any mail for
@@ -147,7 +164,8 @@ Answer: Put
    nowhere.mil:bob
 
 into control/virtualdomains. Add nowhere.mil to control/rcpthosts. If
    nowhere.mil:bob
 
 into control/virtualdomains. Add nowhere.mil to control/rcpthosts. If
-qmail-send is running, give it a HUP.
+qmail-send is running, give it a HUP (or do svc -h /var/run/qmail if
+qmail is supervised).
 
 Now mail for whatever@nowhere.mil will be delivered locally to
 bob-whatever. Bob can set up ~bob/.qmail-default to catch all the
 
 Now mail for whatever@nowhere.mil will be delivered locally to
 bob-whatever. Bob can set up ~bob/.qmail-default to catch all the
@@ -165,7 +183,8 @@ Answer: Put two lines into control/virtualdomains:
    everywhere.org:bob-everywhere
 
 Add nowhere.mil and everywhere.org to control/rcpthosts. If qmail-send
    everywhere.org:bob-everywhere
 
 Add nowhere.mil and everywhere.org to control/rcpthosts. If qmail-send
-is running, give it a HUP.
+is running, give it a HUP (or do svc -h /var/run/qmail if qmail is
+supervised).
 
 Now Bob can set up separate .qmail-nowhere-* and everywhere-* files. He
 can even set up .qmail-nowhere-default and .qmail-everywhere-default.
 
 Now Bob can set up separate .qmail-nowhere-* and everywhere-* files. He
 can even set up .qmail-nowhere-default and .qmail-everywhere-default.
@@ -191,21 +210,22 @@ forwarded to a bunch of people.
 Answer: Put a list of addresses into ~me/.qmail-sos, one per line. Then
 incoming mail for me-sos will be forwarded to each of those addresses.
 You should also touch ~me/.qmail-sos-owner so that bounces come back to
 Answer: Put a list of addresses into ~me/.qmail-sos, one per line. Then
 incoming mail for me-sos will be forwarded to each of those addresses.
 You should also touch ~me/.qmail-sos-owner so that bounces come back to
-you rather than the original sender. If you want subscriptions to be
-handled automatically, put
-
-   | qlist2 sos my.host.name
+you rather than the original sender.
 
 
-into ~me/.qmail-sos-request. Anyone who wants to subscribe can simply
-send a message to me-sos-request@my.host.name.
+Alternative: ezmlm (http://pobox.com/~djb/ezmlm.html) is a modern
+mailing list manager, supporting automatic subscriptions, confirmations,
+archives, fully automatic bounce handling (including warnings to
+subscribers saying which messages they've missed), and more.
 
 
 4.3. How do I use majordomo with qmail?
 
 
 
 4.3. How do I use majordomo with qmail?
 
-Answer: You need to patch majordomo so that it creates qmail-style
-lists. See ftp://koobera.math.uic.edu/pub/software/majordomo+qmail.gz.
-Exception: qmsmac understands sendmail-style :include: files, so you
-shouldn't patch majordomo if you're using qmsmac.
+Answer: See ftp://ftp.eyrie.org/pub/software/majordomo/mjqmail and
+http://www.qmail.org for various methods. majordomo 2.0 is expected to
+support qmail directly.
+
+Beware that majordomo's lists are not crashproof.
+
 
 
 4.4. How do I use procmail with qmail?
 
 
 4.4. How do I use procmail with qmail?
@@ -216,8 +236,8 @@ Answer: Put
 
 into ~/.qmail. You'll have to use a full path for procmail unless
 procmail is in the system's startup PATH. Note that procmail will try to
 
 into ~/.qmail. You'll have to use a full path for procmail unless
 procmail is in the system's startup PATH. Note that procmail will try to
-deliver to /usr/spool/mail/$USER by default; to change this, change
-SYSTEM_MBOX in procmail's config.h.
+deliver to /var/spool/mail/$USER by default; to change this, see
+INSTALL.mbox.
 
 
 4.5. How do I use elm's filter with qmail?
 
 
 4.5. How do I use elm's filter with qmail?
@@ -237,6 +257,48 @@ Answer: Use .qmail-p:d:q:bach. Dots are converted to colons, and
 uppercase is converted to lowercase.
 
 
 uppercase is converted to lowercase.
 
 
+4.7. How do I use sendmail's .forward files with qmail?
+
+Answer: Install the dot-forward package
+(http://pobox.com/~djb/dot-forward.html).
+
+
+4.8. How do I use sendmail's /etc/aliases with qmail?
+
+Answer: Install the fastforward package
+(http://pobox.com/~djb/fastforward.html).
+
+
+4.9. How do I make qmail defer messages during NFS or NIS outages? If
+~joe suddenly disappears, I'd like mail for joe to be deferred.
+
+Answer: Build a qmail-users database, so that qmail no longer checks
+home directories and the password database. This takes three steps.
+First, put your complete user list (including local and NIS passwords)
+into /var/qmail/users/passwd. Second, run
+
+   # qmail-pw2u -h < /var/qmail/users/passwd > /var/qmail/users/assign
+
+Here -h means that every user must have a home directory; if you happen
+to run qmail-pw2u during an NFS outage, it will print an error message
+and stop. Third, run
+
+   # qmail-newu
+
+Make sure to rebuild the database whenever you change your user list.
+
+
+4.10. How do I change which account controls an address? I set up
+~alias/.qmail-www, but qmail is looking at ~www/.qmail instead.
+
+Answer: If you do
+
+   # chown root ~www
+
+then qmail will no longer consider www to be a user; see qmail-getpw.0.
+For more precise control over address assignments, see qmail-users.0.
+
+
 
 5. Setting up servers
 
 
 5. Setting up servers
 
@@ -281,20 +343,23 @@ If you have tcpserver installed, skip the inetd step, and set up
    tcpserver -u 7770 -g 2108 0 qmtp /var/qmail/bin/qmail-qmtpd &
 
 replacing 7770 and 2108 with the qmaild uid and nofiles gid. See
    tcpserver -u 7770 -g 2108 0 qmtp /var/qmail/bin/qmail-qmtpd &
 
 replacing 7770 and 2108 with the qmaild uid and nofiles gid. See
-question 5.1 for more details.
+question 5.1 for more details on tcpserver.
 
 
 
 
-5.3. How do I set up qmail-pop3d?
+5.3. How do I set up qmail-pop3d? My old POP server works with mbox
+delivery; I'd like to switch to maildir delivery.
 
 Answer: Four steps. First, install the checkpassword program
 (http://pobox.com/~djb/checkpwd.html). Second, make sure you have a
 
    pop3 110/tcp
 
 
 Answer: Four steps. First, install the checkpassword program
 (http://pobox.com/~djb/checkpwd.html). Second, make sure you have a
 
    pop3 110/tcp
 
-line in /etc/services. Third, put (all on one line)
+line in /etc/services. Third, put (all on one line, including
+qmail-popup twice)
 
 
-   pop3 stream tcp nowait root /var/qmail/bin/qmail-popup
-   qmail-popup YOURHOST /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
+   pop3 stream tcp nowait root
+   /var/qmail/bin/qmail-popup qmail-popup
+   YOURHOST /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
 
 into /etc/inetd.conf, and give inetd a HUP; replace YOURHOST with your
 host's fully qualified domain name. Fourth, set up Maildir delivery for
 
 into /etc/inetd.conf, and give inetd a HUP; replace YOURHOST with your
 host's fully qualified domain name. Fourth, set up Maildir delivery for
@@ -307,7 +372,7 @@ lines)
    /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
 
 replacing YOURHOST with your host's fully qualified domain name. See
    /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
 
 replacing YOURHOST with your host's fully qualified domain name. See
-question 5.1 for more details.
+question 5.1 for more details on tcpserver.
 
 Security note: pop3d should be used only within a secure network;
 otherwise an eavesdropper can steal passwords.
 
 Security note: pop3d should be used only within a secure network;
 otherwise an eavesdropper can steal passwords.
@@ -315,8 +380,7 @@ otherwise an eavesdropper can steal passwords.
 
 5.4. How do I allow selected clients to use this host as a relay? I see
 that qmail-smtpd rejects messages to any host not listed in
 
 5.4. How do I allow selected clients to use this host as a relay? I see
 that qmail-smtpd rejects messages to any host not listed in
-control/rcpthosts. I know I could entirely disable this feature by
-removing control/rcpthosts, but I want to be more selective.
+control/rcpthosts.
 
 Answer: Three steps. First, install tcp-wrappers, available separately,
 including hosts_options. Second, change your qmail-smtpd line in
 
 Answer: Three steps. First, install tcp-wrappers, available separately,
 including hosts_options. Second, change your qmail-smtpd line in
@@ -336,29 +400,29 @@ ignores control/rcpthosts when RELAYCLIENT is set. (It also appends
 RELAYCLIENT to each envelope recipient address. See question 5.5 for an
 application.)
 
 RELAYCLIENT to each envelope recipient address. See question 5.5 for an
 application.)
 
-Alternative procedure, if you are using tcpserver: Install tcpcontrol
-(http://pobox.com/~djb/tcpcontrol.html). Create /etc/tcp.smtp containing
+Alternative procedure, if you are using tcpserver 0.80 or above: Create
+/etc/tcp.smtp containing
 
    1.2.3.6:allow,RELAYCLIENT=""
    127.:allow,RELAYCLIENT=""
 
 to allow clients with IP addresses 1.2.3.6 and 127.*. Run
 
 
    1.2.3.6:allow,RELAYCLIENT=""
    127.:allow,RELAYCLIENT=""
 
 to allow clients with IP addresses 1.2.3.6 and 127.*. Run
 
-   tcpmakectl /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
+   tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
 
 Finally, insert
 
 
 Finally, insert
 
-   tcpcontrol /etc/tcp.smtp.cdb
+   -x /etc/tcp.smtp.cdb
 
 
-before /var/qmail/bin/qmail-smtpd in your tcpserver line.
+after tcpserver in your qmail-smtpd invocation.
 
 
 5.5. How do I fix up messages from broken SMTP clients?
 
 Answer: Three steps. First, put
 
 
 
 5.5. How do I fix up messages from broken SMTP clients?
 
 Answer: Three steps. First, put
 
-   | [ "@$HOST" = "@fixme" ] || ( echo Permission denied; exit 100 )
-   | qmail-inject -f "$SENDER" -- "$EXT2"
+   | bouncesaying 'Permission denied' [ "@$HOST" != "@fixme" ]
+   | qmail-inject -f "$SENDER" -- "$DEFAULT"
 
 into ~alias/.qmail-fixup-default. Second, put
 
 
 into ~alias/.qmail-fixup-default. Second, put
 
@@ -371,12 +435,34 @@ string ``@fixme'':
    tcp-env: 1.2.3.6, 1.2.3.7: setenv = RELAYCLIENT @fixme
 
 Here 1.2.3.6 and 1.2.3.7 are the clients' IP addresses. If you are using
    tcp-env: 1.2.3.6, 1.2.3.7: setenv = RELAYCLIENT @fixme
 
 Here 1.2.3.6 and 1.2.3.7 are the clients' IP addresses. If you are using
-tcpserver and tcpcontrol instead of inetd and tcpd, put
+tcpserver instead of inetd and tcpd, put
 
    1.2.3.6:allow,RELAYCLIENT="@fixme"
    1.2.3.7:allow,RELAYCLIENT="@fixme"
 
 
    1.2.3.6:allow,RELAYCLIENT="@fixme"
    1.2.3.7:allow,RELAYCLIENT="@fixme"
 
-into /etc/tcp.smtp, and run tcpmakectl as in question 5.4.
+into /etc/tcp.smtp, and run tcprules as in question 5.4.
+
+
+5.6. How do I set up qmail-qmqpd? I'd like to allow fast queueing of
+outgoing mail from authorized clients.
+
+Answer: Make sure you have installed tcpserver 0.80 or above. Create
+/etc/qmqp.tcp in tcprules format to allow connections from authorized
+hosts. For example, if queueing is allowed from 1.2.3.*:
+
+   1.2.3.:allow
+   :deny
+
+Convert /etc/qmqp.tcp to /etc/qmqp.cdb:
+
+   tcprules /etc/qmqp.cdb /etc/qmqp.tmp < /etc/qmqp.tcp
+
+Finally, set up
+
+   tcpserver -x /etc/qmqp.cdb -u 7770 -g 2108 0 628 /var/qmail/bin/qmail-qmqpd &
+
+replacing 7770 and 2108 with the qmaild uid and nofiles gid. See
+question 5.1 for more details on tcpserver.
 
 
 
 
 
 
@@ -395,8 +481,7 @@ into your .mailrc or your system-wide Mail.rc. Beware that BSD mail is
 neither secure nor reliable.
 
 
 neither secure nor reliable.
 
 
-6.2. How do I stop pine from crashing? When I ask any version of pine
-past 3.91 to send mail, it crashes.
+6.2. How do I make pine work with qmail?
 
 Answer: Put
 
 
 Answer: Put
 
@@ -432,14 +517,25 @@ sendmail, it was always tricky to kill sendmail without risking the loss
 of current deliveries; what should I do with qmail-send?
 
 Answer: Go ahead and kill the qmail-send process. It will shut down
 of current deliveries; what should I do with qmail-send?
 
 Answer: Go ahead and kill the qmail-send process. It will shut down
-cleanly. Wait for ``exiting'' to show up in the log. To restart it, run
-qmail-start the same way as it's run from your system boot scripts.
+cleanly. Wait for ``exiting'' to show up in the log. To restart qmail,
+run /var/qmail/rc the same way it is run from your system boot scripts,
+with the proper PATH, resource limits, etc.
+
+Alternative, if qmail is supervised: svc -t /var/run/qmail. The
+supervise process will kill qmail, wait for it to stop, and restart it.
+Use -d instead of -t if you don't want qmail to restart automatically;
+to manually restart it, use -u.
 
 
 7.2. How do I manually run the queue? I'd like qmail to try delivering
 all the remote messages right now.
 
 
 
 7.2. How do I manually run the queue? I'd like qmail to try delivering
 all the remote messages right now.
 
-Answer: Give the qmail-send process an ALRM.
+Answer: Give the qmail-send process an ALRM. (Do svc -a /var/run/qmail
+if qmail is supervised.)
+
+You may want to run qmail-tcpok first, to guarantee that qmail-remote
+will try all addresses. Normally, if an address fails repeatedly,
+qmail-remote leaves it alone for an hour.
 
 
 7.3. How do I rejuvenate a message? Somebody broke into Eric's computer
 
 
 7.3. How do I rejuvenate a message? Somebody broke into Eric's computer
@@ -521,6 +617,42 @@ battery backups. RAID boxes let you replace dead disks without losing
 any data.
 
 
 any data.
 
 
+7.6. How do I run a supervised copy of qmail? svc sounds useful.
+
+Answer: Install daemontools (http://pobox.com/~djb/daemontools.html).
+Create a /var/run/qmail directory. Change
+
+   /var/qmail/rc
+
+to
+
+   supervise /var/run/qmail /var/qmail/rc
+
+in your boot scripts. Make sure that supervise is in the startup PATH.
+Now you can use svc to stop or restart qmail, and svstat to check
+whether qmail is running.
+
+
+7.7. How do I avoid syslog? It chews up a lot of CPU time and isn't
+reliable.
+
+Answer: Install daemontools (http://pobox.com/~djb/daemontools.html).
+Make a /var/log/qmail directory, owned by qmaill, mode 2700. Do
+
+   qmail-start ./Mailbox /usr/local/bin/accustamp \
+   | setuser qmaill /usr/local/bin/cyclog /var/log/qmail &
+
+in /var/qmail/rc.
+
+If you are logging tcpserver connections, make a /var/log/smtpd
+directory, and use cyclog /var/log/smtpd for tcpserver. You shouldn't
+run several copies of cyclog with the same log directory.
+
+By default, cyclog keeps 10 automatically rotated log files, each
+containing up to 100KB of log data. To keep 20 files with 1MB each, use
+cyclog -s 1000000 -n 20.
+
+
 
 8. Miscellany
 
 
 8. Miscellany