nicm / fdm

fdm source code
269 stars 50 forks source link

Question: How does fdm behave with a pipe action when the right side of the pipe fails? #138

Open Binarus opened 11 months ago

Binarus commented 11 months ago

Dear all,

as the title say: How does fdm behave if the right side of a pipe fails in a pipe action? This question is best explained by an example:

Lets say fdm is configured to fetch new messages via pop3s and delete the messages at the source afterwards, and to deliver these messages to an IMAP server via a pipe action using a dedicated MDA, like so:

account "user1" pop3s server "pop.example.com" user "popuser1" pass "ultrasecret"
action "deliver" pipe "/usr/sbin/cyrdeliver imapuser1"
match all action "deliver"

From the above, you may have noticed that we are using Cyrus imapd which includes cyrdeliver, an appropriate MDA.

What would happen if /usr/bin/cyrdeliver would fail and exit with non-zero exit code (e.g., because the backend IMAP server is not running, there are problems with the permissions, etc.)?

Would fdm still delete the respective messages at their source (in this case, they would be lost), or does it honor the exit codes of the right-hand side of the pipe, keeping (i.e., not deleting) the messages at their source in case of delivery problems?

This question may be silly, but I couldn't find the answer in the manual. Therefore I thought I'd better ask.

Thank you very much in advance,

Binarus