At some point I might document my current e-mail setup, but for now, here's
the bit that caused plenty of frustration on Friday. Many howtos for postfix
and dspam will tell you that if you embed user IDs in the signature with
PgSQLUIDInSignature on
(or the MySQL equivalent, you can do something like
this for retraining, and set it up to receive spam@example.com:
# master.cf
dspamretrain unix - n n - 10 pipe
flags=R user=dspam argv=/usr/bin/dspam --user dspam
--class=${nexthop} --source=error
# mailbox_transport map
spam dspamretrain:spam
notspam dspamretrain:innocent
in which --user dspam
names an arbitrary user (dspam will extract the uid
from the signature and switch from "dspam" to the correct user, but the
command line argument is still required, for no particular reason).
I said it named an arbitrary user, but actually that's a lie. The things to be careful of are:
- the dspam user must be listed in your database (e.g. in dspam_virtual_uids for postgres users with the default setup)
- if you're running dspam in opt-in mode, dspam must have opted in (so create /var/spool/dspam/opt-in/local/dspam.dspam)
Having failed at both of those, my retrain address wasn't working, and sadness ensued.