Johannes Berg wrote:
On Sat, 2007-09-29 at 17:03 +0200, Lars Stavholm wrote:
Well, I don't have a signature "in my hand" (when executing the dspam.c code) since i don't use it, I didn't look for it, and didn't retrieve it, so I would need another way of identifying the recipient.
Actually only setups that use virtual users need the uid-in-signature option, usually you can use the user who logged in to dovecot, I personally rely on the system user being right.
Sounds about right.
The problem is that with the dspam setup I'm using, i.e. 3.8.0, Hash driver, shared group, etc. I usually get "signature not found",
The message from my plugin? I'm guessing then there's some problem with your setup and you didn't configure dspam to put the signature into the header?
I definitely have a dspam setup problem, never got the signatures working with the hash drive.
Anyway, I don't recommend training from pristine because of the resource overhead and it being hard to guarantee the message is indeed pristine, but if it suits you I can't stop you from doing it :)
Well, the resource overhead is there, that's for sure, but I don't think it's that significant. In the beginning for a new user there will be some reclassification but in the long run, dspam misses very few spams. I've reached +99% accuracy in a few months (for a single user, myself). But, of course you're right, with signature is better.
However, I'm slowly getting there with the dspam plugin.
Input Options
The plugin input options was easy, it seems that dovecot simply puts the options line into an env variable that can be read with the getenv() call, e.g.:
dovecot.conf: ... protocol imap { mail_plugins = dspam } plugin { # dspam path ':' spam folder ':' [no]signature ':' ignore dspam = /usr/sbin/dspam:Spam:signature:Trash }
...and in the dspam plugin code I simply parse the result from getenv("DSPAM") and there's the input options.
In a future version one might add the ability to ignore more than one folder.
Processing
I've tried to setup dspam with hash drive and signatures, to no avail, I just can't get it to work, dspam does not find the signature in the storage area. Don't know why.
Does anyone have a dspam.conf you could share with me? Possibly dspam build options as well?
Another (mildly stupid maybe) question: why the fork() in the original dspam plugin? Seems to me that the fork()
- waitpid() doesn't really allow for any advantage over a simple popen() and read the output? I have a sneaky feeling that I'm missing something vital here.
Cheers /Lars