User can self-register unless email is on a blacklist
No need to add any custom code as your requirement is just to allow visitors to register by themselves but you want to block them for log in till the administer won't approve them, if this the scenario then just go to the following URL:

/admin/config/people/accounts

or you can navigate through Admin Menu:

configuration >> People >> Account Settings 

Here you can find section "Registration and Cancellation" under which you can find:

Who can register accounts?
Select:
Visitors, but administrator approval is required

Note: You can also set "Require e-mail verification when a visitor creates an account", if you required e-mail verification too.

For validation whether the email is in your blocked List or not you can validate it by writing your own custom validation function using:

function hook_form_alter(&amp;$form, &amp;$form_state, $form_id){

if($form_id == 'user_register_form'){

  $form['#validate'][] = 'your_validate_func_handler';


}

} 

function your_validate_func_handler(&amp;$form, &amp;$form_state){

// here is your code to compare


}

Note: "hook" will be replaced from your custom module name. 

Hope this will help you.