I just changed the files; qmail-send
is still running with the old files.
Answer:
Find the qmail-send
process and give it a HUP signal. Alternatively, if
qmail is supervised ---see question
How do I run a supervised copy of qmail?:
svc -h /service/qmail
You can instead restart qmail ---see answer to
How do I safely stop qmail-send?. qmail-send
will read the new files when it
starts up.
qmail-send
?
Back when we were running sendmail
, it was always tricky to kill
sendmail
without risking the loss of current deliveries; what should
I do with qmail-send
?
Answer:
Find the qmail-send
process and give it a TERM signal. It will shut
down cleanly after current deliveries stop. 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.
Alternatively, if qmail is supervised ---see question How do I run a supervised copy of qmail?:
svc -t /service/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
restart it, use -u
.
I'd like qmail to try delivering all the remote messages right now.
Answer:
Find the qmail-send
process an ALRM. Alternatively, if qmail is
supervised ---see
How do I run a supervised copy of qmail?:
svc -a /service/qmail
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.
svc
sounds useful.
Answer:
Install daemontools
version 0.60
or above (
http://pobox.com/~djb/daemontools.html
.) Make sure that
supervise
is in the system startup PATH
. Create a
/service/qmail
directory:
mkdir /service/qmail
ln -s /var/qmail/rc /service/qmail/run
Change
/var/qmail/rc
to
supervise /service/qmail
in your boot scripts. Now you can use svc
to stop or restart qmail, and
svstat
to check whether qmail is running.
syslog
?
It chews up a lot of CPU time and throws away log entries under high loads.
Answer:
Install daemontools 0.60
or above (
http://pobox.com/~djb/daemontools.html
.) Make a
/var/log/qmail
directory, owned by qmaill, mode 2700
.
Replace
splogger qmail
in /var/qmail/rc
with
multilog t /var/log/qmail
Make sure that multilog
is in the system startup PATH
.
By default, multilog
keeps 10 automatically rotated log files, each
containing up to 100KB of log data. To keep 20 files with 1MB each, use
multilog t s1000000 n20 /var/log/qmail
.
If you are logging tcpserver
connections, make a /var/log/smtpd
directory, and use multilog /var/log/smtpd
for tcpserver
. Don't
run two simultaneous multilog
processes with the same log directory.
Somebody broke into Eric's computer again; it's going to be down for at least
another two days. I know Eric has been expecting an important message ---in
fact, I see it sitting here in /var/qmail/queue/mess/15/26902
. It's
been in the queue for six days; how can I make sure it isn't bounced tomorrow?
Answer:
Simply
touch /var/qmail/queue/info/15/26902.
This is the only form of queue modification that's safe while qmail is running.
Set QUEUE_EXTRA
to "Tlog\0
" and
QUEUE_EXTRALEN
to 5
in extra.h
. Recompile qmail. Put
./msg-log
into ~alias/.qmail-log
.
You can also use QUEUE_EXTRA
to, e.g., record the Message-ID
of every message: run
| awk '/^$/ { exit } /^[mM][eE][sS][sS][aA][gG][eE]-/ { print }'
from ~alias/.qmail-log
.