Have a blank where you can enter a list of keywords for a message. Have a CGI query that filters messages based on keywords. On the front page, a list of canned queries in lieu of fora, and a form where you can construct a custom query.
Within the query response page, have a button to add the query to the user's profile. When the user is logged in, his custom queries appear on the front page along with the canned queries.
A New Message button on the query response page fills in the keywords field of the new message with the query. Editable, of course. But it's a handy default.
How to prevent excessive crossposting? For starters, keep the keywords blank shortish. Also, on the CGI processing, throw out any keywords beyond N count.
Any message with a blank keywords field winds up in the Open Forum.