Mailing List Archive

No immediate delivery for emails locally submitted in systemd unit
Hello,

I have a very strange behaviour on my exim servers (debian 11, version
4.94.2). I have systemd timers and units which send email in case of
error. When email is submitted this way, it is placed on the exim queue
without being immediately delivered and waits the next queue run as
specifed with the -q option (default 30 min). When I run the same submit
command from a shell, the mail is delivered immediately as expected.

The systemd unit configuration is the following :

ExecStopPost=-/bin/bash -c 'if [ "$EXIT_STATUS" != "0" ]; then mail -s
"ERROR executing arch-build" "$MAILTO" <<<"SYSTEMD status \n
Service_result: $SERVICE_RESULT \n Exit_code(systemd): $EXIT_CODE \n
Exit_status(proc exit code): $EXIT_STATUS\n`journalctl --no-pager -n 100
-u arch-build.service`"; fi'

When the unit stops, this option runs a shell script which checks the
service status and submits mail with a simple 'mail' command when
failed. Email is placed in the queue waiting as the exim logs show:

2023-08-24 11:38:32 1qZCTf-00A5Gx-Ns <= root@*****.edibox.ca U=root
P=local S=9329
2023-08-24 11:43:12 Start queue run: pid=2403642
2023-08-24 11:43:13 1qZCTf-00A5Gx-Ns => charles.leclerc@edibox.ca
R=smarthost T=remote_smtp_smarthost H=*****.edibox.ca [172.25.1.2] K
C="250- 9017 byte chunk, total 9445\\n250 OK id=1qZCUL-0049vY-2h"
2023-08-24 11:43:13 1qZCTf-00A5Gx-Ns Completed
2023-08-24 11:43:13 End queue run: pid=2403642

When using the very same 'mail' command from a remote shell (or from a
shell script), the logs are :

2023-08-24 12:50:34 1qZDXW-00A7Y6-H1 <= root@*****.edibox.ca U=root
P=local S=417
2023-08-24 12:50:35 1qZDXW-00A7Y6-H1 => charles.leclerc@edibox.ca
R=smarthost T=remote_smtp_smarthost H=*****.corp.edibox.ca [172.25.1.2]
K C="250- 432 byte chunk, total 432\\n250 OK id=1qZDXW-004EGB-Sp"
2023-08-24 12:50:35 1qZDXW-00A7Y6-H1 Completed

I've tried looking in the configuration but didn't find anything. Why
would delivering of identical, locally submitted emails, differ ?

Thanks for your answers,

Charles Leclerc
Edibox Inc.

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
Ahoj,

D?a Thu, 24 Aug 2023 19:46:50 +0200 Charles Leclerc via Exim-users
<exim-users@lists.exim.org> napĂ­sal:

> I've tried looking in the configuration but didn't find anything. Why
> would delivering of identical, locally submitted emails, differ ?

I will guess only, but exim is forking transport process for delivery,
but that is not liked by systemd (in really i read from its author,
that he consider forking as bad). By that, systemd kill all remaining
processes after/when unit stops (and do not wait for forked processes)
by default.

You have several options:

+ use forking type unit (not appropriate in all cases)
+ disable kill in unit (not very good idea)
+ setup sendwait in mailx (not with bsd-mailx)
+ use exim directly with -odf
+ use cron for repeated tasks

For timers (repeated tasks) requiring mails i usually use cron (as i
use bsd-mailx, without sendwait suport). While systemd has a lot of
useful features (as init system), the lack of simple notification in it
is its big minus.

regards

--
Slavko
https://www.slavino.sk
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
On 2023-09-01 Slavko via Exim-users <exim-users@lists.exim.org> wrote:
[...]
> You have several options:

> + use forking type unit (not appropriate in all cases)
> + disable kill in unit (not very good idea)
> + setup sendwait in mailx (not with bsd-mailx)
> + use exim directly with -odf
> + use cron for repeated tasks

+ Inject the messages via SMTP, e.g. with swaks.

cu Andreas
--
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
On 2023-09-01, Andreas Metzler via Exim-users <exim-users@lists.exim.org> wrote:
> On 2023-09-01 Slavko via Exim-users <exim-users@lists.exim.org> wrote:
> [...]
>> You have several options:
>
>> + use forking type unit (not appropriate in all cases)
>> + disable kill in unit (not very good idea)
>> + setup sendwait in mailx (not with bsd-mailx)
>> + use exim directly with -odf
>> + use cron for repeated tasks
>
> + Inject the messages via SMTP, e.g. with swaks.

yes, or "nullmailer" which is a /usr/bin/sendmail replacement.
you might have to install from source as the debian nullmailer package
conflicts with exim (because the both provide sendmail)

--
Jasen.
???????? ????? ???????

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
On 02/09/2023 03:16, Jasen Betts via Exim-users wrote:
> On 2023-09-01, Andreas Metzler via Exim-users <exim-users@lists.exim.org> wrote:
>> On 2023-09-01 Slavko via Exim-users <exim-users@lists.exim.org> wrote:
>> [...]
>>> You have several options:
>>
>>> + use forking type unit (not appropriate in all cases)
>>> + disable kill in unit (not very good idea)
>>> + setup sendwait in mailx (not with bsd-mailx)
>>> + use exim directly with -odf
>>> + use cron for repeated tasks
>>
>> + Inject the messages via SMTP, e.g. with swaks.
>
> yes, or "nullmailer" which is a /usr/bin/sendmail replacement.
> you might have to install from source as the debian nullmailer package
> conflicts with exim (because the both provide sendmail)

Kinda pointless having to use a different mailer if your system
already has Exim (which can use -odf to get around this systemd
stupidity).

--
Cheers,
Jeremy


--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
On 2023-09-02 14:34, Jeremy Harris wrote:
> On 02/09/2023 03:16, Jasen Betts via Exim-users wrote:
> > On 2023-09-01, Andreas Metzler via Exim-users <exim-users@???> wrote:
> >> On 2023-09-01 Slavko via Exim-users <exim-users@???> wrote:
> >> [...]
> >>> You have several options:
> >>
> >>> + use forking type unit (not appropriate in all cases)
> >>> + disable kill in unit (not very good idea)
> >>> + setup sendwait in mailx (not with bsd-mailx)
> >>> + use exim directly with -odf
> >>> + use cron for repeated tasks
> >>
> >> + Inject the messages via SMTP, e.g. with swaks.
> >
> > yes, or "nullmailer" which is a /usr/bin/sendmail replacement.
> > you might have to install from source as the debian nullmailer package
> > conflicts with exim (because the both provide sendmail)
>
> Kinda pointless having to use a different mailer if your system
> already has Exim (which can use -odf to get around this systemd
> stupidity).
I agree, it's a litlle sad to use a different mailer (but efficient
nevertheless). I went with the exim direct call with -odf option and it worked
like a charm.

Thanks a lot for your help !

Charles Leclerc
Edibox Inc.



--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
Re: No immediate delivery for emails locally submitted in systemd unit [ In reply to ]
On Tue, Sep 12, 2023 at 10:24:30AM +0200, Charles Leclerc via Exim-users wrote:

> > Kinda pointless having to use a different mailer if your system
> > already has Exim (which can use -odf to get around this systemd
> > stupidity).

> I agree, it's a litlle sad to use a different mailer (but efficient
> nevertheless). I went with the exim direct call with -odf option and
> it worked like a charm.

Sad maybe, but not always pointless. If another program does the
submission job, exim can be not-world-executable.

--
Ian

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@lists.exim.org
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/