In the end I had to hack this out to make sure no one could do it any longer.
After line 38 of "wp-comments-post.php" add this:
// get list of user (display) names for blog
global $wpdb;
$valid_users = (array)$wpdb->get_results("
SELECT display_name, user_email FROM " . $wpdb->prefix . "users");
// get ID of logged in user (if there is one)
global $userdata;
get_currentuserinfo();
$logged_in_name = $userdata->ID;
$logged_in_email = $userdata->user_email;
// see if the comment author matches an existing author
$found_match = FALSE;
foreach ($valid_users as $va) {
if (trim($va->display_name) != '') {
if (strtolower($va->display_name) == strtolower($comment_author)) {
$found_match = TRUE;
break;
}
}
if (trim($va->user_email) != '') {
if (strtolower($va->user_email) == strtolower($comment_author_email)) {
$found_match = TRUE;
break;
}
}
}
// if commenter is not logged in, but match was found, block the comment
if (trim($logged_in_name) == '') {
if ($found_match == TRUE) {
wp_die( __('You cannot post using the name or email of a registered author.') );
}
}
You can add in your own way of doing the error message.
@ClaytonJames - don't be so naive, it's rather easy to get hold of blog posters email addresses, particularly in the open social worldwide web.