At  7PM +0400 on 17/05/13 you (Anes Mukhametov) wrote:
> Hello!
> 
> I've tried to use extprograms pipe feature but stuck with "Broken pipe"
> errors in mail log:
> 
> May 17 15:18:57 backend1 dovecot: lmtp(20338, [email protected]): Debug:
> 3VMVFWFKllFyTwAArRg8UA: sieve: action pipe: running program: learn
> May 17 15:18:57 backend1 dovecot: script: Error: write(response) failed:
> Broken pipe

I suspect that what's happening here is that your script isn't reading
the whole mail. However, that pipe that's broken is (I think) the socket
from the script service back to the master service, so I don't quite
understand how that could happen.

> May 17 15:18:57 backend1 dovecot: lmtp(20338, [email protected]):
> 3VMVFWFKllFyTwAArRg8UA: sieve: execution of script
> /data/mail/storage/domain/[email protected]/.dovecot.sieve;name=main script
> failed, but implicit keep was successful (user logfile
> /data/mail/storage/domain/[email protected]/.dovecot.sieve.log should reveal
> additional details)
> 
> /data/mail/storage/domain/[email protected]/.dovecot.sieve.log:
> error: msgid=<[email protected]>: pipe action:
> failed to pipe message to program `learn': refer to server log for more
> information. [2013-05-17 15:18:57] ham [email protected] 50796.

Mmm, recursively-referential error logs. Always fun...

> spam.sh is message processing script which interacts with spamassassin.
> I've tested pipe with spam.sh that redirects stdin to /dev/null and returns
> 0 but errors were logged anyway.

Well, you shouldn't do that: redirecting stdin from /dev/null in a shell
script will close the incoming pipe, which means you won't read the mail
at all and sieve will get upset. What you need to do instead (if you've
got data to read and nothing to do with it) is 'cat >/dev/null', which
will read it all and throw it away.

> Note that spam.sh runs, getting the message from sieve and processing it to
> spamassassin without a problem, but "broken pipe" is being logged.

Hmm. Are you sure your real script is exitting with 0? spamc in learn
mode exits 5 or 6 depending on whether the mail was already learned or
not.

Ben

Reply via email to