Mutt and Dspam
I've been willing to give it a serious shot for a while, but this is not the kind of software you can just plug and play with. It requires some time to learn it.
Debian has 2 versions of Mutt: the regular one, and the patched one (mutt-patched). I took the second version because it includes a sidebar that's extremely convenient to navigate between folders. So, Mutt is great. It took me half a day to come up with a satisfying configuration file (that's still evolving), but once you get past the no-ajax/no-click/no-fancy rehabilitation, it's actually pretty neat to use.
For example: you can ask Mutt to execute shell commands for within the interface. And that simplifies a lot the marking as Spam/Ham of message in Dspam. In my configuration, DSPAM is running on a remote server, so you have two solutions to interact with it:
- using the web interface
- using the dspam command line from SSH
I choose the second one, and with the following Mutt macro, you just have to press Shift+S or Shift+H to mark messages as spam/ham from the message list (index) or inside a message (pager).
# dspam macro # shift-S mark as spam, copy to spam folder and delete from current folder # shift-H mark as ham, copy to inbox folder and delete from current folder macro index,pager S "<enter-command>set wait_key=no\n<pipe-message>ssh email@example.com 'dspam --user firstname.lastname@example.org --class=spam --source=error'\n<enter-command>set wait_key=yes\n<copy-message>=Spam\ny<delete-message>" 'Message learned as Spam' macro index,pager H "<pipe-message>ssh email@example.com 'dspam --user firstname.lastname@example.org --class=innocent --source=error'\n<enter><copy-message>=.\ny<delete-message>" 'Message learned as Ham'
That, of course, requires to have set SSH key authentication from your local account to the dspam account on the remote machine. If the command works and DSPAM re-learn the message, it will log the command into /var/spool/dspam/system.log