Author: Gedalya Date: To: exim-users CC: Askhat Tokabay Subject: Re: [exim] who starts the delivery process?
On 12/26/22 12:12, Askhat Tokabay via Exim-users wrote: > Helo
> I found in the documentation:
> Delivery processes may be started as a
> result of a message’s arrival, by a queue runner process,
> or by an administrator using the -M option.
>
> The question is the following:
> Can you tell me who starts the delivery process
> when a message arrives?
>
> Or how does the delivery process
> know that a message has arrived?
>
> Thanks in advance for your reply.
First a few key facts:
1. There is only one Exim binary
2. Exim typically has one or two daemons running, if two then one
listens on SMTP port(s) and the other only launches queue runners
periodically.
3. Since there is only one binary, all exim processes are the same
binary executed with different command-line options and sometimes as
different users.
Starting a delivery process simply means exim starts a new exim process
with the relevant command-line options. For local deliveries, the
delivery process will also change to the user ID of the recipient. The
process does the delivery and then exits.
When an SMTP connection comes in, exim forks rather soon. We now have a
process handling that SMTP connection. Once a message has arrived, and
it's time to attempt a delivery, that process will start the delivery
process, not by just forking but by executing a new exim process, to
allow for changing privileges.
Only the daemons are long-running. All other processes are started for a
certain task and they exit when it is done.