maildrop + bogofilter: error writing to filter
Jonathan Kamens
jik at kamens.us
Sat Jun 15 13:01:29 CEST 2013
On 06/15/2013 06:44 AM, Christian Ebert wrote:
> Hi,
>
> I tried my luck at the courier-maildrop list
> http://sourceforge.net/mailarchive/forum.php?thread_name=20130613110855.GB753%40krille.blacktrash.org&forum_name=courier-maildrop
> but was basically referred to bogofilter. So here goes:
>
> After an upgrade to Mac OS 10.8.4 (64bit) from 10.5.8 (32bit) I
> get the following error for _some_ messages:
>
> temporary failure.
> Command output: maildrop: error writing to filter.
> /usr/local/bin/maildrop: Unable to filter message.
>
> The offending rule is rather bog standard:
> xfilter "/usr/local/bin/bogofilter -u -e -p"
>
> Trying the bogofilter suspect on an offending message however
> seems to cause no problems:
>
> $ bogofilter -u -e -p < testbogomsg 1>/dev/null
> $ echo $?
> 0
You're doing two things wrong here: (1) you're not calling bogofilter
the same way maildrop does; and (2) you're throwing away the information
that would be most likely to tell you what's going wrong. Let's take
these one at a time...
(1) Maildrop isn't giving connecting bogofilter's stdin to a file on
disk. Rather, it is connecting bogofilter's stdin to one end of a pipe,
and it's writing the email message into the other end of the pipe so
that bogofilter can read it. If you are trying to test what's going
wrong with maildrop and bogofilter, you need to do the same thing.
Something like this:
cat testbogomsg | bogofilter -u -e -p 1>/dev/null
(2) Maildrop is telling you that bogofilter is exiting before reading
all data from the pipe. One way you can confirm that is if you see "cat:
Broken pipe" or something like that when you run the command immediately
above, which will tell you that cat ran into the same problem as
maildrop. But even if that doesn't happen, you can find out if
bogofilter is reading the whole message by checking to see if if
/prints/ the whole message on its output, and you can't do that if you
throw the output away as shown above. Try this instead:
cat testbogomsg | bogofilter -u -e -p >| bogoout
diff testbogomsg bogoout
If the "cat" command prints an error, or if testbogomsg differs from
bogoout aside from the added X-Bogosity line, then you have managed to
reproduce the issue that maildrop is seeing, and we can debug further
from there. If not, then we're going to have to get more creative in our
debugging efforts.
By the way, the people on the other mailing list from which you sought
help told you the same thing about checking the output:
> |You should look at what bogofilter is printing, for the offending
> |messages. It can't be the original message, if bogofilter isn't even
> |reading it. Perhaps looking at bogofilter's output, for the message,
> |will provide more clues.
Does this happen consistently for the same email message. I.e., if
there's a particular email message that triggers this problem, does it
happen every time maildrop tries to deliver that message?
jik
More information about the Bogofilter
mailing list