Any user can delete their own posts on the MSDN forums.  The “Delete Post” option exists for moderators just to the right of the “Edit Post” link.  Messages that are off-topic, inappropriate, or add no value to the forum should be deleted. 

Keep in mind again that the goals of this community are to help solve user’s problems where users defined as both the set of people who actually post and the users who will be searching from Visual Studio, MSN, Google, etc.

Every deleted message should include a reason, and that reason should consist of a concise description of why the post was inappropriate. 
Valid Reasons to Delete a Post

  • Spam – Should be deleted outright.  Responding to a question with a link to a product that resolves the question is okay, but watch out for posters who overuse this technique.  If you see a particular user abusing this privilege, contact the other moderators about it with links to the offending posts.
  • Posts that leverage the forums as part of a spamming spree – If a user is leveraging the forum system in anyway for spamming purposes to draw unneeded attention to themselves the post should be deleted and the user warned.  An example would be someone who posts a topic them spams blog comments to redirect users to the forum topic that was, likely, spam itself. 
  • Duplicates – Messages that are duplicated across several forums (or the same forum) should be deleted.  Use your judgment to ensure that original post is placed in the most appropriate forum. Today the software will attempt to detect duplicate posts, but persistent users will still make changes and cross post in several forums. This is akin to spamming and only makes the job of the answerers all that much harder. 
  • Non-English Posts – Posts that are not in English should be moved to the appropriate foreign language forum (if one exists). 
  • Incomprehensible – Posts that are, in your opinion, too poorly written to be understood should be deleted with a request for clarification and rewording.  Similarly, posts that do not provide any details to help in answering the user’s question should be similarly rejected with a request for more information.
  • User Abuse - If the poster is being abusive of other users, just delete the post explaining this reason.  Moderators should not show any toleration to user abuse.
  • Broken Threads With No Value - If a user posts a question that requires answers to follow-up questions from the community in order to properly answer and the person who asked the question does not provide the follow-up for 30 days then the posts should be removed and the issue considered closed.  They can always repost thier question. 

Comments suggestions appreciated. Update: Keep in mind this is all about the MSDN forums and not my blog. I have a different set of standards I use for moderating my blog.