For the next person who may end up here trying to figure out why the ms_site_not_found action isn’t firing for them — the docs don’t mention you must bind it in sunrise.php, since none of the plugins (including must-use plugins) have been initialized by the time this action is fired.
In your wp_config.php, add the define:
define( 'SUNRISE', 'on' );
In your sunrise.php file, include:
function your_function_name($current_site, $domain, $path) {
die('Site ' . $domain . ' not found.');
}
add_action('ms_site_not_found', 'your_function_name', 10, 3);
Make sure to place sunrise.php in your wp-content folder.