Mailfilter POP timestamp in message-ID invalid and potentially also causes mailfilter to stall at 100% CPU (blocking ?).
I have a fetchmail daemon that call mailfilter as a postconnect (defined in the .fetchmailrc file). I got the following error message,
mailfilter: Examining 297 message(s).
mailfilter: Error: POP timestamp in message-ID invalid. mailfilter: Error: Parsing the header of message 292 failed. mailfilter: Error: Scanning of mail account failed. mailfilter: Error: Skipping account xxxxxx@example.com@mail.example.com due to earlier errors.
and I noticed that the mailfilter process was running at 100% CPU though that may be unrelated.
I found that mailfilter 0.8.3 has a new option of -i to ignore POP timestamp. This is probably what I want to make this more stable.
As I’m adding this to a Parallels based server it is unlikely to have this version of mailfilter as this package has very little development activity as it is a stable application so I had to build from from source.
My server didn’t have svn so I browsed the Sourceforge svn for mailfilter on my local PC and at the bottom there is a linkfor “Download GNU tarball” I copied that link and then pasted into my console and used wget to get this latest tarball from Sourceforge. It has a odd name so moved that to a tar.gz file name e.g. mv index.html\?view\=tar mailfilter.0.8.3.tar.gz and then ran tar xvfz mailfilter.0.8.3.tar.gz
Perquisite packages for building,
- g++
- bison
- flex
- libssl-dev
There may be more but that is the ones I needed to add to my server.
Making this you cd to the mailfilter directory and then run
./autogen.sh make sudo make install
If that works then this’ll probably install the mailfilter to /usr/local/bin/mailfilter so now in the .fetchmailrc change the postconnect line to have,
postconnect ''/usr/local/bin/mailfilter -i ''
use double quotes if you pass the new -i option to ignore timestamps. The -i is a new feature in Mailfilter 0.8.3 (not in 0.8.2).
Killall the mailfilter and fetchmail and then re-launch your fetchmail daemon.
Errors
Missing g++
If you see,
checking whether the C++ compiler works... no configure: error: in `/root/sources/mailfilter': configure: error: C++ compiler cannot create executables See `config.log' for more details.
Then check the log file and look for g++ line e.g.
configure:2879: checking for g++ configure:2909: result: no
Do a g++ and if it comes back with -bash: g++: command not found then install the g++ package and then it will work. Re-run the ./autogen.sh and then make
Missing bison
If you get the make fail and you can see /bin/sh: yacc: command not found then you need a YACC of some kind. I installed bison re-run the ./autogen.sh and then make
Missing flex
If you get an error in the make e.g. it crashes out with g++: rcfile.cc: No such file or directory
g++: no input files make[2]: *** [rcfile.o] Error 1
then check back and see if you see error: FlexLexer.h: No such file or directory . If so then check flex is installed. Install and then re-run ./autogen.sh and then make
Missing openssl header files
If you see openssl/ssl.h: No such file or directory and similar openssl/rand.h: No such file or directory then you need to install libssl-dev. Install that package and then re-run ./autogen.sh and then make.

