I'm not exactly sure what the problem is but from what I can tell, the bayes training is working for everything except
your READ messages in your 'learn spam' folder for the user in question.
Is there something different at all with that folder?
Attached are some screenshots from my domain. The first one is a screenshot of the ham & spam learning folders as seen in Horde. The second is of those folders as seen in cPanel's file manager. These are for my "backup" user where I have all emails forwarded to for bayes training.
"New" (unread) messages are stored in the "new" subfolder under learn_spam and read messages are stored in the "cur" subfolder under learn_spam. This is done automatically by the server.
Do your folders somewhat match mine? If you are still not having any luck, you can try pasting a copy of your salearning.cgi script (though you may want to change the domain name for privacy) and/or mail folder lists.
Another possibility is that perhaps your bayes database has somehow gotten corrupted. It is rare but can happen. One thing you could try is slightly changing the names of the bayes database files. This way, SpamAssassin will think they don't exist and should try to create new ones. This will allow you to see if having new bayes database files fixes the problem. If it works then problem solved (although you will lose what it has already learned and will need to re-learn them if you still have them). If it doesn't fix the problem then you can delete the newer files and restore the original filenames on the old files.Bayes files (located in the .spamassassin folder at the root of your domain):
(Just add a 1 or something after the original filenames to fool SpamAssassin into thinking they are missing so it will create new ones.)
I guess I'll leave it at this for now. It sounds like everything else is working, so that is good to hear. Hopefully I can help fix the problem for you. I wonder if you went through and marked all of your spam to learn as UNREAD, then ran the CGI script, would there be no errors? Or would it then give you errors on the next folder it processes (unread messages in the learn spam folder)? Just curious.