My original message didn't make it through moderation yet, but I ended up finding the solution on this list by accident.

tip: use -odf when calling exim from a systemd oneshot service
https://lists.exim.org/lurker/message/20220614.201406.278f227f.en.html

Sorry for the inconvenience. Since I did not expect systemd to be the culprit here, this thread didn't come up when I looked into the problem. I came across it now by just browsing the list.

What ends up happening is that systemd terminates an exim4 process. This amazingly also solves a different issue I was looking at completely unrelated to Exim. To at least provide some value here, the argument required for s-nail is -S mta-arguments="-odf".

Thanks to **Ian Kelling for the hint.

On 06.07.22 16:49, Kim-Alexander Brodowski wrote:
Hello fellow postmasters,

I'm experiencing a weird issue I hope somebody here can help me make sense of.

Background:

We're using a small bash script, see below, to inform us when certain systemd units fail. This is essentially because stuff runs in the background and not everyone interested in the results of these tasks can work with a terminal.

    #!/bin/bash
    if [ "$#" -ne 2 ]
    then
      echo "Usage: $(basename "$0") RECIPIENT UNIT" 1>&2
      exit 1
    fi

    . /usr/lib/iserv/cfg

    echo "Sending status report of $2 to $1 ..."

    HOSTNAME="$(hostname)"
    HOSTNAME="${HOSTNAME:-localhost}"
    MAIL_DOMAIN="${Domain:-$HOSTNAME}"
    MAIL="root@${MAIL_DOMAIN}"

    s-nail --batch-mode -s "$2" -r "$MAIL" -C "X-IServ-systemd-Unit: $2" -. "$1" <<ERRMAIL

    $(systemctl status -n 0 --full "$2")

    $(journalctl -u "$2" --since "$(systemctl show "$2" --property ExecMainStartTimestamp --value)")

    This message was automatically generated by $0 on $HOSTNAME.
    ERRMAIL

    #sleep 10

If anyone is interested in the corresponding unit file and config for other units, I can provide those as well, but I don't think they provide additional context here.

When this script is called interactively, emails generated are pretty much instantly delivered to Cyrus, our MDA. When the script is called by systemd, the mail instead is queued for some time by exim4 and eventually delivered. This is where our problem lies: We prefer instantaneous delivery in this instance.

s-nail sends its mail using sendmail, which on our platform of choice, Debian Bullseye, is part of the exim4-daemon-heavy package.

I've traced s-nails call to sendmail and there is no difference in arguments when being called interactively. The problem appears to be somewhere on Exim's side.

I've enabled debug logging, but looking at the output, I don't see anything of particular interest. I've attached an excerpt.

Now to the oddity justifying the odd subject: In the script above, there is a sleep statement commented out. This shouldn't really do anything, except for increasing the runtime of the bash script. However, uncommenting that actually makes email delivery instantaneous again. Yeah ... It almost seems like exim4 somehow speeds things up if the calling process sticks around for some time. Maybe it feels it's being ... pressured?

Joking aside, I've looked at stuff like queue_only_load, but I don't think these options are to blame here.

Maybe somebody has an idea of what is going wrong here. Thanks in advance. We love Exim ;)

--
Kind regards,
Kim Brodowski

Telefon: +49 531 38821-01
Fax: +49 531-38821-999
E-Mail: i...@iserv.eu
Internet: https://iserv.de

Zentrale: IServ GmbH, Bültenweg 73, 38106 Braunschweig

Niederlassungen:
IServ GmbH, Girardetstr. 6, 45131 Essen
IServ GmbH, Fanningerstraße 13, 10365 Berlin

USt-IdNr. DE265149425 | Amtsgericht Braunschweig | HRB 201822
Geschäftsführer: Benjamin Heindl, Martin Hüppe, Jörg Ludwig
Grundsätze zum Datenschutz: https://iserv.de/privacy

IServ - aus der Schule für die Schule


--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to