Short version: exim has an option to retry delivery when notmuch insert fails

Long version:

I'm using maildrop and 'notmuch insert' to sort and tag my incoming mail.
Sometimes 'notmuch insert' isn't able to write to the notmuch index because
another process is holding the notmuch write lock. At first when this happened
exim would just bounce the message.

I could use the '--keep' option so 'notmuch insert' would write the message to
the maildir, but not index it. It would later be picked up by running 'notmuch
new' from cron. The problem is that the initial tagging is defined in the
maildrop config. I would need to specify my tagging rules in two different

For me, a better approach would be if the undeliverable message could be added
to a queue, ready for another delivery attempt. I realised that this is exactly
what an MTA like exim is designed to do. I added the 'temp_errors = 1' option
to the maildrop pipe transport, this tells exim that delivery errors are
temporary and it should retry failed deliveries.

I'm sharing this information in case other people find it useful.

Here is the complete maildrop pipe transport from my exim4.conf:

  driver = pipe
  path = "/bin:/usr/bin:/usr/local/bin"
  command = "/usr/bin/maildrop"
  temp_errors = 1
  message_prefix =
  message_suffix =
  log_defer_output = true


Reply via email to