On machines with a small amount of memory (such as 3B1s and old Sun
3s), it is best to limit the size of running processes. One way to do
this is to have the sendmail program
fork(2) a copy of itself to handle each
individual queued message. The ForkEachJob option
can be used to allow those fork(2)s.
The forms of the ForkEachJob option are as follows:
O ForkEachJob=bool configuration file (V8.7 and later)
-OForkEachJob=bool command line (V8.7 and later)
define(`confSEPARATE_PROC',bool) mc configuration (V8.7 and later)
OYbool configuration file (deprecated)
-oYbool command line (deprecated)
The argument bool is of type
Boolean. If bool is
missing, the default is true (fork). The default for the
mc technique is false (don't
fork). If the entire ForkEachJob option is
missing, the default is also false (don't fork).
If the ForkEachJob option is set (true), there is
a fork(2) to start processing of the queue, then
another fork(2) to process each message in the
queue. If the ForkEachJob option is not set
(false), only the initial fork(2) takes place,
greatly improving the efficiency of a queue run. For example, a
single process (as with ForkEachJob false) retains
information about down hosts and so does not waste time trying to
connect again for subsequent mail to the same host during the current
queue run. For all modern machines the ForkEachJob
option should be false.
Note that V8.12 has further reduced the need to set this option
because V8.12 sendmail has greatly improved
memory management.
The ForkEachJob option is not safe. If specified
from the command line, it can cause sendmail to
relinquish its special privileges.