How to determine if a "[something] fighter" fights for or against [something]?
Solution 1:
The safe way to interpret this sort of thing, especially if the label is self-applied, is to assume the most positive possible connotation: fighting against something bad, or for something good. If someone chooses to label themselves or their product as a spam fighter, then since spam is an undesirable thing, you should assume that they will be fighting against spam.
Edit to address the follow-up: If you want to be unambiguously understood, it's best to avoid the use of this sort of phrase and spell out exactly what you mean. I think most people would assume that "spam fighter" is someone who fights against spam, while "spammer" is someone who creates spam and probably also fights (in secret, when possible) for the right to continue to do so; but if you want to be absolutely clear about it, you'll need to go ahead and say "fighter against the relentless onslaught of spam e-mails" or "crusader for the right to send unlimited amounts of spam e-mail".
With the other phrases you mention ("education fighter", "religion fighter", "culture fighter"), there really is no way to determine whether someone is fighting for it or against it without context. In the US, school-based education about various aspects of sex continues to be a very controversial topic, but there's no way to tell if someone who calls themselves a "sex-education fighter" is pro-Sex-Education or anti-Sex-Education based solely on that label. (My personal inclination would be to favor the "fighter against X" interpretation in general, but I wouldn't rely on that.)