diff options
| author | manuel <manuel@mausz.at> | 2013-02-04 00:08:53 +0100 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2013-02-04 00:08:53 +0100 |
| commit | 69aec538b456402170dc723af417ba5c05389c32 (patch) | |
| tree | e6f34c543f17c6392447ea337b2e2868212424d1 /FAQ | |
| download | qmail-69aec538b456402170dc723af417ba5c05389c32.tar.gz qmail-69aec538b456402170dc723af417ba5c05389c32.tar.bz2 qmail-69aec538b456402170dc723af417ba5c05389c32.zip | |
qmail 1.03 import
Diffstat (limited to 'FAQ')
| -rw-r--r-- | FAQ | 706 |
1 files changed, 706 insertions, 0 deletions
| @@ -0,0 +1,706 @@ | |||
| 1 | 1. Controlling the appearance of outgoing messages | ||
| 2 | 1.1. How do I set up host masquerading? | ||
| 3 | 1.2. How do I set up user masquerading? | ||
| 4 | 1.3. How do I set up Mail-Followup-To automatically? | ||
| 5 | |||
| 6 | 2. Routing outgoing messages | ||
| 7 | 2.1. How do I send local messages to another host? | ||
| 8 | 2.2. How do I set up a null client? | ||
| 9 | 2.3. How do I send outgoing mail through UUCP? | ||
| 10 | 2.4. How do I set up a separate queue for a SLIP/PPP link? | ||
| 11 | 2.5. How do I deal with ``CNAME lookup failed temporarily''? | ||
| 12 | |||
| 13 | 3. Routing incoming messages by host | ||
| 14 | 3.1. How do I receive mail for another host name? | ||
| 15 | 3.2. How do I set up a virtual domain? | ||
| 16 | 3.3. How do I set up several virtual domains for one user? | ||
| 17 | |||
| 18 | 4. Routing incoming messages by user | ||
| 19 | 4.1. How do I forward unrecognized usernames to another host? | ||
| 20 | 4.2. How do I set up a mailing list? | ||
| 21 | 4.3. How do I use majordomo with qmail? | ||
| 22 | 4.4. How do I use procmail with qmail? | ||
| 23 | 4.5. How do I use elm's filter with qmail? | ||
| 24 | 4.6. How do I create aliases with dots? | ||
| 25 | 4.7. How do I use sendmail's .forward files with qmail? | ||
| 26 | 4.8. How do I use sendmail's /etc/aliases with qmail? | ||
| 27 | 4.9. How do I make qmail defer messages during NFS or NIS outages? | ||
| 28 | 4.10. How do I change which account controls an address? | ||
| 29 | |||
| 30 | 5. Setting up servers | ||
| 31 | 5.1. How do I run qmail-smtpd under tcpserver? | ||
| 32 | 5.2. How do I set up qmail-qmtpd? | ||
| 33 | 5.3. How do I set up qmail-pop3d? | ||
| 34 | 5.4. How do I allow selected clients to use this host as a relay? | ||
| 35 | 5.5. How do I fix up messages from broken SMTP clients? | ||
| 36 | 5.6. How do I set up qmail-qmqpd? | ||
| 37 | |||
| 38 | 6. Configuring MUAs to work with qmail | ||
| 39 | 6.1. How do I make BSD mail generate a Date with the local time zone? | ||
| 40 | 6.2. How do I make pine work with qmail? | ||
| 41 | 6.3. How do I make MH work with qmail? | ||
| 42 | 6.4. How do I stop Sun's dtcm from hanging? | ||
| 43 | |||
| 44 | 7. Managing the mail system | ||
| 45 | 7.1. How do I safely stop qmail-send? | ||
| 46 | 7.2. How do I manually run the queue? | ||
| 47 | 7.3. How do I rejuvenate a message? | ||
| 48 | 7.4. How do I organize a big network? | ||
| 49 | 7.5. How do I back up and restore the queue disk? | ||
| 50 | 7.6. How do I run a supervised copy of qmail? | ||
| 51 | 7.7. How do I avoid syslog? | ||
| 52 | |||
| 53 | 8. Miscellany | ||
| 54 | 8.1. How do I tell qmail to do more deliveries at once? | ||
| 55 | 8.2. How do I keep a copy of all incoming and outgoing mail messages? | ||
| 56 | 8.3. How do I switch slowly from sendmail to qmail? | ||
| 57 | |||
| 58 | |||
| 59 | |||
| 60 | 1. Controlling the appearance of outgoing messages | ||
| 61 | |||
| 62 | |||
| 63 | 1.1. How do I set up host masquerading? All the users on this host, | ||
| 64 | zippy.af.mil, are users on af.mil. When joe sends a message to fred, the | ||
| 65 | message should say ``From: joe@af.mil'' and ``To: fred@af.mil'', without | ||
| 66 | ``zippy'' anywhere. | ||
| 67 | |||
| 68 | Answer: echo af.mil > /var/qmail/control/defaulthost; chmod 644 | ||
| 69 | /var/qmail/control/defaulthost. | ||
| 70 | |||
| 71 | |||
| 72 | 1.2. How do I set up user masquerading? I'd like my own From lines to | ||
| 73 | show boss@af.mil rather than god@heaven.af.mil. | ||
| 74 | |||
| 75 | Answer: Add MAILHOST=af.mil and MAILUSER=boss to your environment. To | ||
| 76 | override From lines supplied by your MUA, add QMAILINJECT=f to your | ||
| 77 | environment. | ||
| 78 | |||
| 79 | |||
| 80 | 1.3. How do I set up Mail-Followup-To automatically? When I send a | ||
| 81 | message to the sos@heaven.af.mil mailing list, I'd like to include | ||
| 82 | ``Mail-Followup-To: sos@heaven.af.mil''. | ||
| 83 | |||
| 84 | Answer: Add QMAILMFTFILE=$HOME/.lists to your environment, and put | ||
| 85 | sos@heaven.af.mil into ~/.lists. | ||
| 86 | |||
| 87 | |||
| 88 | |||
| 89 | 2. Routing outgoing messages | ||
| 90 | |||
| 91 | |||
| 92 | 2.1. How do I send local messages to another host? All the mail for | ||
| 93 | af.mil should be delivered to our disk server, pokey.af.mil. I've set up | ||
| 94 | an MX from af.mil to pokey.af.mil, but when a user on the af.mil host | ||
| 95 | sends a message to boss@af.mil, af.mil tries to deliver it locally. How | ||
| 96 | do I stop that? | ||
| 97 | |||
| 98 | Answer: Remove af.mil from /var/qmail/control/locals. If qmail-send is | ||
| 99 | running, give it a HUP. Make sure the MX is set up properly before you | ||
| 100 | do this. Also make sure that pokey can receive mail for af.mil---see | ||
| 101 | question 3.1. | ||
| 102 | |||
| 103 | |||
| 104 | 2.2. How do I set up a null client? I'd like zippy.af.mil to | ||
| 105 | send all mail to bigbang.af.mil. | ||
| 106 | |||
| 107 | Answer: echo :bigbang.af.mil > /var/qmail/control/smtproutes; | ||
| 108 | chmod 644 /var/qmail/control/smtproutes. Disable local delivery as in | ||
| 109 | question 2.1. Turn off qmail-smtpd in /etc/inetd.conf. | ||
| 110 | |||
| 111 | |||
| 112 | 2.3. How do I send outgoing mail through UUCP? I need qmail to send all | ||
| 113 | outgoing mail via UUCP to my upstream UUCP site, gonzo. | ||
| 114 | |||
| 115 | Answer: Put | ||
| 116 | |||
| 117 | :alias-uucp | ||
| 118 | |||
| 119 | into control/virtualdomains and | ||
| 120 | |||
| 121 | |preline -df /usr/bin/uux - -r -gC | ||
| 122 | -a"${SENDER:-MAILER-DAEMON}" gonzo!rmail "($DEFAULT@$HOST)" | ||
| 123 | |||
| 124 | (all on one line) into ~alias/.qmail-uucp-default. (For some UUCP | ||
| 125 | software you will need to use -d instead of -df.) If qmail-send is | ||
| 126 | running, give it a HUP. | ||
| 127 | |||
| 128 | |||
| 129 | 2.4. How do I set up a separate queue for a SLIP/PPP link? | ||
| 130 | |||
| 131 | Answer: Use serialmail (http://pobox.com/~djb/serialmail.html). | ||
| 132 | |||
| 133 | |||
| 134 | 2.5. How do I deal with ``CNAME lookup failed temporarily''? The log | ||
| 135 | showed that a message was deferred for this reason. Why is qmail doing | ||
| 136 | CNAME lookups, anyway? | ||
| 137 | |||
| 138 | Answer: The SMTP standard does not permit aliased hostnames, so qmail | ||
| 139 | has to do a CNAME lookup in DNS for every recipient host. If the | ||
| 140 | relevant DNS server is down, qmail defers the message. It will try again | ||
| 141 | soon. | ||
| 142 | |||
| 143 | |||
| 144 | |||
| 145 | 3. Routing incoming messages by host | ||
| 146 | |||
| 147 | |||
| 148 | 3.1. How do I receive mail for another host name? I'd like our disk | ||
| 149 | server, pokey.af.mil, to receive mail addressed to af.mil. I've set up | ||
| 150 | an MX from af.mil to pokey.af.mil, but how do I get pokey to treat | ||
| 151 | af.mil as a name for the local host? | ||
| 152 | |||
| 153 | Answer: Add af.mil to /var/qmail/control/locals and to | ||
| 154 | /var/qmail/control/rcpthosts. If qmail-send is running, give it a HUP | ||
| 155 | (or do svc -h /var/run/qmail if qmail is supervised). | ||
| 156 | |||
| 157 | |||
| 158 | 3.2. How do I set up a virtual domain? I'd like any mail for | ||
| 159 | nowhere.mil, including root@nowhere.mil and postmaster@nowhere.mil and | ||
| 160 | so on, to be delivered to Bob. I've set up the MX already. | ||
| 161 | |||
| 162 | Answer: Put | ||
| 163 | |||
| 164 | nowhere.mil:bob | ||
| 165 | |||
| 166 | into control/virtualdomains. Add nowhere.mil to control/rcpthosts. If | ||
| 167 | qmail-send is running, give it a HUP (or do svc -h /var/run/qmail if | ||
| 168 | qmail is supervised). | ||
| 169 | |||
| 170 | Now mail for whatever@nowhere.mil will be delivered locally to | ||
| 171 | bob-whatever. Bob can set up ~bob/.qmail-default to catch all the | ||
| 172 | possible addresses, ~bob/.qmail-info to catch info@nowhere.mil, etc. | ||
| 173 | |||
| 174 | |||
| 175 | 3.3. How do I set up several virtual domains for one user? Bob wants | ||
| 176 | another virtual domain, everywhere.org, but he wants to handle | ||
| 177 | nowhere.mil users and everywhere.org users differently. How can we do | ||
| 178 | that without setting up a second account? | ||
| 179 | |||
| 180 | Answer: Put two lines into control/virtualdomains: | ||
| 181 | |||
| 182 | nowhere.mil:bob-nowhere | ||
| 183 | everywhere.org:bob-everywhere | ||
| 184 | |||
| 185 | Add nowhere.mil and everywhere.org to control/rcpthosts. If qmail-send | ||
| 186 | is running, give it a HUP (or do svc -h /var/run/qmail if qmail is | ||
| 187 | supervised). | ||
| 188 | |||
| 189 | Now Bob can set up separate .qmail-nowhere-* and everywhere-* files. He | ||
| 190 | can even set up .qmail-nowhere-default and .qmail-everywhere-default. | ||
| 191 | |||
| 192 | |||
| 193 | |||
| 194 | 4. Routing incoming messages by user | ||
| 195 | |||
| 196 | |||
| 197 | 4.1. How do I forward unrecognized usernames to another host? I'd like | ||
| 198 | to set up a LUSER_RELAY pointing at bigbang.af.mil. | ||
| 199 | |||
| 200 | Answer: Put | ||
| 201 | |||
| 202 | | forward "$LOCAL"@bigbang.af.mil | ||
| 203 | |||
| 204 | into ~alias/.qmail-default. | ||
| 205 | |||
| 206 | |||
| 207 | 4.2. How do I set up a mailing list? I'd like me-sos@my.host.name to be | ||
| 208 | forwarded to a bunch of people. | ||
| 209 | |||
| 210 | Answer: Put a list of addresses into ~me/.qmail-sos, one per line. Then | ||
| 211 | incoming mail for me-sos will be forwarded to each of those addresses. | ||
| 212 | You should also touch ~me/.qmail-sos-owner so that bounces come back to | ||
| 213 | you rather than the original sender. | ||
| 214 | |||
| 215 | Alternative: ezmlm (http://pobox.com/~djb/ezmlm.html) is a modern | ||
| 216 | mailing list manager, supporting automatic subscriptions, confirmations, | ||
| 217 | archives, fully automatic bounce handling (including warnings to | ||
| 218 | subscribers saying which messages they've missed), and more. | ||
| 219 | |||
| 220 | |||
| 221 | 4.3. How do I use majordomo with qmail? | ||
| 222 | |||
| 223 | Answer: See ftp://ftp.eyrie.org/pub/software/majordomo/mjqmail and | ||
| 224 | http://www.qmail.org for various methods. majordomo 2.0 is expected to | ||
| 225 | support qmail directly. | ||
| 226 | |||
| 227 | Beware that majordomo's lists are not crashproof. | ||
| 228 | |||
| 229 | |||
| 230 | |||
| 231 | 4.4. How do I use procmail with qmail? | ||
| 232 | |||
| 233 | Answer: Put | ||
| 234 | |||
| 235 | | preline procmail | ||
| 236 | |||
| 237 | into ~/.qmail. You'll have to use a full path for procmail unless | ||
| 238 | procmail is in the system's startup PATH. Note that procmail will try to | ||
| 239 | deliver to /var/spool/mail/$USER by default; to change this, see | ||
| 240 | INSTALL.mbox. | ||
| 241 | |||
| 242 | |||
| 243 | 4.5. How do I use elm's filter with qmail? | ||
| 244 | |||
| 245 | Answer: Put | ||
| 246 | |||
| 247 | | preline filter | ||
| 248 | |||
| 249 | into ~/.qmail. You'll have to use a full path for filter unless filter | ||
| 250 | is in the system's startup PATH. | ||
| 251 | |||
| 252 | |||
| 253 | 4.6. How do I create aliases with dots? I tried setting up | ||
| 254 | ~alias/.qmail-P.D.Q.Bach, but it doesn't do anything. | ||
| 255 | |||
| 256 | Answer: Use .qmail-p:d:q:bach. Dots are converted to colons, and | ||
| 257 | uppercase is converted to lowercase. | ||
| 258 | |||
| 259 | |||
| 260 | 4.7. How do I use sendmail's .forward files with qmail? | ||
| 261 | |||
| 262 | Answer: Install the dot-forward package | ||
| 263 | (http://pobox.com/~djb/dot-forward.html). | ||
| 264 | |||
| 265 | |||
| 266 | 4.8. How do I use sendmail's /etc/aliases with qmail? | ||
| 267 | |||
| 268 | Answer: Install the fastforward package | ||
| 269 | (http://pobox.com/~djb/fastforward.html). | ||
| 270 | |||
| 271 | |||
| 272 | 4.9. How do I make qmail defer messages during NFS or NIS outages? If | ||
| 273 | ~joe suddenly disappears, I'd like mail for joe to be deferred. | ||
| 274 | |||
| 275 | Answer: Build a qmail-users database, so that qmail no longer checks | ||
| 276 | home directories and the password database. This takes three steps. | ||
| 277 | First, put your complete user list (including local and NIS passwords) | ||
| 278 | into /var/qmail/users/passwd. Second, run | ||
| 279 | |||
| 280 | # qmail-pw2u -h < /var/qmail/users/passwd > /var/qmail/users/assign | ||
| 281 | |||
| 282 | Here -h means that every user must have a home directory; if you happen | ||
| 283 | to run qmail-pw2u during an NFS outage, it will print an error message | ||
| 284 | and stop. Third, run | ||
| 285 | |||
| 286 | # qmail-newu | ||
| 287 | |||
| 288 | Make sure to rebuild the database whenever you change your user list. | ||
| 289 | |||
| 290 | |||
| 291 | 4.10. How do I change which account controls an address? I set up | ||
| 292 | ~alias/.qmail-www, but qmail is looking at ~www/.qmail instead. | ||
| 293 | |||
| 294 | Answer: If you do | ||
| 295 | |||
| 296 | # chown root ~www | ||
| 297 | |||
| 298 | then qmail will no longer consider www to be a user; see qmail-getpw.0. | ||
| 299 | For more precise control over address assignments, see qmail-users.0. | ||
| 300 | |||
| 301 | |||
| 302 | |||
| 303 | 5. Setting up servers | ||
| 304 | |||
| 305 | |||
| 306 | 5.1. How do I run qmail-smtpd under tcpserver? inetd is barfing at high | ||
| 307 | loads, cutting off service for ten-minute stretches. I'd also like | ||
| 308 | better connection logging. | ||
| 309 | |||
| 310 | Answer: First, install the tcpserver program, part of the ucspi-tcp | ||
| 311 | package (http://pobox.com/~djb/ucspi-tcp.html). Second, remove the smtp | ||
| 312 | line from /etc/inetd.conf, and put the line | ||
| 313 | |||
| 314 | tcpserver -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd & | ||
| 315 | |||
| 316 | into your system startup files. Replace 7770 with your qmaild uid, and | ||
| 317 | replace 2108 with your nofiles gid. Don't forget the &. The change will | ||
| 318 | take effect at your next reboot. | ||
| 319 | |||
| 320 | By default, tcpserver allows at most 40 simultaneous qmail-smtpd | ||
| 321 | processes. To raise this limit to 400, use tcpserver -c 400. To keep | ||
| 322 | track of who's connecting and for how long, run (on two lines) | ||
| 323 | |||
| 324 | tcpserver -v -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd \ | ||
| 325 | 2>&1 | /var/qmail/bin/splogger smtpd 3 & | ||
| 326 | |||
| 327 | |||
| 328 | 5.2. How do I set up qmail-qmtpd? | ||
| 329 | |||
| 330 | Answer: Two steps. First, put a | ||
| 331 | |||
| 332 | qmtp 209/tcp | ||
| 333 | |||
| 334 | line into /etc/services. Second, put (all on one line) | ||
| 335 | |||
| 336 | qmtp stream tcp nowait qmaild | ||
| 337 | /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-qmtpd | ||
| 338 | |||
| 339 | into /etc/inetd.conf, and give inetd a HUP. | ||
| 340 | |||
| 341 | If you have tcpserver installed, skip the inetd step, and set up | ||
| 342 | |||
| 343 | tcpserver -u 7770 -g 2108 0 qmtp /var/qmail/bin/qmail-qmtpd & | ||
| 344 | |||
| 345 | replacing 7770 and 2108 with the qmaild uid and nofiles gid. See | ||
| 346 | question 5.1 for more details on tcpserver. | ||
| 347 | |||
| 348 | |||
| 349 | 5.3. How do I set up qmail-pop3d? My old POP server works with mbox | ||
| 350 | delivery; I'd like to switch to maildir delivery. | ||
| 351 | |||
| 352 | Answer: Four steps. First, install the checkpassword program | ||
| 353 | (http://pobox.com/~djb/checkpwd.html). Second, make sure you have a | ||
| 354 | |||
| 355 | pop3 110/tcp | ||
| 356 | |||
| 357 | line in /etc/services. Third, put (all on one line, including | ||
| 358 | qmail-popup twice) | ||
| 359 | |||
| 360 | pop3 stream tcp nowait root | ||
| 361 | /var/qmail/bin/qmail-popup qmail-popup | ||
| 362 | YOURHOST /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir | ||
| 363 | |||
| 364 | into /etc/inetd.conf, and give inetd a HUP; replace YOURHOST with your | ||
| 365 | host's fully qualified domain name. Fourth, set up Maildir delivery for | ||
| 366 | any user who wants to read mail via POP. | ||
| 367 | |||
| 368 | If you have tcpserver installed, skip the inetd step, and set up (on two | ||
| 369 | lines) | ||
| 370 | |||
| 371 | tcpserver 0 pop3 /var/qmail/bin/qmail-popup YOURHOST \ | ||
| 372 | /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & | ||
| 373 | |||
| 374 | replacing YOURHOST with your host's fully qualified domain name. See | ||
| 375 | question 5.1 for more details on tcpserver. | ||
| 376 | |||
| 377 | Security note: pop3d should be used only within a secure network; | ||
| 378 | otherwise an eavesdropper can steal passwords. | ||
| 379 | |||
| 380 | |||
| 381 | 5.4. How do I allow selected clients to use this host as a relay? I see | ||
| 382 | that qmail-smtpd rejects messages to any host not listed in | ||
| 383 | control/rcpthosts. | ||
| 384 | |||
| 385 | Answer: Three steps. First, install tcp-wrappers, available separately, | ||
| 386 | including hosts_options. Second, change your qmail-smtpd line in | ||
| 387 | inetd.conf to | ||
| 388 | |||
| 389 | smtp stream tcp nowait qmaild /usr/local/bin/tcpd | ||
| 390 | /var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd | ||
| 391 | |||
| 392 | (all on one line) and give inetd a HUP. Third, in tcpd's hosts.allow, | ||
| 393 | make a line setting the environment variable RELAYCLIENT to the empty | ||
| 394 | string for the selected clients: | ||
| 395 | |||
| 396 | tcp-env: 1.2.3.4, 1.2.3.5: setenv = RELAYCLIENT | ||
| 397 | |||
| 398 | Here 1.2.3.4 and 1.2.3.5 are the clients' IP addresses. qmail-smtpd | ||
| 399 | ignores control/rcpthosts when RELAYCLIENT is set. (It also appends | ||
| 400 | RELAYCLIENT to each envelope recipient address. See question 5.5 for an | ||
| 401 | application.) | ||
| 402 | |||
| 403 | Alternative procedure, if you are using tcpserver 0.80 or above: Create | ||
| 404 | /etc/tcp.smtp containing | ||
| 405 | |||
| 406 | 1.2.3.6:allow,RELAYCLIENT="" | ||
| 407 | 127.:allow,RELAYCLIENT="" | ||
| 408 | |||
| 409 | to allow clients with IP addresses 1.2.3.6 and 127.*. Run | ||
| 410 | |||
| 411 | tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp | ||
| 412 | |||
| 413 | Finally, insert | ||
| 414 | |||
| 415 | -x /etc/tcp.smtp.cdb | ||
| 416 | |||
| 417 | after tcpserver in your qmail-smtpd invocation. | ||
| 418 | |||
| 419 | |||
| 420 | 5.5. How do I fix up messages from broken SMTP clients? | ||
| 421 | |||
| 422 | Answer: Three steps. First, put | ||
| 423 | |||
| 424 | | bouncesaying 'Permission denied' [ "@$HOST" != "@fixme" ] | ||
| 425 | | qmail-inject -f "$SENDER" -- "$DEFAULT" | ||
| 426 | |||
| 427 | into ~alias/.qmail-fixup-default. Second, put | ||
| 428 | |||
| 429 | fixme:fixup | ||
| 430 | |||
| 431 | into /var/qmail/control/virtualdomains, and give qmail-send a HUP. | ||
| 432 | Third, follow the procedure in question 5.4, but set RELAYCLIENT to the | ||
| 433 | string ``@fixme'': | ||
| 434 | |||
| 435 | tcp-env: 1.2.3.6, 1.2.3.7: setenv = RELAYCLIENT @fixme | ||
| 436 | |||
| 437 | Here 1.2.3.6 and 1.2.3.7 are the clients' IP addresses. If you are using | ||
| 438 | tcpserver instead of inetd and tcpd, put | ||
| 439 | |||
| 440 | 1.2.3.6:allow,RELAYCLIENT="@fixme" | ||
| 441 | 1.2.3.7:allow,RELAYCLIENT="@fixme" | ||
| 442 | |||
| 443 | into /etc/tcp.smtp, and run tcprules as in question 5.4. | ||
| 444 | |||
| 445 | |||
| 446 | 5.6. How do I set up qmail-qmqpd? I'd like to allow fast queueing of | ||
| 447 | outgoing mail from authorized clients. | ||
| 448 | |||
| 449 | Answer: Make sure you have installed tcpserver 0.80 or above. Create | ||
| 450 | /etc/qmqp.tcp in tcprules format to allow connections from authorized | ||
| 451 | hosts. For example, if queueing is allowed from 1.2.3.*: | ||
| 452 | |||
| 453 | 1.2.3.:allow | ||
| 454 | :deny | ||
| 455 | |||
| 456 | Convert /etc/qmqp.tcp to /etc/qmqp.cdb: | ||
| 457 | |||
| 458 | tcprules /etc/qmqp.cdb /etc/qmqp.tmp < /etc/qmqp.tcp | ||
| 459 | |||
| 460 | Finally, set up | ||
| 461 | |||
| 462 | tcpserver -x /etc/qmqp.cdb -u 7770 -g 2108 0 628 /var/qmail/bin/qmail-qmqpd & | ||
| 463 | |||
| 464 | replacing 7770 and 2108 with the qmaild uid and nofiles gid. See | ||
| 465 | question 5.1 for more details on tcpserver. | ||
| 466 | |||
| 467 | |||
| 468 | |||
| 469 | 6. Configuring MUAs to work with qmail | ||
| 470 | |||
| 471 | |||
| 472 | 6.1. How do I make BSD mail generate a Date with the local time zone? | ||
| 473 | When I send mail, I'd rather use the local time zone than GMT, since | ||
| 474 | some MUAs don't know how to display Date in the receiver's time zone. | ||
| 475 | |||
| 476 | Answer: Put | ||
| 477 | |||
| 478 | set sendmail=/var/qmail/bin/datemail | ||
| 479 | |||
| 480 | into your .mailrc or your system-wide Mail.rc. Beware that BSD mail is | ||
| 481 | neither secure nor reliable. | ||
| 482 | |||
| 483 | |||
| 484 | 6.2. How do I make pine work with qmail? | ||
| 485 | |||
| 486 | Answer: Put | ||
| 487 | |||
| 488 | sendmail-path=/usr/lib/sendmail -oem -oi -t | ||
| 489 | |||
| 490 | into /usr/local/lib/pine.conf. (This will work with sendmail too.) | ||
| 491 | Beware that pine is neither secure nor reliable. | ||
| 492 | |||
| 493 | |||
| 494 | 6.3. How do I make MH work with qmail? | ||
| 495 | |||
| 496 | Answer: Put | ||
| 497 | |||
| 498 | postproc: /usr/mh/lib/spost | ||
| 499 | |||
| 500 | into each user's .mh_profile. (This will work with sendmail too.) Beware | ||
| 501 | that MH is neither secure nor reliable. | ||
| 502 | |||
| 503 | |||
| 504 | 6.4. How do I stop Sun's dtcm from hanging? | ||
| 505 | |||
| 506 | Answer: There is a novice programming error in dtcm, known as ``failure | ||
| 507 | to close the output side of the pipe in the child.'' Sun has, at the | ||
| 508 | time of this writing, not yet provided a patch. Sorry. | ||
| 509 | |||
| 510 | |||
| 511 | |||
| 512 | 7. Managing the mail system | ||
| 513 | |||
| 514 | |||
| 515 | 7.1. How do I safely stop qmail-send? Back when we were running | ||
| 516 | sendmail, it was always tricky to kill sendmail without risking the loss | ||
| 517 | of current deliveries; what should I do with qmail-send? | ||
| 518 | |||
| 519 | Answer: Go ahead and kill the qmail-send process. It will shut down | ||
| 520 | cleanly. Wait for ``exiting'' to show up in the log. To restart qmail, | ||
| 521 | run /var/qmail/rc the same way it is run from your system boot scripts, | ||
| 522 | with the proper PATH, resource limits, etc. | ||
| 523 | |||
| 524 | Alternative, if qmail is supervised: svc -t /var/run/qmail. The | ||
| 525 | supervise process will kill qmail, wait for it to stop, and restart it. | ||
| 526 | Use -d instead of -t if you don't want qmail to restart automatically; | ||
| 527 | to manually restart it, use -u. | ||
| 528 | |||
| 529 | |||
| 530 | 7.2. How do I manually run the queue? I'd like qmail to try delivering | ||
| 531 | all the remote messages right now. | ||
| 532 | |||
| 533 | Answer: Give the qmail-send process an ALRM. (Do svc -a /var/run/qmail | ||
| 534 | if qmail is supervised.) | ||
| 535 | |||
| 536 | You may want to run qmail-tcpok first, to guarantee that qmail-remote | ||
| 537 | will try all addresses. Normally, if an address fails repeatedly, | ||
| 538 | qmail-remote leaves it alone for an hour. | ||
| 539 | |||
| 540 | |||
| 541 | 7.3. How do I rejuvenate a message? Somebody broke into Eric's computer | ||
| 542 | again; it's going to be down for at least another two days. I know Eric | ||
| 543 | has been expecting an important message---in fact, I see it sitting here | ||
| 544 | in /var/qmail/queue/mess/15/26902. It's been in the queue for six days; | ||
| 545 | how can I make sure it isn't bounced tomorrow? | ||
| 546 | |||
| 547 | Answer: Just touch /var/qmail/queue/info/15/26902. (This is the only | ||
| 548 | form of queue modification that's safe while qmail is running.) | ||
| 549 | |||
| 550 | |||
| 551 | 7.4. How do I organize a big network? I have a lot of machines, and I | ||
| 552 | don't know where to start. | ||
| 553 | |||
| 554 | Answer: First, choose the domain name where your users will receive | ||
| 555 | mail. This is normally the shortest domain name you control. If you are | ||
| 556 | in charge of *.movie.edu, you can use addresses like joe@movie.edu. | ||
| 557 | |||
| 558 | Second, choose the machine that will know what to do with different | ||
| 559 | users at movie.edu. Set up a host name in DNS for this machine: | ||
| 560 | |||
| 561 | mailhost.movie.edu IN A 1.2.3.4 | ||
| 562 | 4.3.2.1.in-addr.arpa IN PTR mailhost.movie.edu | ||
| 563 | |||
| 564 | Here 1.2.3.4 is the IP address of that machine. | ||
| 565 | |||
| 566 | Third, make a list of machines where mail should end up. For example, if | ||
| 567 | mail for Bob should end up on Bob's workstation, put Bob's workstation | ||
| 568 | onto the list. For each of these machines, set up a host name in DNS: | ||
| 569 | |||
| 570 | bobshost.movie.edu IN A 1.2.3.7 | ||
| 571 | 7.3.2.1.in-addr.arpa IN PTR bobshost.movie.edu | ||
| 572 | |||
| 573 | Fourth, install qmail on bobshost.movie.edu. qmail will automatically | ||
| 574 | configure itself to accept messages for bob@bobshost.movie.edu and | ||
| 575 | deliver them to ~bob/Mailbox on bobshost. Do the same for the other | ||
| 576 | machines where mail should end up. | ||
| 577 | |||
| 578 | Fifth, install qmail on mailhost.movie.edu. Put | ||
| 579 | |||
| 580 | movie.edu:alias-movie | ||
| 581 | |||
| 582 | into control/virtualdomains on mailhost. Then forward bob@movie.edu to | ||
| 583 | bob@bobshost.movie.edu, by putting | ||
| 584 | |||
| 585 | bob@bobshost.movie.edu | ||
| 586 | |||
| 587 | into ~alias/.qmail-movie-bob. Do the same for other users. | ||
| 588 | |||
| 589 | Sixth, put movie.edu into control/rcpthosts on mailhost.movie.edu, so | ||
| 590 | that mailhost.movie.edu will accept messages for users at movie.edu. | ||
| 591 | |||
| 592 | Seventh, set up an MX record in DNS to deliver movie.edu messages to | ||
| 593 | mailhost: | ||
| 594 | |||
| 595 | movie.edu IN MX 10 mailhost.movie.edu | ||
| 596 | |||
| 597 | Eighth, on all your machines, put movie.edu into control/defaulthost. | ||
| 598 | |||
| 599 | |||
| 600 | 7.5. How do I back up and restore the queue disk? | ||
| 601 | |||
| 602 | Answer: You can't. | ||
| 603 | |||
| 604 | One difficulty is that you can't get a consistent snapshot of the queue | ||
| 605 | while qmail-send is running. Another difficulty is that messages in the | ||
| 606 | queue must have filenames that match their inode numbers. | ||
| 607 | |||
| 608 | However, the big problem is that backups---even twice-daily backups--- | ||
| 609 | are far too unreliable for mail. If your disk dies, there will be very | ||
| 610 | little overlap between the messages saved in the last backup and the | ||
| 611 | messages that were lost. | ||
| 612 | |||
| 613 | There are several ways to add real reliability to a mail server. Battery | ||
| 614 | backups will keep your server alive, letting you park the disk to avoid | ||
| 615 | a head crash, when the power goes out. Solid-state disks have their own | ||
| 616 | battery backups. RAID boxes let you replace dead disks without losing | ||
| 617 | any data. | ||
| 618 | |||
| 619 | |||
| 620 | 7.6. How do I run a supervised copy of qmail? svc sounds useful. | ||
| 621 | |||
| 622 | Answer: Install daemontools (http://pobox.com/~djb/daemontools.html). | ||
| 623 | Create a /var/run/qmail directory. Change | ||
| 624 | |||
| 625 | /var/qmail/rc | ||
| 626 | |||
| 627 | to | ||
| 628 | |||
| 629 | supervise /var/run/qmail /var/qmail/rc | ||
| 630 | |||
| 631 | in your boot scripts. Make sure that supervise is in the startup PATH. | ||
| 632 | Now you can use svc to stop or restart qmail, and svstat to check | ||
| 633 | whether qmail is running. | ||
| 634 | |||
| 635 | |||
| 636 | 7.7. How do I avoid syslog? It chews up a lot of CPU time and isn't | ||
| 637 | reliable. | ||
| 638 | |||
| 639 | Answer: Install daemontools (http://pobox.com/~djb/daemontools.html). | ||
| 640 | Make a /var/log/qmail directory, owned by qmaill, mode 2700. Do | ||
| 641 | |||
| 642 | qmail-start ./Mailbox /usr/local/bin/accustamp \ | ||
| 643 | | setuser qmaill /usr/local/bin/cyclog /var/log/qmail & | ||
| 644 | |||
| 645 | in /var/qmail/rc. | ||
| 646 | |||
| 647 | If you are logging tcpserver connections, make a /var/log/smtpd | ||
| 648 | directory, and use cyclog /var/log/smtpd for tcpserver. You shouldn't | ||
| 649 | run several copies of cyclog with the same log directory. | ||
| 650 | |||
| 651 | By default, cyclog keeps 10 automatically rotated log files, each | ||
| 652 | containing up to 100KB of log data. To keep 20 files with 1MB each, use | ||
| 653 | cyclog -s 1000000 -n 20. | ||
| 654 | |||
| 655 | |||
| 656 | |||
| 657 | 8. Miscellany | ||
| 658 | |||
| 659 | |||
| 660 | 8.1. How do I tell qmail to do more deliveries at once? It's running | ||
| 661 | only 20 parallel qmail-remote processes. | ||
| 662 | |||
| 663 | Answer: Decide how many deliveries you want to allow at once. Put that | ||
| 664 | number into control/concurrencyremote. Restart qmail-send as in question | ||
| 665 | 7.1. If your system has resource limits, make sure you set the | ||
| 666 | descriptors limit to at least double the concurrency plus 5; otherwise | ||
| 667 | you'll get lots of unnecessary deferrals whenever a big burst of mail | ||
| 668 | shows up. Note that qmail also imposes a compile-time concurrency limit, | ||
| 669 | 120 by default; this is set in conf-spawn. | ||
| 670 | |||
| 671 | |||
| 672 | 8.2. How do I keep a copy of all incoming and outgoing mail messages? | ||
| 673 | |||
| 674 | Answer: Set QUEUE_EXTRA to "Tlog\0" and QUEUE_EXTRALEN to 5 in extra.h. | ||
| 675 | Recompile qmail. Put ./msg-log into ~alias/.qmail-log. | ||
| 676 | |||
| 677 | You can also use QUEUE_EXTRA to, e.g., record the Message-ID of every | ||
| 678 | message: run | ||
| 679 | |||
| 680 | | awk '/^$/ { exit } /^[mM][eE][sS][sS][aA][gG][eE]-/ { print }' | ||
| 681 | |||
| 682 | from ~alias/.qmail-log. | ||
| 683 | |||
| 684 | |||
| 685 | 8.3. How do I switch slowly from sendmail to qmail? I'm thinking of | ||
| 686 | moving the heaven.af.mil network over to qmail, but first I'd like to | ||
| 687 | give my users a chance to try out qmail without affecting current | ||
| 688 | sendmail deliveries. We're using NFS. | ||
| 689 | |||
| 690 | Answer: Find a host in your network, say pc.heaven.af.mil, that isn't | ||
| 691 | running an SMTP server. (If addresses at pc.heaven.af.mil are used, you | ||
| 692 | should already have an MX pointing pc.heaven.af.mil to your mail hub.) | ||
| 693 | |||
| 694 | Set up a new MX record pointing lists.heaven.af.mil to pc.heaven.af.mil. | ||
| 695 | Install qmail on pc.heaven.af.mil. Replace pc with lists in the control | ||
| 696 | files. Make the qmail man pages available on all your machines. | ||
| 697 | |||
| 698 | Now tell your users about qmail. A user can forward joe@heaven.af.mil to | ||
| 699 | joe@lists.heaven.af.mil to get ~/Mailbox delivery; he can set up .qmail | ||
| 700 | files; he can start running his own mailing lists @lists.heaven.af.mil. | ||
| 701 | |||
| 702 | When you're ready to turn sendmail off, you can set up pc.heaven.af.mil | ||
| 703 | as your new mail hub. Add heaven.af.mil to control/locals, and change | ||
| 704 | the heaven.af.mil MX to point to pc.heaven.af.mil. Make sure you leave | ||
| 705 | lists.heaven.af.mil in control/locals so that transition addresses will | ||
| 706 | continue to work. | ||
