Upstream qmail 1.01
[qmail] / UPGRADE
1 SAVE COPIES OF YOUR OUTGOING MAIL! Like any other piece of software (and
2 information generally), the qmail system comes with NO WARRANTY. It's
3 much more secure and reliable than sendmail, but that's not saying much.
4
5
6 Here's how to upgrade from qmail 1.00 to qmail 1.01. This procedure will
7 overwrite the old qmail binaries. Furthermore, it may begin delivering
8 messages from the queue before you have had a chance to test it.
9
10
11 WARNING: The qmail-start command line has changed.
12
13
14 Before starting, compare conf* to your old conf*, and make any necessary
15 changes. Do not copy your old conf*; the baseline has changed.
16
17
18 How to install:
19
20 1. Compile the programs:
21 # make
22 2. Create the formatted man pages, *.0:
23 # make man
24 3. Inform your users that mail will not be accepted for a few minutes.
25 4. Disable deliveries by killing your old qmail-send. Wait for it to
26 print ``exiting'' in the log.
27 5. Disable SMTP service by commenting out the smtp line in inetd.conf;
28 kill -HUP your inetd. (If you are using tcpserver, simply kill -STOP
29 your tcpserver.) Wait for current qmail-smtpd processes to die. (If
30 you are running a QMTP server, disable that too.)
31 6. Install the new binaries and man pages:
32 # rm /var/qmail/bin/* /var/qmail/man/*/*
33 # make setup
34 7. Run instcheck to make sure it doesn't print any warnings:
35 # make check
36 8. Reenable deliveries:
37 # env - PATH="/var/qmail/bin:$PATH" \
38 qmail-start ./Mailbox splogger qmail &
39 Make sure to include the ./ in ./Mailbox.
40 9. Insert ./Mailbox into the qmail-start line in your boot scripts.
41 10. Reenable SMTP service by restoring the smtp line in inetd.conf; kill
42 -HUP your inetd. (If you are using tcpserver, simply kill -CONT your
43 tcpserver. If you are running a QMTP server, reenable that too.)
44
45
46 How to test (steps 11-17 can be done before step 10):
47
48 11. Look for a
49 qmail: running
50 line in syslog. (The big number is a splogger timestamp.)
51 12. Local-local test: Send yourself an empty message. (Replace ``me''
52 with your username. Make sure to include the ``to:'' colon.)
53 % echo to: me | /var/qmail/bin/qmail-inject
54 The message will show up immediately in ~/Mailbox, and syslog will
55 show something like this:
56 qmail: new msg 53
57 qmail: info msg 53: bytes 246 from <me@domain> qp 20345 uid 666
58 qmail: starting delivery 1: msg 53 to local me@domain
59 qmail: delivery 1: success: did_1+0+0/
60 qmail: end msg 53
61 (53 is an inode number; 20345 is a process ID; your numbers will
62 probably be different.)
63 13. Local-error test: Send a message to a nonexistent local address.
64 % echo to: nonexistent | /var/qmail/bin/qmail-inject
65 qmail: new msg 53
66 qmail: info msg 53: bytes 246 from <me@domain> qp 20351 uid 666
67 qmail: starting delivery 2: msg 53 to local nonexistent@domain
68 qmail: delivery 2: failure: No_such_address.__#5.1.1_/
69 qmail: bounce msg 53 qp 20357
70 qmail: end msg 53
71 qmail: new msg 54
72 qmail: info msg 54: bytes 743 from <> qp 20357 uid 666
73 qmail: starting delivery 3: msg 54 to local me@domain
74 qmail: delivery 3: success: did_1+0+0/
75 qmail: end msg 54
76 You will now have a bounce message in ~/Mailbox.
77 14. Local-remote test: Send an empty message to your account on another
78 machine.
79 % echo to: me@wherever | /var/qmail/bin/qmail-inject
80 qmail: new msg 53
81 qmail: info msg 53: bytes 246 from <me@domain> qp 20372 uid 666
82 qmail: starting delivery 4: msg 53 to remote me@wherever
83 qmail: delivery 4: success: 1.2.3.4_accepted_message./...
84 qmail: end msg 53
85 There will be a pause between ``starting delivery'' and ``success'';
86 SMTP is slow. Check that the message is in your mailbox on the other
87 machine.
88 15. Local-postmaster test: Send mail to postmaster, any capitalization.
89 % echo to: POSTmaster | /var/qmail/bin/qmail-inject
90 Look for the message in ~alias/Mailbox.
91 16. Double-bounce test: Send a message with a completely bad envelope.
92 % /var/qmail/bin/qmail-inject -f nonexistent
93 To: unknownuser
94 Subject: testing
95
96 This is a test. This is only a test.
97 %
98 (Use end-of-file, not dot, to end the message.) Look for the double
99 bounce in ~alias/Mailbox.
100 17. Group membership test:
101 % cat > ~me/.qmail-groups
102 |groups >> MYGROUPS; exit 0
103 % /var/qmail/bin/qmail-inject me-groups < /dev/null
104 % cat ~me/MYGROUPS
105 MYGROUPS will show your normal gid and nothing else. (Under Solaris,
106 make sure to use /usr/ucb/groups; /usr/bin/groups is broken.)
107 18. SMTP server test: Forge some mail locally via SMTP.
108 % telnet 127.0.0.1 25
109 Trying 127.0.0.1...
110 Connected to 127.0.0.1.
111 Escape character is '^]'.
112 220 domain ESMTP
113 helo dude
114 250-domain
115 250-PIPELINING
116 250 8BITMIME
117 mail <me@domain>
118 250 ok
119 rcpt <me@domain>
120 250 ok
121 data
122 354 go ahead
123 Subject: testing
124
125 This is a test.
126 .
127 250 ok 812345679 qp 12345
128 quit
129 221 domain
130 Connection closed by foreign host.
131 %
132 Look for the message in your mailbox.
133 19. Remote-local test: Send yourself some mail from another machine.
134 20. Remote-error test: I think you can figure this one out.
135 21. UA test: Try sending mail, first to a local account, then to a
136 remote account, with your normal user agent.
137 22. Remote-postmaster test: Send mail from another machine to
138 PoStMaStEr@domain. Look for the message in ~alias/Mailbox.
139
140
141 That's it! To report success:
142 % ( echo 'First M. Last'; cat `cat SYSDEPS` ) \
143 | mail djb-qst@koobera.math.uic.edu
144 Replace First M. Last with your name. If you have questions about qmail,
145 contact qmail@pobox.com.