My last post was speculative and wrong (my original one contained mistakes too). The summary question is this:
A post to the mailing list passes through Amavis/Spamassassin on the mail server that feeds posts into Mailman. On the - different - mail server that delivers the message to my inbox (I'm a member of the list), it passes through another instance of Amavis/Spamassassin. So why do I only see one set of X-Spam-* headers - those added by the latter mail server?
It turns out that there is a setting in Amavis called $remove_existing_spam_headers, and by default it is set to 1. It means: "remove existing spam headers if spam scanning is enabled (default)". That default setting on the latter mail server explains the absence of the previous set X-Spam-* headers.
As expected, when I switch this setting to 0, Amavis stops removing Spam headers. If I then send a new post to the list, I can see in the email that drops in my inbox all the Spam headers that were added along the way, and not just those added by the final mail server.
Thanks Mark for taking the time to respond.
Kind regards Stephen