Buenos días, por limitaciones de Recaptcha gratuito en su última actualización, optamos por instalar el plugin de Cloudflare en la página de registro y en los formularios. Sin embargo, algo falla porque se siguen registrando o consultando e-mails de spam con direcciones que no existen y a los cuales el sistema no puede enviar respuesta. Nos aparecen notificaciones del tipo:
Delivery Status Notification (Failure)
No se ha encontrado la dirección
Tu mensaje no se ha entregado a oxxxxxxx8@mail.ru porque no se ha encontrado la dirección o esta no puede recibir correo.
Saludos y gracias por la ayuda
Contenido solo visible a usuarios registrados
Hola Alceste
El código que te pase es PHP y estaría bien según lo que comentas.
Solo entro ese correo ? los demás los paro ?
Sustituye el código anterior por el siguiente:
// Bloquear TODOS los Gmail/Hotmail spam rusos/chinos
add_filter('registration_errors', function($errors, $sanitized_login, $user_email) {
$user_email = strtolower($user_email);
$local_part = explode('@', $user_email)[0]; // parte antes del @
// 1. Más de 3 puntos en total o 2 puntos seguidos
if (substr_count($local_part, '.') >= 4 || preg_match('/\.{2,}/', $local_part)) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}
// 2. Más de 22 caracteres antes del @
if (strlen($local_part) > 22) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}
// 3. Alternancia de consonante-vocal o patrones típicos rusos
if (preg_match('/([bcdfghjklmnpqrstvwxyz][aeiouy])\2{2,}/i', $local_part) ||
preg_match('/(^[a-z]{1,3}\.){3,}/', $local_part)) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}
// 4. Palabras spam (más amplias)
$spam_words = ['love','sex','fuck','xxx','porn','hot','girl','boy','sexy','cum','dick','pussy','mail','temp','test','spam','shit','ass','cock','tits','fuck','bitch','slut','russian','mattenly','shlubely','triuko','stiff'];
foreach ($spam_words as $word) {
if (strpos($local_part, $word) !== false) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}
}
return $errors;
}, 10, 3);
Un saludo