I've got some wonderful new rules that would help classify mail messages! How do I contribute them to Apache SpamAssassin?

Ideally you will have tested your rules against your own sets of spam and non-spam messages to be sure they do a good job of identifying messages correctly. Rules don't need to be 100% accurate, but rules should be at least 95% accurate.

Not checking the rules against non-spam is a very bad idea; we've often found that rules that seemed like a great idea, accidentally hit a lot of non-spam in ways we hadn't foreseen.

Next, you should join the spamassassin-users mailing list (if you're not already a member), and post the test rules to that list, and ask others to check against their corpora. List members often will also suggest improvements to the tests.

Most importantly, you should create a new "bug" entry with the suggested rules in the SpamAssassin bugzilla. This will ensure that the developers will actually see the rules (while the developers participate in the list, it's easy for these suggestions to get lost in the noise). You should attach 1 or more sample spam messages (with all headers intact, please!) as attachments, too, so we can see an example of what the rule is intended to catch.

From that point on, the SpamAssassin developers handle things. They may ask you some questions or request a contributor license agreement if the contribution requires it, and hopefully, your new rules will be added to the source code repository for testing, and if they work well, are likely to be included in future released versions.

If your rules don't get added to the default SpamAssassin set, it may be useful to add them to CustomRulesets.