Commit | Line | Data |
---|---|---|
2117e02e MW |
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. |