UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias...

542
UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias Matemáticas y Físicas Carrera de Ingeniería en Sistemas Computacionales “Appliance Antispam” PROYECTO DE TESIS DE GRADO 6TO CURSO DE GRADUACIÓN Previo a la Obtención del Título de: INGENIERO EN SISTEMAS COMPUTACIONALES Autores: ALCÌVAR VILLAMAR GEORGE HUMBERTO PINARGOTE SAVINIEN FREDDY JOHANN TOALA MOSQUERA DAVID LEONEL GUAYAQUIL – ECUADOR Año: 2009

Transcript of UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias...

Page 1: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en Sistemas Computacionales

“Appliance Antispam”

PROYECTO DE TESIS DE GRADO

6TO CURSO DE GRADUACIÓN

Previo a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autores:

ALCÌVAR VILLAMAR GEORGE HUMBERTO

PINARGOTE SAVINIEN FREDDY JOHANN

TOALA MOSQUERA DAVID LEONEL

GUAYAQUIL – ECUADOR

Año: 2009

Page 2: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

II

AGRADECIMIENTO

Agradezco a todas las personas que me

brindaron su apoyo, para lograr culminar

este sueño. Entre ellos mis padres, mis

amigos y catedráticos que impartieron sus

conocimientos.

Alcívar Villamar George Humberto

Page 3: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

III

AGRADECIMIENTO

Agradezco a mis padres, por el apoyo

incondional que me brindaron a lo largo de

la carrera. A mis profesores y compañeros,

que por medio de las enseñanzas,

investigaciones y discusiones, me hicieron

crecer en conocimiento y madurar como

persona.

Pinargote Savinien Freddy Johann

Page 4: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

IV

AGRADECIMIENTO

En agradecimiento a la Universidad Estatal

de Guayaquil, Facultad de Ciencias Físicas

y Matemáticas, en especial a su Carrera de

Ingeniería en Sistemas Computacionales,

por haberme forjado para ser un

profesional competente, listo para afrontar

los desafíos laborales y profesionales.

Toala Mosquera David Leonel

Page 5: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

V

DEDICATORIA

Dedico todo este trabajo a mi padre a mis

hermanos que los quiero tanto, y a mi

querida madre Piedad Villamar.

Alcívar Villamar George Humberto

Page 6: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VI

DEDICATORIA

Dedico este trabajo a mi equipo del

proyecto de grado y a todas aquellas

personas quienes buscan usar la ciencia

en pos de ayudar a los demás.

Pinargote Savinien Freddy Johann

Page 7: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VII

DEDICATORIA

Este trabajo esta dedicado a mis padres

por haberme ensañado que la

perseverancia es la clave del éxito, que el

esfuerzo constante nos convierte día a día

en mejores seres humanos, capaces de

enfrentar la vida con valentía

Toala Mosquera David Leonel

Page 8: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VIII

TRIBUNAL DE GRADUACIÓN

Presidente del Tribunal Primer Vocal

Segundo Vocal Secretario

Page 9: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

IX

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicación de la misma”.

(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas

Computacionales, Art. 26).

___________________________ ____________________________

George Humberto Alcívar Villamar Pinargote Savinien Freddy Johann

C.I: 0913524831 C.I: 0911170991

_____________________________

Toala Mosquera David Leonel

C.I: 0923179980

Page 10: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

X

RESUMEN

Bizshield (Appliance AntiSpam) es un sistema experto, que tiene como

objetivo, identificar el correo electrónico spam. El sistema experto dispone de

una interfaz de usuario Web, donde el experto en el tema de spam, configura

las heurísticas de detección de correo electrónico spam. Las heurísticas se

configuran mediante una expresión lógica, a manera de regla que evalúan las

variables del correo electrónico en búsqueda de casuísticas de spam,

además, configura acciones (rechazar correos, quitar archivos adjuntos,

poner en cuarentena, alertas en el contenido etc.) a ejecutarse para mitigar el

daño que puede causar el spam. Bizshield viene con una configuración por

defecto para la detección de spam.

Page 11: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XI

ÍNDICE GENERAL

AGRADECIMIENTO .................................................................................................................II

DEDICATORIA .........................................................................................................................v

TRIBUNAL DE GRADUACIÓN............................................................................................ VIII

DECLARACIÓN EXPRESA ................................................................................................... IX

RESUMEN ............................................................................................................................... X

INDICE GENERAL ................................................................................................................. XI

CAPÍTULO 1 ............................................................................................................................1PLANIFICACIÓN DEL PROYECTO ........................................................................................11.1 Visión.................................................................................................................................1

1.2 Misión................................................................................................................................ 2

1.3 Análisis FODA ................................................................................................................... 2

1.4 Factibilidad ........................................................................................................................ 31.4.1 De Producirlo ................................................................................................................... 31.4.2 De Comercializarlo.......................................................................................................... 3

1.5 Ámbito del proyecto. ........................................................................................................ 3

1.6 Ventajas O Beneficios ...................................................................................................... 41.6.1 Ventajas Del Proyecto...................................................................................................... 41.6.2 Ventajas Para la empresa................................................................................................ 4

1.7 Definición de un Spam. .................................................................................................... 4

1.8 Antecedentes y definición del problema ........................................................................ 6

1.9 Solución Propuesta ........................................................................................................ 111.9.1 Gestión centralizada ...................................................................................................... 121.9.2 Fácil de Usar .................................................................................................................. 131.9.3 Inversión Baja ................................................................................................................ 131.9.4 Alta flexibilidad ............................................................................................................... 14

1.10 Diagrama........................................................................................................................ 14

1.11 Objetivos del proyecto. ................................................................................................ 151.11.1 Objetivos Generales..................................................................................................... 151.11.2 Objetivos específicos. .................................................................................................. 15

Page 12: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XII

1.12 Alcance del proyecto. ................................................................................................... 16

1.13 Recursos necesarios para el proyecto. ..................................................................... 171.13.1 Recurso Humano ......................................................................................................... 171.13.2 Recurso Hardware ....................................................................................................... 171.13.3 Recurso Software DEL PROYECTO ........................................................................... 19

1.14 Cronograma................................................................................................................... 21

1.15 Metodología .................................................................................................................. 22

CAPÍTULO 2 ..........................................................................................................................23ANÁLISIS DEL SISTEMA ......................................................................................................23

2.1 Levantamiento de Información..................................................................................... 232.1.1 Encuesta ........................................................................................................................ 25

2.2 Análisis de Requerimientos........................................................................................... 282.2.1 Servicio Antispam (BIZSHIELD SERVICE) ................................................................... 322.2.2 Aplicación Web Administrador Antispam (BIZSHIELD WEB ADMINISTRATOR)......... 32

2.3 ROLES DEL SISTEMA..................................................................................................... 332.3.1 Administrador ................................................................................................................. 332.3.2 Usuario........................................................................................................................... 34

2.4 ANÁLISIS DE DATOS...................................................................................................... 342.4.1 EMPRESA...................................................................................................................... 342.4.2 ROL................................................................................................................................ 342.4.3 USUARIO....................................................................................................................... 342.4.4 USUARIO_ROL ............................................................................................................. 352.4.5 ACCIÓN ......................................................................................................................... 352.4.6 COMPONENTE_OPERADOR_REGLA ........................................................................ 352.4.7 COMPONENTE_OPERANDO_CONJUNTO ................................................................ 362.4.8 COMPONENTE_OPERANDO_CONSTANTE .............................................................. 362.4.9 COMPONENTE_OPERANDO_REGLA ........................................................................ 362.4.10 COMPONENTE_OPERANDO_VARIABLE................................................................. 372.4.11 COMPONENTE_REGLA ............................................................................................. 372.4.12 CORREO ..................................................................................................................... 372.4.13 DATO_EJECUCION_PROCESO ................................................................................ 372.4.14 EJECUCION_ACCION ................................................................................................ 382.4.15 EJECUCION_PROCESO ............................................................................................ 382.4.16 ELEMENTO_CONJUNTO ........................................................................................... 382.4.17 EVALUACION_REGLA................................................................................................ 382.4.18 OPERADOR................................................................................................................. 392.4.19 PARAMETRO_ACCION .............................................................................................. 392.4.20 PARAMETRO_TIPO_ACCION.................................................................................... 392.4.21 PROCESO ................................................................................................................... 402.4.22 REGLA ......................................................................................................................... 402.4.23 REGLA_ACCION ......................................................................................................... 402.4.24 REGLA_PROCESO..................................................................................................... 412.4.25 SISTEMA ..................................................................................................................... 412.4.26 SUBSISTEMA .............................................................................................................. 41

Page 13: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XIII

2.4.27 SUBTIPO_DATO ......................................................................................................... 412.4.28 TIPO_ACCION............................................................................................................. 412.4.29 TIPO_ACCION_INCONSISTENTE ............................................................................. 422.4.30 TIPO_DATO................................................................................................................. 422.4.31 TIPO_OPERADOR ...................................................................................................... 422.4.32 VARIABLE.................................................................................................................... 422.4.33 VARIABLE_PROCESO................................................................................................ 43

2.5 CASOS DE USO............................................................................................................... 43

2.6 DIAGRAMA DE FLUJO ANTISPAM................................................................................ 48

CAPÍTULO 3...........................................................................................................................523. DISEÑO DEL SISTEMA .....................................................................................................52

3.1 ARQUITECTURA COMPUTACIONAL ............................................................................ 53

3.2 DISEÑO DE DATOS......................................................................................................... 54

3.3 DIAGRAMA ENTIDAD – RELACIÓN .............................................................................. 54

3.4 ARQUITECTURA GENERAL DE SOFTWARE ............................................................... 703.4.1 CONSIDERACIONES PARA EL MODELO ................................................................... 723.4.2 CONSIDERACIONES PARA EL CONTROLADOR ...................................................... 733.4.3 CONSIDERACIONES PARA LA VISTA ........................................................................ 74

3.5 ARQUITECTURA ESPECÍFICA DE SOFTWARE DEL SUB-SISTEMA BizShield WebAdministrator......................................................................................................................... 753.5.1 CAPA CLIENTE WEB.................................................................................................... 753.5.2 CAPA WEB .................................................................................................................... 76

3.6 ARQUITECTURA ESPECÍFICA DE SOFWTARE DEL SUB-SISTEMA BizShieldService.................................................................................................................................... 783.6.1 Arranque y Parada del Servicio ..................................................................................... 793.6.2 Atención a peticiones SMTP......................................................................................... 813.6.3 Procesamiento de Correos ............................................................................................ 83

3.7 ARQUITECTURA ESPECÍFICA DE SOFWTARE DEL SUB-SISTEMA BIZSHIELDLOGIC AND PERSISTENCES ............................................................................................... 853.7.1 Business Object ............................................................................................................. 86

CAPÍTULO 4...........................................................................................................................904. CODIFICACIÓN (DISEÑO A NIVEL DE COMPONENTES) ..............................................90

4.1 ESTANDARES DE CODIFICACIÓN................................................................................ 90

4.2 Consideraciones Generales........................................................................................... 91

4.3 Convenciones De Nombrado......................................................................................... 914.3.1 Definición de término CamelCase ................................................................................. 92

Page 14: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XIV

Inicio Tabla 41. Covenciones de nombrado. ...................................................................... 934.3.2 Sentencias ..................................................................................................................... 954.3.3 Espacios en blanco ..................................................................................................... 102

4.4 DETALLES DE LOS PROCESOS Y COMPONENTES DEL SISTEMA BIZSHIELD .. 104

4.5 DETALLES de CODIFICACIÓN DEL SUBSISTEMA BIZSHIELD SERVICE .............. 1064.5.1 Arranque del Subsistema Bizshield Service. ............................................................... 1074.5.2 Proceso de atención de peticiones SMTP. .................................................................. 1114.5.3 Procesamiento de Correos. ........................................................................................ 1144.5.4 Monitoreo de Cambios de Reglas............................................................................... 1194.5.5 Monitoreo para actualizaciones automática de las Reglas.......................................... 121

4.6 DETALLES DE CODIFICACIÓN DE LOS COMPONENTES DEL SUBSISTEMABIZSHIELD LOGIC AND PERSISTENCE ........................................................................... 1244.6.1 Clases BO .................................................................................................................... 1244.6.2 Clases DAO. ................................................................................................................ 1284.6.3 Clases Persistentes. .................................................................................................... 134

4.7 DETALLES de CODIFICACIÓN DE LOS COMPONENTES DEL SUBSISTEMABIZSHIELD WEB ADMINISTRATOR .................................................................................. 1404.7.1 Introducción a JavaServer Faces ................................................................................ 1404.7.2 Managed Beans .......................................................................................................... 1424.7.3 Páginas JSF................................................................................................................ 1594.7.4 El archivo de configuración faces-config.xml.............................................................. 1664.7.5 Archivo faces-config.xml de Bizshield Web Administrator.......................................... 168

CAPÍTULO 5.........................................................................................................................1725. PRUEBAS.........................................................................................................................172

5.1 Infraestructura Local. ................................................................................................... 172

5.2 Infraestructura De Prueba En Internet ....................................................................... 1755.3 Pruebas Unitarias e Integrales........................................................................................ 1765.3.1 Pruebas Unitarias......................................................................................................... 1775.3.2 Pruebas Funcionales e Integrales .............................................................................. 1805.3.2.1 Pruebas Funcionales e Integrales Bizshield Web Administrator .............................. 180

5.3.2.3 Prueba De Correo Entrante.............................................................................. 202Información registrada en la base de datos.......................................................................... 211Figura 55. Caso de Prueba 6: Información registrada en la base de datos ......................... 213Figura 56. Caso de Prueba 6: Correo Encolado con Id Correo 13....................................... 214

5.3.2.2 Prueba De Correo Saliente.................................................................................... 215

CAPÍTULO 6.........................................................................................................................2286. RECOMENDACIONES Y CONCLUSIONES ...................................................................228

6.1 Recomendaciones ........................................................................................................ 228

Page 15: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XV

ÍNDICE DE FIGURAS

FIGURA 1. DIAGRAMA DE ESTRUCTURA DONDE FUNCIONARÁ EL BIZSHIELD............................. 14

FIGURA 2. CRONOGRAMA DEL PROYECTO ANTISPAM. .............................................................. 21

FIGURA 3. DIAGRAMA GENERAL DE CASOS DE USO DEL SISTEMA.............................................. 43

FIGURA 4. DIAGRAMA DE FLUJO ANTISPAM. ............................................................................. 49

FIGURA 5. ESQUEMA GENERAL DE FUNCIONAMIENTO DEL APPLIANCE ANTISPAM..................... 54

FIGURA 6. MVC ..................................................................................................................... 71

FIGURA 7. ARQUITECTURA SUB-SISTEMA DE ADMINISTRACIÓN ANTISPAM ................................... 75

FIGURA 8. DIAGRAMA DE SECUENCIA DE ARRANQUE Y PARADA DE BIZSHIELD SERVICE. ............. 78

FIGURA 9. DIAGRAMA DE SECUENCIA DE ATENCIÓN A PETICIONES SMTP Y ALMACENAMIENTO EN

LA COLA DE CORREOS......................................................................................................... 81

FIGURA 10. DIAGRAMA PARA RECUPERAN LOS CORREOS DE LA COLA Y SE COMIENZAN A

PROCESAR PARA DETERMINAR SI SON CORREO SPAM O NO................................................. 83

FIGURA 11. DIAGRAMA DE AMBIENTE DE PRUEBAS LOCAL ...................................................... 173

FIGURA 12. INFRAESTRUCTURA DE PRUEBA EN INTERNET. ...................................................... 175

FIGURA 13. EJECUCIÓN DE LAS PRUEBAS UNITARIAS DE LOS CALCULADORES DE VARIABLES. ... 179

FIGURA 14. CASO DE USO: CREACIÓN DE REGLA SIN INGRESAR CAMPOS OBLIGATORIOS .......... 181

FIGURA 15. CASO DE USO: EDICIÓN DE REGLA....................................................................... 182

FIGURA 16. CASO DE USO: CREACIÓN DE REGLA UTILIZANDO LAS VARIABLES

DIRECCIONES_DESTINOS, DOMINIO_REMITENTE, DOMINIO_REMITENTE_VALIDO ................... 184

FIGURA 17 . CASO DE USO: CREACIÓN DE REGLA UTILIZANDO LAS VARIABLES

ESTA_SMTP_TO_IGUAL_MIME_TO, ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS,

EXTENCIONES_ARCHIVOS_ADJUNTOS................................................................................ 185

FIGURA 18 . CASO DE USO: REGLA UTILIZANDO LAS VARIABLES IP_ORIGEN,

JUEGOS_CARACTERES, MIME_FROM...................................................................... 186

Page 16: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XVI

FIGURA 19. CASO DE USO: CREACIÓN DE REGLA UTILIZANDO LAS VARIABLES

NOMBRES_ARCHIVOS_ADJUNTOS, NUMERO_DESTINATARIOS, SUBJECT....... 187

FIGURA 20. CASO DE USO: EN EL MÓDULO DE CONFIGURACIÓN DE REGLA, OPCIÓN DE EDICIÓN DE

REGLA, SE INTENTA EDITAR UNA REGLA EXISTENTE............................................................. 188

FIGURA 21. CASO DE USO: SE INTENTA CONSULTAR UNA REGLA EXISTENTE ............................ 189

FIGURA 22.CASO DE USO: ELIMINACIÓN DE REGLA CASO DE USO: CONFIGURACIÓN DE ACCIONES

....................................................................................................................................... 190

FIGURA 23. CASO DE USO: CREACIÓN DE ACCIÓN SIN INGRESAR TODOS LOS PARAMETROS...... 191

FIGURA 24. CASO DE USO: CREACIÓN DE ACCIÓN UTILIZANDO UN NOMBRE YA EXISTENTE ....... 192

FIGURA 25. CASO DE USO: CREACIÓN DE ACCIÓN DE TIPO ACEPTAR CORREO .................. 193

FIGURA 26. CASO DE USO: EN EL MÓDULO DE CONFIGURACIÓN DE ACCIÓN, OPCIÓN DE EDICIÓN

DE ACCIÓN, SE INTENTA EDITAR UNA ACCIÓN EXISTENTE..................................................... 194

FIGURA 27. CASO DE USO SE INTENTA CONSULTAR UNA ACCIÓN EXISTENTE ............................ 195

FIGURA 28. CASO DE USO: EN EL MÓDULO DE CONFIGURACIÓN DE ACCIÓN, OPCIÓN DE

ELIMINACIÓN DE ACCIÓN, SE INTENTA ELIMINAR UNA ACCIÓN EXISTENTE SE INTENTA CONSULTAR

UNA ACCIÓN EXISTENTE .................................................................................................... 196

FIGURA 29. CASO DE USO: CREACIÓN DE USUARIO SIN INGRESAR CAMPOS OBLIGATORIOS ...... 197

FIGURA 30. CASO DE USO: CREACIÓN DE USUARIO MENSAJE DE USUARIO EXIXTENTE. ............ 198

FIGURA 31. CASO DE USO: SE INTENTA EDITAR UN USUARIO EXISTENTE .................................. 199

FIGURA 32. CASO DE USO: SE INTENTA CONSULTAR UN USUARIO EXISTENTE........................... 200

FIGURA 33. CASO DE USO SE INTENTA ELIMINAR UN USUARIO EXISTENTE. ............................... 201

FIGURA 34. CASO DE PRUEBA 1: SUBJECT SOSPECHOSO EN CORREO ENTRANTE ................. 202

FIGURA 35. CASO DE PRUEBA 1: VARIABLES CALCULADAS ..................................................... 203

FIGURA 36. CASO DE PRUEBA 1: CORREO ENCOLADO CON ID CORREO 4 ............................... 203

FIGURA 37. CASO DE PRUEBA 1: RESULTADO DE LA EVALUACIÓN DE REGLAS......................... 204

FIGURA 38. CASO DE PRUEBA 2: BODY SOSPECHOSO EN CORREO ENTRANTE ........................ 204

FIGURA 39. CASO DE PRUEBA 2: BODY SOSPECHOSO EN CORREO ENTRANTE ........................ 205

Page 17: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XVII

FIGURA 40. CASO DE PRUEBA 2: CORREO ENCOLADO CON ID CORREO 3 ............................... 205

FIGURA 41. CASO DE PRUEBA 2: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 206

FIGURA 42. CASO DE PRUEBA 3: FROM SOSPECHOSO ........................................................... 206

FIGURA 43. CASO DE PRUEBA 3: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ................ 207

FIGURA 44. CASO DE PRUEBA 3: CORREO ENCOLADO CON ID CORREO 5 ............................... 207

FIGURA 45. CASO DE PRUEBA 3: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 208

FIGURA 46. CASO DE PRUEBA 4: SMTP FROM SOSPECHOSO. .............................................. 208

FIGURA 47. CASO DE PRUEBA 4: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ............... 209

FIGURA 48. CASO DE PRUEBA 4: CORREO ENCOLADO CON ID CORREO 8 ............................... 209

FIGURA 49. CASO DE PRUEBA 4: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 210

FIGURA 50. CASO DE PRUEBA 5: LENGUAJE INVÁLIDO............................................................ 210

FIGURA 51. CASO DE PRUEBA 5: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ................ 211

FIGURA 52. CASO DE PRUEBA 5: CORREO ENCOLADO CON ID CORREO 12 ............................. 211

FIGURA 53. CASO DE PRUEBA 5: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 212

FIGURA 54. CASO DE PRUEBA 5: MAIL DE RESPUESTA........................................................... 212

FIGURA 55. CASO DE PRUEBA 6: JUEGO DE CARACTERES INVÁLIDO ....................................... 213

FIGURA 56. CASO DE PRUEBA 6: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 214

FIGURA 57. CASO DE PRUEBA 6: RESULTADO DE EVALUACIÓN DE REGLAS ............................. 215

FIGURA 58. CASO 1: SUBJECT SOSPECHOSO EN CORREO SALIENTE ....................................... 215

FIGURA 59. CASO 1: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS .................................. 216

FIGURA 60. CASO 1: CORREO ENCOLADO CON ID 6 ............................................................... 216

FIGURA 61. CASO 1: CORREO ENCOLADO CON ID 6 ............................................................... 217

FIGURA 62. CASO 2: PRUEBA DE BODY SOSPECHOSO ........................................................... 217

FIGURA 63. CASO 2: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS .................................. 218

FIGURA 64. CASO 2: CORREO ENCOLADO CON ID 16.............................................................. 218

FIGURA 65. CASO 2: RESULTADO DE EVALUACIÓN................................................................. 219

FIGURA 66. CASO DE PRUEBA 3: LENGUAJE INVÁLIDO............................................................ 220

Page 18: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XVIII

FIGURA 67. ENVIO DE CORREO CON LENGUAJE INVALIDO........................................................ 221

FIGURA 68. CASO DE PRUEBA 3: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ................ 221

FIGURA 69. CASO DE PRUEBA 3: CORREO ENCOLADO CON ID 17 ........................................... 222

FIGURA 70. CASO DE PRUEBA 3: RESULTADO DE EVALUACIÓN............................................... 222

FIGURA 71. CASO DE PRUEBA 3: CORREO DE RESPUESTA ..................................................... 223

FIGURA 72. CASO DE PRUEBA 4: DOMINIO REMITENTE INVALIDO............................................. 223

FIGURA 73. CASO DE PRUEBA 4: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ................ 224

FIGURA 74. CASO DE PRUEBA 4: CORREO ENCOLADO CON ID 25 ........................................... 224

FIGURA 75. CASO DE PRUEBA 4: RESULTADOS DE EVALUACIÓN ............................................. 225

FIGURA 76. CASO DE PRUEBA 5: ARCHIVOS ADJUNTOS SOSPECHOSO EN CORREO SALIENTE ... 225

FIGURA 77. CASO DE PRUEBA 5: INFORMACIÓN REGISTRADA EN LA BASE DE DATOS ................ 226

FIGURA 78. CASO DE PRUEBA 5: CORREO ENCOLADO CON ID 81 ........................................... 226

FIGURA 79. CASO DE PRUEBA 5: RESULTADO DE EVALUACION............................................... 227

FIGURA 80. CASO DE PRUEBA 5: CORREO CON INFORMACIÓN DE ARCHIVOS PELIGROSOS ....... 227

Page 19: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XIX

ÍNDICE DE TABLAS

TABLA 1. SISTEMAS OPERATIVOS............................................................................................... 19

TABLA 2. SERVICIOS UTILIZADOS EN EL ANTISPAM. .................................................................... 19

TABLA 3. CONFIGURACIÓN DE REGLAS....................................................................................... 44

TABLA 4. CONFIGURACIÓN DE ACCIONES. .................................................................................. 45

TABLA 5. GESTION DE USUARIOS. .............................................................................................. 46

TABLA 6. REPORTE DE CORREOS ANALIZADOS. .......................................................................... 47

TABLA 7. REPORTE DE REGLAS EVALUADAS. .............................................................................. 48

TABLA 8. AS_EMPRESA......................................................................................................... 55

TABLA 9. AS_ROL ................................................................................................................... 55

TABLA 10. AS_USUARIO ........................................................................................................ 56

TABLA 11. AS_USUARIO_ROL............................................................................................... 56

TABLA 12. DT_ACCION .......................................................................................................... 57

TABLA 13. DT_COMPONENTE_OPERADOR_REGLA ......................................................... 57

TABLA 14. DT_COMPONENTE_OPERADOR_REGLA ......................................................... 57

TABLA 15. DT_COMPONENTE_OPERANDO_CONSTANTE ............................................... 58

TABLA 16. DT_COMPONENTE_OPERANDO_REGLA ......................................................... 58

TABLA 17. DT_COMPONENTE_OPERANDO_VARIABLE .................................................... 58

TABLA 18. DT_COMPONENTE_REGLA ................................................................................ 59

TABLA 19. DT_CORREO......................................................................................................... 59

TABLA 20. DT_DATO_EJECUCION_PROCESO ................................................................... 60

TABLA 21. DT_EJECUCION_ACCION ................................................................................... 60

TABLA 22. DT_EJECUCION_PROCESO ............................................................................... 61

TABLA 23. DT_ELEMENTO_CONJUNTO .............................................................................. 61

TABLA 24. DT_EVALUACION_REGLA................................................................................... 62

Page 20: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XX

TABLA 25. DT_OPERADOR.................................................................................................... 62

TABLA 26. DT_PARAMETRO_ACCION ................................................................................. 63

TABLA 27. DT_PARAMETRO_TIPO_ACCION ....................................................................... 63

TABLA 28. DT_PROCESO...................................................................................................... 64

TABLA 29. DT_REGLA ............................................................................................................ 64

TABLA 30. DT_REGLA_ACCION ............................................................................................ 65

TABLA 31. DT_REGLA_PROCESO ........................................................................................ 66

TABLA 32. DT_SISTEMA......................................................................................................... 66

TABLA 33. DT_SUBSISTEMA ................................................................................................. 67

TABLA 34. DT_SUBTIPO_DATO............................................................................................. 67

TABLA 35. DT_TIPO_ACCION................................................................................................ 68

TABLA 36. DT_TIPO_ACCION_INCONSISTENTE................................................................. 68

TABLA 37. DT_TIPO_DATO.................................................................................................... 69

TABLA 38. DT_TIPO_OPERADOR ......................................................................................... 69

TABLA 39. DT_VARIABLE....................................................................................................... 69

TABLA 40. DT_VARIABLE_PROCESO................................................................................... 70

FIN TABLA 41. COVENCIONES DE NOMBRADO.............................................................................. 95

TABLA 42. PROCESOS Y COMPONENTES DEL SISTEMA BIZSHIELD............................................... 106

TABLA 43. CASO DE USO: CONFIGURACIÓN DE REGLAS ............................................................. 180

Page 21: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

CAPÍTULO 1

PLANIFICACIÓN DEL PROYECTO

1.1 Visión

Proporcionar una solución antispam de

calidad, flexible, que se adapte

rápidamente a las cambiantes casuísticas

y tácticas de detección de spam.

Page 22: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

2

1.2 Misión

Destacarse en el mercado, diferenciándose de las demás soluciones

antispam, aplicando de sistemas expertos en la lucha contra el correo spam.

1.3 Análisis FODA

Fortalezas

Experiencia en el desarrollo de sistemas.

Oportunidades

En costo podemos competir con respecto a los otros productos

antispam del mercado, ya que la mayoría de estos poseen un elevado

precio.

Debilidades

Conocimientos básicos de redes.

Amenazas

Otras empresas proveedoras de soluciones antispam que ya están

posicionadas en el mercado y que tienen productos funcionalmente

maduros.

Page 23: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

3

1.4 Factibilidad

1.4.1 De Producirlo

Este proyecto se encuentra factible de realizar en razón de las herramientas

de desarrollo que se utilizan y el personal de desarrollo capacitado para

llevar a cabo esta labor.

1.4.2 De Comercializarlo

Hay grandes posibilidades de a nivel empresarial el poder vender este

sistema para la protección de ataques al servidor de correo y de todas sus

cuentas.

1.5 Ámbito del proyecto.

El ámbito en el que se va a desarrollar nuestro proyecto es empresarial ya

que se va a integrar con el correo entrante y saliente de la empresa. En

general nos referiremos al (Spam) como un tipo de correo basura el cual

llena o satura el servidor de correo.

Page 24: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

4

1.6 Ventajas O Beneficios

1.6.1 Ventajas Del Proyecto

La programación como es realizada en JAVA, que es un lenguaje OO

(orientado a objetos). Tiene la particularidad de ser muy portable por lo cual

se puede instalar en cualquier sistema operativo.

1.6.2 Ventajas Para la empresa

Realizando una inversión inicial, la empresa se verá beneficiada, con ahorro

de tiempo en resolver problemas causados por este tipo de correo ya que

por lo general hacen que se invierta más dinero en resolver estos problemas.

Se ahorra en tiempo invertido por el personal en resolver esta afectación,

pudiendo dedicarse al negocio o labor que realmente se desea realizar de

una manera mas rápida y eficaz. Por lo tanto el Ahorro de dinero en la

empresa está bien fundamentado.

1.7 Definición de un Spam.

Se llama spam, correo basura o sms basura a los mensajes no solicitados,

habitualmente de tipo publicitario, enviados en grandes cantidades (incluso

Page 25: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

5

masivas) que perjudican de alguna o varias maneras al receptor. La acción

de enviar dichos mensajes se denomina spamming.

Aunque se puede hacer por distintas vías, la más utilizada entre el público en

general, es la basada en el correo electrónico. Otras tecnologías de internet,

que han sido objeto de correo basura incluyen grupos de noticias, usenet,

motores de búsqueda, wikis, foros, blogs, también a través, de popups y todo

tipo de imágenes y textos en la web. El correo basura, también puede tener

como objetivo los teléfonos móviles (a través de mensajes de texto) y los

sistemas de mensajería instantánea como por ejemplo Outlook, Lotus Notes,

etc.

El correo basura mediante el servicio de correo electrónico nació el 5 de

marzo de 1994. Este día una firma de abogados, Canter and Siegel, publica

en Usenet un mensaje de anuncio de su firma legal; el día después de la

publicación, facturó cerca de 10.000 dólares por casos de sus amigos y

lectores de la red. Desde ese entonces, el marketing mediante correo

electrónico, ha crecido a niveles impensados desde su creación.

Page 26: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

6

Aunque existen otras versiones de su origen que lo datan hace 30 años: El 3

de mayo de 1978, 393 empleados de Arpanet, el predecesor de Internet

gestionado por el gobierno estadounidense, recibían con sorpresa un correo

de la compañía de ordenadores DEC invitándoles al lanzamiento de un

nuevo producto.

El correo basura por medio del fax (spam-fax), es otra de las categorías de

esta técnica de marketing directo, y consiste en enviar faxes masivos y no

solicitados a través de sistemas electrónicos automatizados hacia miles de

personas o empresas cuya información ha sido cargada en bases de datos

segmentadas según diferentes variables.

En Estados Unidos se promulgó la ley CAN-SPAM, que prácticamente no ha

sido poco o nada efectiva.

1.8 Antecedentes y definición del problema

El correo electrónico no deseado o spam, supone uno de los mayores frenos

para la expansión de Internet como medio de comunicación.

Page 27: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

7

El correo electrónico supuso un extraordinario impulso para el uso de la Red,

convirtiendo la misma en una poderosa herramienta de comunicación capaz

de unir personas en cualquier parte del mundo con una gran facilidad y

efectividad. Al ir generalizándose su uso, éste fue invadiendo distintas áreas,

tanto las personales como las profesionales, de tal forma que ésta

herramienta se convirtió en parte esencial de la vida de multitud de personas y

en una herramienta de gran utilidad en la actividad empresarial. Pero

entonces llegó el llamado spam.

La determinación de, ¿Qué puede considerarse spam?, ha sido muy

controvertida y se presentan distintos matices desde varias posiciones, pero

podemos considerar el spam, de forma consensuada, como el envío de

correos electrónicos a destinatarios que no han autorizado previamente la

recepción de los mismos.

La evolución del spam desde sus orígenes, ha sido espectacular. Según

datos de la compañía Brightmail, en 2001 el spam representaba el 10% del

total de correos enviados, actualmente esta cifra se eleva al 65%. El spam

crea problemas de distinta índole: atenta contra la vida privada, confunde a

los consumidores, perjudica a menores y crea gastos derivados de la pérdida

Page 28: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

8

de productividad. Pero, ¿tanto daño hace el spam? Pues sí, tan grande

como difícilmente cuantificable. Los problemas para las empresas y

proveedores son incontables, muchas veces, el costo adicional causado por el

spam es transferido a la cuenta a ser pagada por los usuarios.

No se pueden calcular las horas que los usuarios pierden manejando spam,

ni el espacio de la Red que ocupan los millones de bits cargados de basura

no solicitada. Eso, sin contar los medios empleados en desarrollar

herramientas automáticas para acabar con la plaga: las compañías que se

esmeran en filtrar el spam consiguen unos usuarios satisfechos, lo que

probablemente se traduzca en un aumento del número de clientes.

¿Por qué existe el spam? Por una cuestión económica. Aún cuando molesten

al 99.9% de la gente que lo recibe, y sólo el 0.1% haga caso de sus avisos

(sean o no comerciales), es tan barato enviar spam, que el resultado hace

que a los spammers les valga la pena.

Para el proveedor de servicio de correo el SPAM presenta problemas de

múltiple índole. Una es que sus suscriptores alegan que el proveedor ha

"vendido" su lista de correos para ser utilizada por quienes envían los

Page 29: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

9

mensajes, siendo esta acusación, en la mayoría de los casos, falsa.

Otro problema es la carga que ocasiona en el procesamiento de mensajes

que no han sido solicitados. La implementación de filtros en el sistema de

correo es ya una herramienta ampliamente difundida. Por lo general, los

sistemas de correo electrónico le permiten al usuario activar filtros para

bloquear un remitente, o un asunto en el mensaje, y hasta el contenido que

incluya el mensaje. Esto se puede hacer tanto en el servidor de correo

directamente como en el sistema que recibe el mensaje en el PC como el

Outlook. Sin embargo, el mensaje ya ha llegado al servidor de correo, y

genera una carga alta en los sistemas que lo procesan.

Lo anterior con respecto al mensaje entrante. Otro problema serio es cuando

el servidor de correo del ISP ha sido utilizado para enviar el SPAM. Algunos

sistemas proceden a bloquear automáticamente un proveedor que envié

correo en masas, con el perjuicio directo para todos los usuarios del servidor,

que sin razón alguna, ven que sus mensajes o no llegan o son devueltos.

La mayoría de los mensajes spam publicitan bienes y servicios que son de

dudosa procedencia y calidad o que contienen ofertas falsas, engañosas o

fraudulentas tales como esquemas ilegales de piramidación, planes de

Page 30: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

10

mercadotecnia multi-nivel, publicidad falsa, incluyendo material pornográfico

ofensivo y juegos de apuestas. Más aún, el spam es comúnmente utilizado

como un canal para la diseminación de virus, spyware, así como para

cometer conductas penales ilícitas a través de técnicas Phishing, las cuales

son modalidades de fraude al consumidor que se incrementan

constantemente y que ocasionan pérdidas millonarias a instituciones

financieras y consumidores alrededor del mundo. El spam no es un problema

que se origina únicamente en las computadoras personales; el spam se ha

extendido a teléfonos móviles, servicios de mensajero instantáneo, weblogs y

redes inalámbricas.

En definitiva, el spam constituye una seria amenaza para el desarrollo de

Internet como medio de comunicación para la cual todavía no se ha

encontrado remedio.

Sus nefastos efectos se acrecientan año tras año suponiendo miles millones

de dólares de pérdidas para las empresas así como una violación de la

privacidad individual. La puerta está abierta para las nuevas ideas e

iniciativas que permitan doblegar a este terrible enemigo del sistema.

Page 31: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

11

1.9 Solución Propuesta

El hecho que BizShield sea una solución integrada de Hardware y Software

(Appliance) que no cobra licenciamiento por usuario lo hace una herramienta

muy viable para la Empresa ya que tiene un muy corto periodo de Retorno de

Inversión (ROI), aparte el hecho de que viene pre-configurado, es puesto a

punto en poco tiempo y puede ser mantenido con el mínimo esfuerzo.

Una gran ventaja es que el correo no deseado tiene, generalmente, una serie

de características que lo hacen relativamente fácil de identificar.

Prácticamente, en todos ellos se insta a la compra de algún producto

utilizando unas palabras muy similares. De esa manera, BizShield puede

elaborar un determinado perfil del correo recibido para poder catalogarlo

como spam y eliminarlo antes de que sea descargado en el cliente de correo

electrónico o en los buzones de los usuarios.

La mayor parte del spam que recibimos consiste en:

Cadenas de mensajes.

Otros esquemas de "hágase rico fácilmente" o "gane plata

Avisos de servicios y/o sitios pornográficos.

Avisos de servicios de envío masivo de e-mails publicitarios (spam).

Page 32: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

12

Avisos de software y bases de datos para hacer spam.

Ofertas de hosting (muchos de ellos toleran y/o hacen del spam su

negocio).

Avisos de acciones de empresas nuevas "que van a subir hasta el

cielo".

Productos milagrosos y remedios de muy dudoso efecto y origen.

Software ilegal, películas y/o música pirateada.

Se pueden establecer diversos filtros y protecciones para frenar estos

correos, desde aquellos que simplemente bloquean correos que contengan

determinadas palabras, hasta los que permiten introducir una lista de

direcciones aceptadas y sólo permiten la entrada de correos provenientes de

las mismas.

Las características de BizShield son:

1.9.1 Gestión centralizada

Al ser una solución Antispam a nivel de servidor, se elimina la necesidad de

instalar y actualizar la aplicación en cada estación de trabajo.

Page 33: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

13

1.9.2 Fácil de Usar

La instalación del Sistema AntiSpam BizShield es rápida y fácil, ya que no es

necesario instalar ningún software ni modificar los sistemas de correo

electrónico existentes. Una vez instalado, el administrador del sistema utiliza

una interfaz web intuitiva para el control y el mantenimiento.

Los análisis y filtros, con estadísticas del spam importantes, tales como el

volumen de spam, el volumen por categoría, la precisión y la eficacia, ofrecen

mucha ayuda en la gestión de amenazas, permitiendo el perfeccionamiento

de la sensibilidad de las reglas y las opciones de eliminación.

1.9.3 Inversión Baja

Las Compañías Grandes y Pequeñas demandan igualmente una solución de

Inversión mínima que no la tienen hasta el día de hoy y peor aún cuando

ellos crecen. BizShield habilita el escalamiento sin preocuparse del

incremento de los licenciamientos de usuarios, ya que no tiene un costo de

licenciamiento por usuario, por lo que es la Solución de Inversión más baja

de Antispam.

Page 34: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

14

1.9.4 Alta flexibilidad

El filtrado flexible, con opciones para borrar, poner en cuarentena, etiquetar y

otras, mejoran la flexibilidad. El administrador tiene la opción de crear sus

propias listas blancas y negras para aceptar o rechazar un mensaje como

spam. Esto mejora la precisión y la eficacia del filtrado de spam a lo largo del

tiempo, y proporciona un filtrado más personalizado para cada usuario.

1.10 Diagrama

El diagrama siguiente especifica la estructura computacional donde

funcionará Bizshield.

Internet Firewall BizShield Mail Server Mail Client

FIGURA 1. Diagrama de estructura donde funcionará el Bizshield.

Este diagrama puede determinar la estructura general en el cual se

desempeña la aplicación, el servidor de correo estará siempre protegido por

el servidor antispam, ya que todo correo que salga y que entre pasará por el

Page 35: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

15

antispam. Aquí vemos en orden, primero el firewall, segundo el antispam,

tercero el servidor de correo y cuarto los clientes de correo.

1.11 Objetivos del proyecto.

1.11.1 Objetivos Generales

Evitar la saturación del Servidor de Correo y de las cuentas de los

usuarios debido a la recepción de correo electrónico no deseado.

Proteger la integridad y la productividad de los usuarios de correo para

que no reciban correo ofensivo, y que no pierdan tiempo eliminándolo.

1.11.2 Objetivos específicos.

Proteger valiosas herramientas de negocios de la empresa como el

correo electrónico de ataques como el spam, a través de un sistema

potente, efectivo y fácil de configurar.

Brindar herramientas que permitan el monitoreo y la eliminación de

correo electrónico no deseado.

Page 36: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

16

1.12 Alcance del proyecto.

La estrategia de antispam es agregar una capa antes del Servidor de Correo

que intercepte todo el correo entrante y saliente, lo analice en base a reglas

configuradas por el administrador del sistema y acepte o rechace el paso del

mensaje al Servidor de Correo Destino siempre que cumpla o no con las

reglas. Para tal efecto, la capa que utiliza el BizShield Antispam System,

provee de un Servicio Antispam llamado BizShield Service cuya función es

interceptar el tráfico de mensajes desde y hacia el Servidor de Correo. Por

otra parte una Aplicación Web llamada BizShield Web Administrator que

permite configurar el Servicio Antispam definiendo reglas con sus

respectivas acciones a ejecutar. Esta Aplicación Web también permite

obtener las estadísticas del funcionamiento del Sistema con respecto al

tráfico, el spam detectado, reglas aplicadas y las acciones tomadas.

El alcance de este proyecto, es entregar una solución completa, con el mejor

soporte out-of-the-box para las empresas. Para esto, el producto a ofrecer

consiste en un Sistema Appliance, una solución que incluye un Servidor

Fedora Core 9 con el BizShield Antispam System pre-instalado y pre-

configurado, el BizShield Antispam Appliance.

Page 37: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

17

1.13 Recursos necesarios para el proyecto.

Los recursos necesarios para la implementación del proyecto se detallan a

continuación:

1.13.1 Recurso Humano

El equipo del proyecto estará conformado por las tres personas:

George Humberto Alcívar Villamar

Freddy Johann Pinargote Savinién

David Leonel Toala Mosquera

1.13.2 Recurso Hardware

Se detalla el hardware necesario para la implementación del proyecto

SERVIDOR 1

Destinado para Servidor de aplicaciones, base de datos y correo

electrónico. Deberá tener las siguientes características:

o Memoria RAM 2 GB

o Disco duro 120 GB

o Core 2 Duo – 2 Ghz

Page 38: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

18

SERVIDOR 2

Destinado para Servicio Antispam. Deberá tener las siguientes

características:

o Memoria RAM 1 GB

o Disco duro 80 GB

o Core 2 Duo – 2 Ghz

MAQUINA DE DESARROLLO

Se utilizaran 3 máquinas para el desarrollo. Estas deberán tener las

siguientes características:

o Memoria RAM 1 GB

o Disco duro 80 GB

o Core 2 Duo – 2 Ghz

SWITCH

Se utilizará para armar la red de datos para el desarrollo

Page 39: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

19

1.13.3 Recurso Software DEL PROYECTO

Sistemas Operativos

Nombre SistemaOperativo

Descripción deUso

Cantidad

Fedora Core 9

Utilizado para el

appliance

antispam

1

Windows Server

2003

Utilizado para los

servidores de

correo electrónico

y DNS.

2

Windows XP

Utilizado para los

clientes de correo

electrónico

5

Tabla 1. Sistemas Operativos.

Servicios

Nombre delServicio

Descripción deUso

Cantidad

JES Servidor SMTP 2

Apache Tomcat

6.0

Contenedor de

Servlets y JSPs1

MySQL 5.0Servidor de Bases

de Datos1

Tabla 2. Servicios utilizados en el Antispam.

Page 40: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

20

Herramientas de Desarrollo

Las herramientas ofimáticas y de diseño que se utilizarán durante el

desarrollo del proyecto son las siguientes:

Eclipse

EMS MySQL

MySQL GUI Tools

ANTLRWorks

Herramientas Ofimáticas y de Diseño

Las herramientas ofimáticas y de diseño que se utilizarán durante el

desarrollo del proyecto son las siguientes:

Microsoft Word

Microsoft Project

Microsoft Visio

DBDesigner

Page 41: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

21

1.14 Cronograma

FIGURA 2. Cronograma del proyecto Antispam.

Page 42: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

22

1.15 Metodología

Para el análisis y diseño general del sistema se combinarán las metodologías

estructurada y orientada a objetos. Para el diseño detallado se utilizaran

patrones de diseño y diagramas UML. Para el desarrollo se emplearan

técnicas y métodos de programación orientada a objetos.

Para la pruebas se utilizarán técnicas de pruebas unitarias y funcionales

integrales. Las pruebas unitarias son realizadas con la herramienta JUnit y

las funcionales e integrales son realizadas siguiendo la metodología plan de

pruebas.

Page 43: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

CAPÍTULO 2

ANÁLISIS DEL SISTEMA

2.1 Levantamiento de Información

Para el levantamiento de información, se

utilizó como instrumento la encuesta.

Page 44: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

25

2.1.1 Encuesta

Direccionamiento: Instrumento dirigido a profesionales del área de

tecnología encargado del manejo de servidores.

Objetivo: Obtener la información sobre los siguientes puntos.

El porcentaje de empresas que utilizan un AntiSpam

Cuantos desearían comprar un AntiSpam si no lo tuvieran.

Instructivo: Lea detenidamente cada una de las preguntas y proceda a

contestar en la opción que usted considere valida, utilizando el cuadro de la

derecha.

Encuesta Nº ________

Información General

1.- ¿De qué tipo es su empresa?

1.- Comercial

2.- Industrial

3.- Servicios

4.- Otro

Page 45: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

26

2.- Ubicación

1.- Norte

2.- Centro

3.- Sur

Información Específica

3.- ¿Tiene un departamento de sistemas?

SI NO

4.- ¿Su empresa tiene un servidor de correos?

SI NO

5.- ¿La empresa cuenta con un AntiSpam?

SI NO

6.- ¿Se prioriza el envío y recepción de correos por medio del servidor interno

de la organización?

SI NO

Page 46: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

27

7. ¿Cuántas personas tienen cuentas de correo de su organización?

1.- de 5 a 10

2.- de 10 a 20

3.- de 20 a 50

5.- de 50 a 100

8.- ¿Con que frecuencia se llena su cuenta de correo basura o Spams?

1.- Todos los dias

2.- Una vez a la semana

3.- Cada 15 dias

4.- Cada mes

9.-¿Le gustaría invertir en un programa corporativo AntiSpam?

SI NO

10.- Que sugerencias daría usted al momento de escoger un programa

AntiSpam.

Page 47: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

28

2.2 Análisis de Requerimientos

Un sistema de detección de spam se lo puede catalogar como un sistema

experto, al cual se le configura heurísticas para la detección de correo spam

(base de conocimiento).

El contenido del correo (base de hechos) será utilizado para evaluar las

heurísticas configuradas (motor de inferencia) y detectar los correos spam y

no spam. Este sistema experto deberá ejecutar acciones de control para

mitigar el riesgo de correo spam.

Variables

Existen diferentes variables que deben evaluarse para determinar si un

correo electrónico se lo puede considerar como spam o no. Las variables

más comunes a considerar para la detección de spam son las siguientes:

Correos que provienen de unas IP que pertenecen a servidores que han

sido identificado como generadores de SPAM.

Correos que provienen de un dominio que han sido identificado como

generadores de SPAM.

Page 48: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

29

Correos que contienen en mensajes con publicidad, pornografía,

información no relacionada con las actividades de la empresa etc.

Correos que contiene archivos adjuntos ejecutables, considerados como

posibles portadores de virus.

Correos donde los datos MIME cumplen con los patrones típicos de los

correos spam. Los patrones típicos de correo catalogado como SPAM

son los siguientes.

MIME FROM vacio

MIME FROM mal formado.

MIME FROM con caracteres numéricos.

SMTP TO y MIME TO son diferentes.

Juego de caracteres inválidos

Idioma del correo.

Extensa lista de destinatarios.

Correo contiene solo imágenes.

Dominio de remitente invalido.

Las variables más comunes a considerar para identificar a un correo como

no spam son los siguientes:

Correo proveniente de IP de servidores SMTP que se sabe que no son

generadores de SPAM.

Page 49: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

30

Correo con un dominio remitente de confianza.

Correo con una dirección remitente de confianza.

Las variables anteriormente expuestas se pueden conjugar de diferentes

formas, para detectar correo spam y no spam. Cada una de estas variables

está en función del correo.

Estas variables se conjugan para formar reglas (funciones booleana), las

cuales definirán condiciones que identificaran correos que son spam o no

spam.

Estas reglas pueden ser de 2 tipos:

1. Habilitantes: Las reglas habilitantes al cumplirse, sobre un correo,

permitirán el paso del correo a su destino.

2. Excluyentes: Las reglas excluyentes al cumplirse, sobre un correo,

consideraran el correo como spam, no permitiendo el paso del correo a

su destino.

Page 50: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

31

Acciones de Control

Una vez identificado un correo electrónico como SPAM o no, se deben

ejecutar ciertas acciones de control sobre el correo, estas acciones pueden

ser las siguientes:

Eliminación de archivos adjuntos: Esta acción eliminará del correo

los archivos adjuntos cuyo nombre cumpla con un patrón de caracteres.

Poner en cuarentena archivos adjuntos: Esta acción eliminará del

correo los archivos adjuntos cuyo nombre cumpla con un patrón de

caracteres, pero almacena el archivo en una carpeta de cuarentena.

Re-direccionar a una cuenta de correo: Esta acción enviará el correo

a una dirección de correo configurada para ello, generalmente el

administrador.

Responder a remitente: Esta acción enviara una respuesta al correo

electrónico del remitente.

Mensajes en Body y Subject: Esta acción permite agregar una

etiqueta en el SUBJECT o BODY del correo.

Page 51: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

32

El sistema Anti-spam BizShield está compuesto por dos componentes:

1. BIZSHIELD SERVICE

2. BIZSHIELD WEB ADMINISTRATOR

2.2.1 Servicio Antispam (BIZSHIELD SERVICE)

BizShield Service es un sistema experto, que analizara todos los correos

electrónicos de la empresa, filtrando y permitiendo la recepción de los

mismos sólo si cumplen con las reglas de seguridad configuradas. El servicio

antispam, evaluará las reglas y ejecutará las acciones previamente

configuradas para cada uno de los correos que lleguen o salgan de la red

informática de la empresa.

2.2.2 Aplicación Web Administrador Antispam (BIZSHIELD WEB

ADMINISTRATOR)

Es una aplicación web que se utilizará para realizar las tareas administrativas

del sistema Antispam. Está compuesta por dos módulos: Módulo de

Configuración y Módulo de Reportes.

Page 52: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

33

Módulo de Configuración: En este módulo el administrador del

servicio antispam podrá configurar las reglas que serán evaluadas y

acciones que serán ejecutadas por BizShield Service.

Módulo de Reportes: Es un módulo compuesto por reportes que

contendrán la información de los correos que han sido procesados por el

servicio antispam. En el reporte en general se mostrarán los correos

electrónicos procesados en un rango de fechas, las reglas evaluadas y

acciones ejecutadas sobre los correos. Mediante los reportes se podrá dar

seguimiento del uso del correo electrónico en toda la organización.

2.3 ROLES DEL SISTEMA

Los tipos de usuarios de la Aplicación Web Administrador Antispam son:

2.3.1 Administrador

Puede utilizar el Módulo de Configuración, el cual permite establecer,

modificar y eliminar las reglas y acciones de control ejecutadas por el servicio

antispam y gestionar a los usuarios normales. También puede utilizar el

Módulo de Reportes.

Page 53: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

34

2.3.2 Usuario

Sólo puede utilizar el Módulo de Reportes.

2.4 ANÁLISIS DE DATOS

2.4.1 EMPRESA

Representa la empresa que adquirió el producto Bizshield Antispam

Appliance. En el ámbito de Bizshield, una empresa básicamente consta de

usuarios y sistemas.

2.4.2 ROL

Representa los roles utilizados en Bizshield Web Administrator. Actualmente

son ADMINISTRADOR Y USUARIO. Dependiendo del rol, un usuario puede

acceder o no a los módulos de la aplicación web.

2.4.3 USUARIO

Representa los usuarios de Bizshield Web Administrator. Sólo los usuarios

registrados pueden utilizar la aplicación web. Esta tabla es utilizada por el

contenedor J2EE para el proceso de autenticación.

Page 54: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

35

2.4.4 USUARIO_ROL

Identifica que rol tiene asignado un usuario dentro de Bizshield Web

Administrator. Esta tabla es utilizada por el contenedor J2EE para el

proceso de autenticación.

2.4.5 ACCIÓN

Representa la acción de un tipo determinado, que se ejecutará siempre y

cuando la regla a la cual esté asociada sea evaluada positivamente. Por

ejemplo, se puede definir una acción llamada NOTIFICAR ELIMINACIÓN DE

ARCHIVOS ADJUNTOS, cuyo tipo de acción sea AÑADIR MENSAJE EN

BODY.

2.4.6 COMPONENTE_OPERADOR_REGLA

Representa un operador dentro de una regla de Bizshield. Por ejemplo, si se

define una regla como IP_ORIGEN = “172.18.9.225”, se almacenará el

operador =.

Page 55: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

36

2.4.7 COMPONENTE_OPERANDO_CONJUNTO

Representa un operando de tipo conjunto dentro de una regla de Bizshield.

Por ejemplo, si se define una regla como

EXTENCIONES_ARCHIVOS_ADJUNTOS INTERSECT

{"exe","com","bat","dll"} se almacenará el operando

EXTENCIONES_ARCHIVOS_ADJUNTOS.

2.4.8 COMPONENTE_OPERANDO_CONSTANTE

Representa un operando de tipo constante dentro de una regla de Bizshield.

Por ejemplo, si se define una regla como IP_ORIGEN = “172.18.9.225”, se

almacenará el operando constante “172.18.9.225”.

2.4.9 COMPONENTE_OPERANDO_REGLA

Representa un operando dentro de una regla de Bizshield. Un operando

puede ser variable, constante y conjunto. A nivel de objetos de la capa de

persistencia, esta entidad es superclase de las entidades

componente_operando_variable, componente_operando_conjunto y

componente_operando_constante.

Page 56: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

37

2.4.10 COMPONENTE_OPERANDO_VARIABLE

Representa un operando de tipo variable dentro de una regla de Bizshield.

Por ejemplo, si se define una regla como IP_ORIGEN = “172.18.9.225”, se

almacenará el operando variable “IP_ORIGEN”.

2.4.11 COMPONENTE_REGLA

Representa un componente dentro de una regla de Bizshield. Un

componente puede ser un operador o un operando. A nivel de objetos de la

capa de persistencia, esta entidad es superclase de las entidades

componente_operando_regla y componente_operador_regla.

2.4.12 CORREO

Representa un correo analizado por Bizshield Service.

2.4.13 DATO_EJECUCION_PROCESO

Contiene los datos de todas las variables que se calcularon durante la

ejecución de un proceso de Bizshield.

Page 57: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

38

2.4.14 EJECUCION_ACCION

Representa la ejecución de una acción. Las acciones se ejecutan como

resultado de la evaluación positiva de una regla de Bizshield.

2.4.15 EJECUCION_PROCESO

Representa la ejecución de un proceso dentro de Bizshield. Al ejecutarse un

proceso se evalúan todas las reglas asociadas a ese proceso.

2.4.16 ELEMENTO_CONJUNTO

Representa un elemento de un operando de tipo conjunto. Por ejemplo, si se

define una regla como EXTENCIONES_ARCHIVOS_ADJUNTOS

INTERSECT {"exe","com","bat","dll"} se almacenarán los elementos "exe",

"com", "bat" y "dll".

2.4.17 EVALUACION_REGLA

Representa la evaluación de una regla de Bizshield, esta evaluación puede

ser positiva o negativa. Cuando se evalúa positivamente una regla se

ejecutan todas sus acciones asociadas.

Page 58: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

39

2.4.18 OPERADOR

Representa un operador de Bizshield Rules Language.

2.4.19 PARAMETRO_ACCION

Representa los parámetros de una acción antispam determinada y son

necesarios para configurarla. Por ejemplo, para la acción NOTIFICAR

ELIMINACION DE ARCHIVOS ADJUNTOS, cuyo tipo de acción es AÑADIR

MENSAJE EN BODY y parámetro de tipo de acción es MENSAJE HTML, se

puede definir el parámetro <strong>Copyright © 2009 Realmsoft. All rights

reserved.</strong>

2.4.20 PARAMETRO_TIPO_ACCION

Representa los parámetros de un tipo de acción antispam determinada y que

son necesarios para configurarla. Por ejemplo el tipo de acción AÑADIR

MENSAJE EN BODY tiene los parámetros MENSAJE TXT y MENSAJE

HTML.

Page 59: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

40

2.4.21 PROCESO

Representa un proceso de Bizshield. Actualmente Bizshield tiene definidos

dos procesos: CORREO ENTRANTE Y CORREO SALIENTE.

2.4.22 REGLA

Representa una regla de Bizshield. Una regla Antispam es una función

booleana que utiliza como variables los diferentes elementos que componen

un correo electrónico (subject, body, etc.) y como resultado de su evaluación

retorna un valor de verdadero o falso el cual determinará si un correo es spam

o no. Una regla a su vez está formada de componentes, los cuales pueden

ser operandos u operadores. Por ejemplo, se puede definir una regla como

CORREO_REMITENTE = "[email protected]", la cual se evaluará como

verdadera si la dirección de correo del remitente es [email protected].

Una regla se define mediante una sentencia escrita en Bizshield Rules

Language.

2.4.23 REGLA_ACCION

Identifica las acciones asociadas a las reglas de Bizshield. Una regla puede

tener asociadas muchas acciones, siempre que éstas no sean inconsistentes

entre sí.

Page 60: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

41

2.4.24 REGLA_PROCESO

Identifica las reglas asociadas a los procesos de Bizshield.

2.4.25 SISTEMA

Representa un Sistema de la empresa que utiliza Bizshield. Un sistema

puede tener varios subsistemas.

2.4.26 SUBSISTEMA

Representa un subsistema de la empresa.

2.4.27 SUBTIPO_DATO

Representa un tipo de dato específico de Bizshield Rules Language.

2.4.28 TIPO_ACCION

Representa los tipos de acciones que se pueden ejecutar al evaluar

positivamente una regla de Bizshield, estos tipos de acciones están definidas

por el Sistema. Cada tipo de acción tiene su conjunto de parámetros bien

definidos que lo permiten configurar. Por ejemplo, para definir acciones que

Page 61: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

42

tengan que adicionar información al body del correo se puede crear una

acción cuyo tipo sea AÑADIR MENSAJE EN BODY.

2.4.29 TIPO_ACCION_INCONSISTENTE

Identifica las acciones que no pueden configurarse juntas dentro de una regla

de Bizshield, ya que son excluyentes.

2.4.30 TIPO_DATO

Representa un tipo de dato general de Bizshield Rules Language.

2.4.31 TIPO_OPERADOR

Representa un tipo de operador de Bizshield Rules Language.

2.4.32 VARIABLE

Representa una variable de Bizshield Rules Language.

Page 62: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

43

2.4.33 VARIABLE_PROCESO

Identifica cuáles son las variables asociadas a un proceso de Bizshield.

2.5 CASOS DE USO

El siguiente caso de uso describe de forma general la funcionalidad que

ofrecerá el sistema.

FIGURA 3. Diagrama general de casos de uso del Sistema

Page 63: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

44

Nombre: Configuración de Reglas

Alias: Mantenimiento de Reglas

Actores: Administrador del sistema

Función:

Permitir el mantenimiento de las reglas de

Bizshield

Dentro del Módulo de Configuración de

Bizshield Web Administrator, el usuario

Administrador del sistema tiene la opción

de realizar las siguientes operaciones de

mantenimiento sobre las reglas: “Crear”,

“Editar”, “Consultar” y “Eliminar”.

Cada una de estas operaciones se realiza

a través de un formulario, en el cual se

ejecutan las validaciones necesarias según

el tipo de operación.

Para crear o editar una regla, por ejemplo,

se valida que el contenido de la regla

ingresado sea una expresión Bizshield

Rules Language válida.

Referencias:

Tabla 3. Configuración de reglas.

Page 64: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

45

Nombre: Configuración de Acción

Alias: Mantenimiento de Acciones

Actores: Administrador del sistema

Función:

Permitir el mantenimiento de las acciones de

Bizshield

Dentro del Módulo de Configuración de

Bizshield Web Administrator, el usuario

Administrador del sistema tiene la opción de

realizar las siguientes operaciones de

mantenimiento sobre las acciones: “Crear”,

“Editar”, “Consultar” y “Eliminar”.

Cada una de estas operaciones se realiza a

través de un formulario, en el cual se

ejecutan las validaciones necesarias según

el tipo de operación.

Para crear o editar una acción, por ejemplo,

se valida que los parámetros de la acción

ingresados sean correctos, dependiendo del

tipo de dato del parámetro.

Referencias:

Tabla 4. Configuración de acciones.

Page 65: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

46

Nombre: Gestión de Usuarios

Alias: Mantenimiento de Usuarios

Actores: Administrador del sistema

Función:

Permitir el mantenimiento de los usuarios de

Bizshield

Dentro del Módulo de Configuración de

Bizshield Web Administrator, el usuario

Administrador del sistema tiene la opción de

realizar las siguientes operaciones de

mantenimiento sobre los usuarios: “Crear”,

“Editar”, “Consultar” y “Eliminar”.

Cada una de estas operaciones se realiza a

través de un formulario, en el cual se

ejecutan las validaciones necesarias según

el tipo de operación.

Para crear o editar un usuario, por ejemplo,

se valida que los datos del usuario

ingresados sean correctos, dependiendo del

tipo de dato del campo.

Referencias:

Tabla 5. Gestion de Usuarios.

Page 66: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

47

Nombre: Reporte de Correos Analizados

Alias: Visualización de Correos Analizados

Actores:

Administrador del sistema, Usuario del

Sistema

Función:

Presentar el Reporte de Correos Analizados

en Bizshield

Dentro del Módulo de Reportes de Bizshield

Web Administrator, los usuarios del sistema

con roles de Administrador y Usuario tienen

la opción de visualizar el Reporte de Correos

Analizados en Bizshield. El sistema valida

que se ingresen valores correctos en todos

los parámetros de búsqueda, permite

visualizar el contenido del correo analizado en

formato MIME y exportar los resultados a

diferentes formatos.

Referencias:

Tabla 6. Reporte de correos analizados.

Page 67: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

48

Nombre: Reporte de Reglas Evaluadas

Alias: Visualización de Reglas Evaluadas

Actores:

Administrador del sistema, Usuario del

Sistema

Función:

Presentar el Reporte de Reglas Evaluadas en

Bizshield

Dentro del Módulo de Reportes de Bizshield

Web Administrator, los usuarios del sistema

con roles de Administrador y Usuario tienen

la opción de visualizar el Reporte de Reglas

Evaluadas en Bizshield. El sistema valida que

se ingresen valores correctos en todos los

parámetros de búsqueda y permite exportar

los resultados a diferentes formatos.

Referencias:

Tabla 7. Reporte de reglas evaluadas.

2.6 DIAGRAMA DE FLUJO ANTISPAM

EL siguiente diagrama de flujo describe de forma general el funcionamiento

del servicio antispam.

Page 68: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

49

FIGURA 4. Diagrama de flujo Antispam.

ACEPTAREMAIL

REGLAS HABILITANTES

REGLA ACCIONES 2

REGLA ACCIONES 3

REGLA ACCIONES 4

REGLA Y ACCIONES 1

REGLAS EXCLUYENTES

REGLA ACCIONES 2

REGLA ACCIONES 3

REGLA ACCIONES 4

REGLA Y ACCIONES 1

RECHAZAREMAIL

REGLAS CONTROLADORAS

REGLA ACCIONES 2

REGLA ACCIONES 3

REGLA ACCIONES 4

REGLA Y ACCIONES 1

Page 69: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

50

El correo electrónico es evaluado por el servicio anti-spam, el resultado final

de la evaluación es:

Aceptar el correo electrónico si el correo no es spam.

Rechazar el correo electrónico si el correo es spam.

Consideraciones Principales

Para obtener este resultado se ejecuta las siguientes consideraciones:

1. Se ejecutan las reglas habilitantes, las reglas habilitantes son reglas que

tienen configuradas condiciones y heurísticas que identifican correo

electrónico catalogado como no spam, si un correo cumple con alguna de las

reglas habilitantes entonces el correo deberá ser aceptado.

2. Se ejecutan las reglas excluyentes, las reglas excluyentes son reglas que

tiene configuradas condiciones y heurísticas que identifican correo electrónico

catalogado como spam, si un correo cumple con alguna de las reglas

excluyentes y no cumple con reglas habilitantes entonces el correo será

rechazado.

Page 70: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

51

3.Se ejecutan las reglas controladoras, las reglas controladoras son reglas

que tiene configurado condiciones y heurísticas que identifican correo

electrónico al cual hay que ejecutar acciones de control, el listado de reglas

de control disponibles se listan en el punto 2.2.1.2 (Acciones de Control), si

un correo cumple con alguna de las reglas controladoras entonces se

ejecutaran acciones de control sobre el correo electrónico. En caso de que

un correo hay cumplido solamente reglas controladoras entonces el correo

deberá ser aceptado.

4.En caso de que un correo no haya cumplido con ningunas de las reglas

entonces el correo deberá ser aceptado.

Page 71: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

52

CAPÍTULO 3

3. DISEÑO DEL SISTEMA

El Diseño de sistemas es el arte de definir la

arquitectura de hardware y software,

componentes, módulos y datos de un sistema

de cómputo para satisfacer ciertos

requerimientos. Es la etapa posterior al análisis

de sistemas.

Page 72: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

53

3.1 ARQUITECTURA COMPUTACIONAL

Aquí se muestra de una forma clara el funcionamiento del Antispam.

El correo llega desde el internet el cual llega en primer lugar al

Antispam.

Este coreo se evalua en base a las reglas configuradas tanto por

defecto como por el administrador del antispam.

Se determina si es spam o no.

Si es spam se aplican acciones a este correo, que pueden ser, eliminar,

quitar archivos adjuntos, enviar mensaje al destinatario, etc etc.

Este correo es enviado al servidor de correos el cual envía el correo a

sus diferentes cuentas.

Y de forma inversa se repite el proceso desde los clientes.

Page 73: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

54

FIGURA 5. Esquema general de funcionamiento del Appliance antispam.

3.2 DISEÑO DE DATOS

3.3 DIAGRAMA ENTIDAD – RELACIÓN

En el diagrama entidad relación se encuentra la estructura de la base de

datos.

Ver anexo 1.

Page 74: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

55

Nombre de Campo Tipo Descripción

id_empresa integer Identificador de empresa

razon_social varchar(255) Razón social de la empresa

Representante varchar(255)

Representante legal de la

empresa

Teléfono varchar(64) Teléfono de empresa

Email varchar(64) Email de empresa

licencia_producto varchar(255) Número de licencia de Bizshield

Administrador varchar(64)

Nombre de usuario

administrador

Password varchar(64)

Password de usuario

administrador

Logo blob Logo de empresa

Estado varchar(3) Estado de registro

Tabla 8. AS_EMPRESA

Nombre deCampo Tipo Descripción

id_rol integer identificador de rol

nombre_rol varchar(64) Nombre del rol

Descripción varchar(255) Descripción del rol

Estado varchar(3) Estado del registro

Tabla 9. AS_ROL

Page 75: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

56

Nombre deCampo Tipo Descripción

id_usuario integer Identificador de usuario

id_empresa integer

Identificador de empresa a la que

pertenece el usuario

Username varchar(64) Nombre de usuario en el sistema

Password varchar(64) Contraseña de usuario en el sistema

Nombres varchar(128) Nombres del usuario

Apellidos varchar(128) Apellidos del usuario

Dirección varchar(255) Dirección del usuario

Teléfono varchar(64) Teléfono del usuario

Email varchar(64) Email del usuario

Estado varchar(3) Estado del registro

Tabla 10. AS_USUARIO

Nombre deCampo Tipo Descripción

id_usuario integer Identificador del usuario

id_rol integer

Identificador del rol asignado al

usuario

nombre_rol varchar(64)

Nombre del rol. Este campo es

necesario para la autenticación

vía contenedor J2EE

username varchar(64)

Nombre de usuario en el sistema.

Este campo es necesario para la

autenticación vía contenedor

J2EE

Tabla 11. AS_USUARIO_ROL

Page 76: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

57

Nombre de Campo Tipo Descripción

ID_ACCION integer Identificador de acción

ID_TIPO_ACCION integer

Identificador de tipo de

acción

NOMBRE varchar(64) Nombre de la acción

FECHA_INICIO_VIGENCIA datetime

Fecha de inicio de

vigencia de la acción

FECHA_FIN_VIGENCIA datetime

Fecha de fin de vigencia

de la acción

Tabla 12. DT_ACCION

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de

componente de regla

ID_OPERADOR integer Identificador de operador

Tabla 13. DT_COMPONENTE_OPERADOR_REGLA

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de componente

de regla

ID_SUBTIPO_DATO integer

Identificador de subtipo de

dato

VALOR_CONJUNTO varchar(4096)

Valor del operando

conjunto. Contiene todos

los elementos del conjunto

Tabla 14. DT_COMPONENTE_OPERADOR_REGLA

Page 77: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

58

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de

componente de regla

VALOR_CONSTANTE varchar(256)

Valor del operando

constante. Contiene el

literal constante

Tabla 15. DT_COMPONENTE_OPERANDO_CONSTANTE

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de

componente de regla

Tabla 16. DT_COMPONENTE_OPERANDO_REGLA

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de componente

de regla

ID_VARIABLE integer Identificador de variable

Tabla 17. DT_COMPONENTE_OPERANDO_VARIABLE

Page 78: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

59

Nombre de Campo Tipo Descripción

ID_COMPONENTE_REGLA integer

Identificador de componente de

regla

ID_REGLA integer Identificador de regla

ORDEN integer

Orden del componente dentro de la

regla

Tabla 18. DT_COMPONENTE_REGLA

Nombre de Campo Tipo Descripción

ID_CORREO integer Identificador de correo

DE varchar(512) Remitente del correo

PARA varchar(512) Destinatario del correo

CONTENIDO longblob

Contenido original del

correo en formato MIME

IP_ORIGEN varchar(64)

Dirección IP del

remitente

ES_CORREO_ENTRANTE enum('S','N')

Indica si el correo es

entrante

SE_EJECUTARON_REGLAS enum('S','N')

Indica si se evaluaron

reglas para este correo

ES_SPAM enum('S','N','D')

Indica si el correo se

evaluó como spam

CONTENIDO_FINAL longblob

Contenido final del

correo en formato MIME

Tabla 19. DT_CORREO

Page 79: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

60

Nombre de Campo Tipo Descripción

ID_DATO_EJECUCION_PROCESO integer

Identificador del dato de

ejecución del proceso

ID_EJECUCION_PROCESO integer

Identificador de la

ejecución del proceso

ID_VARIABLE integer

Identificador de la

variable calculada

VALOR longtext

Valor de la variable

calculada

Tabla 20. DT_DATO_EJECUCION_PROCESO

Nombre de Campo Tipo Descripción

ID_EJECUCION_ACCION integer

Identificador de la ejecución

de acción

ID_EVALUACION_REGLA integer

Identificador de la evaluación

de la regla

ID_ACCION integer

Identificador de la acción

ejecutada

Tabla 21. DT_EJECUCION_ACCION

Page 80: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

61

Nombre de Campo Tipo Descripción

ID_EJECUCION_PROCESO integer

Identificador de la

ejecución del proceso

ID_PROCESO integer Identificador del proceso

FECHA_EJECUCION_PROCESO datetime

Fecha de ejecución del

proceso

ID_CORREO integer

Identificador del correo

analizado

Tabla 22. DT_EJECUCION_PROCESO

Nombre de Campo Tipo Descripción

ID_ELEMENTO_CONJUNTOinteger

Identificador del elemento

del conjunto

ID_COMPONENTE_REGLAinteger

Identificador de

componente de regla

VALOR_CONSTANTEvarchar(256)

Valor del elemento del

conjunto

Tabla 23. DT_ELEMENTO_CONJUNTO

Page 81: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

62

Nombre de Campo Tipo Descripción

ID_EVALUACION_REGLA integer

Identificador de evaluación

de la regla

ID_REGLA integer

Identificador de la regla

evaluada

FECHA_EVALUACION_REGLA datetime

Fecha de evaluación de la

regla

RESULTADO enum('S','N')

Resultado de evaluación

de la regla

ID_EJECUCION_PROCESO integer

Identificador de la

ejecución del proceso

Tabla 24. DT_EVALUACION_REGLA

Nombre de Campo Tipo Descripción

ID_OPERADOR Integer Identificador del operador

ID_TIPO_OPERADOR Integer Identificador del tipo de operador

NOMBRE_OPERADOR varchar(64) Nombre del operador

OPERADOR varchar(32) Símbolo del operador

NUMERO_OPERANDOS

int(11)

unsigned Número de operandos del operador

OPERADOR_DROOLS varchar(32) Operador equivalente en drools

Tabla 25. DT_OPERADOR

Page 82: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

63

Nombre de Campo Tipo Descripción

ID_PARAMETRO_ACCIONinteger

Identificador de parámetro

de acción

ID_ACCION integer Identificador de acción

ID_PARAMETRO_TIPO_ACCIONinteger

Identificador de parámetro

de tipo de acción

VALORvarchar(255)

Valor del parámetro de la

acción

Tabla 26. DT_PARAMETRO_ACCION

Nombre de Campo Tipo Descripción

ID_PARAMETRO_TIPO_ACCIONinteger

Identificador de parámetro

de tipo de acción

ID_TIPO_ACCIONinteger

Identificador de tipo de

acción

NOMBRE_PARAMETRO varchar(255) Nombre de parámetro

ID_SUBTIPO_DATOinteger

Identificador de subtipo de

dato del parámetro

NOMBRE_ATRIBUTO

varchar(256)

Es el nombre del atributo de

la clase Java que contendrá

el valor de este parámetro

Tabla 27. DT_PARAMETRO_TIPO_ACCION

Page 83: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

64

Nombre de Campo Tipo Descripción

ID_PROCESO Integer Identificador de proceso

ID_SUBSISTEMA Integer Identificador de subsistema

NOMBRE varchar(64) Nombre del proceso

NOMBRE_CLASE_PROCESO varchar(255)

Nombre de clase java que

representa el proceso

CAMBIARON_REGLAS enum('S','N')

Indica si las reglas

asociadas al proceso han

cambiado y por lo tanto es

necesario generar

nuevamente el archivo de

drools

Tabla 28. DT_PROCESO

Nombre de Campo Tipo Descripción

ID_REGLA integer Identificador de regla

NOMBRE_REGLA varchar(64) Nombre de regla

DESCRIPCION_REGLA varchar(512) Descripción de regla

ID_USUARIO_CREO integer

Identificador de usuario creador de

la regla

FECHA_CREO datetime Fecha de creación de la regla

CONTENIDO_REGLA varchar(4096)

Contenido de la regla, contiene la

sentencia escrita en BRL

FECHA_INICIO_VIGENCIA datetime

Fecha de inicio de vigencia de la

regla

FECHA_FIN_VIGENCIA datetime Fecha de fin de vigencia de la regla

Tabla 29. DT_REGLA

Page 84: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

65

Nombre de Campo Tipo Descripción

ID_REGLA_ACCION integer

Identificador de la

relación regla - acción

ID_REGLA integer

Identificador de la

regla

ID_ACCION integer

Identificador de la

acción

FECHA_INICIO_VIGENCIA datetime

Fecha de inicio de

vigencia de la relación

regla -acción

ID_USUARIO_INICIO_VIGENCIA integer

Identificador del

usuario que estableció

la fecha de inicio de

vigencia

FECHA_FIN_VIGENCIA datetime

Fecha de fin de

vigencia de la relación

regla - acción

ID_USUARIO_FINALIZO_VIGENCIA integer

Identificador del

usuario que estableció

la fecha de fin de

vigencia

Tabla 30. DT_REGLA_ACCION

Page 85: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

66

Nombre de Campo Tipo Descripción

ID_REGLA_PROCESO integer

Identificador de la relación

regla - proceso

ID_REGLA integer Identificador de la regla

ID_PROCESO integer Identificador del proceso

FECHA_INICIO_VIGENCIA datetime

Fecha de inicio de vigencia

de la relación regla - proceso

ID_USUARIO_INICIO_VIGENCIA integer

Identificador del usuario que

estableció la fecha de inicio

de vigencia

FECHA_FIN_VIGENCIA datetime

Fecha de fin de vigencia de la

relación regla - proceso

ID_USUARIO_FINALIZO_VIGENCIA integer

Identificador del usuario que

estableció la fecha de fin de

vigencia

Tabla 31. DT_REGLA_PROCESO

Nombre de Campo Tipo Descripción

ID_SISTEMA integer Identificador de sistema

NOMBRE_SISTEMA varchar(64) Nombre del sistema

ID_EMPRESA integer Identificador de empresa

Tabla 32. DT_SISTEMA

Page 86: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

67

Nombre de Campo Tipo Descripción

ID_SUBSISTEMA Integer Identificador de subsistema

ID_SISTEMA Integer Identificador de sistema

NOMBRE_SUBSISTEMA varchar(64) Nombre del subsistema

Tabla 33. DT_SUBSISTEMA

Nombre de Campo Tipo Descripción

ID_SUBTIPO_DATO Integer Identificador de subtipo de dato

NOMBRE_SUBTIPO_DATO varchar(64) Nombre del subtipo de dato

ID_TIPO_DATO Integer Identificador de tipo de dato

CLASE_VALIDADORA varchar(255)

Clase java encargada de

validar que el dato sea correcto

según el subtipo

CLASE_JAVA varchar(255)

Clase java con la que se puede

representar el subtipo de dato

Tabla 34. DT_SUBTIPO_DATO

Page 87: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

68

Nombre de Campo Tipo Descripción

ID_TIPO_ACCION Integer

Identificador

de tipo de

acción

NOMBRE varchar(64)Nombre del

tipo de acción

CLASE_EJECUTORA_ACCION varchar(128)

Es la clase

Java

encargada de

ejecutar el tipo

de acción

CLASE_DATOS_PARA_EJECUTAR_ACCION varchar(128)

Es la clase

Java que

contendrá los

datos

necesarios

para la

ejecución de la

acción

Tabla 35. DT_TIPO_ACCION

Nombre de Campo Tipo Descripción

id_tipo_accion_inconsistente integer

Identificador de tipo de

acción inconsistente

id_tipo_accion integer

Identificador de tipo de

acción

id_tipo_accion_incorrecta integer

Identificador de tipo acción

incorrecta

Tabla 36. DT_TIPO_ACCION_INCONSISTENTE

Page 88: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

69

Nombre de Campo Tipo Descripción

ID_TIPO_DATO integer Identificador de tipo de dato

NOMBRE_TIPO_DATO varchar(64) Nombre del tipo de dato

Tabla 37. DT_TIPO_DATO

Nombre de Campo Tipo Descripción

ID_TIPO_OPERADOR integer Identificador de tipo de operador

NOMBRE varchar(64) Nombre del tipo de operador

Tabla 38. DT_TIPO_OPERADOR

Nombre de Campo Tipo Descripción

ID_VARIABLE integer Identificador de variable

NOMBRE_VARIABLE varchar(64) Nombre de variable

ID_SUBTIPO_DATO integer Identificador de subtipo de dato

ES_CONJUNTO enum('S','N')

Indica si la variable es un

conjunto

Tabla 39. DT_VARIABLE

Page 89: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

70

Nombre de Campo Tipo Descripción

ID_VARIABLE_PROCESO Integer

Identificador de la

relación variable -

proceso

ID_PROCESO Integer

Identificador de

proceso

ID_VARIABLE Integer

Identificador de

variable

PROGRAMA_CALCULADOR_VARIABLE varchar(255)

Clase java

encargada de

calcular el valor de

la variable de

correo

NOMBRE_ATRIBUTO varchar(255)

Atributo de clase

java que

representa la

variable de correo

Tabla 40. DT_VARIABLE_PROCESO

3.4 ARQUITECTURA GENERAL DE SOFTWARE

El sistema anti-spam está diseñado con metodologías Orientadas a Objetos y

tomando como arquitectura base el patrón MVC (Modelo – Vista –

Controlador).

Page 90: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

71

El patrón MVC divide el sistema informático en 3 macro componentes:

Modelo (Datos), Vista (Interfaz de Usuario y/o procesos necesarios para

generar la Interfaz de Usuario, generadores de respuesta) y Controlador

(Lógica de Control) los cuales, tiene claramente definidas sus

responsabilidades, marco de acción, interfaces de programa, mecanismos de

comunicación y componentes que los conforman.

Las ventajas que trae la utilización de este patrón de diseño:

Alta modularidad

Alta Cohesión

Bajo Acoplamiento

Aumenta las oportunidades de Reutilización de Componentes

Disminuye la Complejidad del Mantenimiento de las Aplicaciones

FIGURA 6. MVC

Page 91: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

72

3.4.1 CONSIDERACIONES PARA EL MODELO

El modelo está formado por el conjunto de componentes que representan las

transacciones y lógica de negocio.

Los componentes del modelo implementados respetan las siguientes

directrices.

Sólo los componentes del modelo conocen los detalles de la tecnología

utilizada para acceder a los datos. (JDBC, Toplink, JDO, Hibernate,

Sistema de Archivos, etc.).

Los componentes de modelo son los responsables de administrar la

conexión de la fuente de información (base de datos, sistema de

archivos, LDAP, servidor de Correo Electrónico, etc.), debe encargarse

de obtener los recursos de conexión y liberarlos apropiadamente.

Los componentes del modelo son responsables de asegurar la

atomicidad e integridad de las transacciones. Por ejemplo :

En caso de que el repositorio de datos sea una base de datos, los

componentes del modelo, una vez que confirman que todas las operaciones

de la transacción han sido exitosas, deben concluir con un commit, en caso

Page 92: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

73

de detectar algún error en las operaciones de la transacción deberá ejecutar

un rollback.

Los errores que ocurran en la transacción, ya sea por errores de

fallos tecnológicos o de lógica del negocio, tienen que ser propagados

por el modelo para que el usuario que está realizando la transacción se

entere del problema.

El conjunto de operaciones que se realizan en una transacción deben

ser realizadas con una sola conexión hacia la base de datos.

Los componentes del modelo conoce todo los detalles de la lógica,

restricciones y flujo de las transacciones del negocio.

3.4.2 CONSIDERACIONES PARA EL CONTROLADOR

El controlador es el encargado de direccionar las acciones del usuario o de

procesos a las transacciones correspondientes.

Los componentes controladores implementados respetan las siguientes

directrices.

El controlador debe formatear los datos del usuario o procesos

ejecutores al formato requerido por las transacciones.

Page 93: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

74

El controlador es el encargado de manejar los errores de las

aplicaciones re direccionando el control al componente de la vista que

informe del error al usuario.

En el controlador no debe conocer de la tecnología utilizada por el

modelo para acceder a los datos.

Cuando el controlador quiera ejecutar una transacción deberá

recolectar todos los parámetros necesarios y luego ejecutar la

transacción con un solo llamado al modelo.

3.4.3 CONSIDERACIONES PARA LA VISTA

La vista está conformada por las Interfaces Graficas de Usuario, procesos

generadores de Interfaz Grafica y/o generadores de respuesta.

Los componentes de la Vista implementados respetan las siguientes

directrices.

Los componentes de la Vista no debe tener embebida lógica de

negocio ni validaciones transaccionales.

Los componentes de la Vista deben separar, mientras sea posible, el

contenido de la información del formato en el que se presenta por

medio del uso de plantillas y/o cascadas de estilo.

Page 94: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

75

3.5 ARQUITECTURA ESPECÍFICA DE SOFTWARE DEL SUB-SISTEMA

BizShield Web Administrator

La aplicación Web está desarrollada utilizando la siguiente arquitectura

FIGURA 7. Arquitectura sub-sistema de administración antispam

3.5.1 CAPA CLIENTE WEB

Esta es la capa que permitirá a los usuarios acceder a la aplicación sin

necesidad de tenerla instalada en sus computadores.

Los requisitos necesarios para que los clientes puedan acceder a la aplicación

son:

Tener instalado Navegador Web (Browser), la aplicación funcionará con

cualquier navegador, Internet Explorer, Mozilla, FireFox etc.

Page 95: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

76

Tener permisos de red necesarios para poder acceder al servidor de

aplicaciones.

3.5.2 CAPA WEB

Los componentes que intervienen en esta capa están implementados con los

siguientes patrones de diseño.

Front Controller

Este es el componente que se encarga de atender a las peticiones de

los Clientes Web. Sin importar las particularidades de la petición este

componente realizara lo siguiente:

Recuperar los datos que envía el cliente web desde el Browser, para

luego formatearlos según el formato requerido por las transacciones.

Luego se deberán ejecutar el llamado a la transacción correspondiente.

Una vez ejecutada la transacción se deberá llamar al componente que

dibuja la respuesta al usuario. En caso de que ocurriera algún error se

deberá llamar al componente que mostrara el mensaje de error.

Page 96: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

77

Front Controller es implementación web del componente Controlador

del Patrón MVC.

View Builder

Este es el componente que se encarga de generar las páginas web que

van a ser visualizada en la capa Cliente WEB. Las páginas generadas

respetan las siguientes directrices

o Las páginas generadas separan el contenido de su formato por

medio del uso de cascada de estilos. Los atributos de diseño y

formato de las paginas (tipo de fuente, tamaño de letra, colores

etc.) son manejados con archivos de estilo (CSS).

o Las páginas generadas no tienen embebida ninguna lógica de

negocio. Las únicas validaciones que se permitirán en las páginas

web son validaciones simples para las formas web, donde se

validen el formato de los campos (por ejemplo que un campo solo

permita ingresarse números, o que la fecha este en formato

dd/mm/yyyy) y restricciones sencillas de los datos (que un campo

sea obligatorio que el usuario lo llene).

View Builder es la implementación web del componente Vista del

Patrón MVC.

Page 97: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

78

3.6 ARQUITECTURA ESPECÍFICA DE SOFWTARE DEL SUB-SISTEMA

BizShield Service

El servicio anti-spam es un proceso servidor compatible exclusivamente con

el protocolo SMTP, es un servicio capaz de atender a varios clientes SMTP,

los cuales enviaran correos electrónicos, estos correos serán aceptados en

una primera instancia por el servidor y almacenados en la base de datos.

Los correos serán recuperados desde la base datos y evaluados para

determinar si son correo SPAM o no. En caso de que no sean correo SPAM

el correo será aceptado y podrá entrar al servidor de correo de la

organización (en caso de ser correo entrante) y salir hacia los servidores de

correos externos (en caso de ser correo saliente). Todo este trabajo es

descrito con más detalles en los siguientes diagramas de secuencia.

FIGURA 8. Diagrama de secuencia de arranque y parada de BizshieldService.

Page 98: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

79

3.6.1 Arranque y Parada del Servicio

El siguiente diagrama de secuencia muestra los mensajes e interacciones

entre las clases involucradas en el proceso de arranque y parada del

BizShield Service. A continuación se da una descripción general de las

responsabilidades de las clases que intervienen en el diagrama anterior.

Operador: Es el actor, normalmente el administrador de BizShield Service o

el Sistema Operativo, encargados de ejecutar el arranque o la parada de

BizShield Service.

BizshieldService: Es la clase encargada de levantar cada uno de los hilos

involucrados en el procesamiento antispam. Para iniciar el levantamiento de

hilos se debe ejecutar el método main. En caso de que soliciten, esta clase

también podrá detener cada uno de los hilos de procesamiento antispam.

Para detener los hilos se deberá ejecutar el método shutdown.

ServidorTCPMultihilo: Es la clase responsable de la gestión del pool de

hilos que atenderán las peticiones de los clientes. Es una clase muy general

e independiente del protocolo de aplicación implementado sobre TCP (smtp,

Page 99: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

80

http, etc), son los hilos del pool los que implementan el protocolo de

aplicación y hacen el trabajo a bajo nivel, esta clase solo los controla. A todos

los hilos del pool se les proporciona el mismo objeto ServerSocket para que

realicen las tareas de procesamiento sobre TCP. Todos los hilos arrancaran

cuando se ejecute el método run y se intentaran detener con el método

shutdown.

ProcesadorCorreos: Es la clase tipo hilo, responsable de procesar los

correos que han sido encolados previamente, este clase estará censando

continuamente la existencia de correos nuevos, para posteriormente

determinar si el correo es o no es spam. En caso de que se determine que el

correo electrónico no es SPAM entonces el correo será aceptado y reenviado

al servidor de correos interno (para el caso de correo entrante) o servidor de

correos externos (para el caso de correo saliente). Este hilo es iniciado

ejecutando el método run y detenido utilizando el método shutdown.

Monitor Reglas: Es la clase tipo hilo, responsable de detectar los cambios

que son realizados en las reglas y heurísticas de detección de spam. En caso

de detectar ha ocurrido una modificación esta clase actualizara los elementos

necesarios de las base de conocimiento. Este hilo es iniciado ejecutando el

método run y detenido utilizando el método shutdown.

Page 100: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

81

Monitor Actualizaciones: Es la clase encargada de censar las

actualizaciones sobre el repositorio de reglas públicas, en caso detectar una

nueva actualización actualizara las reglas del sistema. Este hilo es iniciado

ejecutando el método run y detenido utilizando el método shutdown.

3.6.2 Atención a peticiones SMTP

En esta fase los correos electrónicos son almacenados en la cola de

procesamiento de correos. El siguiente diagrama de secuencia muestra los

mensajes e interacciones entre las clases involucradas en el proceso de

atención a peticiones SMTP y almacenamiento en la cola de correos.

FIGURA 9. Diagrama de secuencia de atención a peticiones SMTP yalmacenamiento en la cola de correos.

Page 101: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

82

A continuación se da una descripción general de las responsabilidades de las

clases que intervienen en el diagrama anterior.

ProcesadorSMTP: Es la clase tipo hilo, responsable detectar y atender

conexiones SMTP, para lo cual espera conexiones en el ServerSocket

otorgado para trabaje, una vez detectado el requerimiento de un nuevo cliente

SMTP, ejecuta la lógica de procesamiento del protocolo SMTP, aceptando el

mensaje y su contenido para luego utilizar los componentes de

almacenamiento para persistir el mensaje en la base de datos.

CorreoBO: Es la clase que contiene todas las reglas de negocio y

transacciones relacionadas con el procesamiento de correos electrónicos.

Tiene a disposición los métodos de guardarCorreo para encolar el correo

electrónico para el procesamiento SPAM y procesarCorreo para determinar si

el correo es o no es SPAM.

Correo: Objeto que contiene todos los datos del Correo.

CorreDAO: Es la clase encargada de encapsular las operaciones de registro,

actualización, eliminación y recuperación de los correos electrónicos.

Page 102: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

83

3.6.3 Procesamiento de Correos

En esta fase se recuperan los correos de la cola y se comienzan a procesar

para determinar si son correo SPAM o no. El siguiente diagrama de

secuencia muestra los mensajes e interacciones entre las clases

involucradas para cumplir este objetivo.

FIGURA 10. Diagrama para recuperan los correos de la cola y se comienzana procesar para determinar si son correo SPAM o no.

ProcesadorCorreos: Esta clase está continuamente censando la cola de

correos, cada correo nuevo en la cola es procesado para determinar si es

correo SPAM o no, realmente esta clase no realiza este procesamiento, más

bien lo delega a otras clases y componentes.

Page 103: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

84

ReglaBO: Es la clase que contiene todas las reglas de negocio y

transacciones relacionadas con las reglas del sistema Bizshield. Tiene a

disposición el método evaluarReglas el cual evalúa un correo específico con

las reglas configuradas en el sistema, y devuelve el listado de reglas con las

que el correo cumplió. Para poder evaluar las reglas necesita primero calcular

las variables de los correos, para lo cual delegara esta responsabilidad a

Clases que implementen la interfaz CalculadorVariable. La responsabilidad de

evaluar las reglas es delegada a la clase MotorReglas.

CalculadorVariable: Es la interfaz que permitirá implementar los diversos

calculadores de variables. Todas las clases que implementen esta interfaz

tendrán la responsabilidad de calcular los valores reales de las variables

configuradas en el sistema.

MotorReglas: Esta clase se encargara de evaluar las reglas configuradas en

el sistema y determinar cuáles son las reglas que han sido cumplidas.

AccionesBO: Es la clase que contiene todas las reglas de negocio y

transacciones relacionadas con las acciones del sistema Bizshield. Tiene a

Page 104: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

85

disposición el método ejecutarAcciones el cual ejecutara todas las acciones

de control que están configuradas en BIzshieldServices. La ejecución de las

acciones específicas son delegadas a las Clases que implementan la interfaz

EjecutorAccion

EjecutorAccion: Es la interfaz que permite implementar los diversos

ejecutores de acciones. Todas las clases que implementen esta interfaz

tendrán la responsabilidad de ejecutar las acciones configuradas en el

sistema.

EnviadorSMTP: Es la clase que tiene la responsabilidad de comunicarse con

los servidores de correos SMTP, el hará la entrega de correo saliente y/o

entrante al servidor de correo correspondiente.

3.7 ARQUITECTURA ESPECÍFICA DE SOFWTARE DEL SUB-SISTEMA

BIZSHIELD LOGIC AND PERSISTENCES

En este subsistema se concentran todas las transacciones, lógica de

negocio, estructura de datos, componente de acceso a datos, las cuales

Page 105: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

86

podrán ser utilizadas por los subsistemas BizShield Services y BizShield Web

Administrator.

Este subsistema es la implementación del componente Modelo del patrón

MVC. Para que los componentes implementados en este subsistema sean

modulares, reusables, desacoplados, cohesivo y no sufran dependencia

entre la lógica de negocio y la tecnología utilizada para acceder a los datos,

esta capa se la divide en componentes implementados con el patrón

Business Object y Data Access Object. Además utiliza una clase persistente

la cual encapsulara la información de una estructura de datos en particular,

normalmente tablas. Este subsistema se encargara de propagara las

excepciones de forma adecuada.

3.7.1 Business ObjectLos componentes implementados con este patrón de diseño contienen la

lógica de las transacciones. Sin importar las particularidades de la transacción

estos componentes respetan lo siguiente:

Los componentes de este tipo son responsables de ejecutar el

procesamiento necesario sobre las entidades persistentes para cumplir

con el objetivo de la transacción.

Page 106: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

87

Los componentes de este tipo no tienen dependencia con la tecnología

que se utiliza para acceder a los datos, es decir ellos no manejan la

tecnología de persistencia de datos.

El manejo de errores de lógica de negocio están implementadas con la

propagación de Excepciones.

Los componentes de este tipo están implementados como clases simples,

para facilitar su reutilización.

3.7.2 Data Access Object

Estos componentes son los encargados de manejar los detalles tecnológicos

del mecanismo utilizado para acceder a los datos. Es decir los DAO son los

que conocen como crear, modificar y eliminar los datos en el repositorio de

información (Base de Datos, Sistemas de Archivos, etc.). Por lo tanto los

componentes DAO son los únicos que dependen de la tecnología de acceso

a datos.

Sin importar las particularidades del DAO estos componentes respetan lo

siguiente:

Todos los DAO que están siendo utilizados para una misma transacción

deben utilizar una misma conexión a la base de datos.

Page 107: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

88

Las operaciones que realizan los DAO no deben tener lógica ni

restricciones de negocio. Los componentes de este tipo están

implementados como clases simples, para facilitar su reutilización.

3.7.3 Clases y objetos persistentes

Las clases persistentes son las clases que están mapeadas a las tablas de la

base de datos mediante el motor de persistencia utilizado por la aplicación.

Los Objetos Persistentes son instancias de las clases persistentes. Un

Objeto persistente contiene información recuperada de la base de datos o

que debe ser guardada en la base de datos cuando se confirmen las

transacciones. Los Objetos Persistentes, como contiene la información,

pueden fluir en las distintas capas y subsistemas del Sistema BizShield.

3.7.4 Excepciones

Las excepciones son los objetos que encapsulan los errores que ocurren en

la aplicación y estos pueden ser de 2 tipos:

Excepciones de Lógica de Negocio: Estas excepciones se dan

cuando al procesar alguna transacción no cumplen las condiciones o

reglas de negocio necesarias para que la transacción culmine.

Excepciones por Fallos Tecnológicos: Estas excepciones ocurren

cuando uno de los componentes del sistema falla por algún error

Page 108: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

89

tecnológico (Problemas de Comunicación, Restricciones de Base de

Datos, etc).

El manejo de errores en la aplicación es realizado considerando las

siguientes directrices:

En caso de que el programa no pueda manejar una excepción este

debe ser propagada de tal forma que al usuario se le informe que la

operación que solicito al sistema ha fallado.

El manejo de excepciones debe incluir mecanismos de limpieza, que

se encarguen de cerrar las conexiones a las base de datos, archivos,

sockets, streams y liberen la memoria ya no utilizada.

El manejo de excepciones debe incluir mecanismos que permitan mantener

la integridad de datos, por medio de un correcto uso de rollback.

El manejo de excepciones debe incluir mecanismos que faciliten el

rastreo de errores, con el fin de facilitar el descubrimiento, seguimiento

y solución de errores

Page 109: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

90

CAPÍTULO 4

4. CODIFICACIÓN (DISEÑO A NIVEL

DE COMPONENTES)

4.1 ESTANDARES DE CODIFICACIÓN

A continuación se detallan los

estándares de programación utilizados

en la codificación de los programas.

Page 110: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

91

4.2 Consideraciones Generales

Ningún nombre podrá contener tildes, guiones, eñes o cualquier otro tipo de

carácter especial.

Ningún nombre podrá utilizar artículos.

Las extensiones de los archivos serán acorde a la función que

realizan: .jsp, .html, .js, .css, .jpg, .doc, .pdf, etc.

Utilizar descriptores completos en español, para describir exactamente

la variable, campo, clase, etc. Por ejemplo, use nombres como

primernombre, totalliquidacion o sectoreconomico.

Utilizar terminología aplicable al dominio. Si sus usuarios refieren a

sus clientes como importadores, entonces utilice el término importador

para la clase, no cliente.

Los nombres de los descriptores de variables, clases, funciones etc.

Deberán ser los más significativos posibles, en caso de ser necesario

se deberán utilizar nombres largos.

4.3 Convenciones De Nombrado

Las convenciones de nombrado hacen los programas más comprensibles

haciéndolos más fáciles de leer. También pueden dar información acerca de

Page 111: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

92

la función del identificador (por ejemplo, si se trata de una constante, un

paquete o una clase), que puede ayudar a entender el código.

4.3.1 Definición de término CamelCase

CamelCase es un estilo de escritura que se aplica a frases o palabras

compuestas. El nombre CamelCase se podría traducir como

Mayúsculas/Minúsculas Camello, aunque no es correcto en todos los

contextos ya que la palabra inglesa Case no tiene traducción literal. El

nombre se debe a que las mayúsculas a lo largo de una palabra en

CamelCase se asemejan a las jorobas de un camello. Existen dos tipos de

CamelCase:

UpperCamelCase, cuando la primera letra de cada una de las

palabras es mayúscula.

Ejemplo: EjemploDeUpperCamelCase.

lowerCamelCase, igual que la anterior con la excepción de que la

primera letra es minúscula.

Ejemplo: ejemploDeLowerCamelCase

Page 112: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

93

Inicio Tabla 41. Covenciones de nombrado.

Tipo deidentificador Reglas de nombrado Ejemplos

Paquetes

El prefijo de un nombre de paqueteúnico se escribe siempre en letrasASCII minúsculas y debería ser unode los nombres de dominio de nivelsuperior (actualmente com, edu,gov, mil, net, org ó uno de loscódigos de país de dos letras, comose especifica en el estándar ISO3166). Los siguientes componentesdel nombre del paquete varían deacuerdo a las propias convencionesde nombrado internas de lasorganizaciones. Dichasconvenciones pueden especificarque ciertos componentes de nombrede directorio sean división,departamento, proyecto, máquina onombres de usuario.

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

es.nom.jpereza

Clases

Los nombres de clases deberían sersustantivos, escritos en CamelCasecon la primera letra en mayúscula.Tratar de mantener los nombres declases simples y descriptivas. Usarpalabras completas, evitaracrónimos y abreviaturas (a menosque la abreviatura sea mucho másusada que la forma larga, comoURL o HTML).

class Raster

class ImageSprite

InterfacesLos nombres de interfaz deberíanser escritos como los nombres declases.

interface RasterDelegateinterface Storing

MétodosLos nombres de métodos deberíanser verbos, escritos en CamelCasecon la primera letra en minúscula.

run();runFast();

getBackground();

Variables Todos los nombres de variabledeberían estar escritos en

int i;char c;

Page 113: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

94

Tipo deidentificador Reglas de nombrado Ejemplos

CamelCase con la primera letra enminúscula. Los nombres devariables deberían ser cortosaunque significativos. La elección deun nombre de variable debería sermnemotécnica, esto es, pensadapara indicar la intención de su uso aun posible observador ocasional. Sedeberían evitar los nombres devariables de un solo caracterexcepto para variables temporales"desechables". Algunos nombrescomunes para variables temporalesson i, j, k, m y n para númerosenteros; c, d y e para caracteres.En caso de que una variable no seaun atributo de clase se deberáañadír un prefijo a la variable. Elprefijo indicara el alcance de lavariable y el tipo de dato.El prefijo podrá tener 2 caracteresEl primer carácter indica el alcance,el segundo carácter indica el tipo dedato. El alcance puede ser :

Local con letra lParámetro de método ofunción con letra p

Los tipos de datos solo serán paralos tipos de datos primitivos,Wrapper de tipos de datos primitivosy String. Las reglas son lassiguientes:

Para int e Integer la letra iPara long y Long letra lPara Boolean y Booleanletra bPara float y Float letra fPara doublé y Double letra d

Para String la letra s

float width;String streetName;

String ps_parametrosint li_edad

Constantes Los nombres de variables static final int

Page 114: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

95

Tipo deidentificador Reglas de nombrado Ejemplos

declaradas como constantes declase deberían estar escritos todo

en mayúsculas separando laspalabras con un caracter de

subrayado (_).

MIN_WIDTH = 4;static final int

MAX_WIDTH = 999;static final String

DEFAULT_PROTOCOL= "http";

Fin Tabla 41. Covenciones de nombrado.

4.3.2 Sentencias

Sentencias simples

Cada línea debería contener una sentencia como mucho. Por ejemplo:

argv++; // Correcto

argc--; // Correcto

argv++; argc--; // ¡EVITAR!

Sentencias compuestas

Las sentencias compuestas son sentencias que contienen una lista de

sentencias encerradas entre llaves "{" y "}". Ver las siguientes secciones para

encontrar ejemplos.

Las sentencias internas deberían estar tabuladas un nivel más que la

sentencia compuesta.

Page 115: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

96

La llave de apertura debería estar en la línea siguiente de la línea

donde comienza la sentencia compuesta; la llave de cierre debería estar

en una nueva línea y estar tabulada al nivel del principio de la sentencia

compuesta.

Las llaves se usan en todas las sentencias compuestas, incluidas las

sentencias únicas, cuando forman parte de una estructura de control,

como una sentencia if-else o un bucle for. Esto hace más fácil introducir

nuevas sentencias sin provocar errores accidentales al olvidarse añadir

las llaves.

Sentencias return

Una sentencia return con un valor no debería usar paréntesis a menos que

haga el valor devuelto más obvio de alguna manera. Por ejemplo:

return;

return myDisk.size();

return (size > 0 ? size : defaultSize);

Sentencias if, if-else, if-else-if-else

Page 116: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

97

El tipo de sentencias if-else debería tener el siguiente formato:

if (condición)

{

sentencias;

}

if (condición)

{

sentencias;

}

else

{

sentencias;

}

if (condición)

{

sentencias;

}

else if (condición)

{

sentencias;

}

else

{

sentencias;

}

Nota: Las sentencias if siempre llevan llaves {}. Evitar la siguiente forma,

propensa a errores:

Page 117: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

98

if (condición) // ¡EVITAR OMITIR LAS LLAVES! {}

sentencia;

Sentencias for

Una sentencia for debería tener el siguiente formato:

for (inicialización; condición; actualización)

{

sentencias;

}

Una sentencia for vacía (aquella en la que todo el trabajo se hace en las

cláusulas de inicialización, condición y actualización) debería tener el

siguiente formato:

for (inicialización; condición; actualización);

Cuando se use el operador coma en la cláusula de inicialización o

actualización, evitar la complejidad de utilizar más de tres variables. Si se

necesita, usar sentencias separadas antes del bucle for (para la cláusula de

inicialización) o al final del bucle (para la cláusula de actualización).

Sentencias while

Una sentencia while debería tener el siguiente formato:

Page 118: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

99

while (condición)

{

sentencias;

}

Una sentencia while vacía debería tener el siguiente formato:

while (condición);

Sentencias do-while

Una sentencia do-while debería tener el siguiente formato:

do

{

sentencias;

} while (condición);

Sentencias switch

Una sentencia switch debería tener el siguiente formato:

switch (condición)

{

case ABC:

sentencias;

/* continua con el siguiente */

case DEF:

Page 119: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

100

sentencias;

break;

case XYZ:

sentencias;

break;

default:sentencias;

break;

}

Cada vez que un caso continúa con el siguiente (no incluye una sentencia

break), se añade un comentario donde iría la sentencia break. Esto se

muestra en el ejemplo anterior con el comentario /* continua con el siguiente

*/. Todas las sentencias switch deberían incluir un caso por defecto. El break

en el caso por defecto es redundante, pero previene un error de continuar

con el siguiente si más adelante se incluye otro caso.

Sentencias try-catch

Una sentencia try-catch debería tener el siguiente formato:

try{

sentencias;

}

Page 120: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

101

catch (ExceptionClass e)

{

sentencias;

}

Una sentencia try-catch puede venir seguida de una sentencia finally, la cual

se ejecuta siempre independientemente de que el bloque try se haya

completado correctamente o no.

try{

sentencias;

}

catch (ExceptionClass e)

{

sentencias;

}

finally{

sentencias;

}

Page 121: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

102

4.3.3 Espacios en blanco

Líneas en blanco

Las líneas en blanco mejoran la legibilidad resaltando secciones de código

que están relacionadas lógicamente. En las siguientes circunstancias,

siempre se deberían usar dos líneas en blanco:

Entre secciones de un fichero fuente.

Entre definiciones de clases e interfaces.

En las siguientes circunstancias, siempre se debería usar una línea en

blanco:

Entre métodos.

Entre las variables locales de un método y su primera sentencia.

Antes de un comentario de bloque o de una sola línea.

Entre las secciones lógicas de un método, para mejorar la legibilidad.

Espacios en blanco

Los espacios en blanco deberían usarse en las siguientes circunstancias:

Una palabra clave seguida por un paréntesis debería estar separado por

un espacio. Por ejemplo:

Page 122: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

103

while (true)

{

...

}

Nótese que entre el nombre de un método y sus paréntesis no debe haber

espacios en blanco. Esto ayuda a distinguir entre palabras claves y llamadas

a métodos.

En las listas de argumentos, debería haber un espacio después de cada

coma.

Todos los operadores binarios, excepto el operador punto (.) deberían

estar separados de sus operandos por espacios. Los operadores unarios

(incremento ++, decremento --, negativo -) nunca deberían estar

separados de sus operandos. Por ejemplo:

a += c + d;

a = (a + b) / (c * d);

while (d++ = s++)

{

n++;

Page 123: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

104

}

print("el resultado es " + foo + "\n");

Las expresiones de una sentencia for deberían estar separadas por

espacios en blanco. Por ejemplo:

for (expr1; expr2; expr3)

Las conversiones de tipo (cast) deberían estar seguidas de un espacio

en blanco. Por ejemplo:

myMethod((byte) aNum, (Object) x);

myMethod((int) (cp + 5), ((int) (i + 3))+ 1);

4.4 DETALLES DE LOS PROCESOS Y COMPONENTES DEL SISTEMA

BIZSHIELD

La siguiente tabla da un resumen de los APIs, frameworks y tecnologías de

desarrollo más importantes, utilizadas en el desarrollo de Bizshield

Anntispam.

Page 124: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

105

API,Framework otecnología de

DesarrolloDescripción Subsistema donde se

utiliza

Java Net API

Este API es utilizado paraimplementar el manejo desocket y procesamiento a nivelSMTP

Bizshield Service

Java IO API

Este API es utilizado para elmanejo de los Streams deEntrada (In) y Salida (Out) enel manejo de datostransmitidos por los socket yprocesamiento de los paquetesMIME

Bizshield Service

Java Mail

Este API es utilizado en losprocesos calculadores devariables y ejecutores deacciones, ya que este apiayuda a procesar con mayorfacilidad la información de loscorreos MIME.

Bizshield Service

HibernateEste framework es utilizadopara la persistencia de objetosy el acceso a los datos

Bizshield ServiceBizshield WebAdministrator

Drools

Este framework es utilizadopara implementar el dinamismode las reglas del antispam,permite implementar el motorde inferencia que evalúa lasreglas configuradas paradeterminar si el correo es o nospam (Motor del SistemaExperto).

Bizshield Service

Java ThreadPara el manejo de los hilos deprocesamiento implementadospara el sistema.

Bizshield Service

Servlets y JSPsPara la generación delcontenido dinámico de laaplicación web

Bizshield WebAdministrator

JavaServerFaces

JavaServer Faces (JSF) es unframework de desarrollobasado en el patrón MVC(Modelo – Vista – Controlador),

Bizshield WebAdministrator

Page 125: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

106

que normaliza y estandariza eldesarrollo de aplicaciones webbajo un modelo deprogramación de componentesUI del lado del servidor. Latecnología JSF está porencima de las tecnologías JSPy Servlet y proporciona un nivelde abstracción más alto queéstas, liberando aldesarrollador del enfoquetradicional delrequest/response.

DisplayTag

Es una librería de tags jspopensource diseñada paratrabajar bajo una arquitecturaMVC, que permite eldespliegue de información deforma tabular.

Bizshield WebAdministrator

ANTLR

ANTLR es una herramientaque proporciona un marco detrabajo para la construcción dereconocedores, intérpretes,compiladores y traductores delenguajes a partir degramáticas enriquecidas conacciones, utilizada para lavalidación de las reglasantispam configuradas por elusuario.

Bizshield WebAdministrator

Tabla 42. Procesos y componentes del sistema Bizshield

4.5 DETALLES de CODIFICACIÓN DEL SUBSISTEMA BIZSHIELDSERVICEA continuación se dan detalles de la lógica de programación y tecnologías

utilizadas en los componentes que intervienen en los procesos más

importantes del subsistema Bizshield Service.

Page 126: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

107

4.5.1 Arranque del Subsistema Bizshield Service.

A continuación se detalla las acciones y operaciones realizadas, a nivel de

programación, en el proceso de arranque del subsistema Bizshield Service.

1.El arranque del sistema ocurre cuando se ejecuta la clase BizshieldService.

La primera acción que es realizada al ejecutar esta clase es la actualización

de los archivos de reglas drools (.drl) con las reglas que se encuentran

creadas en la base de datos. Lo cual es realizado con las siguientes líneas

de código.

TraductorBO l_traductorBO=new TraductorBO();

l_traductorBO.actualizarReglas();

2.Se detecta cual es la ruta donde se encuentran los archivos de parámetros

configuración (logs y ejecución) del anti-spam. Lo cual es realizado con las

siguientes líneas de código.

String directory = getConfigurationDirectory( args );

3.Se procede a cargar los parámetros de configuración de logs colocados en

el archivo con nombre log.conf. Lo cual es realizado con la siguiente línea de

código.

Page 127: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

108

initializeLogging( ls_directory );

4.Se procede a cargar los parámetros de configuración de ejecución

colocados en el archivo con nombre bizshield.conf. Lo cual es realizado con

la siguiente línea de código.

ConfigurationManager configurationManager =

ConfigurationManager.initialize( ls_directory );

5.Se procede a recuperar el puerto por donde entraran los correos

electrónicos. Lo cual es realizado con la siguiente línea de código.

int li_port = configurationManager.getSmtpPort();

6.Se procede a recuperar el parámetro de número de hilos que atenderán los

correos electrónicos. Lo cual es realizado con la siguiente línea de código.

intli_executeThreads=l_configurationManager.getExecuteThreadCount();

7.Se procede a arrancar el pool de hilos que procesaran los correos

electrónicos. Lo cual es realizado con las siguientes líneas de código.

smtpListener = new ServidorTCPMultihilo( li_port,

ProcesadorSMTP.class,

Page 128: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

109

li_executeThreads );

new Thread( smtpListener, "SMTP" ).start();

8.Se procede a arrancar el hilo que procesara los correos encolados,

ejecutara las reglas configuradas determinando si el correo encolado es

spam o no y ejecutara las acciones de control. En caso de que el correo no

sea spam el correo será entregado al servidor de correos interno (para los

correos entrantes) o servidores de correos externos (para los correos

salientes). Esto es realizado con las siguientes líneas de código.

procesadorCorreos = new ProcesadorCorreos();

procesadorCorreosThread = new Thread( procesadorCorreos,

"SMTPEnviador" );

procesadorCorreosThread.start();

9.Se procede a arrancar el hilo que se encargara de monitorear las

modificaciones realizadas sobre las reglas almacenadas en la base de datos,

cuando se detecta algún cambio se actualizarán los archivos de reglas drools

(.drl). Esto es realizado con las siguientes líneas de código.

monitorReglas=new MonitorReglas();

Page 129: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

110

monitorReglasThread = new Thread( monitorReglas ,"MonitorReglas");

monitorReglasThread.start();

10.Se procede a arrancar el hilo que se encargara de buscar actualizaciones

en el repositorio publico de reglas, en caso de encontrar nuevas definiciones

actualizará la base de datos local. Esto es realizado con las siguientes líneas

de código.

monitorActualizaciones=new MonitorActualizaciones();

monitorActualizacionesThread=new Thread(monitorActualizaciones,

"MonitorActualizaciones");

monitorActualizacionesThread.start();

11.Se configura el hilo que ejecutará la parada de los hilos de Bizshield

Service cuando el proceso de sistema operativo sea detenido. Esto es

realizado con las siguientes líneas de código.

shutdownService = new ShutdownService();

shutdownServiceThread = new Thread(shutdownService);

Runtime.getRuntime().addShutdownHook( shutdownServiceThread );

Page 130: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

111

4.5.2 Proceso de atención de peticiones SMTP.

La clase principal que se encarga de este proceso es

com.realmsoft.bizshield.server.services.smtp.ProcesadorSMTP, esta clase es

una implementación de la interface java Runnable, por lo tanto esta clase es

un hilo y debe implementar el método public void run().

Este hilo es controlado por un objeto de la clase

com.realmsoft.bizshield.server.services.general.ServidorTCPMultihilo. Esta

clase es un manejador de pool de hilos y por lo tanto puede controlar la

ejecución de varios objetos de la clase

com.realmsoft.bizshield.server.services.smtp.ProcesadorSMTP.

A continuación se detalla las acciones y operaciones realizadas, a nivel de

programación, en el proceso de atención de peticiones SMTP.

1.Este hilo en su implementación tiene un lazo el cual se ejecutara mientras

la variable de clase running tenga el valor true. La variable de clase running

tendrá un valor de false cuando se ejecuta el método public void

shutdown(). Esto es realizado con las siguientes líneas de código.

Page 131: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

112

public void run()

{

while(running)

{

}

}

public void shutdown()

{

running = false;

}

2.Se espera la conexión de un cliente SMTP, ejecutando el método accept()

del la clase java.net.ServerSocket, una vez que se detecta una conexión se

retorna el socket por donde se realizará la comunicación en el protocolo

SMTP. Además se setea el timeout de la conexión. Esto es realizado con las

siguientes líneas de código.

socket = serverSocket.accept();

socket.setSoTimeout( 60 * 1000 );

Page 132: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

113

3.Se crean los objetos necesarios para la entrada y salida de datos entre el

servidor y el cliente conectado. Esto es realizado con las siguientes líneas de

código.

out = new PrintWriter(socket.getOutputStream(), true);

in = new BufferedReader(

new InputStreamReader( socket.getInputStream() )

);

4.Se realiza la comunicación SMTP entre el cliente y el servidor, producto del

intercambio de datos se crea un objeto de la clase

com.realmsoft.bizshield.server.services.smtp.MensajeSMTP. Esto es

realizado con las siguientes líneas de código.

write( WELCOME_MESSAGE );

handleCommands();

5.Se crea una lista de String que contiene los correos destinos.

Además se identifica si el correo es entrante o saliente, para lo cual se evalúa

la IP del cliente conectado, si es igual a la IP del servidor de correos

configurado en el archivo bizshield.conf (parámetro puertoSmtp) entonces es

Page 133: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

114

un correo saliente caso contrario es un correo entrante. Por último el correo

electrónico es almacenado en la base de datos. Todo esto es realizado con

las siguientes líneas de código

ArrayList<String> l_mailsTo=new ArrayList<String>();

for(DireccionCorreo l_emailAddress:message.getToAddresses())

l_mailsTo.add(l_emailAddress.getAddress());

String ls_servidorCorreoInterno = configurationManager.

getServidorCorreo().getHost();

boolean lb_correoEntrante = !ls_servidorCorreoInterno.

equals(clientIp);

CorreoBO l_correoBO=new CorreoBO();

l_correoBO.guardarCorreo(

message.getFromAddress().toString(),

l_mailsTo,

message.getDataLines(),

clientIp,

lb_correoEntrante);

4.5.3 Procesamiento de Correos.

La clase principal que se encarga de este proceso es

com.realmsoft.bizshield.server.services.smtp.ProcesadorCorreos, esta clase

es una implementación de la interface java Runnable, por lo tanto esta clase

es un hilo y debe implementar el método public void run(). El proceso

Page 134: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

115

encargado de ejecutar este hilo es el proceso “Arranque del Subsistema

Bizshield Service”. A continuación se detalla las acciones y operaciones

realizadas, a nivel de programación, en el procesamiento de correos.

1.Este hilo en su implementación tiene un lazo el cual se ejecutará mientras

la variable de clase running tenga el valor true. La variable de clase running

tendrá un valor de false cuando se ejecuta el método public void

shutdown(). Esto es realizado con las siguientes líneas de código.

public void run()

{

while(running)

{

}

}

public void shutdown()

{

running = false;

}

Page 135: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

116

2.Se busca en la base de datos, en la tabla dt_correos, todos los correos

electrónicos que tengan en su campo es_spam el valor de “D”, lo que indica

que aun no se ha determinado si el correo electrónico es spam o no. Esto es

realizado con las siguientes líneas de código.

DtCorreoDao l_dtCorreoDao=new DtCorreoDao();

List<DtCorreo> l_dtCorreos=l_dtCorreoDao.findDtCorreosByEsSpam("D");

3.Estos correos electrónicos son procesados con un ciclo for, donde en cada

interacción inicia una transacción con manejador de errores de tal forma que

si todo se ejecutó sin novedades se realiza un commit y en caso de ocurrir un

error se ejecuta un rollback. Además se evalúa la variable de clase running

en caso de que sea falsa se detiene el ciclo for. Esto es realizado con las

siguientes líneas de código.

for(DtCorreo l_dtCorreo:l_dtCorreos)

{

try{

DaoUtil.beginTransaction();

if(!running)

break;

………

………

………

Page 136: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

117

DaoUtil.commit();

}

catch (Exception e)

{

DaoUtil.rollback();

}

}

4. Se procesa el correo utilizando la clase

com.realmsoft.bizshield.bo.CorreoBO, invocando al método procesarCorreo,

el cual evalúa las reglas y ejecuta las acciones de control configuradas en

sistema. El resultado de este procesamiento es cambiar la propiedad

esSpam de D a S en caso de que el correo sea SPAM o a N en caso de que

el correo no sea SPAM. Esto es realizado con las siguientes líneas de

código.

l_dtCorreo=l_dtCorreoDao.findById(l_dtCorreo.getIdCorreo());

l_correoBO.procesarCorreo(l_dtCorreo.getIdCorreo());

5. En caso de que el correo no sea spam entonces se crea un objeto

com.realmsoft.bizshield.server.services.smtp.MensajeSMTP con los datos

del correo procesado y se lo envía al servidor de correos correspondiente

(servidor de correos interno para correo entrante y servidor de correo externo

para el correo saliente), el objeto utilizado para enviar el correo es una

Page 137: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

118

instancia de la clase com.realmsoft.bizshield.server.services.smtp.

EnviadorSMTP. Esto es realizado con las siguientes líneas de código.

if(l_dtCorreo.getEsSpam().equals(Constantes.NO+""))

{

MensajeSMTP l_message=new MensajeSMTP();

DireccionCorreo fromAddress=new DireccionCorreo();

fromAddress.setAddress(l_dtCorreo.getDe());

l_message.setFromAddress(fromAddress);

String lsA_corresoDestion[]=l_dtCorreo.getPara().

split(""+Constantes.CARACTER_SEPARADOR_CORREOS);

for(String ls_direccionCorreo:lsA_corresoDestion)

{

DireccionCorreo toAddress=new DireccionCorreo();

toAddress.setAddress(ls_direccionCorreo);

l_message.addToAddress(toAddress);

}

String lsA_lineasContenido[]=newString(l_dtCorreo.getContenidoFinal()).

split(Constantes.SEPARADOR_LINEAS_DATOS_CORREO);

for(String ls_linea:lsA_lineasContenido)

{

l_message.addDataLine(ls_linea);

}

enviador.sendMessage(l_message);

}

Page 138: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

119

6.Por último el correo procesado es guardado en la base de datos. Esto es

realizado con las siguientes líneas de código.

l_dtCorreoDao.attachDirty(l_dtCorreo);

4.5.4 Monitoreo de Cambios de Reglas.

La clase principal que se encarga de este proceso es

com.realmsoft.bizshield.server.MonitorReglas, esta clase es una

implementación de la interface java Runnable, por lo tanto esta clase es un

hilo y debe implementar el método public void run(). El proceso encargado

de ejecutar este hilo es el proceso “Arranque del Subsistema Bizshield

Service”. A continuación se detalla las acciones y operaciones realizadas, a

nivel de programación, en el proceso de monitoreo de cambios de reglas.

1.Este hilo en su implementación tiene un lazo el cual se ejecutará mientras

la variable de clase running tenga el valor true. La variable de clase running

tendrá un valor de false cuando se ejecuta el método public void

shutdown(). Esto es realizado con las siguientes líneas de código.

public void run()

Page 139: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

120

{

while(running)

{

}

}

public void shutdown()

{

running = false;

}

2.Se monitorea en la base de datos, si se han realizado cambios en las

reglas de anti-spam y en caso de detectar cambios se actualizan los archivos

de reglas drools (.drl). El mecanismo utilizado para conocer si las reglas

fueron modificadas es censar el campo cambiaron_reglas de la tabla

dt_proceso. Si un proceso (Correo Entrante o Saliente) tiene el campo

cambiaron_reglas con valor S entonces hay que refrescar el archivo de

reglas de ese proceso, este campo solo se pone en S cuando un usuario

crear o modifica las reglas de un proceso o si un usuario cambia las acciones

que deben ejecutarse cuando se cumplen las reglas de un proceso. Esto es

realizado con las siguientes líneas de código.

Page 140: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

121

TraductorBO l_traductorBO=new TraductorBO();

l_traductorBO.sensarActualizarReglas();

4.5.5 Monitoreo para actualizaciones automática de las Reglas.

La clase principal que se encarga de este proceso es

com.realmsoft.bizshield.server. MonitorActualizaciones, esta clase es una

implementación de la interface java Runnable, por lo tanto esta clase es un

hilo y debe implementar el método public void run(). El proceso encargado

de ejecutar este hilo es el proceso “Arranque del Subsistema Bizshield

Service”. A continuación se detalla las acciones y operaciones realizadas, a

nivel de programación, en el proceso de actualizaciones automáticas de las

reglas.

1.Este hilo en su implementación tiene un lazo el cual se ejecutará mientras

la variable de clase running tenga el valor true. Este ciclo se ejecutará cada

minuto. La variable de clase running tendrá un valor de false cuando se

ejecuta el método public void shutdown(). Esto es realizado con las

siguientes líneas de código.

Page 141: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

122

public void run()

{

while(running)

{

Thread.sleep(1000*60);

}

}

public void shutdown()

{

running = false;

}

2.Se realiza una conexión con la URL configurada en el archivo bizshield.conf

parámetro urlActualizaciones, se abre la conexión y se recupera el stream

que permitirá recuperar los datos. Esto es realizado con las siguientes líneas

de código.

ConfigurationManager l_cm=ConfigurationManager.getInstance();

InputStream l_io = l_cm.getUrlActualizacion().

openConnection().getInputStream();

Page 142: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

123

3.La URL apunta a un archivo de propiedades java (.properties) el cual será

muy parecido al siguiente ejemplo

version=1

listaIpNegra= IP_ORIGEN IN (’10.10.20.1’,’100.14.15.1’,’45.45.78.1’)

Se crea un objeto java.util.Properties el cual es cargado con la información

del stream. Esto es realizado con las siguientes líneas de código.

Properties l_p=new Properties();

l_p.load(l_io);

4.Se recupera el número de la nueva versión publicada, siempre la primera

vez que se ejecuta el Monitor de Actualización se actualiza la regla de lista

de IP negra, luego solo se modifica la regla de lista de IP negra si se detecta

que la nueva versión es diferente a la última que se actualizó. Esto es

realizado con las siguientes líneas de código.

Properties l_p=new Properties();

l_p.load(l_io);

String ls_nuevaVersion=l_p.getProperty("version");

if(ultimaVersionActualizada==null ||

!ls_nuevaVersion.equals(ultimaVersionActualizada))

{

String ls_listaIpNegra=l_p.getProperty("listaIpNegra");

Page 143: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

124

ReglasBO l_reglasBo=new ReglasBO();

l_reglasBo.actualizarReglaListaIpNegra(listaIpNegra);

}

4.6 DETALLES DE CODIFICACIÓN DE LOS COMPONENTES DEL

SUBSISTEMA BIZSHIELD LOGIC AND PERSISTENCE

4.6.1 Clases BO

Las clases BO son las que encapsulan toda la lógica transaccional y de

negocio, estas clases no tienen propiedades, solo tiene métodos que

encapsulan las reglas y operaciones específicas de negocio. Para realizar las

operaciones de CRUD (Create, Read, Update y Delete) de los datos de

negocio se apoyan de las clases DAO. Los métodos de las Clases BO

pueden ser de dos tipos:

o Operaciones

o Transacciones

Ambos tipos de métodos deben encapsular reglas y operaciones lógicas de

negocio, la única diferencia es que las transacciones implementan en su

programación el manejo de la atomicidad de la transacción. Por tal motivo el

flujo de control de las clases BOs deberán respetar lo siguiente:

Un método transaccional podrá apoyarse llamando a otros métodos de

operaciones.

Page 144: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

125

Un método de operación podrá apoyarse llamando a otros métodos de

operación

Un método transaccional no deberá llamar a otro método de transacción,

porque esto pondría en riesgo la atomicidad e integridad transaccional de

los datos.

Los métodos de las clases BO (Operaciones o Transacciones) deberán

propagar los estados de error creando Objetos de la clase

ExcepcionLogicaNegocio y propagándolos correctamente. Los estados de

error normalmente son las situaciones en donde los datos no cumplen con

las reglas de negocio. A continuación se da un ejemplo general de una

ClaseBO

package com.realmsoft.bizshield.bo;

import com.realmsoft.excepciones.ExcepcionLogicaNegocio;

import com.realmsoft.util.dao.DaoUtil;

public class EjemploBO

{

public void transaccion1(String ps_dato1,String ps_dato2 .....)

{

try{

//Inicio de la transaccion

DaoUtil.beginTransaction();

operacion1();

if(condicionError)

{

Page 145: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

126

ExcepcionLogicaNegocio l_e=

new ExcepcionLogicaNegocio(

"Mensaje a Usuario de la condicion de error",

"Mensaje a Técnico de la condicion de error");

throw l_e;

}

operacion2();

//Lógica de negocio especifica de la transaccion1

.....

.....

.....

//Commit de la transaccion

DaoUtil.commit();

}

catch (Exception e)

{

//Rollback de la transaccion

DaoUtil.rollback();

throw e;

}

}

public void operacion1(String ps_dato1,String ps_dato2 .....)

{

//Realiza lógica de negocio especifica 1

.....

.....

.....

}

Page 146: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

127

public void operacion2(String ps_dato1,String ps_dato2 .....)

{

//Realiza lógica de negocio especifica 2

.....

.....

.....

operacion3(dato1,dato2....);

}

public void operacion3(String ps_dato1,String ps_dato2 .....)

{

//Realiza lógica de negocio especifica 3

.....

.....

.....

if(condicionError)

{

ExcepcionLogicaNegocio l_e=new ExcepcionLogicaNegocio(

"Mensaje a Usuario de la condicion de error",

"Mensaje a Técnico de la condicion de error");

throw l_e;

}

}

}

Page 147: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

128

4.6.2 Clases DAO.

Las clases DAO tiene la responsabilidad de acceder a los datos y realizar las

operaciones CRUD (Create, Read, Update y Delete). Todas las clases DAO

heredan de la clase com.realmsoft.util.dao.Dao. Por cada tabla de la base de

datos existirá una clase dao que permitirá realizar las operaciones CRUD.

Las clases DAO están altamente acopladas a la tecnología de acceso a

datos, esto se debe a que para hacer las operaciones CRUD utiliza

directamente la tecnología de acceso a datos. En este caso las clases DAO

están acopladas al motor de persistencia Hibernate. Las clases DAO tendrán

los siguientes métodos:

persist: Hace que un objeto sea persistente y modifica todos los

objetos relacionados en caso de que haya sido modificados.

attachDirty: Hace que un objeto sea cree o actualice, no se modifican

los objetos relacionados.

attachClean: Hace que un objeto sea cree o actualice, no se modifican

los objetos relacionados, adicionalmente se bloquea el registro.

delete: Borra un objeto.

merge: Ejecuta la operación merge de hibérnate.

findById: Busca un objeto según su clave identificador única

Page 148: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

129

Otros métodos find: Busca un objeto o un listado de objetos con los

parámetros necesarios.

A continuación mostramos un ejemplo de una clase DAO

package com.realmsoft.deterministicos.dao;

import java.util.List;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.hibernate.LockMode;

import com.realmsoft.deterministicos.clasesPersistentes.DtAccion;

import com.realmsoft.util.UtilFecha;

import com.realmsoft.util.dao.Dao;

import static org.hibernate.criterion.Example.create;

public class DtAccionDao extends Dao

{

private static final Log log = LogFactory.getLog(DtAccionDao.class);

public void persist(DtAccion transientInstance)

{

log.debug("persisting DtAccion instance");

try{

sessionFactory.getCurrentSession().

persist(transientInstance);

Page 149: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

130

log.debug("persist successful");

}

catch (RuntimeException re)

{

log.error("persist failed", re);

throw re;

}

}

public void attachDirty(DtAccion instance) {

log.debug("attaching dirty DtAccion instance");

try {

sessionFactory.getCurrentSession().

saveOrUpdate(instance);

log.debug("attach successful");

} catch (RuntimeException re) {

log.error("attach failed", re);

throw re;

}

}

public void attachClean(DtAccion instance) {

log.debug("attaching clean DtAccion instance");

try {

sessionFactory.getCurrentSession().

lock(instance, LockMode.NONE);

log.debug("attach successful");

} catch (RuntimeException re) {

log.error("attach failed", re);

throw re;

Page 150: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

131

}

}

public void delete(DtAccion persistentInstance) {

log.debug("deleting DtAccion instance");

try {

sessionFactory.getCurrentSession().

delete(persistentInstance);

log.debug("delete successful");

} catch (RuntimeException re) {

log.error("delete failed", re);

throw re;

}

}

public DtAccion merge(DtAccion detachedInstance) {

log.debug("merging DtAccion instance");

try {

DtAccion result = (DtAccion) sessionFactory.

getCurrentSession().

merge(detachedInstance);

log.debug("merge successful");

return result;

} catch (RuntimeException re) {

log.error("merge failed", re);

throw re;

}

}

public DtAccion findById(long id) {

log.debug("getting DtAccion instance with id: " + id);

Page 151: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

132

try {

DtAccion instance = (DtAccion) sessionFactory

.getCurrentSession()

.get(

"com.realmsoft.deterministicos.clasesPersistentes.DtAccion",

id);

if (instance == null) {log.debug("get successful, no instance found");

} else {

log.debug("get successful, instance found");

}

return instance;

} catch (RuntimeException re) {

log.error("get failed", re);

throw re;

}

}

@SuppressWarnings("unchecked")

public List<DtAccion> findByExample(DtAccion instance) {

log.debug("finding DtAccion instance by example");

try {

List<DtAccion> results = (List<DtAccion>) sessionFactory

.getCurrentSession()

.createCriteria(

"com.realmsoft.deterministicos.clasesPersistentes.DtAccion")

.add(create(instance)).list();

log.debug("find by example successful, result size: "

+ results.size());

return results;

} catch (RuntimeException re) {

Page 152: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

133

log.error("find by example failed", re);

throw re;

}

}

@SuppressWarnings("unchecked")

public List<DtAccion> findDtAccionesVigentesByIdRegla(

long pl_idRegla)

{

returnsessionFactory.getCurrentSession().

getNamedQuery("findDtAccionesVigentesByIdRegla")

.setLong("idRegla", pl_idRegla)

.setCalendar("hoy", UtilFecha.getHoy())

.setCalendar("maniana", UtilFecha.getHoy())

.list();

}

@SuppressWarnings("unchecked")

public List<DtAccion>

findDtAccionesVigentesByIdReglaIdTipoAccion(

long pl_idRegla,long pl_idTipoAccion)

{

return sessionFactory.getCurrentSession().

getNamedQuery("findDtAccionesVigentesByIdReglaIdTipoAccion")

.setLong("idRegla", pl_idRegla)

.setLong("idTipoAccion", pl_idTipoAccion)

.setCalendar("hoy", UtilFecha.getHoy())

.setCalendar("maniana", UtilFecha.getHoy())

.list();

}

}

Page 153: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

134

4.6.3 Clases Persistentes.

Las clases persistentes son las clases que contienen los datos del negocio

expresados como atributos de clase y para el manejo de estos atributos

tienen métodos set y get. Por cada tabla de base de datos existirá una clase

persistente. Los atributos que pueden tener las clases persistentes son los

siguientes.

Propiedad: Es un valor simple, por ejemplo un número, cadena de

caracteres, fecha, etc. Este tipo de atributo es una característica propia de

la clase persistente y no expresa ningún tipo de relación.

Objeto Padre: Es un objeto de alguna clase persistente. Este tipo de

atributo es característica de una relación de muchos a uno entre la clase

persistente del objeto padre y la clase persistente en mención.

Objetos Hijos: Es un Set de objetos de alguna clase persistente. Este

tipo de atributo es característica de una relación de uno a muchos entre la

clase persistente en mención y la clase persistente de los objetos hijos.

Page 154: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

135

A continuación mostramos un ejemplo de las clases persistentes

com.realmsoft.deterministicos.clasesPersistentes.DtTipoOperador y

com.realmsoft.deterministicos.clasesPersistentes.DtOperador. La relación

entre estas clases son:

Un DTTipoOperador tiene uno o varios DTOperador (uno a muchos).

Varios DtOperador tiene el mismo DtTipoOperador (muchos a uno)

/*Clase DtTipoOperador*/

package com.realmsoft.deterministicos.clasesPersistentes;

import java.util.HashSet;

import java.util.Set;

public class DtTipoOperador implements java.io.Serializable {

private static final long serialVersionUID = -3424189393286673341L;

private Integer idTipoOperador;

private String nombre;

private Set<DtOperador> dtOperadors = new HashSet<DtOperador>(0);

public DtTipoOperador() {

}

public DtTipoOperador(String nombre) {

this.nombre = nombre;

}

public DtTipoOperador(String nombre, Set<DtOperador> dtOperadors) {

this.nombre = nombre;

Page 155: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

136

this.dtOperadors = dtOperadors;

}

public Integer getIdTipoOperador() {

return this.idTipoOperador;

}

public void setIdTipoOperador(Integer idTipoOperador) {

this.idTipoOperador = idTipoOperador;

}

public String getNombre() {

return this.nombre;

}

public void setNombre(String nombre) {

this.nombre = nombre;

}

public Set<DtOperador> getDtOperadors() {

return this.dtOperadors;

}

public void setDtOperadors(Set<DtOperador> dtOperadors) {

this.dtOperadors = dtOperadors;

}

}

/*Clase DtOperador*/

package com.realmsoft.deterministicos.clasesPersistentes;

Page 156: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

137

import java.util.HashSet;

import java.util.Set;

public class DtOperador implements java.io.Serializable {

private static final long serialVersionUID = 3261491564647244947L;

private Integer idOperador;

private DtTipoOperador dtTipoOperador;

private String nombreOperador;

private String operador;

private String operadorDrools;

private int numeroOperandos;

private Set<DtComponenteOperadorRegla>

dtComponenteOperadorRegla =

new HashSet<DtComponenteOperadorRegla>(0);

public DtOperador() {

}

public DtOperador(DtTipoOperador dtTipoOperador,

String nombreOperador,

String operador,

int numeroOperandos)

{

this.dtTipoOperador = dtTipoOperador;

this.nombreOperador = nombreOperador;

this.operador = operador;

this.numeroOperandos = numeroOperandos;

}

Page 157: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

138

public Integer getIdOperador() {

return this.idOperador;

}

public void setIdOperador(Integer idOperador) {

this.idOperador = idOperador;

}

public DtTipoOperador getDtTipoOperador() {

return this.dtTipoOperador;

}

public void setDtTipoOperador(DtTipoOperador dtTipoOperador) {

this.dtTipoOperador = dtTipoOperador;

}

public String getNombreOperador() {

return this.nombreOperador;

}

public void setNombreOperador(String nombreOperador) {

this.nombreOperador = nombreOperador;

}

public String getOperador() {

return this.operador;

}

public void setOperador(String operador) {

Page 158: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

139

this.operador = operador;

}

public int getNumeroOperandos() {

return this.numeroOperandos;

}

public void setNumeroOperandos(int numeroOperandos) {

this.numeroOperandos = numeroOperandos;

}

protected Set<DtComponenteOperadorRegla>

getDtComponenteOperadorRegla() {

return dtComponenteOperadorRegla;

}

protected void setDtComponenteOperadorRegla

(Set<DtComponenteOperadorRegla> dtComponenteOperadorRegla) {

this.dtComponenteOperadorRegla = dtComponenteOperadorRegla;

}

public String getOperadorDrools() {

return operadorDrools;

}

public void setOperadorDrools(String operadorDrools) {

this.operadorDrools = operadorDrools;

}

}

Page 159: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

140

4.7 DETALLES de CODIFICACIÓN DE LOS COMPONENTES DEL

SUBSISTEMA BIZSHIELD WEB ADMINISTRATOR

4.7.1 Introducción a JavaServer Faces

JavaServer Faces (JSF) es un framework de desarrollo basado en el patrón

MVC (Modelo – Vista – Controlador), que normaliza y estandariza el

desarrollo de aplicaciones web bajo un modelo de programación de

componentes UI del lado del servidor. La tecnología JSF está por encima de

las tecnologías JSP y Servlet y proporciona un nivel de abstracción más alto

que éstas, liberando al desarrollador del enfoque tradicional del

request/response. Al ser una especificación Java, proporciona

independencia del proveedor.

Una de las grandes ventajas de la tecnología JavaServer Faces es que

ofrece una clara separación entre el comportamiento y la presentación. Las

aplicaciones Web construidas con tecnología JSP conseguían parcialmente

esta separación. Sin embargo, una aplicación JSP no puede mapear

peticiones HTTP al manejo de eventos específicos del componente o

manejar elementos UI como objetos con estado en el servidor. La tecnología

JavaServer Faces nos permite construir aplicaciones Web que implementan

una separación entre el comportamiento y la presentación tradicionalmente

ofrecida por arquitectura UI del lado del cliente.

Page 160: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

141

Algunas de las características de JSF son:

Permite representar componentes UI y guardar y procesar su estado

(valor).

Definir la navegación entre páginas.

Ejecutar programas en el servidor por medio de eventos en el cliente.

Soportar internacionalización de aplicaciones

Validaciones y Conversiones de Datos

Los componentes UI son elementos configurables y reusables que componen

las interfaces de usuario en JSF. Puede ser un botón, una tabla compuesta,

un link, un textField, los cuales a su vez pueden ser parte de componentes

más complejos. Son accesibles vía JSF Custom Tags dentro de la página

JSP

Cuando un cliente hace una petición sobre una página, comienza el ciclo de

vida JSF. El ciclo de vida JSF se compone de los siguientes pasos:

1. Restore view: Se empieza a construir el árbol de componentes.

2. Apply request values: Se asocian los valores que se encuentran en

la petición a los componentes.

Page 161: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

142

3. Process validations: Se comprueban las reglas de validación que

tienen asociadas los componentes.

4. Update model values: Se setean los valores de los Managed Bean.

5. Invoke application: Se ejecutan las acciones y manejadores de

eventos.

6. Render response: Se dibuja la respuesta.

4.7.2 Managed BeansLos beans administrador o managed beans son clases Java de tipo POJO

(Plain Old Java Object) que contienen los datos a ser procesados por el

modelo (Reglas de Negocio). Los datos son seteados desde la forma web

automáticamente a la clase java. Se almacenan en un ámbito (request,

session, application).

Los managed beans permiten definir métodos que ejecuten funciones

asociadas con un componente, los cuales incluyen validaciones, manejo de

eventos, y procesamiento de navegación. Los managed beans almacenan

las propiedades de los componentes UI de la página y contienen los métodos

de comportamiento. Para poder utilizar un managed bean desde una página

Page 162: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

143

JSF este debe ser configurado en el archivo faces-config.xml. Las

propiedades del managed bean deben seguir las convenciones de los

POJOS, es decir es un campo privado con métodos get y set para acceder y

setear los datos respectivamente.

Los métodos validadores de un managed bean retornan un String con el valor

SUCCESS para indicar éxito, y el valor FAILURE para indicar error. A

continuación mostramos un ejemplo de un managed bean

package com.realmsoft.bizshield.beans;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.Map.Entry;

import javax.el.ELContext;

import javax.el.ExpressionFactory;

import javax.el.MethodExpression;

import javax.el.ValueExpression;

import javax.faces.application.Application;

import javax.faces.component.UIComponent;

import javax.faces.component.html.HtmlCommandButton;

Page 163: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

144

import javax.faces.component.html.HtmlInputText;

import javax.faces.component.html.HtmlOutputText;

import javax.faces.component.html.HtmlPanelGrid;

import javax.faces.context.FacesContext;

import javax.faces.event.ValueChangeEvent;

import javax.faces.model.SelectItem;

import static com.realmsoft.bizshield.Constantes.SUCCESS;

import static com.realmsoft.bizshield.Constantes.FAILURE;

import com.realmsoft.bizshield.validacion.AccionInconsistente;

import com.realmsoft.bizshield.validacion.InvocadorValidadorSubtipos;

import com.realmsoft.deterministicos.clasesPersistentes.DtAccion;

importcom.realmsoft.deterministicos.clasesPersistentes.DtParametroAcci

on;

import com.realmsoft.deterministicos.clasesPersistentes.

DtParametroTipoAccion;

import com.realmsoft.deterministicos.clasesPersistentes.DtRegla;

import com.realmsoft.deterministicos.clasesPersistentes.DtReglaAccion;

import com.realmsoft.deterministicos.clasesPersistentes.DtTipoAccion;

import com.realmsoft.deterministicos.dao.AsUsuarioDao;

import com.realmsoft.deterministicos.dao.DtAccionDao;

import com.realmsoft.deterministicos.dao.DtParametroAccionDao;

import com.realmsoft.deterministicos.dao.DtParametroTipoAccionDao;

import com.realmsoft.deterministicos.dao.DtReglaDao;

import com.realmsoft.deterministicos.dao.DtTipoAccionDao;

import com.realmsoft.deterministicos.bo.ConfiguracionAccionBO;

import com.realmsoft.excepciones.ExcepcionAplicacion;

import com.realmsoft.excepciones.ExcepcionLogicaNegocio;

public class ConfiguracionAccion {

// Interacción con formulario

Page 164: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

145

private String opcionSeleccionada;

private String mensajeOpcionSeleccionada;

private String soloLectura;

private HtmlCommandButton botonOpcionSeleccionada;

private HtmlPanelGrid tablaParametrosTiposAcciones;

// Datos de formulario

private Long idAccion;

private String nombreAccion;

private String expresionRegular;

private String ejemploExpresionRegular;

private Long idTipoAccion;

private Long idReglaDisponible;

private Long idReglaAsociada;

private List<SelectItem> listaAcciones;

private List<SelectItem> listaTiposAcciones;

private List<SelectItem> listaReglasDisponibles;

private List<SelectItem> listaReglasAsociadas;

private String mensajeError;

private final static Long NINGUNA = -1l;

private final static String ESTILO_TABLA_PARAMETROS =

"bizshield-texto-pequeno";

private Map<String,String> paramTipoAccion;

public ConfiguracionAccion () {

this.inicializarDatosUsuario();

this.nombreAccion = "Nueva Acción";

this.soloLectura = "false";

this.listaAcciones = new ArrayList<SelectItem>();

this.listaTiposAcciones = new ArrayList<SelectItem>();

this.listaReglasDisponibles = new ArrayList<SelectItem>();

Page 165: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

146

this.listaReglasAsociadas = new ArrayList<SelectItem>();

this.paramTipoAccion = new HashMap<String,String>();

this.botonOpcionSeleccionada = new HtmlCommandButton();

this.tablaParametrosTiposAcciones = new HtmlPanelGrid();

this.tablaParametrosTiposAcciones.setColumns(2);

this.tablaParametrosTiposAcciones.

setStyleClass(ESTILO_TABLA_PARAMETROS);

this.llenarListaReglasDisponibles();

this.llenarListaAcciones();

this.llenarListaTiposAcciones();

this.seleccionarOpcionCrear();

this.actualizarTablaParametrosTiposAcciones(

this.getIdTipoAccion(), true);

}

private void inicializarDatosUsuario() {

Map<String, Object> l_session = FacesContext.getCurrentInstance().

getExternalContext().getSessionMap();

Object l_username = l_session.get("username");

Object l_idUsuario = l_session.get("idUsuario");

if (l_username == null || l_idUsuario == null) {AsUsuarioDao l_usuarioDao = new AsUsuarioDao();

l_session.put("username", FacesContext.getCurrentInstance().

getExternalContext().getRemoteUser());

l_session.put("idUsuario",

l_usuarioDao.findByUsername(

FacesContext.getCurrentInstance().

getExternalContext().getRemoteUser()).getIdUsuario());

}

}

Page 166: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

147

private void limpiarCamposFormulario() {

this.idAccion = NINGUNA;

this.setNombreAccion("");

this.setExpresionRegular("");

this.setEjemploExpresionRegular("");

this.actualizarTablaParametrosTiposAcciones(

this.idTipoAccion, true);

this.llenarListaReglasDisponibles();

this.listaReglasAsociadas.clear();

this.botonOpcionSeleccionada.setRendered(true);

this.setMensajeError("");

}

private void llenarCamposFormulario() {

DtAccionDao l_accionDao = new DtAccionDao();

DtParametroAccionDao l_parametroAccionDao =

new DtParametroAccionDao();

DtAccion l_accion = l_accionDao.findById(this.idAccion);

List<DtParametroAccion> l_listaParametroAccion =

l_parametroAccionDao.

findAllByIdAccion(this.idAccion);

this.nombreAccion = l_accion.getNombre();

this.idTipoAccion = l_accion.getDtTipoAccion().

getIdTipoAccion();

for (DtParametroAccion l_parametroAccion :

l_listaParametroAccion) {

this.paramTipoAccion.put(

l_parametroAccion.getDtParametroTipoAccion().

getIdParametroTipoAccion().toString(),

l_parametroAccion.getValor());

Page 167: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

148

}

this.actualizarTablaParametrosTiposAcciones(

this.idTipoAccion, false);

this.actualizarAsociacionReglas();

this.botonOpcionSeleccionada.setRendered(true);

this.setMensajeError("");

}

public String validarConfiguracionAccion () {

String result = FAILURE;

try {

if (NINGUNA.equals(this.idAccion) &&

!"Crear".equalsIgnoreCase(this.opcionSeleccionada)) {

this.mensajeError = "Debe seleccionar una acción";

} else if ("".equals(this.nombreAccion.trim())) {

this.mensajeError = "El campo nombre de acción es

obligatorio";

} else {

result = SUCCESS;

if (!"Editar".equalsIgnoreCase(

this.getOpcionSeleccionada()))

result = validarNombreAccion();

if (SUCCESS.equals(result))

result = validarParametrosAccion();

if (SUCCESS.equals(result)) {

AccionInconsistente l_accionInconsistente =

new AccionInconsistente();

Page 168: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

149

List<Long> l_listaReglasAsociadas =

new ArrayList<Long>();

for (SelectItem item :

this.listaReglasAsociadas) {

l_listaReglasAsociadas.add(

(Long)item.getValue());

}

result = l_accionInconsistente.

validarAccionesInconsistentesPorTipoAccion(

this.idTipoAccion,

l_listaReglasAsociadas);

if (FAILURE.equals(result))

this.mensajeError =

l_accionInconsistente.

getMensajeValidacion();

}

}

} catch (ExcepcionAplicacion ea) {

this.mensajeError = ea.getMessage();

result = FAILURE;

}

return result;

}

public String crear () {

String result = FAILURE;

try {

if (SUCCESS.equals(validarConfiguracionAccion())) {

ConfiguracionAccionBO configuracionAccionBO =

Page 169: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

150

new ConfiguracionAccionBO();

List<Long> l_listaReglasAsociadas =

new ArrayList<Long>();

for (SelectItem item : this.listaReglasAsociadas) {

l_listaReglasAsociadas.add(

(Long)item.getValue());

}

configuracionAccionBO.crearOActualizarAccion(

this.nombreAccion,

this.idTipoAccion,

this.paramTipoAccion,

l_listaReglasAsociadas,

new Integer(FacesContext.

getCurrentInstance().

getExternalContext().

getSessionMap().

get("idUsuario").toString()),

null);result = SUCCESS;

this.llenarListaAcciones();

this.limpiarCamposFormulario();

this.mensajeError = "La acción se creó exitosamente";

}

} catch (ExcepcionLogicaNegocio e) {

this.mensajeError = e.getMensajeUsuario();

e.printStackTrace();

} catch (Exception e) {

this.mensajeError = "Ocurrió un error al intentar almacenar la acción";

e.printStackTrace();

}

Page 170: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

151

return result;

}

public String editar () {

String result = FAILURE;

try {

if (NINGUNA.equals(this.idAccion)) {

this.mensajeError = "Debe seleccionar la acción que desea editar";

return result;

}

if (SUCCESS.equals(validarConfiguracionAccion())) {

ConfiguracionAccionBO configuracionAccionBO =

new ConfiguracionAccionBO();

List<Long> l_listaReglasAsociadas =

new ArrayList<Long>();

for (SelectItem item : this.listaReglasAsociadas) {

l_listaReglasAsociadas.

add((Long)item.getValue());

}

configuracionAccionBO.crearOActualizarAccion(

this.nombreAccion,

this.idTipoAccion,

this.paramTipoAccion,

l_listaReglasAsociadas,

new Integer(FacesContext.

getCurrentInstance().

getExternalContext().

getSessionMap().

get("idUsuario").toString()),

Page 171: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

152

this.idAccion);

result = SUCCESS;

this.llenarListaAcciones();

this.limpiarCamposFormulario();

this.mensajeError = "La acción se editó exitosamente";

}

} catch (ExcepcionLogicaNegocio e) {

this.mensajeError = e.getMensajeUsuario();

e.printStackTrace();

} catch (Exception e) {

this.mensajeError = "Ocurrió un error al intentar editar la acción";

e.printStackTrace();

}

return result;

}

public String consultar () {

if (NINGUNA.equals(this.idAccion)) {

this.mensajeError = "Debe seleccionar la acción que desea consultar";

return FAILURE;

}

return SUCCESS;

}

public String eliminar () {

String result = FAILURE;

try {

if (NINGUNA.equals(this.idAccion)) {

Page 172: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

153

this.mensajeError = "Debe seleccionar la acción que desea eliminar";

return result;

}

ConfiguracionAccionBO configuracionAccionBO =

new ConfiguracionAccionBO();

configuracionAccionBO.caducarAccion(this.idAccion,

new Integer(FacesContext.getCurrentInstance().

getExternalContext().

getSessionMap().get("idUsuario").toString()));

result = SUCCESS;

this.llenarListaAcciones();

this.limpiarCamposFormulario();

this.mensajeError = "La acción se eliminó exitosamente";

} catch (ExcepcionLogicaNegocio e) {

this.mensajeError = e.getMensajeUsuario();

e.printStackTrace();

} catch (Exception e) {

this.mensajeError = "Ocurrió un error al intentar eliminar la acción";

e.printStackTrace();

}

return result;

}

public void setOpcionSeleccionada(String opcionSeleccionada) {

this.opcionSeleccionada = opcionSeleccionada;

}

public String getOpcionSeleccionada() {

return opcionSeleccionada;

Page 173: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

154

}

public void setMensajeOpcionSeleccionada(String mensajeOpcion) {

this.mensajeOpcionSeleccionada = mensajeOpcion;

}

public String getMensajeOpcionSeleccionada() {

return mensajeOpcionSeleccionada;

}

public HtmlCommandButton getBotonOpcionSeleccionada() {

return this.botonOpcionSeleccionada;

}

public void setBotonOpcionSeleccionada (HtmlCommandButton b) {

this.botonOpcionSeleccionada = b;

}

public String getMensajeError() {

return mensajeError;

}

public void setMensajeError(String mensajeError) {

this.mensajeError = mensajeError;

}

public Long getIdTipoAccion() {

return idTipoAccion;

}

Page 174: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

155

public void setIdTipoAccion(Long idTipoAccion) {

this.idTipoAccion = idTipoAccion;

}

public Long getIdAccion() {

return idAccion;

}

public void setIdAccion(Long idAccion) {

this.idAccion = idAccion;

}

public HtmlPanelGrid getTablaParametrosTiposAcciones() {

return tablaParametrosTiposAcciones;

}

public void setTablaParametrosTiposAcciones(

HtmlPanelGrid tablaParametrosTiposAcciones) {

this.tablaParametrosTiposAcciones =

tablaParametrosTiposAcciones;

}

public List<SelectItem> getListaAcciones() {

return listaAcciones;

}

public void setListaAcciones(List<SelectItem> listaAcciones) {

this.listaAcciones = listaAcciones;

}

Page 175: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

156

public List<SelectItem> getListaTiposAcciones() {

return listaTiposAcciones;

}

public void setListaTiposAcciones(List<SelectItem>

listaTiposAcciones) {

this.listaTiposAcciones = listaTiposAcciones;

}

public String getNombreAccion() {

return nombreAccion;

}

public void setNombreAccion(String nombreAccion) {

this.nombreAccion = nombreAccion;

}

public Map<String, String> getParamTipoAccion() {

return paramTipoAccion;

}

public void setParamTipoAccion(Map<String, String> paramTipoAccion) {

this.paramTipoAccion = paramTipoAccion;

}

public Long getIdReglaDisponible() {

return idReglaDisponible;

}

public void setIdReglaDisponible(Long idReglaDisponible) {

Page 176: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

157

this.idReglaDisponible = idReglaDisponible;

}

public List<SelectItem> getListaReglasDisponibles() {

return listaReglasDisponibles;

}

public void setListaReglasDisponibles(List<SelectItem>

listaReglasDisponibles) {

this.listaReglasDisponibles = listaReglasDisponibles;

}

public Long getIdReglaAsociada() {

return idReglaAsociada;

}

public void setIdReglaAsociada(Long idReglaAsociada) {

this.idReglaAsociada = idReglaAsociada;

}

public List<SelectItem> getListaReglasAsociadas() {

return listaReglasAsociadas;

}

public void setListaReglasAsociadas(List<SelectItem>

listaReglasAsociadas) {

this.listaReglasAsociadas = listaReglasAsociadas;

}

public String getSoloLectura() {

Page 177: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

158

return soloLectura;

}

public void setSoloLectura(String soloLectura) {

this.soloLectura = soloLectura;

}

public String getExpresionRegular() {

return expresionRegular;

}

public void setExpresionRegular(String expresionRegular) {

this.expresionRegular = expresionRegular;

}

public String getEjemploExpresionRegular() {

return ejemploExpresionRegular;

}

public void setEjemploExpresionRegular(String

ejemploExpresionRegular) {

this.ejemploExpresionRegular = ejemploExpresionRegular;

}

}

Page 178: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

159

4.7.3 Páginas JSF

Las páginas JSF son páginas JSP que tienen etiquetas JSF. Para utilizar

las etiquetas JSF hay que incluir las librerías de etiquetas Core y Html:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> (Definen los

tags jsf)

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> (Definen los

tags html)

Con la directiva taglib incluimos la biblioteca de marcas JSF. Una página

JSF se representa por medio de un árbol de componentes UI, llamado

vista (view). El árbol inicia con las etiquetas <f:view></f:view>. Todas las

otras marcas deben estar incluidas dentro de este tag.

La sincronización una propiedad de un managed bean con el valor de un

componente de tipo inputText se debe realizar de la siguiente forma:

<h:inputText value="#{configuracionAccion.nombreAccion}" size="60"

maxlength="64" readonly="#{configuracionAccion.soloLectura}"/>

Page 179: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

160

El managed bean debe estar declarado en el archivo faces-config.xml.

Para poder utilizar JSF debemos incluir las librerías jsf-impl.jar, jsf-api.jar,

commons-beanutils.jar, commons-collections.jar, commons-digester.jar,

commons-logging.jar, standard.jar y jstl.jar. A continuación mostramos un

ejemplo de una página JSF:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<html>

<head>

<title>Bizshield Web Administrator - Configuraci&oacute;n de

Acciones</title>

<link rel="stylesheet" type="text/css"

href="/bizshieldWebAdministrator/css/estilos_bizshield.css"/>

</head>

<body class="bizshield-texto-pequeno">

<f:view>

<h:form id="frmConfiguracionAccion">

<center>

<table cellspacing="1" border="0" width="90%" style="text-align: center">

<tr class="bizshield-texto-muy-pequeno">

<td colspan="1" align="left" id="menuBizshieldLink">

<h:commandLink action="inicioAdministrador" value="Inicio" /></td>

<td colspan="6" align="right"><b>Usuario: </b><label style="font-

size: x-small;">

<%=session.getAttribute("username").

Page 180: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

161

toString().toLowerCase()%></label></td>

</tr>

<tr id="menuBizshieldTitulo">

<td colspan="7">

<h:outputText value="Configuración de Acciones" /></td>

</tr>

<tr>

<td><br/></td>

</tr>

<tr>

<td colspan="7" align="center">

<table class="bizshield-texto-pequeno">

<tr>

<td>Seleccione una Acci&oacute;n:</td>

<td><h:selectOneMenu id="somAccion"

value="#{configuracionAccion.idAccion}">

<f:selectItems value="#{configuracionAccion.listaAcciones}" />

</h:selectOneMenu>

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td><br/></td>

</tr>

<tr class="bizshield-texto-pequeno" id="menuBizshieldLink">

<td width="25%"><h:commandLink

action="#{configuracionAccion.seleccionarOpcionCrear}"

value="Crear" /></td>

Page 181: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

162

<td><h:outputText value="|" /></td>

<td width="25%"><h:commandLink

action="#{configuracionAccion.seleccionarOpcionEditar}"

value="Editar" /></td>

<td><h:outputText value="|" /></td>

<td width="25%"><h:commandLink

action="#{configuracionAccion.seleccionarOpcionConsultar}"

value="Consultar" /></td>

<td><h:outputText value="|" /></td>

<td width="25%"><h:commandLink

action="#{configuracionAccion.seleccionarOpcionEliminar}"

value="Eliminar" /></td>

</tr>

</table>

<hr color="orange" width="90%">

<br>

<table border="0" class="bizshield-texto-pequeno"

id="formularioBizshield">

<thead>

<tr>

<th colspan="4" height="25">

<h:outputText

value="#{configuracionAccion.mensajeOpcionSeleccionada}"/>

</th>

</tr>

</thead>

<tbody>

<tr>

Page 182: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

163

<td height="25">Nombre de Acci&oacute;n:</td>

<td height="25">Tipo de Acci&oacute;n:</td>

</tr>

<tr>

<td>

<h:inputText

value="#{configuracionAccion.nombreAccion}" size="60"

maxlength="64" readonly="#{configuracionAccion.soloLectura}"/>

</td>

<td>

<h:selectOneMenu id="somTipoAccion"

value="#{configuracionAccion.idTipoAccion}"

valueChangeListener="#{configuracionAccion.seleccionarTipoAccion}"

onchange="submit()" disabled="#{configuracionAccion.soloLectura}">

<f:selectItems

value="#{configuracionAccion.listaTiposAcciones}" />

</h:selectOneMenu>

</td>

</tr>

<tr align="center">

<td colspan="2"><h:panelGrid

binding="#{configuracionAccion.tablaParametrosTiposAcciones}" /></td>

</tr>

<tr>

<td colspan="1" height="25">Expresi&oacute;n Regular:</td>

<td colspan="1" height="25">Ejemplo de Expresi&oacute;n Regular:</td>

</tr>

<tr>

Page 183: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

164

<td colspan="1" ><h:inputText id="txtExpresionRegular"

value="#{configuracionAccion.expresionRegular}" size="60"

disabled="#{configuracionAccion.soloLectura}" /></td>

<td colspan="1" ><h:inputText id="txtEjemploExpresionRegular"

value="#{configuracionAccion.ejemploExpresionRegular}" size="60"

disabled="#{configuracionAccion.soloLectura}" /></td>

</tr>

<tr>

<td colspan="2" align="left" height="35"><h:commandButton

action="#{configuracionAccion.validarEjemploExpresionRegular}"

value="Validar Ejemplo de Expresión Regular"

disabled="#{configuracionAccion.soloLectura}" /></td>

</tr>

<tr>

<td colspan="2" align="center" >

<table class="bizshield-texto-pequeno" border="0" width="100%">

<tr align="center">

<td height="25">Reglas Disponibles</td>

<td/>

<td>Reglas Asociadas</td>

</tr>

<tr align="center">

<td rowspan="2" >

<h:selectOneListbox id="solReglasDisponibles"

value="#{configuracionAccion.idReglaDisponible}" size="10" style="width:

400px" disabled="#{configuracionAccion.soloLectura}">

<f:selectItems value="#{configuracionAccion.listaReglasDisponibles}"/>

</h:selectOneListbox>

</td>

Page 184: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

165

<td>

<h:commandButton action="#{configuracionAccion.seleccionarRegla}"

value="->" disabled="#{configuracionAccion.soloLectura}"/>

</td>

<td rowspan="2">

<h:selectOneListbox id="solReglasAsociadas"

value="#{configuracionAccion.idReglaAsociada}" size="10" style="width:

400px" disabled="#{configuracionAccion.soloLectura}">

<f:selectItems value="#{configuracionAccion.listaReglasAsociadas}"/>

</h:selectOneListbox>

</td>

</tr>

<tr align="center">

<td>

<h:commandButton action="#{configuracionAccion.liberarRegla}"

value="<-" disabled="#{configuracionAccion.soloLectura}"/>

</td>

</tr>

</table>

</td>

</tr>

<tr align="center">

<td colspan="2" height="25">Mensaje del Sistema:</td>

</tr>

<tr>

<td colspan="2" align="center">

<h:inputTextarea value="#{configuracionAccion.mensajeError}"

cols="100" rows="3" styleClass="bizshield-textarea-mensaje"

readonly="true"/>

</td>

Page 185: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

166

</tr>

<tr align="center">

<td colspan="2" height="35"><h:commandButton

binding="#{configuracionAccion.botonOpcionSeleccionada}" /></td>

</tr>

</tbody>

</table>

<div id="menuBizshieldLink" style="vertical-align: bottom">

<br>

<hr color="orange" width="90%">

<h:commandLink action="inicioAdministrador" value="Inicio" />

</div>

</center>

</h:form>

</f:view>

</body>

</html>

4.7.4 El archivo de configuración faces-config.xml

Es el archivo de configuración central de JavaServer Faces. Es como el

pegamento que une modelo, vista y controlador. Aquí se especifican los

eventos, acciones, managed beans y reglas de navegación. El archivo

faces-config.xml se encuentra ubicado en la carpeta WEB-INF.

Page 186: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

167

Si se quiere acceder a los managed beans en las páginas JSF, es necesario

registrarlos en el archivo faces-config.xml. Esto se realiza mediante el

elemento managed-bean, como se muestra a continuación:

<managed-bean><managed-bean-name>configuracionRegla</managed-bean-name><managed-bean-class>

com.realmsoft.bizshield.beans.ConfiguracionRegla

</managed-bean-class><managed-bean-scope>session</managed-bean-scope>

</managed-bean><managed-bean>

<managed-bean-name>configuracionAccion</managed-bean-name><managed-bean-class>

com.realmsoft.bizshield.beans.ConfiguracionAccion

</managed-bean-class><managed-bean-scope>session</managed-bean-scope>

</managed-bean>

Estos son los principales elementos del archivo faces-config.xml:

<navigation-rule>

Define una regla de navegación.

<from-view-id>/configuracion/home.faces</from-view-id>

Define la página JSF para la cual la regla de navegación es relevante.

Page 187: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

168

<navigation-case>

Define un caso de navegación.

<from-outcome>inicioBizshield</from-outcome>

Define el nombre para este caso de navegación.

<to-view-id>/index.faces</to-view-id>

Define la página JSF a la cual se debe re direccionar.

<managed-bean>

Define un managed bean

<managed-bean-name>configuracionRegla</managed-bean-

name>

Define un nombre para el managed bean. Este nombre es el que se usa

en la página JSF.

<managed-bean-class>

com.realmsoft.bizshield.beans.ConfiguracionAccion

</managed-bean-class>

Define la clase que representa el managed bean.

<managed-bean-scope>session</managed-bean-scope>

Define en que alcance el managed bean es almacenado.

4.7.5 Archivo faces-config.xml de Bizshield Web Administrator<?xml version="1.0"?>

Page 188: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

169

<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xi="http://www.w3.org/2001/XInclude"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

<managed-bean>

<managed-bean-name>configuracionRegla</managed-bean-name>

<managed-bean-

class>com.realmsoft.bizshield.beans.ConfiguracionRegla</managed-

bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>configuracionAccion</managed-bean-name>

<managed-bean-

class>com.realmsoft.bizshield.beans.ConfiguracionAccion</managed-

bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>configuracionUsuario</managed-bean-name>

<managed-bean-

class>com.realmsoft.bizshield.beans.ConfiguracionUsuario</managed-

bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>reporteCorreoAnalizado</managed-bean-name>

Page 189: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

170

<managed-bean-

class>com.realmsoft.bizshield.beans.ReporteCorreoAnalizado</managed-

bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>reporteReglaEvaluada</managed-bean-name>

<managed-bean-

class>com.realmsoft.bizshield.beans.ReporteReglaEvaluada</managed-

bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>bizshieldUtil</managed-bean-name>

<managed-bean-

class>com.realmsoft.bizshield.beans.BizshieldUtil</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<navigation-rule>

<description>Navegacion Global</description>

<from-view-id>/*</from-view-id>

<navigation-case>

<from-outcome>inicioBizshield</from-outcome>

<to-view-id>/index.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>configuracionReglas</from-outcome>

<to-view-id>/configuracion/reglas.faces</to-view-id>

</navigation-case>

<navigation-case>

Page 190: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

171

<from-outcome>configuracionAcciones</from-outcome>

<to-view-id>/configuracion/acciones.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>configuracionUsuarios</from-outcome>

<to-view-id>/configuracion/usuarios.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>inicioAdministrador</from-outcome>

<to-view-id>/configuracion/home.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>inicioUsuario</from-outcome>

<to-view-id>/reportes/home.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>visualizacionReportes</from-outcome>

<to-view-id>/reportes/home.faces</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>reporteCorreosAnalizados</from-outcome>

<to-view-id>/reportes/reporteCorreosAnalizados.faces</to-view-

id>

</navigation-case>

<navigation-case>

<from-outcome>reporteReglasEvaluadas</from-outcome>

<to-view-id>/reportes/reporteReglasEvaluadas.faces</to-view-

id>

</navigation-case>

</navigation-rule> </faces-config>

Page 191: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

172

CAPÍTULO 5

5. PRUEBAS

5.1 Infraestructura Local.

Se utilizó para esta prueba dos dominios

uno de los cuales se encargaba de enviar

los correos al dominio que tenía el

Servidor AntiSpam, y poder verificar

localmente el funcionamiento del antispam

Page 192: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

173

Se configuraron dos redes, cada una con su respectivo Servidor de dominio,

servidor de correo, configuración de routers. Instalación de los programas

necesarios para la configuración de Servidor antispam.

FIGURA 11. Diagrama de ambiente de pruebas local

Para la prueba del sistema se utilizó el siguiente harware y software

Un Servidor con la aplicación antispam

Con el siguiente software

Sistema operativo Windows XP SP2

La aplicación Antispam jes

Java

Page 193: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

174

Un Servidor DNS ubicado en un dominio Denominado Servicompu.com

Con el siguiente software

Sistema operativo Windows 2003 Server

Servidor de Correo(Jes-1.6.1)

UN Servidor DNS ubicado en otro dominio con nombre Bizshield.com

Sistema operativo Windows 2003 Server

Servicio DNS

Servidor de Correo (Jes-1.6.1)

Dos switch’s para la interconexión de los computadores

Dos routers para la comunicación de las dos redes

Un computador cliente ubicado en la red con el dominio Servicompu.com

Sistema operativo Windows XP SP2

Cliente de Correo (Outlook)

Un computador cliente ubicado en la red con el dominio bizshield.com

Sistema operativo Windows XP SP2

Cliente de Correo (Thunderbird)

Page 194: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

175

5.2 Infraestructura De Prueba En Internet

FIGURA 12. Infraestructura de prueba en internet.

Para la prueba del sistema se utilizó el siguiente harware y software

Un Servidor con la aplicación antispam

Con el siguiente software

Sistema operativo Windows XP SP2

La aplicación Antispam

Java

Un Servidor DNS ubicado en un dominio Denominado Servicompu.com

Con el siguiente software

Sistema operativo Windows 2003 Server

Servidor de Correo(Jes-1.6.1)

Page 195: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

176

UN Servidor DNS ubicado en otro dominio con nombre Bizshield.com

Sistema operativo Windows 2003 Server

Servicio DNS

Servidor de Correo (Jes-1.6.1)

Dos switch’s para la interconexión de los computadores

Dos routers para la comunicación de las dos redes

Un computador cliente ubicado en la red con el dominio

Servicompu.com

Sistema operativo Windows XP SP2

Cliente de Correo (Outlook)

Un computador cliente ubicado en la red con el dominio bizshield.com

Sistema operativo Windows XP SP2

Cliente de Correo (Thunderbird)

5.3 Pruebas Unitarias e Integrales

Para comprobar el correcto funcionamiento del sistema se realizan 2 tipos de

pruebas:

Page 196: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

177

Unitarias

Funcionales e Integrales

5.3.1 Pruebas Unitarias

Estas pruebas son realizadas con la herramienta JUnit y se enfocan en

comprobar el correcto funcionamiento de las clases calculadoras de variables

que forman parte del subsistema Bizshield Service.

Para cada una de las clases calculadoras de variables se codifica un caso de

prueba y se lo ejecuta automáticamente. El uso de la herramienta JUnit

ayuda automatizar el proceso de pruebas, específicamente permite ejecutar

un lote de pruebas de manera automática, el lote está conformado por clases

Java JUnit que implementan casos de pruebas específicos.

Las clases del lote de pruebas se encuentran el paquete

com.realmsoft.bizshield.test.calculadoresVariables. La clase que coordina la

ejecución del lote de pruebas es

com.realmsoft.bizshield.test.calculadoresVariables. AllTests.

Page 197: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

178

package com.realmsoft.bizshield.test.calculadoresVariables;

import junit.framework.Test;

import junit.framework.TestSuite;

public class AllTests {

public static Test suite() {

TestSuite suite = new TestSuite(

"Test for com.realmsoft.bizshield.test.calculadoresVariables");

//$JUnit-BEGIN$

suite.addTestSuite(

CalculadorEsContenidoSoloArchivosAdjuntosTest.class);

suite.addTestSuite(CalculadorDominioRemitenteTest.class);

suite.addTestSuite(CalculadorIpOrigenTest.class);

suite.addTestSuite(CalculadorContentLanguajeTest.class);

suite.addTestSuite(CalculadorNumeroDestinatariosTest.class);

suite.addTestSuite(CalculadorJuegoCaracteresTest.class);

suite.addTestSuite(CalculadorBodyTest.class);

suite.addTestSuite(CalculadorSubjectTest.class);

suite.addTestSuite(CalculadorDireccionesDestinosTest.class);

suite.addTestSuite(CalculadorDominioRemitenteValidoTest.class);

suite.addTestSuite(

CalculadorExtensionesArchivosAdjuntosTest.class);

suite.addTestSuite(

CalculadorNombresArchivosAdjuntosTest.class);

suite.addTestSuite(CalculadorEstaSmtpToIgualMimeToTest.class);

suite.addTestSuite(CalculadorCorreoRemitenteTest.class);

suite.addTestSuite(CalculadorMimeFromTest.class);

//$JUnit-END$

return suite; } }

Page 198: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

179

A continuación se muestra la ejecución de las pruebas unitarias de los

calculadores de variables.

1.Ejecutar el lote de pruebas.

2.Revisar el resultado de las pruebas

FIGURA 13. Ejecución de las pruebas unitarias de los calculadores devariables.

Se puede apreciar que se ejecutaron 15 casos de prueba, con un 100% de

éxito. Con esto queda comprobado como con JUnit se facilita las pruebas

unitarias con la ejecución automática de los casos de pruebas programados.

Page 199: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

180

5.3.2 Pruebas Funcionales e Integrales

5.3.2.1 Pruebas Funcionales e Integrales Bizshield Web Administrator

Casos de uso probados en Bizshield Web Administrador

Caso de Uso: Configuración de Reglas

Código:CU-CONFIG-REGLA-ESCE001

Caso deUso:

CU-CONFIG-REGLA

Nombre: Creación de Regla sin ingresar campos obligatorios

Descripción En el Módulo de Configuración de Regla, opción de

creación de regla, se intenta crear una regla sin ingresar

todos los campos obligatorios

Entradas Salidas esperadas Salidas reales

Nombre deRegla: REGLA 1

Descripción deRegla: LA

REGLA 1

Contenido deRegla:

Se muestra el mensaje de

error "El campo Contenido

de Regla es obligatorio"

Igual a la salida esperada

Observaciones

Tabla 43. Caso de uso: Configuración de reglas

Page 200: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

181

FIGURA 14. Caso de uso: Creación de regla sin ingresar camposobligatorios

Page 201: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

182

FIGURA 15. Caso de uso: Edición de regla

Código: CU-CONFIG-REGLA-ESCE003Caso deUso:

CU-CONFIG-REGLA

Nombre: Creación de Regla utilizando las variables BODY,CONTENT_LANGUAGE, CORREO_REMITENTE

DescripciónEn el Módulo de Configuración de Regla, opción decreación de regla, se intenta crear una regla cuyaexpresión BRL contiene las variables BODY,CONTENT_LANGUAGE y CORREO_REMITENTE.

Entradas Salidas esperadas Salidas reales

Nombre de Regla: REGLA 23Descripción de Regla: LAREGLA 23Contenido de regla: BODY LIKE".*free.*" ANDCONTENT_LANGUAJE != "es-ec" ANDCORREO_REMITENTE LIKE"(.*sex.*)|(.*viagra.*)|(.*money.*)"

Se almacena laregla en el sistemay se presenta elmensaje "La Reglase creóexitosamente"

Igual a la salidaesperada

Observaciones

Page 202: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

183

Código:CU-CONFIG-REGLA-ESCE004

CasodeUso:

CU-CONFIG-REGLA

Nombre:

Creación de Regla utilizando lasvariablesDIRECCIONES_DESTINOS,DOMINIO_REMITENTE,DOMINIO_REMITENTE_VALIDO

Descripción

En el Módulo de Configuración deRegla, opción de creación de regla,se intenta crear una regla cuyaexpresión BRL contiene lasvariablesDIRECCIONES_DESTINOS,DOMINIO_REMITENTE,DOMINIO_REMITENTE_VALIDO

Entradas Salidasesperadas Salidas reales

Nombre de Regla: REGLA24Descripción de Regla: LAREGLA 24Contenido de regla:DIRECCIONES_DESTINOSINTERSECT_LIKE{".*\.com\.ec",".*\.gov\.ec"} ANDDOMINIO_REMITENTE ="spam.com" ORDOMINIO_REMITENTE_VALIDO= "N"

Se almacenala regla en elsistema y sepresenta elmensaje "LaRegla se creóexitosamente"

Igual a la salidaesperada

Observaciones

Page 203: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

184

FIGURA 16. Caso de uso: Creación de regla utilizando las variablesdirecciones_destinos, dominio_remitente, dominio_remitente_valido

Código: CU-CONFIG-REGLA-ESCE005 Caso deUso:

CU-CONFIG-REGLA

Nombre:Creación de Regla utilizando las variables ESTA_SMTP_TO_IGUAL_MIME_TO,ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS,EXTENCIONES_ARCHIVOS_ADJUNTOS

Descripción

En el Módulo de Configuración de Regla, opción de creación de regla, se intentacrear una regla cuya expresión BRL contiene las variablesESTA_SMTP_TO_IGUAL_MIME_TO,ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS,EXTENCIONES_ARCHIVOS_ADJUNTOS

Entradas Salidas esperadas Salidas realesNombre de Regla: REGLA 25Descripción de Regla: LA REGLA 25Contenido de regla:ESTA_SMTP_TO_IGUAL_MIME_TO = “N” ORES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS = “S” OREXTENCIONES_ARCHIVOS_ADJUNTOS CONTAINS “exe”

Se almacena la regla en elsistema y se presenta elmensaje "La Regla se creóexitosamente"

Igual a la salida esperada

Observaciones

Page 204: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

185

FIGURA 17 . Caso de uso: creación de regla utilizando las variablesesta_smtp_to_igual_mime_to, es_contenido_solo_archivos_adjuntos,

extenciones_archivos_adjuntos

Código: CU-CONFIG-REGLA-ESCE006 Caso deUso:

CU-CONFIG-REGLA

Nombre: Creación de Regla utilizando las variables IP_ORIGEN,JUEGOS_CARACTERES, MIME_FROM

DescripciónEn el Módulo de Configuración de Regla, opción de creación de regla, seintenta crear una regla cuya expresión BRL contiene las variablesIP_ORIGEN, JUEGOS_CARACTERES, MIME_FROM

Entradas Salidas esperadas Salidas reales

Nombre de Regla: REGLA 26Descripción de Regla: LA REGLA26Contenido de regla: IP_ORIGEN= "172.18.9.225" ORJUEGOS_CARACTERESNOT_CONTAINS "es-ec" ORMIME_FROM ="[email protected]"

Se almacena la regla enel sistema y se presenta elmensaje "La Regla secreó exitosamente"

Igual a la salida esperada

Observaciones

Page 205: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

186

FIGURA 18 . Caso de uso: Regla utilizando las variables IP_ORIGEN,JUEGOS_CARACTERES, MIME_FROM

Código: CU-CONFIG-REGLA-ESCE007 Caso deUso:

CU-CONFIG-REGLA

Nombre: Creación de Regla utilizando las variables NOMBRES_ARCHIVOS_ADJUNTOS,NUMERO_DESTINATARIOS, SUBJECT

DescripciónEn el Módulo de Configuración de Regla, opción de creación de regla, se intentacrear una regla cuya expresión BRL contiene las variablesNOMBRES_ARCHIVOS_ADJUNTOS, NUMERO_DESTINATARIOS, SUBJECT

Entradas Salidas esperadas Salidas reales

Nombre de Regla: REGLA 27Descripción de Regla: LAREGLA 27Contenido de regla:NOMBRES_ARCHIVOS_ADJUNTOS INTERSECT_LIKE {".*free.*"} ANDNUMERO_DESTINATARIOS > 5 ORSUBJECT = "viagra"

Se almacena la regla en elsistema y se presenta elmensaje "La Regla secreó exitosamente"

Igual a la salida esperada

Observaciones

Page 206: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

187

FIGURA 19. Caso de uso: Creación de Regla utilizando las variablesNOMBRES_ARCHIVOS_ADJUNTOS, NUMERO_DESTINATARIOS,

SUBJECT

Código: CU-CONFIG-REGLA-ESCE008Caso deUso:

CU-CONFIG-REGLA

Nombre: Edición de ReglaDescripción En el Módulo de Configuración de Regla, opción de edición de regla, se intenta

editar una regla existente

Entradas Salidas esperadas Salidas realesNombre de Regla: SPAM - IPDEL REMITENTE INVALIDA ENCEDescripción de Regla: ESTAREGLA VERIFICA SI LADIRECCION IP DELREMITENTE DE UN CORREOENTRANTE ES INVALIDAContenido de regla: IP_ORIGENIN {"192.169.0.100","192.169.0.101","192.169.0.102"}

Se actualiza la regla en elsistema y se presenta elmensaje "La Regla seeditó exitosamente"

Igual a la salida esperada

Observaciones

Page 207: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

188

FIGURA 20. Caso de uso: En el Módulo de Configuración de Regla, opciónde edición de regla, se intenta editar una regla existente.

Código: CU-CONFIG-REGLA-ESCE009Caso deUso:

CU-CONFIG-REGLA

Nombre: Consulta de ReglaDescripción En el Módulo de Configuración de Regla, opción de consulta de regla, se

intenta consultar una regla existente

Entradas Salidas esperadas Salidas realesNombre de Regla: SPAM -IP DEL REMITENTEINVALIDA EN CE

Se presentan los datosde la regla en elformulario

Igual a la salida esperada

Page 208: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

189

FIGURA 21. Caso de uso: Se intenta consultar una regla existente

Código: CU-CONFIG-REGLA-ESCE010Caso deUso:

CU-CONFIG-REGLA

Nombre: Eliminación de Regla

DescripciónEn el Módulo de Configuración de Regla, opción de eliminación de regla,

se intenta eliminar una regla existente

Entradas Salidas esperadas Salidas reales

Nombre de Regla: REGLA 27

Se elimina la regla en el

sistema y se presenta el

mensaje "La Regla se

eliminó exitosamente"

Igual a la salida esperada

Observaciones

Page 209: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

190

FIGURA 22.Caso de uso: Eliminación de regla Caso de Uso: Configuraciónde Acciones

Código: CU-CONFIG-ACCION-ESCE001Caso deUso:

CU-CONFIG-ACCION

Nombre: Creación de Acción sin ingresar campos obligatorios

Descripción En el Módulo de Configuración de Acción, opción de creación de acción, seintenta crear una acción sin ingresar todos los campos obligatorios

Entradas Salidas esperadas Salidas realesNombre de Acción: ACCION 2Tipo de Acción: AÑADIRMENSAJE EN BODYParámetro Mensaje HTML:Parámetro Mensaje TXT:

Se muestra el mensajede error "Debe ingresartodos los parámetros dela acción"

Igual a la salida esperada

Observaciones

Page 210: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

191

FIGURA 23. Caso de uso: Creación de acción sin ingresar todos losparametros

Código: CU-CONFIG-ACCION-ESCE002 Caso deUso:

CU-CONFIG-ACCION

Nombre: Creación de Acción utilizando un nombre ya existente

Descripción En el Módulo de Configuración de Acción, opción de creación de acción, seintenta crear una acción con un nombre ya existente

Entradas Salidas esperadas Salidas reales

Nombre de Acción: ACCION 1Tipo de Acción: ACEPTARCORREO

Se muestra el mensaje deerror "El nombre deacción ingresado yaexiste, debe utilizar otro"

Igual a la salida esperada

Observaciones

Page 211: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

192

FIGURA 24. Caso de uso: Creación de Acción utilizando un nombre yaexistente

Código: CU-CONFIG-ACCION-ESCE003 Caso deUso:

CU-CONFIG-ACCION

Nombre: Creación de Acción de Tipo ACEPTAR CORREO

DescripciónEn el Módulo de Configuración de Acción, opción de creación deacción, se intenta crear una acción cuyo tipo de acción esACEPTAR CORREO

Entradas Salidas esperadas Salidas reales

Nombre de Acción:ACCION 2Tipo de Acción: ACEPTARCORREO

Se almacena laacción en el sistemay se presenta elmensaje "La acciónse creóexitosamente"

Igual a la salida esperada

Observaciones

Page 212: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

193

FIGURA 25. Caso de uso: Creación de Acción de Tipo ACEPTARCORREO

Código: CU-CONFIG-ACCION-ESCE008 Caso deUso:

CU-CONFIG-ACCION

Nombre: Edición de Acción

Descripción En el Módulo de Configuración de Acción, opción de edición deacción, se intenta editar una acción existente

Entradas Salidas esperadas Salidas realesNombre de Acción: SPAM -REDIRECCIONARCORREOTipo de Acción:REDIRECCIONARParámetro LISTACUENTAS CORREO DEREDIRECCION:[email protected]

Se actualiza la acciónen el sistema y sepresenta el mensaje"La acción se editóexitosamente"

Igual a la salida esperada

Observaciones

Page 213: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

194

FIGURA 26. Caso de uso: En el Módulo de Configuración de Acción, opciónde edición de acción, se intenta editar una acción existente

Código: CU-CONFIG-ACCION-ESCE009 Caso deUso:

CU-CONFIG-ACCION

Nombre: Consulta de Acción

Descripción En el Módulo de Configuración de Acción, opción de consulta deacción, se intenta consultar una acción existente

Entradas Salidas esperadas Salidas reales

Nombre de Acción: BZS-HAM-ACEPTAR CORREO

Se presentan los datos de la acción enel formulario

Igual a la salida esperada

Observaciones

Page 214: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

195

FIGURA 27. Caso de uso se intenta consultar una acción existente

Código: CU-CONFIG-ACCION-ESCE010Caso deUso:

CU-CONFIG-ACCION

Nombre: Eliminación de AcciónDescripción En el Módulo de Configuración de Acción, opción de eliminación

de acción, se intenta eliminar una acción existenteEntradas Salidas esperadas Salidas reales

Nombre de Acción: CTRL-CUARENTENA DEARCHIVOS ADJUNTOSEJECUTABLE

Se elimina la acciónen el sistema y sepresenta el mensaje"La acción se eliminóexitosamente"

Igual a la salida esperada

Observaciones

Page 215: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

196

FIGURA 28. Caso de uso: En el Módulo de Configuración de Acción, opciónde eliminación de acción, se intenta eliminar una acción existente se intenta

consultar una acción existente

Código: CU-GESTION-USUARIO-ESCE001 Caso de Uso:CU-GESTION-USUARIO

Nombre: Creación de Usuario sin ingresar campos obligatoriosDescripción En el Módulo de Gestión de Usuarios, opción de creación de usuario, se

intenta crear un usuario sin ingresar todos los campos obligatoriosEntradas Salidas esperadas Salidas reales

Usuario:Contraseña:Confirme Contraseña:Nombres: JohannApellidos: PinargoteDirección:Teléfono:Email:

Se muestra el mensaje deerror "El campo usuarioes obligatorio"

Igual a la salida esperada

Observaciones

Page 216: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

197

FIGURA 29. Caso de uso: Creación de Usuario sin ingresar camposobligatorios

Código: CU-GESTION-USUARIO-ESCE002 Caso de Uso:CU-GESTION-USUARIO

Nombre: Creación de Usuario utilizando un nombre de usuario ya existenteDescripción En el Módulo de Gestión de Usuarios, opción de creación de usuario, se intenta

crear un usuario con un nombre de usuario ya existenteEntradas Salidas esperadas Salidas reales

Usuario: elfstoneContraseña: 12345678Confirme Contraseña:12345678Nombres: JohannApellidos: PinargoteDirección: SurTeléfono: 042440633Email: [email protected]

Se muestra el mensaje deerror "El nombre deusuario ingresado yaexiste, debe utilizar otro"

Igual a la salida esperada

Observaciones

Page 217: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

198

FIGURA 30. Caso de uso: Creación de Usuario mensaje de usuarioexixtente.

Código: CU-GESTION-USUARIO-ESCE004 Caso de Uso:CU-GESTION-USUARIO

Nombre: Edición de usuarioDescripción En el Módulo de Gestión de Usuarios, opción de edición de usuario, se

intenta editar un usuario existenteEntradas Salidas esperadas Salidas reales

Usuario: galcivarContraseña: 12345678Confirme Contraseña:12345678Nombres: GeorgeApellidos: AlcivarDirección: NorteTeléfono: 042440633Email: [email protected]

Se actualiza el usuarioen el sistema y sepresenta el mensaje "Elusuario se editóexitosamente"

Igual a la salida esperada

Observaciones

Page 218: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

199

FIGURA 31. Caso de uso: Se intenta editar un usuario existente

Código:CU-GESTION-USUARIO-ESCE005

Caso deUso:

CU-GESTION-USUARIO

Nombre: Consulta de usuarioDescripción En el Módulo de Gestión de Usuarios, opción de consulta de

usuario, se intenta consultar un usuario existenteEntradas Salidas esperadas Salidas reales

Usuario: elfstone Se presentan losdatos del usuario enel formulario

Igual a la salida esperada

Observaciones

Page 219: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

200

FIGURA 32. Caso de uso: Se intenta consultar un usuario existente.

Page 220: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

201

FIGURA 33. Caso de uso Se intenta eliminar un usuario existente.

Código: CU-GESTION-USUARIO-ESCE006 Caso de Uso:CU-GESTION-USUARIO

Nombre: Eliminación de usuario

Descripción En el Módulo de Gestión de Usuarios, opción de eliminación de usuario,se intenta eliminar un usuario existente

Entradas Salidas esperadas Salidas reales

Usuario: gandalf

Se elimina el usuario en elsistema y se presenta elmensaje "El usuario seeliminó exitosamente"

Igual a la salida esperada

Observaciones

Page 221: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

202

5.3.2.3 Prueba De Correo Entrante

Caso de Prueba 1: SUBJECT SOSPECHOZO EN CORREO ENTRANTE

Enviando Correo Electrónico

FIGURA 34. Caso de Prueba 1: SUBJECT sospechoso en correo entrante

Información registrada en la base de datos

Variables calculadas

Page 222: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

203

FIGURA 35. Caso de Prueba 1: Variables calculadasCorreo Encolado con Id Correo 4

FIGURA 36. Caso de Prueba 1: Correo Encolado con Id Correo 4

Page 223: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

204

Resultado de la Evaluación de Reglas

FIGURA 37. Caso de Prueba 1: Resultado de la Evaluación de ReglasCaso de Prueba 2: Body Sospechoso en correo entrante

FIGURA 38. Caso de Prueba 2: Body Sospechoso en correo entrante

Page 224: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

205

Información registrada en la base de datos

Variables calculadas

FIGURA 39. Caso de Prueba 2: Body Sospechoso en correo entranteCorreo Encolado con Id Correo 3

FIGURA 40. Caso de Prueba 2: Correo Encolado con Id Correo 3

Page 225: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

206

Resultado de Evaluación de Reglas

FIGURA 41. Caso de Prueba 2: Resultado de Evaluación de Reglas

FIGURA 42. Caso de Prueba 3: From Sospechoso

Page 226: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

207

Información registrada en la base de datos

Variables calculadas

FIGURA 43. Caso de Prueba 3: Información registrada en la base de datosCorreo Encolado con Id Correo 5

FIGURA 44. Caso de Prueba 3: Correo Encolado con Id Correo 5

Page 227: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

208

Resultado de Evaluación de Reglas

FIGURA 45. Caso de Prueba 3: Resultado de Evaluación de Reglas

FIGURA 46. Caso de Prueba 4: SMTP FROM sospechoso.

Page 228: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

209

Información registrada en la base de datos

Variables calculadas

FIGURA 47. Caso de Prueba 4: Información registrada en la base de datos

FIGURA 48. Caso de Prueba 4: Correo Encolado con Id Correo 8

Page 229: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

210

Resultado de Evaluación de Reglas

FIGURA 49. Caso de Prueba 4: Resultado de Evaluación de Reglas

FIGURA 50. Caso de Prueba 5: Lenguaje Inválido

Page 230: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

211

Información registrada en la base de datos

Variables calculadas

FIGURA 51. Caso de Prueba 5: Información registrada en la base de datos

Correo Encolado con Id Correo 12

FIGURA 52. Caso de Prueba 5: Correo Encolado con Id Correo 12

Page 231: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

212

Resultado de Evaluación de Reglas

FIGURA 53. Caso de Prueba 5: Resultado de Evaluación de Reglas

Mail de Respuesta

FIGURA 54. Caso de Prueba 5: Mail de Respuesta

Page 232: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

213

FIGURA 55. Caso de Prueba 6: Juego de Caracteres Inválido

Información registrada en la base de datos

Variables calculadas

Figura 55. Caso de Prueba 6: Información registrada en la base de datos

Page 233: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

214

Correo Encolado con Id Correo 13

Figura 56. Caso de Prueba 6: Correo Encolado con Id Correo 13

Resultado de Evaluación de Reglas

FIGURA 56. Caso de Prueba 6: Resultado de Evaluación de Reglas

Page 234: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

215

Mail de Respuesta

FIGURA 57. Caso de Prueba 6: Resultado de Evaluación de Reglas

5.3.2.2 Prueba De Correo Saliente

Caso 1: Subject Sospechoso en correo saliente

FIGURA 58. Caso 1: Subject Sospechoso en correo saliente

Page 235: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

216

Información registrada en la base de datos

Variables calculadas

FIGURA 59. Caso 1: Información registrada en la base de datosCorreo encolado con ID 6

FIGURA 60. Caso 1: Correo encolado con ID 6

Page 236: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

217

Resultados de Evaluación

FIGURA 61. Caso 1: Correo encolado con ID 6

Caso 2: Prueba de Body Sospechoso

FIGURA 62. Caso 2: Prueba de Body Sospechoso

Page 237: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

218

Información registrada en la base de datos

Variables calculadas

FIGURA 63. Caso 2: Información registrada en la base de datos

FIGURA 64. Caso 2: Correo encolado con id 16

Page 238: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

219

Resultado de Evaluación

FIGURA 65. Caso 2: Resultado de Evaluación

Caso de Prueba 3: Lenguaje Inválido

Cambio del lenguaje

Page 239: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

220

FIGURA 66. Caso de Prueba 3: Lenguaje Inválido

Page 240: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

221

FIGURA 67. Envio de correo con lenguaje invalido

Información registrada en la base de datos

Variables calculadas

FIGURA 68. Caso de Prueba 3: Información registrada en la base de datos

Page 241: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

222

Correo Encolado con id 17

FIGURA 69. Caso de Prueba 3: Correo Encolado con id 17

Resultado de Evaluación

FIGURA 70. Caso de Prueba 3: Resultado de Evaluación

Page 242: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

223

Correo de Respuesta

FIGURA 71. Caso de Prueba 3: Correo de Respuesta

Caso de Prueba 4: Dominio remitente invalido

Envió de correo vía telnet

FIGURA 72. Caso de Prueba 4: Dominio remitente invalido

Page 243: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

224

Información registrada en la base de datos

Variables calculadas

FIGURA 73. Caso de Prueba 4: Información registrada en la base de datos

Correo Encolado con Id 25

FIGURA 74. Caso de Prueba 4: Correo Encolado con Id 25

Page 244: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

225

Resultados de Evaluación

FIGURA 75. Caso de Prueba 4: Resultados de Evaluación

FIGURA 76. Caso de Prueba 5: Archivos adjuntos sospechoso en correosaliente

Page 245: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

226

Información registrada en la base de datos

Variables calculadas

FIGURA 77. Caso de Prueba 5: Información registrada en la base de datos

Correo Encolado con Id 81

FIGURA 78. Caso de Prueba 5: Correo Encolado con Id 81

Page 246: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

227

Resultado de Evaluacion

FIGURA 79. Caso de Prueba 5: Resultado de Evaluacion

FIGURA 80. Caso de Prueba 5: Correo con información de archivospeligrosos

Page 247: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

228

CAPÍTULO 6

6. RECOMENDACIONES Y

CONCLUSIONES

6.1 RecomendacionesEn Bizshield Web Administrator, en las

opciones de Configuración de Reglas,

Configuración de Acciones y Gestión de

Usuarios se presenta una lista con las

reglas, acciones y usuarios existentes en

el sistema. Esta lista podría ser

reemplazada por un cuadro de búsqueda

dinámico, que presente resultados según

el texto ingresado.

Page 248: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

229

En Bizshield Web Adminstrator, el Módulo de Reportes presenta los

resultados en forma tabular, con opciones de ordenamiento, paginación y

exportación. Esto se podría mejorar con la inclusión de gráficos estadísticos

basados en los resultados de la búsqueda.

Se podría reemplazar las opciones de Configuración de Reglas y

Configuración de Acciones de Bizshield Web Administrator con el

administrador de reglas de drools, Bussiness Rules Management System

(BRMS). Es el componente de Jboss Rules que permite gestionar,

almacenar, clasificar, modificar y desplegar en caliente reglas de negocio,

que podrán ser invocadas vía servicios web desde aplicaciones Java.

Proporciona un interfaz Web, que facilita la definición de reglas a personas

que no trabajan con habitualmente con IDES de desarrollo, principalmente

Analista de Negocio y Expertos en Reglas.

Actualmente en la Consulta de Correo Analizado se muestra el contenido del

correo en formato MIME texto, se puede mejorar incluyendo un visualizador

MIME que permita ver de una forma estructurada y amigable el contenido del

correo electrónico y sus archivos adjuntos.

Page 249: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

230

En futuras versiones se debería implementar el filtro bayesiano. Esta

estrategia analiza el contenido del correo entrante y en base a las reglas

matemáticas del Teorema de Bayes decide si el correo es o no spam.

El filtrado Bayesiano se basa en el principio de que la mayoría de los

sucesos están condicionados y que la probabilidad de que ocurra un suceso

en el futuro puede ser deducido de las apariciones previas de ese suceso.

Esta misma técnica se puede utilizar para clasificar spam. Si algún patrón de

texto se encuentra a menudo en el spam pero no en el correo legítimo,

entonces sería razonable asumir que este correo es probablemente spam.

Bizshield permite analizar el nombre y la extensión de un archivo adjunto,

pero no realiza una revisión del contenido del mismo. En futuras versiones

se podría incluir un análisis antivirus utilizando un API de algunos de los

antivirus del mercado.

Para poder llegar a las pequeñas empresas se debe poder parametrizar el

número de usuarios de correo electrónico, para el caso de empresas con un

número limitado de usuarios el precio del producto podría ser menor.

Page 250: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

231

6.2 Conclusiones

A diferencia de otros sistemas antispam del mercado, Bizshield Antispam

System no limita los tipos de filtro que puede configurar un usuario a Lista

Blanca y Lista Negra, sino que permite definir cualquier tipo de combinación

posible de elementos del correo electrónico para obtener reglas más

potentes y precisas que permiten un filtrado más granular, a través de un

lenguaje propio llamado Bizshield Rules Language.

Bizshield Antispam System permite realizar la configuración del sistema a

través de Bizshield Web Administrator, la cual, al ser una aplicación web, no

necesita instalación por cada usuario y además puede ser accedida desde

cualquier ubicación y desde cualquier computadora que tenga instalado un

navegador de internet, sin requisitos de sistema operativo u otro software.

Bizshield Antispam System es independiente del sistema operativo. Aunque

la distribución por defecto es bajo un sistema Linux, podría instalarse sobre

cualquier sistema operativo. Al no tener requisitos de alguna arquitectura

específica, Bizshield Antispam Appliance es independiente de la

infraestructura de la empresa lo que asegura su funcionamiento sin

problemas de compatibilidad.

Page 251: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

232

Bizshield Antispam Appliance también provee una lista de direcciones IP

negra del sistema, la cual se actualiza automáticamente y no tiene costo

alguno para la empresa cliente.

Bizshield Antispam Appliance ofrece un tipo de licenciamiento por servidor, el

cual es más conveniente para las empresas que el tradicional licenciamiento

por cliente. Un una vez adquirido el producto este puede ser usado sin

importar el número de usuarios de la organización.

En resumen, Bizshield Antispam Appliance es una alternativa completa

funcional, técnica y económicamente para las empresas medianas y grandes

que desean protegerse del correo electrónico no deseado. Es una solución

no intrusiva, que no necesita instalarse sobre ni modificar el servidor de

correo de la empresa, además funciona con cualquier servidor de correo ya

que trabaja a nivel de protocolos estándares como SMTP y POP3. Su

sistema único de detección de spam mediante la alimentación de una base

de heurística ajustada a las necesidades de la empresa proporciona mucha

flexibilidad, potencia y control para el tratamiento del correo electrónico no

deseado.

Page 252: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

233

ANEXOS

Page 253: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

234

Page 254: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en Sistemas Computacionales

“Appliance Antispam”

PROYECTO DE TESIS DE GRADO

6TO CURSO DE GRADUACIÓN

Previo a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autores:

ALCIVAR VILLAMAR GEORGE HUMBERTO

PINARGOTE SAVINIEN FREDDY JOHANN

TOALA MOSQUERA DAVID LEONEL

GUAYAQUIL – ECUADOR

Año: 2009

Page 255: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

II

AGRADECIMIENTO

Agradezco a todas las personas que me

brindaron su apoyo, para lograr culminar

con este sueño. Entre ellos mis padres, mis

amigos y catedráticos que impartieron sus

conocimientos.

Alcívar Villamar George Humberto

Page 256: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

III

AGRADECIMIENTO

Agradezco a mis padres, por el apoyo

incondicional que me brindaron a lo largo

de la carrera. A mis profesores y

compañeros, que por medio de las

enseñanzas, investigaciones y discusiones,

me hicieron crecer en conocimiento y

madurar como persona.

Pinargote Savinién Freddy Johann

Page 257: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

IV

AGRADECIMIENTO

En agradecimiento a la Universidad Estatal

de Guayaquil, Facultad de Ciencias Físicas

y Matemáticas, en especial a su Carrera de

Ingeniería en Sistemas Computacionales,

por haberme forjado para ser un

profesional competente, listo para afrontar

los desafíos laborales y profesionales.

Toala Mosquera David Leonel

Page 258: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

V

DEDICATORIA

Dedico todo este trabajo a mi padre a mis

hermanos que los quiero tanto, y a mi

querida madre Piedad Villamar.

Alcívar Villamar George Humberto

Page 259: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VI

DEDICATORIA

Dedico este trabajo a mi equipo del

proyecto de grado y a todas aquellas

personas quienes buscan usar la ciencia

en pos de ayudar a los demás.

Pinargote Savinien Freddy Johann

Page 260: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VII

DEDICATORIA

Este trabajo esta dedicado a mis padres

por haberme ensañado que la

perseverancia es la clave del éxito, que el

esfuerzo constante nos convierte día a día

en mejores seres humanos, capaces de

enfrentar la vida con valentía

Toala Mosquera David Leonel

Page 261: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

VIII

TRIBUNAL DE GRADUACIÓN

Presidente del Tribunal Primer Vocal

Segundo Vocal Secretario

Page 262: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

IX

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicación de la misma”.

(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas

Computacionales, Art. 26).

______________________________ ____________________________

George Humberto Alcívar Villamar Pinargote Savinién Freddy Johann

C.I: 0913524831 C.I: 0911170991

_____________________________

Toala Mosquera David Leonel

C.I: 0923179980

Page 263: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

X

ÍNDICE GENERAL

AGRADECIMIENTO .................................................................................................................II

DEDICATORIA .........................................................................................................................v

TRIBUNAL DE GRADUACIÓN............................................................................................ VIII

DECLARACIÓN EXPRESA ................................................................................................... IX

INDICE GENERAL .................................................................................................................. X

1. INTRODUCCIÓN...........................................................................................................................1

1.1 OBJETIVO DE ESTE MANUAL .................................................................................................2

1.2 A QUIÉN VA DIRIGIDO ESTE MANUAL...................................................................................2

1.3 LO QUE DEBE CONOCER .........................................................................................................2

2.0 BIZSHIELD WEB ADMINISTRATOR ........................................................................................3

2.1 SELECCIÓN DE MÓDULO .........................................................................................................4

2.2 LOGIN ............................................................................................................................................5

2.3 MÓDULO DE CONFIGURACIÓN ..............................................................................................6

2.4 CONFIGURACIÓN DE REGLAS ...............................................................................................8

2.4.1 CREACIÓN DE REGLA ...................................................................................................................12

2.4.2 EDICIÓN DE REGLA ......................................................................................................................13

2.4.3 CONSULTA DE REGLA..................................................................................................................14

2.4.4 ELIMINACIÓN DE REGLA .............................................................................................................15

2.5 CONFIGURACIÓN DE ACCIONES...................................................................................................16

2.5.1 CREACIÓN DE ACCIÓN ................................................................................................................20

2.5.2 EDICIÓN DE ACCIÓN............................................................................................................21

2.5.3 CONSULTA DE ACCIÓN...............................................................................................................22

Page 264: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XI

2.5.4 ELIMINACIÓN DE ACCIÓN ..........................................................................................................23

2.6 GESTIÓN DE USUARIOS ......................................................................................................24

2.6.1 CREACIÓN DE USUARIO .............................................................................................................27

2.6.2 EDICIÓN DE USUARIO ................................................................................................................28

2.6.3 CONSULTA DE USUARIO.............................................................................................................29

2.6.4 ELIMINACIÓN DE USUARIO ........................................................................................................30

2.7 MÓDULO DE REPORTES......................................................................................................312.7.1 REPORTE DE CORREOS ANALIZADOS ..........................................................................33

2.7.2 REPORTE DE REGLAS EVALUADAS ...............................................................................40

2.7.3 REPORTE DE DOMINIOS SPAM ........................................................................................44

MANUAL TÉCNICO ............................................................................................................................49

2. INTRODUCCIÓN.........................................................................................................................49

2.1 OBJETIVO DE ESTE MANUAL ............................................................................................50

2.2 A QUIÉN VA DIRIGIDO ESTE MANUAL.............................................................................50

2.3 BIZSHIELD WEB ADMINISTRATOR ...................................................................................50

2.4 AUTENTICACIÓN EN BIZSHIELD WEB ADMINISTRATOR ...........................................51

2.4.1 AUTENTICACIÓN BASADA EN FORMULARIO ................................................................52

2.5 AUTORIZACIÓN......................................................................................................................55

2.6 VENTAJAS DEL MECANISMO DE AUTENTICACIÓN DE BIZSHIELD WEB

ADMINISTRATOR...............................................................................................................................56

2.7 ANTLR......................................................................................................................................57

2.8 INTRODUCCIÓN AL ANÁLISIS LÉXICO Y SINTÁCTICO ..............................................57

2.9 ANÁLISIS LÉXICO Y SINTÁCTICO CON ANTLR ............................................................61

2.10 ARCHIVO DE GRAMÁTICA DE ANTLR..........................................................................62

2.10.1 OPCIONES GENERALES DEL FICHERO......................................................................63

2.10.2 DEFINICIÓN DE LOS ANALIZADORES .........................................................................64

2.10.3 REGLAS Y TOKENS DE ANTLR......................................................................................64

2.10.4 ACCIONES DE GRAMÁTICA DE ANTLR .......................................................................66

2.10.5 EXCEPCIONES EN ANTLR ..............................................................................................67

2.11 ANÁLISIS DEL ARCHIVO DE GRAMÁTICA DE BRL ...................................................68

2.11.1 ARCHIVO DE GRAMÁTICA DE BRL ...............................................................................70

2.11.2 BIZSHIELD RULES LANGUAGE (BRL) .........................................................................77

2.11.3 TIPOS DE DATOS DE BRL ...............................................................................................77

2.11.3.1 ALFANUMERICO ............................................................................................................78

Page 265: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XII

2.11.3.2 ALFANUMERICO – CONJUNTO..................................................................................78

2.11.3.3 NUMERICO ......................................................................................................................78

2.11.3.4 EXPRESION REGULAR ................................................................................................78

2.11.3.5 EXPRESION REGULAR CONJUNTO .........................................................................78

2.11.3.6 LITERALES DE BRL .......................................................................................................78

2.12 VARIABLES DE BRL ......................................................................................................80

2.12.1 IP_ORIGEN (ALFANUMERICO / EXPRESION REGULAR) ....................................81

2.12.2 CORREO_REMITENTE (ALFANUMERICO / EXPRESION REGULAR) ...............81

2.12.3 DOMINIO_REMITENTE (ALFANUMERICO / EXPRESION REGULAR) ...............81

2.12.4 SUBJECT (ALFANUMERICO / EXPRESION REGULAR)........................................81

2.12.5 BODY (ALFANUMERICO / EXPRESION REGULAR) ..............................................81

2.12.6 DIRECCIONES_DESTINOS (ALFANUMERICO – CONJUNTO / EXPRESION

REGULAR - CONJUNTO) .................................................................................................................82

2.12.7 NUMERO_DESTINATARIOS (NUMERICO)...............................................................82

2.12.8 MIME_FROM (ALFANUMERICO / EXPRESION REGULAR) .................................82

2.12.9 CONTENT_LANGUAJE (ALFANUMERICO / EXPRESION REGULAR) ...............82

2.12.10 NOMBRES_ARCHIVOS_ADJUNTOS (ALFANUMERICO - CONJUNTO /

EXPRESION REGULAR - CONJUNTO) .........................................................................................83

2.12.11 EXTENCIONES_ARCHIVOS_ADJUNTOS (ALFANUMERICO – CONJUNTO /

EXPRESION REGULAR - CONJUNTO) .........................................................................................83

2.12.12 ESTA_SMTP_TO_IGUAL_MIME_TO (ALFANUMERICO).......................................83

2.12.13 ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS (ALFANUMERICO) .............83

2.12.14 DOMINIO_REMITENTE_VALIDO (ALFANUMERICO) .............................................83

2.12.15 JUEGOS_CARACTERES (ALFANUMERICO - CONJUNTO / EXPRESION

REGULAR - CONJUNTO) .................................................................................................................84

2.13 OPERADORES DE BRL ................................................................................................84

2.13.1 PARENTESIS_DE_APERTURA ....................................................................................84

2.13.2 PARENTESIS_DE_CIERRE...........................................................................................84

2.13.3 CONJUNCION ..................................................................................................................84

2.13.4 DISYUNCION ....................................................................................................................85

2.13.5 IGUAL.................................................................................................................................85

2.13.6 DESIGUAL.........................................................................................................................85

2.13.7 MAYOR_QUE ...................................................................................................................85

2.13.8 MAYOR_O_IGUAL_QUE ................................................................................................85

Page 266: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XIII

2.13.9 MENOR_QUE ...................................................................................................................86

2.13.10 MENOR_O_IGUAL_QUE...............................................................................................86

2.13.11 FORMA PARTE ...............................................................................................................86

2.13.12 NO FORMA PARTE ........................................................................................................86

2.13.13 CADENA PARECIDA......................................................................................................86

2.13.14 CADENA NO PARECIDA...............................................................................................87

2.13.15 CONTIENE .......................................................................................................................87

2.13.16 NO CONTIENE ................................................................................................................87

2.13.17 INTERSECTA...................................................................................................................87

2.13.18 NO SE INTERSECTA ....................................................................................................87

2.13.19 INTERSECTA CADENAS PARECIDAS .....................................................................88

2.13.20 NO INTERSECTA CADENAS PARECIDAS ..............................................................88

2.14 EJEMPLOS DE REGLAS EN BRL ..............................................................................88

2.15 HIBERNATE .....................................................................................................................89

2.16 DISPLAYTAG ...................................................................................................................94

2.17 ARCHIVO DISPLAYTAG.PROPERTIES DE BIZSHIELD WEB

ADMINISTRATOR...............................................................................................................................95

2.18 DESCRIPTOR DE DESPLIEGUE DE BIZSHIELD WEB ADMINISTRATOR

(WEB.XML)...........................................................................................................................................98

2.19 DETALLE DE LAS DIFERENTES CLASES UTILIZADAS EN EL SISTEMA

BIZSHIELD .........................................................................................................................................102

2.20 CONFIGURACION PARA PRUEBAS ........................................................................247

2.21 INSTALACION DE BIZSHIELD SERVICE.................................................................247

2.22 ACTUALIZACIÓN DE BLACK LIST UPDATE. .........................................................249

2.23 INSTALACION DE MYSQL EN LINUX ......................................................................249

2.24 INSTALACIÓN DEL JDK (J2SE).................................................................................253

2.25 INSTALACIÓN DE TOMCAT .......................................................................................254

2.26 CONFIGURACIÓN DEL SERVIDOR DNS EN LA EMPRESA1.COM ..................255

2.27 CONFIGURACIÓN DEL SERVIDOR DE CORREO JES EN LA EMPRESA 1. ..262

2.28 CONFIGURACIÓN DE SERVIDOR DNS EN LA EMPRESA2...............................267

2.29 CONFIGURACIÓN DE EL SERVIDOR DE CORREO JES EN LA EMPRESA2.270

Page 267: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XIV

ÍNDICE DE FIGURAS

FIGURA 1. PÁGINA DE SELECCIÓN DE MÓDULO DE BWA ........................................................... 4

FIGURA 2. PÁGINA DE LOGIN ................................................................................................... 5

FIGURA 3. PÁGINA DE ERROR DE LOGIN ................................................................................... 6

FIGURA 4. MÓDULO DE CONFIGURACIÓN.................................................................................. 7

FIGURA 5. OPCIONES DE CONFIGURACIÓN................................................................................ 8

FIGURA 6. ICONO DE CONFIGURACIÓN DE REGLAS .................................................................. 8

FIGURA 7. PÁGINA DE CONFIGURACIÓN DE REGLAS................................................................. 9

FIGURA 8. LINK DE INICIO EN CONFIGURACIÓN DE REGLAS..................................................... 10

FIGURA 9. FORMULARIO DE CREACIÓN DE REGLAS ............................................................... 13

FIGURA 10. FORMULARIO DE EDICIÓN DE REGLAS................................................................... 14

FIGURA 11. FORMULARIO DE CONSULTA DE REGLAS ............................................................... 15

FIGURA 12. FORMULARIO DE ELIMINACIÓN DE REGLAS............................................................ 16

FIGURA 13. PÁGINA DE CONFIGURACIÓN DE ACCIONES ........................................................... 17

FIGURA 14. ÍCONOS DE CONFIGURACIÓN DE ACCIONES........................................................... 18

Page 268: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XV

FIGURA 15. LINK DE INICIO EN LA PANTALLA DE CONFIGURACIÓN DE ACCIONES ......................... 18

FIGURA 16. FORMULARIO DE CREACIÓN DE ACCIONES ............................................................ 21

FIGURA 17. FORMULARIO DE EDICIÓN DE ACCIONES ............................................................... 22

FIGURA 18. FORMULARIO DE CONSULTA DE ACCIONES............................................................ 23

FIGURA 19. FORMULARIO DE ELIMINACIÓN DE ACCIONES......................................................... 24

FIGURA 20. PÁGINA DE GESTIÓN DE USUARIOS ...................................................................... 25

FIGURA 21. ICONOS DE GESTIÓN DE USUARIOS ...................................................................... 26

FIGURA 22. LINK DE INICIO DE GESTIÓN DE USUARIOS............................................................. 26

FIGURA 23 FORMULARIO DE CREACIÓN DE USUARIOS ........................................................... 28

FIGURA 24. FORMULARIO DE EDICIÓN DE USUARIOS .............................................................. 29

FIGURA 25. FORMULARIO DE CONSULTA DE USUARIOS........................................................... 30

FIGURA 26 FORMULARIO DE ELIMINACIÓN DE USUARIO.......................................................... 31

FIGURA 27. PÁGINA DE MODULO DE REPORTES ...................................................................... 32

FIGURA 28. ÍCONOS DEL MÓDULO DE REPORTES Y AYUDA ..................................................... 33

FIGURA 29. REPORTE DE CORREOS ANALIZADOS................................................................... 34

FIGURA 30. ICONO DE CONSULTAR CORREOS ANALIZADOS .................................................... 35

FIGURA 31. LINK DE INICIO EN REPORTE DE CORREO ANALIZADOS......................................... 35

FIGURA 32. RESULTADO DEL REPORTE DE CORREOS ANALIZADOS ........................................ 37

FIGURA 33. VISUALIZADOR DE CORREOS .............................................................................. 38

FIGURA 34. VISUALIZACIÓN DEL CORREO POR MEDIO DE OUTLOOK EXPRESS.......................... 39

FIGURA 35. DIÁLOGO DE EXPORTACIÓN DE RESULTADOS DEL REPORTE DE CORREOS

ANALIZADOS ………………………………………………………………………………………..…40

FIGURA 36 REPORTE DE REGLAS EVALUADAS....................................................................... 40

FIGURA 37. ICONO DE CONSULTAR REPORTE DE REGLAS EVALUADAS..................................... 41

FIGURA 38. EL LINK INICIO EN REPORTE DE REGLAS EVALUADAS............................................. 42

FIGURA 39. RESULTADOS DEL REPORTE DE REGLAS EVALUADAS ............................................ 43

FIGURA 40. DIÁLOGO DE EXPORTACIÓN DE RESULTADOS DEL REPORTE DE REGLAS EVALUADAS44

FIGURA 41. REPORTE DE DOMINIOS SPAM .............................................................................. 45

FIGURA 42. ICONO DE CONSULTAR REPORTE DE DOMINIOS SPAM ............................................ 46

FIGURA 43. EL LINK INICIO EN REPORTE DE DOMINIOS SPAM. ................................................... 46

FIGURA 44. RESULTADOS DEL REPORTE DE DOMINIOS SPAM.................................................... 48

FIGURA 45. DIÁLOGO DE EXPORTACIÓN DE RESULTADOS DEL REPORTE DE DOMINIOS SPAM ...... 48

FIGURA 46. CREACIÓN DE ZONA CON DOMINIO EMPRESA1.COM ............................................. 255

FIGURA 47. CREACIÓN DE LOS REGISTROS TIPO A Y MX........................................................ 256

FIGURA 48. REGISTRO TIPO MX CREADO.............................................................................. 257

Page 269: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

XVI

FIGURA 49. PANTALLA DE PROPIEDADES DE EMPRESA1.COM.................................................. 258

FIGURA 50. CUADRO DE EXAMINAR EN PROPIEDADES DE EMPRESA1.COM .............................. 259

FIGURA 51. CONFIGURACIÓN DE LA IP Y DOMINIO DEL SERVIDOR 1 ........................................ 260

FIGURA 52. ANEXAR SUFIJO DNS DE EMPRESA1.COM. .......................................................... 261

FIGURA 53. EJECUTABLE PARA INSTALAR EL JDK. .................................................................. 262

FIGURA 54. CARPETA DEL PROGRAMA JES EN LA PARTICIÓN C: ............................................. 262

FIGURA 55. ARCHIVO MAIL.BAT DEL SERVIDOR DE CORREO JES. ............................................ 263

FIGURA 56. LUGAR DE UBICACIÓN DEL MAIL.BAT EN EL INICIO DE WINDOWS. .......................... 264

FIGURA 57. ARCHIVOS DE CONFIGURACIÓN DEL SERVIDOR JES. ............................................ 264

FIGURA 58. ARCHIVO DE CONFIGURACIÓN MAIL.CONF EN LA EMPRESA1.COM.......................... 265

FIGURA 59. ARCHIVO DE CONFIGURACIÓN DE MAIL.CONF PARTE 2......................................... 266

FIGURA 60. ARCHIVO DE CONFIGURACIÓN USER.CONF DEL SERVIDOR JES EN LA EMPRESA1.COM.

…………………………………………………………………………………………267

FIGURA 61. CONFIGURACIÓN DE SERVIDOR DNS EN LA EMPRESA2. ....................................... 268

FIGURA 62. CREACIÓN DEL REGISTRO TIPO A. ....................................................................... 268

FIGURA 63. CREACIÓN DEL REGISTRO TIPO MX EN LA EMPRESA2. .......................................... 269

FIGURA 64. CONFIGURACIÓN DE IP Y DNS CON SUFIJO DE DOMINIO EN LA EMPRESA2. .......... 270

FIGURA 65. ARCHIVOS DE CONFIGURACIÓN DE MAIL.CONF Y USER.CONF EN EMPRESA2. .......... 271

FIGURA 66. CONFIGURACIÓN DEL ARCHIVO MAIL.CONF EN EL SERVIDOR JES DE LA EMPRES2.. 271

FIGURA 67. CONTINUACIÓN DE LA CONFIGURACIÓN ANTERIOR. ............................................... 272

FIGURA 68. CONFIGURACIÓN DEL ARCHIVO USER.CONF DEL SERVIDOR DE CORREO JES EN LA

EMPRESA2. …………………………………………………………………………………………273

Page 270: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

MANUAL DE USUARIO

1. Introducción

El Manual de Usuario de Bizshield Web

Administrator puntualiza cada una de sus

funcionalidades, lo que permitirá al

usuario tener una guía detallada del uso

adecuado de la aplicación. El usuario

indicado para realizar las tareas de

administración del servicio antispam es el

administrador del servidor de correo de la

empresa.

Page 271: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

2

1.1 OBJETIVO DE ESTE MANUAL

El objetivo de este manual de usuario es que el administrador del servidor de

correo pueda conocer como administrar el servicio antispam provisto por

Bizshield Antispam System, a través de la aplicación Bizshield Web

Administrator.

1.2 A QUIÉN VA DIRIGIDO ESTE MANUAL

Este manual está dirigido hacia el administrador de correo de la empresa, ya

que es la persona que cuenta con los conocimientos técnicos necesarios

para configurar de manera óptima Bizshield Antispam System.

1.3 LO QUE DEBE CONOCER

Los conocimientos mínimos que debe tener la persona que se encargará de

operar la solución tecnológica Bizshield Antispam System son:

Conocimientos de funcionamiento y configuración de servidores de

correo.

Conocimientos de estructura de red.

Conocimientos de Bizshield Web Administrator.

Page 272: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

3

Conocimientos de Bizshield Rules Language .

2.0 BIZSHIELD WEB ADMINISTRATOR

Bizshield Web Administrator (BWA) es una aplicación web que permite

administrar de forma centralizada el repositorio de reglas, acciones y

usuarios del sistema. Consta de dos módulos: el Módulo de Configuración y

el Módulo de Reportes.

Para entrar a BWA, debemos escribir la url del sistema en la barra de

direcciones de nuestro navegador:

http://Bizshield-host:9999/BizshieldWebAdministrator/

Bizshield-host: Es el nombre de host o la dirección IP en donde está

levantada la instancia de Tomcat, en la cual está instalada la aplicación

Bizshield Web Administrator.

9999: Es el puerto de la instancia de Tomcat, en la cual está instalada la

aplicación Bizshield Web Administrator.

BizshieldWebAdministrator: Es el nombre de la aplicación.

Page 273: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

4

Bizshield Web Administrator se visualiza mejor en los siguientes

navegadores: Internet Explorer 7 o superior, Firefox 3 o superior y Google

Chrome 2.0 o superior.

2.1 SELECCIÓN DE MÓDULO

Al ingresar a BWA aparece la página de Selección de Módulo.

FIGURA 1. Página de Selección de Módulo de BWA

Esta página permite seleccionar el módulo al cual se desea ingresar. Al

Módulo de Configuración sólo pueden ingresar los usuarios con rol de

Page 274: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

5

administrador, mientras que al Módulo de Reportes pueden ingresar los

usuarios con rol de administrador y con rol de usuario.

2.2 LOGIN

Una vez seleccionado el módulo, aparece la página de Login (ver figura no.

2), en la cual se deben ingresar las credenciales (usuario y contraseña) para

identificarse en el sistema.

FIGURA 2. Página de Login

Page 275: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

6

Debemos asegurarnos de ingresar las credenciales correctamente, en caso

de ingresar datos incorrectos se presenta el mensaje de error mostrado en la

figura no. 3.

FIGURA 3. Página de error de Login

Haciendo clic en el link “nuevamente”, se retorna a la página de Login.

2.3 MÓDULO DE CONFIGURACIÓN

El Módulo de Configuración es una herramienta para administrar las reglas,

acciones y usuarios del sistema. Además permite ingresar al Módulo de

Reportes. La figura no. 4 muestra la página principal del Módulo de

Configuración.

Page 276: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

7

FIGURA 4. Módulo de Configuración

El menú principal del Módulo de Configuración está formado por dos

componentes: la barra de título y la barra de opciones.

La barra de título muestra el nombre del módulo en la parte central. En la

parte superior izquierda se muestra el link “Salir”, el cual permite salir del

sistema y nos re direcciona a la página de Selección de Módulo. En la parte

superior derecha se muestra el usuario actual.

La barra de opciones contiene los links a las páginas del Módulo de

Configuración, las cuales son: “Configuración de Reglas”, “Configuración de

Acciones”, “Gestión de Usuarios” y “Módulo de Reportes”.

Page 277: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

8

FIGURA 5. Opciones de configuración

2.4 CONFIGURACIÓN DE REGLAS

La página de Configuración de Reglas permite dar mantenimiento a las

reglas del sistema Antispam. La figura no. 6 muestra el icono de

Configuración de Reglas.

FIGURA 6. Icono de Configuración de Reglas

Page 278: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

9

El menú principal de la página de Configuración de Reglas está formado por

tres componentes: la barra de título, la regla seleccionada y la barra de

opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos re direcciona a

la página principal del Módulo de Configuración. En la parte superior

derecha se muestra el usuario actual. La barra de opciones contiene las

posibles acciones que se pueden realizar sobre la regla seleccionada, las

cuales son: “Crear”, “Editar”, “Consultar” y “Eliminar”.

FIGURA 7. Página de Configuración de Reglas

Page 279: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

10

El link “Inicio” también se muestra en la página de Configuración de Reglas.

FIGURA 8. Link de inicio en Configuración de Reglas

Los formularios de Creación, Edición, Consulta y Eliminación de Regla

contienen los siguientes campos:

Nombre de Regla: Es el nombre que se le asigna a la regla, debe ser

único. Se recomienda que sea descriptivo. Este campo es obligatorio.

Descripción de Regla: Es la descripción de la regla. Aquí se

especifica el propósito de la regla. Es un campo obligatorio.

Proceso: Es el proceso al cual va a pertenecer la regla. Los procesos

de BWA son “Correo Entrante” y “Correo Saliente”.

Contenido de Regla: Es una expresión Bizshield Rules Language que

contiene la regla que será evaluada por Bizshield Service. Este campo es

obligatorio, puede ser llenado directamente y con ayuda de los campos

“Operando Variable”, “Operador” y “Operando Constante / Expresión

Regular”.

Page 280: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

11

Si se desea borrar el texto ingresado en este campo se puede presionar el

botón “Limpiar Contenido Regla”. Para validar el contenido de la regla según

la gramática BRL, se debe presionar el botón “Validar Contenido Regla”, el

resultado de esta validación se mostrará en el campo “Mensaje del Sistema”.

Operando Variable: Contiene la lista de variables posibles para ser usadas

dentro del contenido de la regla. Para agregar un operando variable

debemos seleccionarlo de la lista y presionar el botón “->”.

Operador: Contiene la lista de operadores posibles para ser usados dentro

del contenido de la regla. Para agregar un operador debemos seleccionarlo

de la lista y presionar el botón “->”.

Operando Constante / Expresión Regular: Es un valor constante o

expresión regular que se desea agregar al contenido de la regla. Para

agregar este valor constante o expresión regular se debe escribir el texto en

este campo y presionar el botón “->”.

Ejemplo de Expresión Regular: Para el caso de las expresiones regulares,

si queremos comprobar que estén correctas podemos evaluarlas ingresando

la expresión regular en el campo “Operando Constante / Expresión Regular”

y un ejemplo a validar en el campo “Ejemplo de Expresión Regular”, luego

Page 281: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

12

presionamos el botón “Validar Ejemplo de Expresión Regular”. El resultado

de la validación se muestra en el campo “Mensaje del Sistema”.

Acciones Disponibles: Contiene la lista de acciones creadas en el sistema.

Para asociar una acción a una regla nueva o existente se debe seleccionar la

acción de la lista de acciones disponibles y presionar el botón “->”.

Acciones Asociadas: Contiene la lista de acciones asociadas a la regla.

Para desasociar una acción de una regla nueva o existente se debe

seleccionar la acción de la lista de acciones asociadas y presionar el botón

“<-”. No es obligatorio asociar una acción a una regla.

Mensaje del Sistema: Este campo es de sólo lectura, muestra el resultado

de la operación realizada.

2.4.1 CREACIÓN DE REGLA

Este formulario nos permite crear una nueva regla. Para crear una regla se

debe dar clic en el link “Crear” del menú principal. Luego se deben ingresar

los campos obligatorios y presionar el botón “Crear” ubicado en la parte

inferior del formulario, con lo cual se intentará crear la regla con los datos

Page 282: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

13

ingresados. El resultado de esta operación se muestra en el campo

“Mensaje del Sistema”.

FIGURA 9. Formulario de Creación de Reglas

2.4.2 EDICIÓN DE REGLA

Este formulario nos permite editar una regla existente. Para editar una regla,

se debe seleccionar ésta en el menú principal y luego dar clic en el link

“Editar”. A continuación se deben modificar los campos que se necesiten y

presionar el botón “Editar” ubicado en la parte inferior del formulario, con lo

Page 283: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

14

cual se intentará editar la regla con los datos ingresados. El resultado de

esta operación se muestra en el campo “Mensaje del Sistema”.

FIGURA 10. Formulario de Edición de Reglas

2.4.3 CONSULTA DE REGLA

Este formulario nos permite consultar una regla existente. Para consultar

una regla se debe seleccionar ésta en el menú principal y luego dar clic en el

link “Consultar”. Los datos de la regla seleccionada se mostrarán en el

formulario, en campos de sólo lectura.

Page 284: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

15

FIGURA 11. Formulario de Consulta de Reglas

2.4.4 ELIMINACIÓN DE REGLA

Este formulario nos permite eliminar una regla existente. Para eliminar una

regla se debe seleccionar ésta en el menú principal y luego dar clic en el link

“Eliminar”. Los datos de la regla seleccionada se mostrarán en el formulario,

en campos de sólo lectura. A continuación se debe presionar el botón

“Eliminar” ubicado en la parte inferior del formulario, con lo cual se intentará

eliminar la regla. El resultado de esta operación se muestra en el campo

“Mensaje del Sistema”.

Page 285: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

16

FIGURA 12. Formulario de Eliminación de Reglas

2.5 CONFIGURACIÓN DE ACCIONES

La página de Configuración de Acciones permite dar mantenimiento a las

acciones del sistema antispam. La figura no. 13 muestra la página de

Configuración de Acciones.

Page 286: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

17

FIGURA 13. Página de Configuración de Acciones

El menú principal de la página de Configuración de Acciones está formado

por tres componentes: la barra de título, la acción seleccionada y la barra de

opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos a la página

principal del Módulo de Configuración. En la parte superior derecha se

muestra el usuario actual.

Page 287: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

18

La barra de opciones contiene las posibles acciones que se pueden realizar

sobre la acción seleccionada, las cuales son: “Crear”, “Editar”, “Consultar” y

“Eliminar”.

FIGURA 14. Íconos de Configuración de Acciones

El link “Inicio” también se muestra en la parte inferior de la página de

Configuración de Acciones.

FIGURA 15. Link de inicio en la pantalla de configuración de acciones

Los formularios de Creación, Edición, Consulta y Eliminación de Acción

contienen los siguientes campos:

Nombre de Acción: Es el nombre que se le asigna a la acción, debe

ser único. Se recomienda que sea descriptivo. Este campo es

obligatorio.

Page 288: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

19

Tipo de Acción: Es el tipo de acción. Dependiendo del tipo de acción

se define el comportamiento y los parámetros de la acción. Si un tipo

de acción tiene asociado uno o más parámetros estos se muestran

automáticamente y es obligatorio su llenado.

Expresión regular: Es un campo auxiliar, se utiliza en conjunto con

el campo “Ejemplo de Expresión Regular” para evaluar expresiones

regulares.

Ejemplo de Expresión Regular: Para el caso de las expresiones

regulares, si queremos comprobar que estén correctas podemos

evaluarlas ingresando la expresión regular en el campo “Expresión

Regular” y un ejemplo a validar en el campo “Ejemplo de Expresión

Regular”, luego presionamos el botón “Validar Ejemplo de Expresión

Regular”. El resultado de la validación se muestra en el campo

“Mensaje del Sistema”.

Reglas Disponibles: Contiene la lista de reglas creadas en el

sistema. Para asociar una regla a una acción nueva o existente se

debe seleccionar la regla de la lista de reglas disponibles y presionar

el botón “->”.

Page 289: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

20

Reglas Asociadas: Contiene la lista de reglas asociadas a la acción.

Para desasociar una regla de una acción nueva o existente se debe

seleccionar la regla de la lista de reglas asociadas y presionar el botón

“<-”. No es obligatorio asociar una regla a una acción.

Mensaje del Sistema: Este campo es de sólo lectura, muestra el

resultado de la operación realizada.

2.5.1 CREACIÓN DE ACCIÓN

Este formulario nos permite crear una nueva acción. Para crear una acción

se debe dar clic en el link “Crear” del menú principal. Luego se deben

ingresar los campos obligatorios y presionar el botón “Crear” ubicado en la

parte inferior del formulario, con lo cual se intentará crear la acción con los

datos ingresados. El resultado de esta operación se muestra en el campo

“Mensaje del Sistema”.

Page 290: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

21

FIGURA 16. Formulario de Creación de Acciones

2.5.2 EDICIÓN DE ACCIÓN

Este formulario nos permite editar una acción existente. Para editar una

acción, se debe seleccionar ésta en el menú principal y luego dar clic en el

link “Editar”. A continuación se deben modificar los campos que se necesiten

y presionar el botón “Editar” ubicado en la parte inferior del formulario, con lo

cual se intentará editar la acción con los datos ingresados. El resultado de

esta operación se muestra en el campo “Mensaje del Sistema”.

Page 291: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

22

FIGURA 17. Formulario de Edición de Acciones

2.5.3 CONSULTA DE ACCIÓN

Este formulario nos permite consultar una acción existente. Para consultar

una acción se debe seleccionar ésta en el menú principal y luego dar clic en

el link “Consultar”. Los datos de la acción seleccionada se mostrarán en el

formulario, en campos de sólo lectura.

Page 292: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

23

FIGURA 18. Formulario de Consulta de Acciones

2.5.4 ELIMINACIÓN DE ACCIÓN

Este formulario nos permite eliminar una acción existente. Para eliminar una

acción se debe seleccionar ésta en el menú principal y luego dar clic en el

link “Eliminar”. Los datos de la acción seleccionada se mostrarán en el

formulario, en campos de sólo lectura. A continuación se debe presionar el

botón “Eliminar” ubicado en la parte inferior del formulario, con lo cual se

intentará eliminar la acción. El resultado de esta operación se muestra en el

campo “Mensaje del Sistema”.

Page 293: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

24

FIGURA 19. Formulario de Eliminación de Acciones

2.6 GESTIÓN DE USUARIOS

La página de Gestión de Usuarios permite dar mantenimiento a los usuarios

del sistema antispam. La figura no. 20 muestra la página de Gestión de

Usuarios.

Page 294: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

25

FIGURA 20. Página de Gestión de Usuarios

El menú principal de la página de Gestión de Usuarios está formado por tres

componentes: la barra de título, el usuario seleccionado y la barra de

opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos a la página

principal del Módulo de Configuración. En la parte superior derecha se

muestra el usuario actual.

Page 295: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

26

La barra de opciones contiene las posibles acciones que se pueden realizar

sobre el usuario seleccionado, las cuales son: “Crear”, “Editar”, “Consultar” y

“Eliminar”.

FIGURA 21. Iconos de Gestión de Usuarios

El link “Inicio” también se muestra en la parte inferior de la página de Gestión

de Usuarios.

FIGURA 22. Link de inicio de Gestión de Usuarios

Los formularios de Creación, Edición, Consulta y Eliminación de Usuario

contienen los siguientes campos:

Rol: Es el rol asignado al usuario. En Bizshield Web Administrator

existen dos roles: Administrador y Usuario.

Page 296: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

27

Usuario: Es el nombre de usuario en el sistema. Este campo es

obligatorio.

Contraseña: Es la contraseña del usuario. Este campo es obligatorio.

Confirme Contraseña: Es la contraseña del usuario, se utiliza para

asegurarse de la contraseña ingresada es correcta. Este campo es

obligatorio.

Nombres: Son los nombres del usuario. Este campo es obligatorio.

Apellidos: Son los apellidos del usuario. Este campo es obligatorio.

Dirección: Es la dirección domiciliaria del usuario. Este campo es

obligatorio.

Teléfono: Es el teléfono del usuario. Este campo es obligatorio.

Email: Es la dirección de correo electrónico del usuario. Este campo

es obligatorio.

Mensaje del Sistema: Este campo es de sólo lectura, muestra el

resultado de la operación realizada.

2.6.1 CREACIÓN DE USUARIO

Este formulario nos permite crear un nuevo usuario. Para crear un usuario

se debe dar clic en el link “Crear” del menú principal. Luego se deben

ingresar los campos obligatorios y presionar el botón “Crear” ubicado en la

parte inferior del formulario, con lo cual se intentará crear el usuario con los

Page 297: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

28

datos ingresados. El resultado de esta operación se muestra en el campo

“Mensaje del Sistema”.

FIGURA 23 Formulario de Creación de Usuarios

2.6.2 EDICIÓN DE USUARIO

Este formulario nos permite editar un usuario existente. Para editar un

usuario, se debe seleccionar éste en el menú principal y luego dar clic en el

link “Editar”. A continuación se deben modificar los campos que se necesiten

y presionar el botón “Editar” ubicado en la parte inferior del formulario, con lo

cual se intentará editar el usuario con los datos ingresados. El resultado de

esta operación se muestra en el campo “Mensaje del Sistema”.

Page 298: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

29

FIGURA 24. Formulario de Edición de Usuarios

2.6.3 CONSULTA DE USUARIO

Este formulario nos permite consultar un usuario existente. Para consultar un

usuario se debe seleccionar éste en el menú principal y luego dar clic en el

link “Consultar”. Los datos del usuario seleccionado se mostrarán en el

formulario, en campos de sólo lectura.

Page 299: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

30

FIGURA 25. Formulario de Consulta de Usuarios

2.6.4 ELIMINACIÓN DE USUARIO

Este formulario nos permite eliminar un usuario existente. Para eliminar un

usuario se debe seleccionar éste en el menú principal y luego dar clic en el

link “Eliminar”. Los datos del usuario seleccionado se mostrarán en el

formulario, en campos de sólo lectura. A continuación se debe presionar el

botón “Eliminar” ubicado en la parte inferior del formulario, con lo cual se

intentará eliminar el usuario. El resultado de esta operación se muestra en el

campo “Mensaje del Sistema”.

Page 300: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

31

FIGURA 26 Formulario de Eliminación de Usuario

2.7 MÓDULO DE REPORTES

El Módulo de Reportes es una herramienta que permite visualizar los correos

analizados y las reglas ejecutadas, en base a ciertos parámetros de

búsqueda. La figura no. 27 muestra la página principal del Módulo de

Reportes.

Page 301: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

32

FIGURA 27. Página de modulo de reportes

El menú principal del Módulo de Reportes está formado por dos

componentes: la barra de título y la barra de opciones.

La barra de título muestra el nombre del módulo en la parte central. En la

parte superior izquierda se muestra el link “Salir”, el cual permite salir del

sistema y nos a la página de Selección de Módulo. En la parte superior

derecha se muestra el usuario actual.

Page 302: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

33

La barra de opciones contiene los links a las páginas del Módulo de

Reportes, las cuales son: “Correos Analizados”, “Reglas Evaluadas”,

“Dominios Spam”, “Módulo de Configuración” (Este link sólo se muestra para

usuarios con rol de Administrador), y “Documentación de Ayuda”.

FIGURA 28. Íconos del Módulo de Reportes y Ayuda

2.7.1 REPORTE DE CORREOS ANALIZADOS

Permite visualizar los correos analizados por un proceso de Bizshield

Antispam System. La figura no. 29 muestra la página de Reporte de Correos

Analizados.

Page 303: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

34

FIGURA 29. Reporte de Correos Analizados

El menú principal de la página de Reporte de Correos Analizados está

formado por tres componentes: la barra de título, los parámetros de

búsqueda y la barra de opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos a la página

principal del Módulo de Reportes. En la parte superior derecha se muestra el

usuario actual.

Page 304: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

35

La barra de opciones contiene las posibles acciones que se pueden realizar

con los parámetros de búsqueda, en este caso la única acción es Consultar

FIGURA 30. Icono de Consultar Correos Analizados

El link “Inicio” también se muestra en la parte inferior de la página de Reporte

de Correos Analizados.

FIGURA 31. Link de inicio en Reporte de Correo Analizados

Los parámetros de búsqueda del Reporte de Correos Analizados son los

siguientes:

Proceso: Es el proceso ejecutado en el cual se analizó el correo

electrónico. Los procesos de Bizshield son “Correo Entrante” y

“Correo Saliente”.

Page 305: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

36

Resultado de ejecución de proceso: Es el resultado de la ejecución

del proceso. Los resultados posibles de Bizshield son “Spam” y

“No Spam”

Correos analizados desde: Especifica que el reporte debe mostrar

resultados de procesos ejecutados a partir de esta fecha. Si este

campo está vacío no se toma en cuenta este criterio y se realiza la

búsqueda sin importar desde cuando se ejecutó el proceso. El

formato de este campo es YYYY-MM-DD.

Correos analizados hasta: Especifica que el reporte debe mostrar

resultados de procesos ejecutados hasta esta fecha. Si este campo

está vacío no se toma en cuenta este criterio y se realiza la búsqueda

sin importar hasta cuando se ejecutó el proceso. El formato de este

campo es YYYY-MM-DD.

De: Específica el correo electrónico del Remitente. Se utiliza el

carácter % para incluir un comodín de búsqueda.

Para: Especifica el correo electrónico del Destinatario. Se utiliza el

carácter % para incluir un comodín de búsqueda.

Page 306: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

37

Resultados del Reporte de Correos Analizados

Para obtener el Reporte de Correos Analizados, debemos ingresar los

parámetros de búsqueda y luego dar clic en el link “Consultar” del menú

principal. El reporte obtenido se muestra en la figura no. 32. La cabecera del

Reporte de Correos Analizados muestra el total de ítems encontrados y el

panel de navegación en caso de ser necesaria la paginación, la cual está

configurada a partir de 10 ítems.El cuerpo del Reporte de Correos Analizados

muestra los datos del reporte, éste puede ser ordenado por cualquiera de las

columnas. Haciendo clic sobre el contenido de la columna “Id Correo”,

visualizaremos el Reporte de Reglas Evaluadas para dicho correo.

FIGURA 32. Resultado del Reporte de Correos Analizados

Page 307: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

38

Haciendo clic sobre el contenido de la columna “Ver Correo”, visualizaremos

el contenido del correo en formato MIME antes y después de ser analizado

por Bizshield Antispam System.

FIGURA 33. Visualizador de Correos

En este caso elegimos el Outlook Express para visualizar el contenido delcorreo.

Page 308: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

39

FIGURA 34. Visualización del correo por medio de Outlook Express

El pie de página del Reporte de Correos Analizados muestra el panel de

exportación, el cual nos permite exportar los resultados del reporte a los

formatos csv, xls, xml y pdf. Haciendo clic sobre cualquiera de estos links se

presentará la ventana que nos permitirá abrir o guardar los resultados en el

formato seleccionado.

Page 309: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

40

FIGURA 35. Diálogo de exportación de resultados del Reporte de CorreosAnalizados

2.7.2 REPORTE DE REGLAS EVALUADAS

Permite visualizar las reglas evaluadas por un proceso de Bizshield. La

figura no. 36 muestra la página de Reporte de Reglas Evaluadas.

FIGURA 36 Reporte de Reglas Evaluadas

Page 310: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

41

El menú principal de la página de Reporte de Reglas Evaluadas está formado

por tres componentes: la barra de título, los parámetros de búsqueda y la

barra de opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos re direcciona a

la página principal del Módulo de Reportes. En la parte superior derecha se

muestra el usuario actual.

La barra de opciones contiene las posibles acciones que se pueden realizar

con los parámetros de búsqueda, en este caso la única acción es Consultar

FIGURA 37. Icono de consultar Reporte de Reglas Evaluadas

El link “Inicio” también se muestra en la parte inferior de la página de Reporte

de Reglas Evaluadas.

Page 311: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

42

FIGURA 38. El link inicio en Reporte de Reglas Evaluadas

Los parámetros de búsqueda del Reporte de Reglas Evaluadas son los

siguientes:

Proceso: Es el proceso ejecutado en el cual se evaluó la regla. Los

procesos de Bizshield son “Correo Entrante” y “Correo Saliente”.

Resultado de evaluación de regla: Es el resultado de la evaluación

de la regla. Los resultados posibles de evaluación son “Si Cumplió” y

“No Cumplió”.

Reglas evaluadas desde: Especifica que el reporte debe mostrar

resultados de procesos ejecutados a partir de esta fecha. Si este

campo está vacío no se toma en cuenta este criterio y se realiza la

búsqueda sin importar desde cuando se ejecutó el proceso. El

formato de este campo es YYYY-MM-DD.

Reglas evaluadas hasta: Especifica que el reporte debe mostrar

resultados de procesos ejecutados hasta esta fecha. Si este campo

está vacío no se toma en cuenta este criterio y se realiza la búsqueda

sin importar hasta cuando se ejecutó el proceso. El formato de este

campo es YYYY-MM-DD.

Page 312: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

43

Resultados del Reporte de Reglas Evaluadas

Para obtener el Reporte de Reglas Evaluadas, debemos ingresar los

parámetros de búsqueda y luego dar clic en el link “Consultar” del menú

principal. El reporte obtenido se muestra en la figura no. 39.

La cabecera del Reporte de Reglas Evaluadas muestra el total de ítems

encontrados y el panel de navegación en caso de ser necesaria la

paginación, la cual está configurada a partir de 10 ítems.

El cuerpo del Reporte de Reglas Evaluadas muestra los datos del reporte,

éste puede ser ordenado por cualquiera de las columnas.

FIGURA 39. Resultados del Reporte de Reglas Evaluadas

Page 313: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

44

El pie de página del Reporte de Reglas Evaluadas muestra el panel de

exportación, el cual nos permite exportar a los formatos csv, xls, xml y pdf.

Haciendo clic sobre cualquiera de estos links se presentará la ventana que

nos permitirá abrir o guardar los resultados en el formato seleccionado.

FIGURA 40. Diálogo de exportación de resultados del Reporte de ReglasEvaluadas

2.7.3 REPORTE DE DOMINIOS SPAM

Permite visualizar la cantidad de Spam detectado por dominio remitente.

Con esto podemos clasificar los dominios más peligrosos y hacer un rating

de los mismos.

Page 314: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

45

FIGURA 41. Reporte de Dominios Spam

El menú principal de la página de Reporte de Dominios Spam está formado

por tres componentes: la barra de título, los parámetros de búsqueda y la

barra de opciones.

La barra de título muestra el nombre de la página en la parte central. En la

parte superior izquierda se muestra el link “Inicio”, el cual nos re direcciona a

la página principal del Módulo de Reportes. En la parte superior derecha se

muestra el usuario actual.

Page 315: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

46

La barra de opciones contiene las posibles acciones que se pueden realizar

con los parámetros de búsqueda, en este caso la única acción es Consultar.

FIGURA 42. Icono de consultar Reporte de Dominios Spam

El link “Inicio” también se muestra en la parte inferior de la página de Reporte

Dominios Spam

FIGURA 43. El link inicio en Reporte de Dominios Spam.

Los parámetros de búsqueda del Reporte de Dominios Spam son los

siguientes:

Correos analizados desde: Especifica que el reporte debe mostrar

resultados de procesos ejecutados a partir de esta fecha. Si este

Page 316: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

47

campo está vacío no se toma en cuenta este criterio y se realiza la

búsqueda sin importar desde cuando se ejecutó el proceso. El

formato de este campo es YYYY-MM-DD.

Correos analizados hasta: Especifica que el reporte debe mostrar

resultados de procesos ejecutados hasta esta fecha. Si este campo

está vacío no se toma en cuenta este criterio y se realiza la búsqueda

sin importar hasta cuando se ejecutó el proceso. El formato de este

campo es YYYY-MM-DD.

Resultados del Reporte de Dominios Spam

Para obtener el Reporte de Dominios Spam, debemos ingresar los

parámetros de búsqueda y luego dar clic en el link “Consultar” del menú

principal. El reporte obtenido se muestra en la figura no. 44.

La cabecera del Reporte de Dominios Spam muestra el total de ítems

encontrados y el panel de navegación en caso de ser necesaria la

paginación, la cual está configurada a partir de 10 ítems.

El cuerpo del Reporte de Dominios Spam muestra los datos del reporte, éste

puede ser ordenado por cualquiera de las columnas.

Page 317: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

48

FIGURA 44. Resultados del Reporte de Dominios Spam

El pie de página del Reporte de Dominios Spam muestra el panel de

exportación, el cual nos permite exportar a los formatos csv, xls, xml y pdf.

Haciendo clic sobre cualquiera de estos links se presentará la ventana que

nos permitirá abrir o guardar los resultados en el formato seleccionado.

FIGURA 45. Diálogo de exportación de resultados del Reporte de DominiosSpam

Page 318: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

MANUAL TÉCNICO

2. Introducción

Este manual contiene información respecto

a cuáles son y cómo operan los

componentes tecnológicos de Bizshield

Antispam System. Este documento

también proporciona soporte para el

mantenimiento y configuración del servicio

antispam.

Page 319: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

50

2.1 OBJETIVO DE ESTE MANUAL

El objetivo de este manual técnico es que el Administrador de Bizshield

Antispam System pueda conocer:

La dimensión real del Sistema.

Las normas usadas en la elaboración del Sistema.

El diseño utilizado.

Las estructura de datos.

Los procesos utilizados.

2.2 A QUIÉN VA DIRIGIDO ESTE MANUAL

Este manual está dirigido hacia el administrador de correo de la empresa, ya

que es la persona que cuenta con los conocimientos técnicos necesarios

para configurar de manera óptima Bizshield Antispam System.

2.3 BIZSHIELD WEB ADMINISTRATOR

Bizshield Web Administrator (BWA) es una aplicación web J2EE que permite

configurar el servicio antispam, proporcionando opciones para administrar de

forma centralizada el repositorio de reglas, acciones y usuarios del sistema.

Consta de dos módulos: el Módulo de Configuración y el Módulo de

Reportes. En el Módulo de Configuración se realiza la configuración de las

reglas y acciones para el control del spam o ham y la gestión de los usuarios

Page 320: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

51

del sistema, mientras que en el Módulo de Reportes se pueden visualizar los

correos analizados y reglas evaluadas por el servicio antispam.

2.4 AUTENTICACIÓN EN BIZSHIELD WEB ADMINISTRATOR

En ambientes J2EE, el contenedor web soporta mecanismos de seguridad

incorporados para sus aplicaciones. Los componentes principales para la

seguridad de las aplicaciones web son la autenticación y la autorización. Los

contenedores web de tipo J2EE ofrecen tres tipos de mecanismos de

autenticación: básico, por formulario y autenticación mutua.

La mayoría de las aplicaciones web utilizan la autenticación basada en

formulario, ya que esta permite a las aplicaciones personalizar el interfaz de

usuario de la autenticación. Los contenedores web de tipo J2EE también

implementan autorización sobre los recursos web de las aplicaciones,

usando roles de seguridad definidos en el descriptor de despliegue de la

aplicación web.

Bizshield Web Administrator utiliza autenticación basada en formulario y

autorización para acceder a los recursos de la aplicación web.

Page 321: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

52

2.4.1 AUTENTICACIÓN BASADA EN FORMULARIO

La autenticación basada en formulario permite a los desarrolladores

personalizar la interfaz de usuario de la autenticación. La sección login-

config del web.xml define el tipo de mecanismo de autenticación y los URIs

de las páginas de Login y error.

<login-config>

<auth-method>FORM</auth-method>

<realm-name>Bizshield Realm</realm-name>

<form-login-config>

<form-login-page>/login.jsp</form-login-page>

<form-error-page>/fail_login.jsp</form-error-page>

</form-login-config>

</login-config>

El formulario de Login debe contener campos para ingresar el username y el

password, además esos campos deben llamarse j_username y j_password,

respectivamente.

El método de envío de datos del formulario debe ser post y la acción

encargada de procesar los datos del formulario debe ser j_security_check.

Page 322: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

53

<form method="POST" action="j_security_check">

<td align="right" height="30"><b>Usuario:</b></td>

<td align="left"><input type="text" name="j_username"></td>

<td align="right" height="30"><b>Contrase&ntilde;a:</b></td>

<td align="left"><input type="password" name="j_password"></td>

El contenedor web activa el mecanismo de autenticación que ha sido

configurado para ese recurso, cuando se intenta acceder a recursos web

protegidos.

Los contenedores web J2EE realizan los siguientes pasos para

implementar la seguridad de las aplicaciones web:

Determina si el usuario ha sido autenticado cuando se intenta acceder

a los recursos web protegidos.

Si el usuario no ha sido autenticado todavía, se solicita al usuario que

provea credenciales de seguridad redirigiéndolo a la página de Login

definida en el descriptor de despliegue.

Valida las credenciales del usuario contra el realm de seguridad

configurado para el contenedor.

Page 323: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

54

Determina si el usuario autenticado está autorizado para acceder a los

recursos web definidos en el descriptor de despliegue.

Como las bases de datos y los directorios LDAP proveen una mayor

flexibilidad para el mantenimiento de la información, la mayoría de las

organizaciones puede querer esta persistencia para información de

seguridad de autenticación y autorización. Apache Tomcat tiene soporte

para diferentes tipos de realms de seguridad: bases de datos, LDAP, archivo

XML, etc.

Bizshield Web Administrator utiliza la base de datos como realm de

seguridad. Esto se configura en el archivo server.xml, en la sección realm.

<Realm className="org.apache.catalina.realm.JDBCRealm"

connectionName="elfstone" connectionPassword="12345678"

connectionURL="jdbc:mysql://Bizshield .pro.ec:3306/deterministicos"

driverName="com.mysql.jdbc.Driver" roleNameCol="NOMBRE_ROL"

userCredCol="PASSWORD" userNameCol="USERNAME"

userRoleTable="AS_USUARIO_ROL" userTable="AS_USUARIO"/>

La sección realm del archivo de configuración de Tomcat server.xml define el

tipo de realm de seguridad que el contenedor debe usar para autenticar un

usuario. Para configurar el realm de base de datos se debe crear la tabla de

usuarios, la tabla de roles y la tabla de asociación usuario-rol. En Bizshield

Page 324: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

55

estas tablas son AS_USUARIO, AS_ROL y AS_USUARIO_ROL

respectivamente. Además se debe incluir el driver jdbc de mysql en la

carpeta lib de Tomcat. El driver jdbc usado por Bizshield Web Administrator

es mysq-connector-java-5.0.8-bin.jar.

2.5 AUTORIZACIÓN

Una vez que el usuario ha sido autenticado, el contenedor recupera los roles

de seguridad para el usuario autenticado y comprueba si el usuario

pertenece a uno de los roles definidos en la sección auth-constraint del

descriptor de despliegue. El contenedor web muestra un mensaje de error si

el usuario no pertenece a uno de los roles.

El elemento security-constraint del descriptor de despliegue define los

recursos web protegidos y una lista de roles que tienen acceso a esos

recursos. Los roles utilizados en Bizshield Web Administrator son

ADMINISTRADOR, el cual tiene acceso a todos los recursos de

configuración y USUARIO, el cual tiene acceso a todos los recursos de

reportes. Un recurso se define mediante un URL.

<security-constraint>

<display-name>Recursos de Usuario</display-name>

<web-resource-collection>

Page 325: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

56

<web-resource-name>Area de Reportes</web-resource-name>

<url-pattern>/reportes/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>USUARIO</role-name>

<role-name>ADMINISTRADOR</role-name>

</auth-constraint>

</security-constraint>

<security-constraint>

<display-name>Recursos de Administrador</display-name>

<web-resource-collection>

<web-resource-name>Area de Configuracion</web-resource-name>

<url-pattern>/configuracion/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>ADMINISTRADOR</role-name>

</auth-constraint>

</security-constraint>

2.6 VENTAJAS DEL MECANISMO DE AUTENTICACIÓN DE

BIZSHIELD WEB ADMINISTRATOR

Se puede cambiar el realm de seguridad si afectar el código de la aplicación,

por ejemplo podríamos migrar los usuarios y roles de la base de datos a un

directorio LDAP, y el cambio sería transparente para las aplicaciones.

Page 326: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

57

Las aplicaciones web no necesitan implementar el mecanismo de

autenticación por ellas mismas. Esto puede hacerse fácilmente con poca

configuración.

2.7 ANTLR

Las reglas antispam de Bizshield System se escriben en un micro lenguaje

de expresiones lógicas que llamamos Bizshield Rules Language (BRL). Para

realizar el análisis léxico y sintáctico de una expresión BRL se utilizó la

herramienta ANTLR v3.0, de la cual se procederá a explicar su

funcionamiento.

2.8 INTRODUCCIÓN AL ANÁLISIS LÉXICO Y SINTÁCTICO

Todo lenguaje de programación está formado por un conjunto de símbolos

básicos, que se agrupan para formar los elementos de un vocabulario, de la

misma manera que en la lengua española las letras se agrupan para formar

las palabras. Los símbolos de los lenguajes de programación son los

caracteres que forman el código, y a sus palabras se les conoce como

tokens.

Page 327: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

58

Las reglas de un lenguaje indican cómo pueden o no agruparse los diferentes

tokens. A estas reglas se las llama reglas sintácticas o reglas

gramaticales. Es frecuente que el vocabulario se defina implícitamente al

definir las reglas sintácticas de un lenguaje. Al conjunto de reglas sintácticas

de un lenguaje se la llama gramática. Por ejemplo, el conjunto de las reglas

sintácticas del castellano es la gramática castellana.

Por último, un lenguaje suele ir acompañado de ciertas reglas que

complementan a las reglas sintácticas. En el lenguaje natural utilizamos la

lógica y la memoria para saber si una frase tiene sentido. Este tipo de

análisis se conoce como semántico.

En un proceso de compilación, lo primero que debe hacer un compilador es

comprobar que la información que se le suministra pertenece a su lenguaje

(no hay errores léxicos, sintácticos ni semánticos). Si es así, el compilador

debe representar de alguna manera la información que se le suministró para

poder trabajar con ella, y finalmente traducir dicha información a código

máquina. Detallando las fases del proceso de compilación:

Análisis léxico: Esta fase tiene que ver con el vocabulario que se

mencionó anteriormente. El proceso de análisis léxico agrupa los

diferentes caracteres de su flujo de entrada en tokens. Los tokens son

Page 328: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

59

los símbolos léxicos del lenguaje; se asemejan mucho a las palabras

del lenguaje natural. Los tokens están identificados con símbolos

(tienen nombres) y suelen contener información adicional (como la

cadena de caracteres que los originó, el fichero en el que están y la

línea donde comienzan, etc.). Una vez son identificados, son

transmitidos al siguiente nivel de análisis. El programa que permite

realizar el análisis léxico es un analizador léxico. En inglés se le suele

llamar scanner o lexer.

Análisis sintáctico: En la fase de análisis sintáctico se aplican las

reglas sintácticas del lenguaje analizado al flujo de tokens. Es decir, a

partir de los tokens pasados por el analizador léxico, el analizador

sintáctico se encargará de reconocer las combinaciones correctas de

tokens que forman instrucciones o expresiones válidas en nuestro

lenguaje (BLR).

En caso de no haberse detectado errores, el intérprete representará la

información codificada en el código fuente en un Árbol de Sintaxis

Abstracta (AST), que no es más que una representación arbórea de

los diferentes patrones sintácticos que se han encontrado al realizar el

análisis, salvo que los elementos innecesarios (signos de puntuación,

paréntesis) son eliminados.

Page 329: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

60

El código que permite realizar el análisis sintáctico se llama analizador

sintáctico. En inglés se le llama parser, que significa iterador. El

análisis sintáctico se apoya sobre un análisis léxico, es decir, las

categorías sintácticas son generadas desde un flujo de tokens

producidos desde un analizador léxico.

Análisis semántico: El análisis semántico del árbol AST empieza por

detectar incoherencias a nivel sintáctico en el AST. Si el AST supera

esta fase, es corriente enriquecerlo para realizar un nuevo análisis

semántico. Es decir, es corriente efectuar varios análisis semánticos,

cada uno centrado en aspectos diferentes. Durante éstos análisis el

árbol es enriquecido y modificado.

Cualquier herramienta que realice un análisis semántico es llamada

analizador semántico. En la bibliografía inglesa suelen referirse a los

analizadores semánticos como tree parsers (o iteradores de árboles).

Generación de código: En esta fase se utiliza el AST enriquecido,

producto del proceso de análisis semántico, para generar código

máquina. Esta fase no se aplica a BRL, ya que sólo se necesita

realizar un análisis de las expresiones lógicas.

Page 330: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

61

2.9 ANÁLISIS LÉXICO Y SINTÁCTICO CON ANTLR

Tomando la definición de su propia web, ANTLR es una herramienta que

proporciona un marco de trabajo para la construcción de reconocedores,

intérpretes, compiladores y traductores de lenguajes a partir de gramáticas

enriquecidas con acciones. En resumen proporciona todo lo necesario para

el desarrollo de este tipo de sistemas, entre los más importantes:

• Construcción de analizadores léxicos.

• Construcción de analizadores sintácticos.

• Mecanismos de construcción y recorrido de árboles de sintaxis abstracta

(AST).

• Mecanismos de tratamiento de plantillas.

• Mecanismos de detección y recuperación de errores.

Como ventajas adicionales que diferencian a ANTLR de otras herramientas

similares podemos citar la inclusión de acciones en sus reglas, paso de

parámetros, devolución de valores, la posibilidad de generar el código de

salida (un analizador léxico, sintáctico o semántico) en diferentes lenguajes

como Java, C, C++, C# o Python, a partir de unos ficheros escritos en un

Page 331: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

62

lenguaje propio, y el hecho de disponer de un entorno de desarrollo llamado

ANTLRWorks que nos permitirá construir de una forma bastante amigable las

gramáticas de entrada a la herramienta, proporcionando representaciones

gráficas de las expresiones y árboles generados, e incluyendo un intérprete y

depurador propio. La gramática de BRL está definida mediante un archivo de

gramática de ANTLR.

Para poder utilizar ANTLR debemos incluir la librería antlr-

3.1.3.jar.

2.10 ARCHIVO DE GRAMÁTICA DE ANTLR

Los archivos con los que trabaja ANTLR tienen la terminación *.g, y se

conocen como ficheros de especificación de gramáticas o, simplemente,

ficheros de gramáticas.

Un fichero de gramática contiene la definición de uno o varios analizadores.

Cada uno de estos analizadores se traducirá a código nativo (por ejemplo

Java, C++ o C#, dependiendo de ciertas opciones) en forma de clases. Es

decir, por cada analizador descrito en el archivo de gramáticas se generará

una clase.

Todo archivo de gramática tiene la siguiente estructura:

Page 332: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

63

Grammar BizshieldCorreoEntrante; /* Nombre de la gramática */

header {

/* Acciones de cabecera */

}

options {

/* Opciones generales del fichero */

}

// Definición de los analizadores: reglas y tokens

Nombre de la gramática: Aquí se especifica el nombre de nuestra

gramática. La gramática debe tener el mismo nombre que el archivo fuente.

Acciones de cabecera: Esta zona es opcional (puede aparecer o no).

Delimitada por los elementos “header {“ y “}”, en esta zona incluimos

elementos en código nativo, en nuestro caso Java, que deben preceder a la

definición de las diferentes clases de los analizadores. Esta acción se utiliza

para importar otras clases y definir el paquete al que pertenecerá la clase del

analizador.

2.10.1 OPCIONES GENERALES DEL FICHERO

Esta zona es opcional. Delimitada por los elementos “options {” y “}”, permite

controlar algunos parámetros de ANTLR mediante opciones. Las opciones

se representan como asignaciones : nombreOpcion=valor:. Se utilizan mucho

Page 333: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

64

en ANTLR. La opción más importante de esta zona es la que permite elegir el

lenguaje nativo en el que se generarán los analizadores. Su valor por defecto

es Java. Dado que vamos a generar reconocedores en java, no

necesitaremos esta zona.

2.10.2 DEFINICIÓN DE LOS ANALIZADORES

Tras las opciones generales del fichero vienen las definiciones de

analizadores. Es muy común que en un mismo fichero se especifiquen

varios analizadores (en muchas de las gramáticas escritas en ANTLR se

utiliza esta técnica). Sin embargo, también es posible definir cada analizador

en un fichero, sobre todo cuando se trata de analizadores extensos.

Para el caso del archivo de gramática de BLR, en esta sección se

encontrarán las reglas gramaticales, las reglas léxicas y la definición de los

tokens

2.10.3 REGLAS Y TOKENS DE ANTLR

En ANTLR, una gramática es un conjunto de reglas donde cada regla

describe alguna frase del lenguaje. La regla donde el proceso de parseo

comienza es llamada la regla inicial (sólo el analizador sintáctico tiene un

Page 334: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

65

símbolo inicial). Cada regla consiste en una o más alternativas. Existen dos

tipos de reglas: reglas sintácticas y reglas léxicas.

Las reglas sintácticas o gramaticales definen el conjunto de sentencias

válidas en un lenguaje, mientras que las reglas léxicas definen las

estructuras léxicas válidas en un lenguaje. Además de definir las reglas, se

deben definir los tokens, que son los símbolos de nuestro vocabulario. Estos

tokens serán referenciados por las reglas sintácticas y las reglas léxicas. Las

reglas pueden referenciar tokens y otras reglas para coincidir con la frase.

Para el tratamiento de los espacios en blanco, ANTLR nos provee la función

skip(), la cual le da instrucciones al lexer para saltar el token espacio en

blanco y buscar el siguiente.

En ANTLR existe una estructura más pequeña que el token conocida como

fragment, la cual es utilizada para construir tokens, pero no es considerada

un token por el parser y no puede ser referenciada desde las reglas

sintácticas ni desde las reglas léxicas, sólo desde un token.

Otra característica de ANTLR es que permite asociar acciones a las reglas.

Las acciones son códigos de bloque escritos en el lenguaje objetivo, en este

caso Java.

Page 335: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

66

Para definir una gramática en ANTLR, se debe considerar que:

Los tokens y las reglas de tokens (lexer rules) siempre empiezan con

una letra mayúscula.

Las reglas gramaticales (parser rules) siempre deben empezar con

una letra minúscula.

Para incluir una acción en una regla, se debe escribir la sentencia

Java rodeada por llaves al final de la regla.

2.10.4 ACCIONES DE GRAMÁTICA DE ANTLR

Las acciones son fragmentos de código que se escriben en el lenguaje

objetivo y son embebidos en nuestra gramática. ANTLR entonces inserta

ese código en el analizador generado de acuerdo a su posición relativa a los

elementos gramaticales que la rodean y/o el tipo de acción. Existen dos tipos

de acción: la acción de regla (su alcance es la regla en la cual está

embebida) y la acción de gramática (su alcance es global). Las acciones de

gramática utilizadas en BRL son:

header: Especifica el código que debe aparecer antes de la definición

de la clase, por ejemplo la definición del paquete.

members: Especifica variables y métodos que necesitemos crear o

sobrescribir.

Page 336: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

67

rulecatch: Reemplaza el bloque try/catch generado por defecto por

ANTLR con el que nosotros especifiquemos

2.10.5 EXCEPCIONES EN ANTLR

Cuando un error ocurre dentro de una regla, ANTLR atrapa la excepción,

reporta el error, intenta recuperarse consumiendo más tokens y entonces

retorna de la regla. Es decir, envuelve cada regla dentro de un bloque

try/catch.

Se puede reemplazar este bloque por nuestro propio bloque try/catch, para

poder tratar las excepciones de regla de forma personalizada. Esto se

realiza agregando la cláusula catch al final de la regla, especificando la

excepción que necesitemos capturar. Estas son las excepciones de ANTLR

capturadas en BRL:

RECOGNITIONEXCEPTION: Es la superclase de todas las

excepciones lanzadas por un analizador generado por ANTLR.

MISMATCHEDTOKENEXCEPTION: Indica que el parser buscó un

símbolo particular y no lo encontró en la tabla de símbolos.

NOVIABLEALTEXCEPTION: El analizador se encuentra en un punto

de decisión, pero el camino hacia adelante (lookahead) no es

consistente con ninguna de las alternativas.

Page 337: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

68

2.11 ANÁLISIS DEL ARCHIVO DE GRAMÁTICA DE BRL

La gramática más común en ANTLR es una gramática combinada que

especifica tanto el parser como el lexer. De esta gramática combinada

ANTLR generará un parser y un lexer escritos en Java que deben ser

compilados. BRL tiene dos archivos de gramática: BizshieldCorreoEntrante.g

y BizshieldCorreoSaliente.g, por lo que los archivos generados por ANTLR

son los siguientes:

BizshieldCorreoEntranteLexer.java

BizshieldCorreoEntranteParser.java

BizshieldCorreoSalienteLexer.java

BizshieldCorreoSalienteParser.java

Actualmente los archivos Bizshield CorreoEntrante.g y Bizshield

CorreoSaliente.g contienen la misma gramática, por lo que nos referiremos

indistintamente a los dos como el archivo de gramática de BRL.

En el archivo de gramática de BRL se utiliza la acción global header para

especificar el paquete com.realmsoft.Bizshield.parser para el lexer y el

parser. También se utiliza la acción global members para sobrescribir los

métodos principales generados por ANTLR para tratamiento de errores del

Page 338: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

69

lexer y el parser por métodos personalizados. Por último, se utiliza la acción

global rulecatch para reemplazar el método generado por ANTLR para el

tratamiento de errores de sintaxis del parser. Las opciones especificadas en

el archivo de gramática de BRL son:

LANGUAGE: Especifica el lenguaje en el cual ANTLR debe generar

los analizadores.

BACKTRACK: Indica si ANTLR debe volver atrás cuando el análisis

gramatical falle al intentar obtener una decisión.

MEMOIZE: Se utiliza en conjunto con la opción Backtrack para

recordar resultado parcial del parseo y garantizar que el parser no

repita el análisis de una entrada.

OUTPUT: La opción output controla la clase de estructura de datos

que el analizador generará, en el caso de BRL es AST. Un AST es

simplemente una estructura de datos en forma de árbol, que permite

abstraer como su nombre lo dice, el árbol de sintaxis que el parser

está utilizando, de tal manera que sea generado durante la etapa de

análisis sintáctico, y posteriormente, será recorrido y ejecutado

independientemente luego que la etapa de análisis sintáctico haya

finalizado, Es decir, se crea mientras se va leyendo la entrada, para

una posterior ejecución luego de terminar la lectura de la entrada, esto

mejora notablemente el desempeño.

Page 339: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

70

2.11.1 ARCHIVO DE GRAMÁTICA DE BRL

grammar BizshieldCorreoEntrante;

options {language=Java;k=*;backtrack=true;memoize=true;output=AST;

}

@parser::header {package com.realmsoft.Bizshield .parser;

}

@lexer::header {package com.realmsoft.Bizshield .parser;

}

@parser::members {protected void mismatch(IntStream input, int ttype, BitSet follow)throws RecognitionException

{throw new MismatchedTokenException(ttype, input);

}

public Object recoverFromMismatchedSet(IntStream input,RecognitionException e,BitSet follow) throws RecognitionException{

throw e;}

public void reportError(RecognitionException e){

throw new IllegalArgumentException(e);}

}

Page 340: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

71

@lexer::members {public void reportError(RecognitionException e) {

throw new IllegalArgumentException(e);}

}

@rulecatch {catch (RecognitionException e) {

throw e;}

}

prog:

condition_or EOF;catch [NoViableAltException re] {

System.out.println("Error prog");throw re;

}catch [RecognitionException re] {

System.out.println("Error prog");throw re;

}

condition_or:

condition_and ( OR condition_and )*;catch [RecognitionException re] {

System.out.println("Error or");throw re;

}

condition_and:

condition_expr ( AND condition_expr )*;catch [RecognitionException re] {

System.out.println("Error and");throw re;

}

condition_expr

Page 341: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

72

:condition_comparison

| condition_in| condition_contains| condition_intersec| condition_intersec_like| condition_paren;catch [RecognitionException re] {

System.out.println("Error condition_expr");throw re;

}

condition_comparison: EMAIL_STRING_VARIABLE ( equality_op |

string_comp_op ) ( STRING | NULL )| EMAIL_NUMBER_VARIABLE ( equality_op |

number_comp_op ) ( NUMBER | NULL );catch [RecognitionException re] {

System.out.println("Error condition_comp");throw re;

}

condition_in: EMAIL_STRING_VARIABLE in_op STRING_LIST| EMAIL_NUMBER_VARIABLE in_op NUMBER_LIST;catch [RecognitionException re] {

System.out.println("Error condition_in");throw re;

}

condition_contains: EMAIL_STRING_LIST_VARIABLE contains_op STRING;catch [RecognitionException re] {

System.out.println("Error condition_contains");throw re;

}

condition_intersec: EMAIL_STRING_LIST_VARIABLE intersec_op

STRING_LIST

Page 342: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

73

;catch [RecognitionException re] {

System.out.println("Error condition_intersec");throw re;

}

condition_intersec_like: EMAIL_STRING_LIST_VARIABLE intersec_like_op

STRING_LIST;catch [RecognitionException re] {

System.out.println("Error condition_intersec_like");throw re;

}

condition_paren: LPAREN condition_or RPAREN;catch [RecognitionException re] {

System.out.println("Error condition_paren");throw re;

}

equality_op: EQ | NOT_EQ;

number_comp_op: GTH | GEQ | LTH | LEQ;

string_comp_op: LIKE | NOT_LIKE;

in_op: IN | NOT_IN;

contains_op: CONTAINS | NOT_CONTAINS;

intersec_op

Page 343: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

74

: INTERSECT | NOT_INTERSECT;

intersec_like_op: INTERSECT_LIKE | NOT_INTERSECT_LIKE;

STRING_LIST: '{' STRING ( COMMA STRING )* '}';

NUMBER_LIST: '{' NUMBER ( COMMA NUMBER )* '}';

EMAIL_STRING_VARIABLE: 'CONTENT_LANGUAJE' |

'DOMINIO_REMITENTE_VALIDO' |'ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS'

| 'IP_ORIGEN' | 'BODY' | 'DOMINIO_REMITENTE' |'ESTA_SMTP_TO_IGUAL_MIME_TO'

| 'CORREO_REMITENTE' | 'SUBJECT' | 'MIME_FROM';

EMAIL_STRING_LIST_VARIABLE: 'JUEGOS_CARACTERES' |

'NOMBRES_ARCHIVOS_ADJUNTOS' |'DIRECCIONES_DESTINOS'

| 'EXTENCIONES_ARCHIVOS_ADJUNTOS';

EMAIL_NUMBER_VARIABLE: 'NUMERO_DESTINATARIOS';

AND: 'AND';

OR: 'OR';

LIKE

Page 344: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

75

: 'LIKE';

NOT_LIKE: 'NOT_LIKE';

IN: 'IN';

NOT_IN: 'NOT_IN';

CONTAINS: 'CONTAINS';

NOT_CONTAINS: 'NOT_CONTAINS';

INTERSECT: 'INTERSECT';

NOT_INTERSECT: 'NOT_INTERSECT';

INTERSECT_LIKE: 'INTERSECT_LIKE';

NOT_INTERSECT_LIKE: 'NOT_INTERSECT_LIKE';

NULL: 'null';

RPAREN

Page 345: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

76

: ')';

LPAREN: '(';

EQ: '=';

NOT_EQ: '!=';

LTH: '<';

LEQ: '<=';

GTH: '>';

GEQ: '>=';

STRING: DQUOTE ( ( '\\' DQUOTE ) | ~DQUOTE )* DQUOTE;

NUMBER: DIGIT+;

WS: (' '|'\t'|'\n'|'\r')+ {skip();};

fragment DIGIT

Page 346: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

77

: '0' .. '9';

fragment COMMA: ',';

fragment LBRACKET: '{';

fragment RBRACKET: '}';

fragment DQUOTE: '"';

2.11.2 BIZSHIELD RULES LANGUAGE (BRL)

Es un micro lenguaje de expresiones lógicas utilizado para definir una regla

para control de spam o ham en Bizshield Antispam System. Está formado

por tipos de datos, literales de datos, variables predefinidas de correo

electrónico y operadores.

2.11.3 TIPOS DE DATOS DE BRL

Se utilizan para poder representar y validar correctamente los valores de las

variables de BRL. A continuación se describen los tipos de datos de BRL.

Page 347: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

78

2.11.3.1 ALFANUMERICO

Representa una cadena de caracteres alfanuméricos.

2.11.3.2 ALFANUMERICO – CONJUNTO

Representa un conjunto de cadenas de caracteres alfanuméricos.

2.11.3.3 NUMERICO

Representa un valor numérico entero.

2.11.3.4 EXPRESION REGULAR

Representa una expresión regular Java.

2.11.3.5 EXPRESION REGULAR CONJUNTO

Representa un conjunto de expresiones regulares Java.

2.11.3.6 LITERALES DE BRL

Se utilizan para poder evaluar una expresión BRL, realizando comparaciones

de variables contra literales. A continuación se describen los literales de

BRL.

LITERAL ALFANUMERICO

Su sintaxis es: “AAA”. Donde AAA es cualquier cadena de caracteres

alfanuméricos. Ejemplo: “teens”

Page 348: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

79

LITERAL ALFANUMERICO – CONJUNTO

Su sintaxis es: {elemento_1,elemento_2,elemento_3,…,elemento_n}

Donde elemento_i es un literal alfanumérico. Ejemplo:

{“teens”,”sex”,”xxx”}

LITERAL NUMERICO

Su sintaxis es: 999. Donde 999 es cualquier número entero. Ejemplo:

15

LITERAL EXPRESION REGULAR

Su sintaxis es: “regex”. Donde regex es una expresión regular java.

Se utilizan las clases de caracteres predefinidas y cuantificadores.

Ejemplo: “.+\.exe”

Clases de caracterespredefinidas

\d Un dígito: [0-9]

\D Un no dígito: [^0-9]

\sUn caracter de espacio en

blanco: [ \t\n\x0B\f\r]

\SUn no caracter de espacio en

blanco: [^\s]

\wUn caracter de palabra: [a-zA-

Z_0-9]

\W Un no caracter de palabra: [^\w]

. Cualquier carácter

Page 349: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

80

Cuantificadores

X? X, cero o una vez

X* X, cero o más veces

X+ X, una o más veces

X{n} X, exactamente n veces

X{n,} X, al menos n veces

X{n,m}X, al menos n pero no más de

m veces

Operadores

XY X seguido de Y

X|Y X o Y

(X) X como grupo

LITERAL EXPRESION REGULAR – CONJUNTO

Su sintaxis es: {“regex_1”,”regex_2”,”regex_3”,…,”regex_n”}.

Donde regex_n es una expresión regular. Ejemplo: {“.+\.exe”,”

.+\.bat”,” .+\.com”}

2.12 VARIABLES DE BRL

Representan los elementos de un correo electrónico como subject, body, etc.

A continuación se describen las variables de BRL.

Page 350: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

81

2.12.1 IP_ORIGEN (ALFANUMERICO / EXPRESION REGULAR)

Contiene la dirección IP del remitente del correo electrónico. Dependiendo si

es correo entrante o saliente, el remitente puede ser un usuario externo o un

usuario interno respectivamente.

2.12.2 CORREO_REMITENTE (ALFANUMERICO / EXPRESION

REGULAR)

Contiene la dirección de correo electrónico del remitente, el campo FROM

del protocolo SMTP. Dependiendo si es correo entrante o saliente, el

remitente puede ser un usuario externo o un usuario interno

respectivamente.

2.12.3 DOMINIO_REMITENTE (ALFANUMERICO / EXPRESION

REGULAR)

Contiene el dominio del remitente del correo electrónico. Dependiendo si

es correo entrante o saliente, el remitente puede ser un usuario externo o un

usuario interno respectivamente.

2.12.4 SUBJECT (ALFANUMERICO / EXPRESION REGULAR)

Contiene el asunto del correo electrónico.

2.12.5 BODY (ALFANUMERICO / EXPRESION REGULAR)

Page 351: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

82

Contiene el cuerpo del correo electrónico.

2.12.6 DIRECCIONES_DESTINOS (ALFANUMERICO – CONJUNTO /

EXPRESION REGULAR - CONJUNTO)

Contiene la lista de direcciones de correo electrónico de los destinatarios.

Dependiendo si es correo entrante o saliente, los destinatarios pueden ser

usuarios internos o externos respectivamente.

2.12.7 NUMERO_DESTINATARIOS (NUMERICO)

Contiene la cantidad de destinatarios del correo electrónico. Dependiendo

si es correo entrante o saliente, los destinatarios pueden ser usuarios

internos o externos respectivamente.

2.12.8 MIME_FROM (ALFANUMERICO / EXPRESION REGULAR)

Contiene la dirección de correo electrónico del remitente, el campo FROM del

formato MIME. Dependiendo si es correo entrante o saliente, el remitente

puede ser un usuario externo o un usuario interno respectivamente.

2.12.9 CONTENT_LANGUAJE (ALFANUMERICO / EXPRESION

REGULAR)

Page 352: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

83

Es lenguaje del formato MIME del correo electrónico.

2.12.10 NOMBRES_ARCHIVOS_ADJUNTOS (ALFANUMERICO -

CONJUNTO / EXPRESION REGULAR - CONJUNTO)

Contiene la lista de nombres de los archivos adjuntos del correo electrónico.

2.12.11 EXTENCIONES_ARCHIVOS_ADJUNTOS (ALFANUMERICO

– CONJUNTO / EXPRESION REGULAR - CONJUNTO)

Contiene la lista de extensiones de los archivos adjuntos del correo

electrónico.

2.12.12 ESTA_SMTP_TO_IGUAL_MIME_TO (ALFANUMERICO)

Contiene “S” si en el correo electrónico el campo SMTP TO es igual al campo

MIME TO, “N” en caso contrario.

2.12.13 ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS

(ALFANUMERICO)

Contiene “S” si el correo electrónico solo contiene archivos adjuntos (no se

incluye nada en el body), “N” en caso contrario.

2.12.14 DOMINIO_REMITENTE_VALIDO (ALFANUMERICO)

Page 353: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

84

Contiene “S” si el dominio del remitente es válido (existe), “N” en caso

contrario. Dependiendo si es correo entrante o saliente, el remitente puede

ser un usuario externo o un usuario interno respectivamente.

2.12.15 JUEGOS_CARACTERES (ALFANUMERICO - CONJUNTO /

EXPRESION REGULAR - CONJUNTO)

Contiene los juegos de caracteres usados en el correo electrónico.

2.13 OPERADORES DE BRL

Se utilizan para realizar operaciones lógicas y de comparación entre las

variables BRL y los literales de datos. A continuación se describen los

operadores de BRL:

2.13.1 PARENTESIS_DE_APERTURA

Se representa con el símbolo "(". Es utilizado como elemento de inicio para

agrupar expresiones BRL.

2.13.2 PARENTESIS_DE_CIERRE

Se representa con el símbolo ")". Es utilizado como elemento de fin para

agrupar expresiones BRL.

2.13.3 CONJUNCION

Page 354: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

85

Se representa con el símbolo "AND". Es utilizado para realizar una

operación de conjunción entre expresiones BRL.

2.13.4 DISYUNCION

Se representa con el símbolo "OR". Es utilizado para realizar una operación

de disyunción entre expresiones BRL.

2.13.5 IGUAL

Se representa con el símbolo "=". Es utilizado para realizar una operación de

comparación de igualdad entre una variable BRL y un literal de datos.

2.13.6 DESIGUAL

Se representa con el símbolo "!=". Es utilizado para realizar una operación

de comparación de desigualdad entre una variable BRL y un literal de datos.

2.13.7 MAYOR_QUE

Se representa con el símbolo ">". Este operador es utilizado para determinar

si el valor una variable BRL es mayor a un valor literal.

2.13.8 MAYOR_O_IGUAL_QUE

Se representa con el símbolo ">=". Este operador es utilizado para

determinar si el valor de una variable BRL es mayor o igual a un valor literal.

Page 355: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

86

2.13.9 MENOR_QUE

Se representa con el símbolo "<". Este operador es utilizado para determinar

si el valor de una variable BRL es menor a un valor literal.

2.13.10 MENOR_O_IGUAL_QUE

Se representa con el símbolo "<=". Este operador es utilizado para

determinar si el valor de una variable BRL es menor o igual a un valor literal.

2.13.11 FORMA PARTE

Se representa con el símbolo “IN". Este operador es utilizado para

determinar si el valor de una variable forma parte de un conjunto de valores.

2.13.12 NO FORMA PARTE

Se representa con el símbolo "NOT_IN". Este operador es utilizado para

determinar si el valor de una variable no forma parte de un conjunto de

valores.

2.13.13 CADENA PARECIDA

Se representa con el símbolo "LIKE". Este operador es utilizado para

determinar si el valor de una variable cumple con un patrón de expresión

regular.

Page 356: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

87

2.13.14 CADENA NO PARECIDA

Se representa con el símbolo "NOT_LIKE". Este operador es utilizado para

determinar si el valor de una variable no cumple con un patrón de expresión

regular.

2.13.15 CONTIENE

Se representa con el símbolo "CONTAINS". Este operador es utilizado para

determinar si el conjunto de valores de una variable de tipo conjunto contiene

un valor literal.

2.13.16 NO CONTIENE

Se representa con el símbolo "NOT_CONTAINS". Este operador es utilizado

para determinar si el conjunto de valores de una variable de tipo conjunto no

contiene un valor literal.

2.13.17 INTERSECTA

Se representa con el símbolo "INTERSECT". Este operador es utilizado para

determinar si un conjunto tiene elementos en común con otro conjunto, es

decir, realiza una intersección entre conjuntos.

2.13.18 NO SE INTERSECTA

Page 357: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

88

Operador utilizado para determinar si un conjunto no tiene elementos en

común con otro conjunto. Se representa con el símbolo "NOT_INTERSECT".

Este operador representa la negación de una intersección entre conjuntos.

2.13.19 INTERSECTA CADENAS PARECIDAS

Se representa con el símbolo “INTERSECT_LIKE”. Este operador es la

versión del operador “INTERSECT” que utiliza expresiones regulares.

2.13.20 NO INTERSECTA CADENAS PARECIDAS

Se representa con el símbolo "NOT_INTERSECT_LIKE". Este operador es

la versión del operador “NOT_INTERSECT” que utiliza expresiones

regulares.

2.14 EJEMPLOS DE REGLAS EN BRL

A continuación se presentan ejemplos de reglas escritas en BRL:

EJEMPLO DE LISTA NEGRA DE DIRECCIONES IP

IP_ORIGEN IN {"2.34.124.210","61.9.88.129","61.11.11.232"}

EJEMPLO DE LISTA NEGRA DE DIRECCIONES DE CORREO

CORREO_REMITENTE IN

{"[email protected]","[email protected]","00jjohnson@citrom

ail.hu”}

Page 358: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

89

EJEMPLO DE DETECCIÓN DE PALABRAS SPAM EN EL BODY DE

UN CORREO

BODY LIKE "(.*blackjack.*)|(.*party.*)”

DETECCION DE CORREO CON CARACTERISTICAS DE SPAM

ESTA_SMTP_TO_IGUAL_MIME_TO = "N" OR (

ES_CONTENIDO_SOLO_ARCHIVOS_ADJUNTOS = "S" AND

EXTENCIONES_ARCHIVOS_ADJUNTOS INTERSECT

{"JPG","JPEG","JPE","GIF","BMP","TIFF","TIF","PIC"}

) OR NUMERO_DESTINATARIOS >= 20

DETECCION DE ARCHIVOS ADJUNTOS EJECUTABLES

EXTENCIONES_ARCHIVOS_ADJUNTOS INTERSECT

{"exe","bat","com","dll"}

2.15 HIBERNATE

Es un framework opensource de mapeo objeto relacional para la plataforma

Java que hace posible la persistencia transparente de objetos planos java

(POJOS). Permite diseñar objetos persistentes que podrán incluir

polimorfismo, relaciones, colecciones, y un gran número de tipos de datos.

De una manera muy rápida y optimizada se pueden generar bases de datos

en cualquiera de los entornos soportados como Oracle, DB2, MySql, etc.

Hibernate facilita el mapeo de atributos entre una base de datos relacional

tradicional y el modelo de objetos de una aplicación, mediante anotaciones

en las clases persistente o mediante archivos declarativos (XML) que

Page 359: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

90

permiten establecer estas relaciones. Este último es el mecanismo usado en

Bizshield Web Administrator.

Para configurar Hibernate, se incluye el archivo hibernate.cfg.xml en el

classpath de la aplicación web. El archivo hibernate.cfg.xml define

información acerca de la conexión de la base de datos, el contexto de la

sesión, manejo de las transacciones y los mapeos de los recursos. A

continuación se lista el archivo de configuración de Hibernate de Bizshield

Web Administrator:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property

name="hibernate.bytecode.use_reflection_optimizer">false</property>

<property

name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</propert

y>

<property

name="hibernate.connection.password">12345678</property>

<property name="hibernate.connection.url">jdbc:mysql://Bizshield

.pro.ec:3306/deterministicos</property>

<property name="hibernate.connection.username">root</property>

Page 360: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

91

<property

name="hibernate.current_session_context_class">thread</property>

<property

name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtSubsistema

.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtTipoDato.h

bm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtReglaProce

so.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtComponent

eRegla.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtElementoC

onjunto.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtRegla.hbm.

xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtSubtipoDat

o.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtReglaAccio

n.hbm.xml" />

Page 361: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

92

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtTipoOperad

or.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtParametroT

ipoAccion.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtProceso.hb

m.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtVariable.hb

m.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtVariablePro

ceso.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtOperador.h

bm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtSistema.hb

m.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtAccion.hbm

.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtTipoAccion.

hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtTipoAccionI

nconsistente.hbm.xml" />

Page 362: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

93

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtParametroA

ccion.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtCorreo.hbm

.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtEjecucionPr

oceso.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtDatoEjecuci

onProceso.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtEvaluacion

Regla.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/DtEjecucionA

ccion.hbm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/AsEmpresa.h

bm.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/AsUsuario.hb

m.xml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/AsRol.hbm.x

ml" />

<mapping

resource="com/realmsoft/deterministicos/clasesPersistentes/AsUsuarioRol

.hbm.xml" />

Page 363: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

94

</session-factory>

</hibernate-configuration>

2.16 DISPLAYTAG

Es una librería de tags jsp opensource diseñada para trabajar bajo una

arquitectura MVC, que permite el despliegue de información de forma tabular.

Esta librería es de gran utilidad cuando se quiere mostrar una colección de

datos en una tabla, permitiendo además agregar estilos, decoradores,

capacidad de exportación a distintos formatos, paginación y ordenamiento.

El tag principal de displaytag es table. Este tag puede recibir como

parámetro un objeto de la clase java.util.List, el cual representa nuestra

colección de objetos. Displaytag iterará a través de nuestra colección y

mostrará una columna por cada propiedad de los objetos. También podemos

definir manualmente el número de columnas a mostrar, los títulos y las

propiedades de los objetos que corresponden a cada columna.

Displaytag se configura a través del archivo displaytag.properties, el cual se

encuentra ubicado en la carpeta WEB-INF/classes.

Page 364: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

95

Para poder utilizar displaytag debemos incluir las librerías displaytag-

1.1.1.jar, displaytag-porlet-1.1.1.jar, displaytag-export-poi-1.1.1.jar e itext-

1.3.1.jar.

2.17 ARCHIVO DISPLAYTAG.PROPERTIES DE BIZSHIELD WEB

ADMINISTRATOR

basic.empty.showtable=false

basic.show.header=true

# page | list

sort.amount=page

export.amount=list

export.decorated=true

paging.banner.group_size=8

paging.banner.placement=top

css.tr.even=even

css.tr.odd=odd

css.th.sorted=sorted

css.th.ascending=order1

css.th.descending=order2

css.table=

css.th.sortable=sortable

# factory classes for extensions

factory.requestHelper=org.displaytag.util.DefaultRequestHelperFactory

# factory class for decorators

factory.decorator=org.displaytag.decorator.DefaultDecoratorFactory

Page 365: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

96

# locale provider (Jstl provider by default)

locale.provider=org.displaytag.localization.I18nJstlAdapter

# locale.resolver (nothing by default, simply use locale from request)

#locale.resolver=

export.types=csv excel xml pdf

export.csv.class=org.displaytag.export.CsvView

export.excel.class=org.displaytag.export.ExcelView

export.xml.class=org.displaytag.export.XmlView

export.pdf.class=org.displaytag.export.PdfView

export.csv=true

export.csv.label=<span class="export csv">CSV </span>

export.csv.include_header=false

export.csv.filename=

export.excel=true

export.excel.label=<span class="export excel">Excel </span>

export.excel.include_header=true

export.excel.filename=

export.xml=true

export.xml.label=<span class="export xml">XML </span>

export.xml.filename=

export.pdf=true

export.pdf.label=<span class="export pdf">PDF </span>

export.pdf.include_header=true

export.pdf.filename=

export.rtf=false

export.rtf.label=<span class="export rtf">RTF </span>

export.rtf.include_header=true

export.rtf.filename=

# messages

Page 366: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

97

basic.msg.empty_list=No existen elementos para mostrar.

basic.msg.empty_list_row=<tr class\="empty"><td colspan\="{0}">No

existen elementos para mostrar.</td></tr>

error.msg.invalid_page=invalid page

export.banner=<div class\="exportlinks">Opciones de exportación\:

{0}</div>

export.banner.sepchar= |

paging.banner.item_name=item

paging.banner.items_name=items

paging.banner.no_items_found=<span class="pagebanner">No se

encontró ningún {0}.</span>

paging.banner.one_item_found=<span class="pagebanner">Un {0}encontrado.</span>

paging.banner.all_items_found=<span class="pagebanner">{0} {1}encontrados, mostrando todos los {2}.</span>

paging.banner.some_items_found=<span class="pagebanner">{0} {1}encontrados, mostrando de {2} a {3}.</span>

paging.banner.full=<span class="pagelinks">[<a

href="{1}">Primero</a>/<a href="{2}">Anterior</a>] {0} [<a

href="{3}">Siguiente</a>/<a href="{4}">Ultimo</a>]</span>

paging.banner.first=<span class="pagelinks">[Primero/Anterior] {0} [<a

href="{3}">Siguiente</a>/<a href="{4}">Ultimo</a>]</span>

paging.banner.last=<span class\="pagelinks">[<a

href\="{1}">Primero</a>/<a href\="{2}">Anterior</a>] {0}[Siguiente/Ultimo]</span>

paging.banner.onepage=<span class="pagelinks">{0}</span>

paging.banner.page.selected=<strong>{0}</strong>

paging.banner.page.link=<a href="{1}" title="Ir a la pagina {0}">{0}</a>

paging.banner.page.separator=,

pagination.sort.param=sort

Page 367: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

98

pagination.sortdirection.param=dir

pagination.pagenumber.param=page

pagination.searchid.param=searchid

pagination.sort.asc.value=asc

pagination.sort.desc.value=desc

pagination.sort.skippagenumber=true

# unused

save.excel.banner=<a href="{0}" rel="external">save ({1} bytes)</a>

save.excel.filename=export.xls

2.18 DESCRIPTOR DE DESPLIEGUE DE BIZSHIELD WEB

ADMINISTRATOR (web.xml)

El descriptor de despliegue es un componente que describe cómo se debe

desplegar una aplicación web J2EE. Es un archivo llamado web.xml que se

encuentra dentro del directorio WEB-INF, debajo del directorio raíz de la

aplicación web. El descriptor de despliegue de Bizshield Web

Administrator se lista a continuación:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"

version="2.5">

Page 368: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

99

<display-name>Bizshield WebAdministrator</display-name>

<filter>

<filter-name>ResponseOverrideFilter</filter-name>

<filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>ResponseOverrideFilter</filter-name>

<url-pattern>*.faces</url-pattern>

</filter-mapping>

<listener>

<listener-

class>com.realmsoft.util.listenerWeb.InicializadorContexto</listener-class>

</listener>

<listener>

<listener-

class>com.realmsoft.util.listenerWeb.ManejadorRequestHibernate</listene

r-class>

</listener>

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>*.faces</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

Page 369: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

100

<error-page>

<error-code>403</error-code>

<location>/fail_access.jsp</location>

</error-page>

<error-page>

<exception-

type>javax.faces.application.ViewExpiredException</exception-type>

<location>/fail_session.jsp</location>

</error-page>

<security-constraint>

<display-name>Recursos de Usuario</display-name>

<web-resource-collection>

<web-resource-name>Area de Reportes</web-resource-name>

<url-pattern>/reportes/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>USUARIO</role-name>

<role-name>ADMINISTRADOR</role-name>

</auth-constraint>

</security-constraint>

<security-constraint>

<display-name>Recursos de Administrador</display-name>

<web-resource-collection>

<web-resource-name>Area de Configuration</web-resource-name>

<url-pattern>/configuración/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>ADMINISTRADOR</role-name>

</auth-constraint>

</security-constraint>

Page 370: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

101

<login-config>

<auth-method>FORM</auth-method>

<realm-name>BizshieldRealm</realm-name>

<form-login-config>

<form-login-page>/login.jsp</form-login-page>

<form-error-page>/fail_login.jsp</form-error-page>

</form-login-config>

</login-config>

<security-role>

<role-name>ADMINISTRADOR</role-name>

</security-role>

<security-role>

<role-name>USUARIO</role-name>

</security-role>

<servlet>

<description></description>

<display-name>VisualizadorEmail</display-name>

<servlet-name>VisualizadorEmail</servlet-name>

<servlet-class>com.realmsoft.Bizshield

.reporte.VisualizadorEmail</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>VisualizadorEmail</servlet-name>

<url-pattern>/reportes/VisualizadorEmail</url-pattern>

</servlet-mapping>

</web-app>

Page 371: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

102

2.19 DETALLE DE LAS DIFERENTES CLASES UTILIZADAS EN EL

SISTEMA BIZSHIELD

Package com.realmsoft.Bizshield.actualizacionAutomatica

Class Summary

ActualizacionReglaEs un Servlet que se encarga del proceso de

actualización automática.

com.realmsoft.Bizshield .actualizacionAutomatica

Class ActualizacionRegla

java.lang.Object

javax.servlet.GenericServlet

javax.servlet.http.HttpServlet

com.realmsoft.Bizshield

.actualizacionAutomatica.ActualizacionRegla

All Implemented Interfaces:

java.io.Serializable,javax.servlet.Servlet, javax.servlet.ServletConfig

public class ActualizacionRegla

extends javax.servlet.http.HttpServlet

Es un Servlet que se encarga del proceso de actualización automática.

Page 372: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

103

Package com.realmsoft.Bizshield.beans

Class Summary

BizshieldUtilEs una clase que contiene métodos de utilidad de

la aplicación Bizshield Web Administrator.

ConfiguracionAccion

Es el managed bean en donde se almacena el

estado de los componentes y se definen las

validaciones, el comportamiento y las acciones

del formulario de configuración de acción

antispam.

ConfiguracionRegla

Es el managed bean en donde se almacena el

estado de los componentes y se definen las

validaciones, el comportamiento y las acciones

del formulario de configuración de regla

antispam.

ConfiguracionUsuario

Es el managed bean en donde se almacena el

estado de los componentes y se definen las

validaciones, el comportamiento y las acciones

del formulario de gestión de usuarios.

ReporteCorreoAnalizadoEs el managed bean que almacena el estado de

los componentes y realiza las consultas del

formulario de reporte de correos analizados.

ReporteReglaEvaluadaEs el managed bean que almacena el estado de

los componentes y realiza las consultas del

formulario de reporte de reglas evaluadas.

Page 373: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

104

com.realmsoft.Bizshield.beans

Class BizshieldUtil

java.lang.Object

com.realmsoft.Bizshield.beans.BizshieldUtil

public class BizshieldUtil

extends java.lang.Object

Es una clase que contiene métodos de utilidad de la aplicación Bizshield Web

Administrator.

Detalle del método

logout

public java.lang.String logout()

Este método es el encargado de realizar el logout del usuario, invalidando su

sesión.

Returns:

inicioBizshield, este valor es usado como outcome en las reglas de

navegación.

com.realmsoft.Bizshield .beans

Class ConfiguracionAccion

java.lang.Object

Page 374: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

105

com.realmsoft.Bizshield

.beans.ConfiguracionAccion

public class ConfiguracionAccion

extends java.lang.Object

Es el managed bean en donde se almacena el estado de los componentes y

se definen las validaciones, el comportamiento y las acciones del formulario

de configuración de acción antispam. Estas acciones son: crear, editar,

consultar y eliminar.

Detalle del método

actualizarAsociacionReglas

private void actualizarAsociacionReglas()

Este método es el encargado de llenar y sincronizar las listas de reglas

disponibles y reglas asociadas.

crear

public java.lang.String crear()

Este método es el encargado de crear la acción antispam. Primero se

asegura que los datos ingresados en el formulario son consistentes llamando

al método validarConfiguracionAccion, si esta validación es exitosa se delega

la operación de crear la acción en la base de datos al método

Page 375: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

106

crearOActualizarAccion de la clase de negocios ConfiguracionAccionBO y se

actualiza la lista de acciones con la acción creada. El resultado de esta

operación es mostrado en el cuadro de texto Mensaje del Sistema del

formulario de configuración de acción.

Returns:

SUCCESS si la acción antispam se creó exitosamente, FAILURE en caso de

error.

editar

public java.lang.String editar()

Este método es el encargado de editar una acción antispam existente.

Primero se asegura que los datos ingresados en el formulario son

consistentes llamando al método validarConfiguracionAccion, si esta

validación es exitosa se delega la operación de editar la acción en la base de

datos al método crearOActualizarAccion de la clase de negocios

ConfiguracionAccionBO y se actualiza la lista de acciones con la acción

editada. El resultado de esta operación es mostrado en el cuadro de texto

Mensaje del Sistema del formulario de configuración de acción.

Returns:

SUCCESS si la acción antispam se editó exitosamente, FAILURE en caso de

error.

Page 376: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

107

liberarRegla

public java.lang.String liberarRegla()

Este método es el encargado de quitar la regla seleccionada de la lista de

reglas asociadas a la acción.

Returns:

SUCCESS, este valor es usado como outcome en las reglas de navegación.

limpiarCamposFormulario

private void limpiarCamposFormulario()

Este método es el encargado de limpiar todos los campos del formulario de

configuración de acción.

llenarCamposFormulario

private void llenarCamposFormulario()

Este método es el encargado de llenar los campos del formulario de

configuración de acción con la información de la acción seleccionada. Para

ello realiza una búsqueda de los datos, los parámetros y las reglas asociadas

de la acción seleccionada utilizando los objetos de acceso a datos (DAO).

seleccionarRegla

public java.lang.String seleccionarRegla()

Page 377: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

108

Este método es el encargado de agregar la regla seleccionada a la lista de

reglas asociadas a la acción.

Returns:

SUCCESS, este valor es usado como outcome en las reglas de navegación.

validarConfiguracionAccion

public java.lang.String validarConfiguracionAccion()

Este método es el encargado de validar los datos de una acción antispam.

Se comprueba los campos no estén vacíos, que el nombre de acción no

exista, que los parámetros de la acción sean correctos y que no se asocien

acciones inconsistentes a una regla.

Returns:

SUCCESS si la validación de la acción se realizó exitosamente, FAILURE en

caso de error.

validarParametrosAccion

public java.lang.String validarParametrosAccion()

Este método es el encargado de validar que los parámetros ingresados para

una acción sean correctos, dependiendo del subtipo de dato del parámetro.

Returns:

SUCCESS si la validación de los parámetros se realizó exitosamente,

FAILURE en caso de error.

Page 378: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

109

com.realmsoft.Bizshield.beans

Class ConfiguracionRegla

java.lang.Object

com.realmsoft.Bizshield

.beans.ConfiguracionRegla

public class ConfiguracionRegla

extends java.lang.Object

Es el managed bean en donde se almacena el estado de los componentes y

se definen las validaciones, el comportamiento y las acciones del formulario

de configuración de regla antispam. Estas acciones son: crear, editar,

consultar y eliminar.

Constructor Detail

ConfiguracionRegla

public ConfiguracionRegla()

Este método es el constructor sin argumentos. Inicializa todos los miembros

del objeto y llena las listas de reglas, acciones, procesos, variables y

operadores.

Detalle del método

actualizarAsociacionAcciones

private void actualizarAsociacionAcciones()

Page 379: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

110

Este método es el encargado de llenar y sincronizar las listas de acciones

disponibles y acciones asociadas.

crear

public java.lang.String crear()

Este método es el encargado de crear la regla antispam. Primero se asegura

que los datos ingresados en el formulario son consistentes llamando al

método validarConfiguracionRegla, si esta validación es exitosa se delega la

operación de crear la regla en la base de datos al método

crearOActualizarRegla de la clase de negocios ConfiguracionReglaBO y se

actualiza la lista de reglas con la regla creada. El resultado de esta operación

es mostrado en el cuadro de texto “Mensaje del Sistema” del formulario de

configuración de regla.

Returns:

SUCCESS si la regla antispam se creó exitosamente, FAILURE en caso de

error.

editar

public java.lang.String editar()

Este método es el encargado de editar una regla antispam existente. Primero

se asegura que los datos ingresados en el formulario son consistentes

llamando al método validarConfiguracionRegla, si esta validación es exitosa

Page 380: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

111

se delega la operación de editar la regla en la base de datos al método

crearOActualizarRegla de la clase de negocios ConfiguracionReglaBO y se

actualiza la lista de reglas con la regla editada. El resultado de esta

operación es mostrado en el cuadro de texto “Mensaje del Sistema” del

formulario de configuración de regla.

Returns:

SUCCESS si la regla antispam se editó exitosamente, FAILURE en caso de

error.

eliminar

public java.lang.String eliminar()

Este método es el encargado de eliminar una regla antispam existente,

delega la operación de eliminar la regla en la base de datos al método

caducarRegla de la clase de negocios ConfiguracionReglaBO y actualiza la

lista de reglas.

Returns:

SUCCESS si la regla antispam se eliminó exitosamente, FAILURE en caso

de error.

liberarAccion

public java.lang.String liberarAccion()

Page 381: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

112

Este método es el encargado de quitar la acción seleccionada de la lista de

acciones asociadas a la regla.

Returns:

SUCCESS, este valor es usado como outcome en las reglas de navegación.

limpiarCamposFormulario

private void limpiarCamposFormulario()

Este método es el encargado de limpiar todos los campos del formulario de

configuración de regla.

llenarCamposFormulario

private void llenarCamposFormulario()

Este método es el encargado de llenar los campos del formulario de

configuración de regla con la información de la regla seleccionada. Para ello

realiza una búsqueda de los datos y las acciones asociadas de la regla

seleccionada utilizando los objetos de acceso a datos (DAO).

seleccionarAccion

public java.lang.String seleccionarAccion()

Este método es el encargado de agregar la acción seleccionada a la lista de

acciones asociadas a la regla.

Returns:

SUCCESS, este valor es usado como outcome en las reglas de navegación.

Page 382: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

113

validarConfiguracionRegla

public java.lang.String validarConfiguracionRegla()

Este método es el encargado de validar los datos de una regla antispam. Se

comprueba los campos no estén vacíos, que el nombre de regla no exista,

que no se asocien acciones inconsistentes a una regla y que el contenido de

la regla sea léxica y sintácticamente correcto acorde a la gramática de BRL.

Returns:

SUCCESS si la validación de la regla se realizó exitosamente, FAILURE en

caso de error.

validarContenidoRegla

public java.lang.String validarContenidoRegla()

Este método es el encargado de comprobar que el contenido de la regla sea

léxica y sintácticamente correcto acorde a la gramática de Bizshield Rules

Language, a través del método parse de la clase Bizshield Parser. Si se

encuentran errores en el parseo de la expresión BRL, se muestra un mensaje

en el cuadro de texto “Mensaje del Sistema” del formulario de configuración

de regla, indicando la posición del mismo.

Returns:

SUCCESS si el contenido de la regla se validó exitosamente, FAILURE en

caso de error.

Page 383: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

114

com.realmsoft.Bizshield.beans

Class ConfiguracionUsuario

java.lang.Object

com.realmsoft.Bizshield.beans.ConfiguracionUsuario

public class ConfiguracionUsuario

extends java.lang.Object

Es el managed bean en donde se almacena el estado de los componentes y

se definen las validaciones, el comportamiento y las acciones del formulario

de gestión de usuarios. Estas acciones son: crear, editar, consultar y

eliminar.

ConfiguracionUsuario

public ConfiguracionUsuario()

Este método es el constructor sin argumentos. Inicializa todos los miembros

del objeto y llena las listas de usuarios y roles.

crear

public java.lang.String crear()

Page 384: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

115

Este método es el encargado de crear el usuario. Primero se asegura que los

datos ingresados en el formulario son consistentes llamando al método

validarDatosUsuario, si esta validación es exitosa se delega la operación de

crear el usuario en la base de datos al método crearOActualizarUsuario de la

clase de negocios ConfiguracionUsuarioBO y se actualiza la lista de usuarios

con el usuario creado. El resultado de esta operación es mostrado en el

cuadro de texto “Mensaje del Sistema” del formulario de gestión de usuario.

Returns:

SUCCESS si el usuario se creó exitosamente, FAILURE en caso de error.

editar

public java.lang.String editar()

Este método es el encargado de editar un usuario existente. Primero se

asegura que los datos ingresados en el formulario son consistentes llamando

al método validarDatosUsuario, si esta validación es exitosa se delega la

operación de editar el usuario en la base de datos al método

crearOActualizarUsuario de la clase de negocios ConfiguracionUsuarioBO y

se actualiza la lista de usuarios con el usuario editado. El resultado de esta

operación es mostrado en el cuadro de texto “Mensaje del Sistema” del

formulario de gestión de usuarios.

Returns:

SUCCESS si el usuario se editó exitosamente, FAILURE en caso de error.

Page 385: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

116

eliminar

public java.lang.String eliminar()

Este método es el encargado de eliminar un usuario existente, delega la

operación de eliminar el usuario en la base de datos al método

caducarUsuario de la clase de negocios ConfiguracionUsuarioBO y actualiza

la lista de usuarios.

Returns:

SUCCESS si el usuario se eliminó exitosamente, FAILURE en caso de error.

limpiarCamposFormulario

private void limpiarCamposFormulario()

Este método es el encargado de limpiar todos los campos del formulario de

gestión de usuario.

llenarCamposFormulario

private void llenarCamposFormulario()

Este método es el encargado de llenar los campos del formulario de gestión

de usuario con la información del usuario seleccionado. Para ello realiza una

búsqueda de los datos del usuario seleccionado utilizando los objetos de

acceso a datos (DAO).

Page 386: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

117

validarDatosUsuario

public java.lang.String validarDatosUsuario()

Este método es el encargado de validar los datos de un usuario. Se

comprueba los campos no estén vacíos, que el nombre de usuario no exista

y que los valores ingresados tengan el formato correcto dependiendo del tipo

de dato.

Returns:

SUCCESS si la validación de los datos del usuario se realizó exitosamente,

FAILURE en caso de error.

com.realmsoft.Bizshield.beans

Class ReporteCorreoAnalizado

java.lang.Object

com.realmsoft.Bizshield

.beans.ReporteCorreoAnalizado

public class ReporteCorreoAnalizado

extends java.lang.Object

Es el managed bean que almacena el estado de los componentes y realiza

las consultas del formulario de reporte de correos analizados.

Constructor Detail

ReporteCorreoAnalizado

public ReporteCorreoAnalizado()

Page 387: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

118

Este método es el constructor sin argumentos. Inicializa todos los miembros

del objeto y llena las listas de procesos y resultados de evaluación.

Detalle del método

actualizarFechas

private boolean actualizarFechas()

Este método es el encargado de comprobar que las fechas ingresadas

tengan el formato correcto y que sean válidas. El formato correcto es YYYY-

MM-DD.

Returns:

true si la fecha es correcta, false si es incorrecta.

consultarReporte

public java.lang.String consultarReporte()

Este método es el encargado de realizar la consulta de correos analizados a

través de los objetos de acceso a datos (DAO), tomando como parámetros el

proceso, el resultado de la ejecución de proceso, la fecha inicial de análisis y

la fecha final de análisis. Si la consulta retorna resultados estos se muestran

en una tabla de datos displaytag, con opciones de paginación y exportación.

Returns:

SUCCESS si la consulta se realizó exitosamente, FAILURE en caso de error.

limpiarCamposFormulario

Page 388: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

119

public java.lang.String limpiarCamposFormulario()

Este método es el encargado de limpiar todos los parámetros de búsqueda y

resultados del formulario de reporte de correos analizados.

Returns:

reporteCorreosAnalizados, este valor es usado como outcome en las reglas

de navegación.

com.realmsoft.Bizshield.beans

Class ReporteReglaEvaluada

java.lang.Object

com.realmsoft.Bizshield.beans.ReporteReglaEvaluada

public class ReporteReglaEvaluada

extends java.lang.Object

Es el managed bean que almacena el estado de los componentes y realiza

las consultas del formulario de reporte de reglas evaluadas.

Constructor Detail

ReporteReglaEvaluada

public ReporteReglaEvaluada()

Este método es el constructor sin argumentos. Inicializa todos los miembros

del objeto y llena las listas de procesos y resultados de evaluación.

Page 389: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

120

Detalle del método

actualizarFechas

private boolean actualizarFechas()

Este método es el encargado de comprobar que las fechas ingresadas

tengan el formato correcto y que sean válidas. El formato correcto es YYYY-

MM-DD.

Returns:

true si la fecha es correcta, false si es incorrecta.

consultarReporte

public java.lang.String consultarReporte()

Este método es el encargado de realizar la consulta de reglas evaluadas a

través de los objetos de acceso a datos (DAO), tomando como parámetros el

proceso, el resultado de la evaluación de la regla, la fecha inicial de

evaluación y la fecha final de evaluación. Si la consulta retorna resultados

estos se muestran en una tabla de datos displaytag, con opciones de

paginación y exportación.

Returns:

SUCCESS si la consulta se realizó exitosamente, FAILURE en caso de error.

limpiarCamposFormulario

public java.lang.String limpiarCamposFormulario()

Page 390: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

121

Este método es el encargado de limpiar todos los parámetros de búsqueda y

resultados del formulario de reporte de reglas evaluadas.

Returns:

reporteReglasEvaluadas, este valor es usado como outcome en las reglas de

navegación.

Package com.realmsoft.Bizshield.reporte

Class Summary

CorreoAnalizado

Es una clase cuya instanciaes un DTO que representaun registro del resultado dela búsqueda de correosanalizados.

ReglaEvaluada

Es una clase cuya instanciaes un DTO que representaun registro del resultado dela búsqueda de reglasevaluadas.

VisualizadorEmail

Es un Servlet que seencarga de consultar ymostrar el contenido de uncorreo electrónico enformato MIME.

VisualizadorEmailDecorator

Es una clase de tipoTableDecorator que seencarga de manejar lapresentación de la columnaVer Correo del reporte decorreos analizados.

Page 391: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

122

com.realmsoft.Bizshield.reporte

Class CorreoAnalizado

java.lang.Object

com.realmsoft.Bizshield.reporte.CorreoAnalizado

public class CorreoAnalizado

extends java.lang.Object

Es una clase cuya instancia es un DTO que representa un registro del

resultado de la búsqueda de correos analizados. Las propiedades de este

objeto son mostradas en la tabla displaytag.

Parameters:

idCorreo - identificador del correo

de - remitente del correo

para - destinatario del correo

ipOrigen - dirección IP del remitente

seEjecutaronReglas - flag que indica si se ejecutaron reglas

esSpam - flag que indica si el correo se clasificó como spam

fechaEjecucionProceso - fecha de ejecución del proceso

proceso - proceso ejecutado

Page 392: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

123

com.realmsoft.Bizshield .reporte

Class ReglaEvaluada

java.lang.Object

com.realmsoft.Bizshield.reporte.ReglaEvaluada

public class ReglaEvaluada

extends java.lang.Object

Es una clase cuya instancia es un DTO que representa un registro del

resultado de la búsqueda de reglas evaluadas. Las propiedades de este

objeto son mostrados en la tabla displaytag.

Constructor Detail

ReglaEvaluada

public ReglaEvaluada(java.lang.String proceso,

java.lang.String fechaEvaluacionRegla,

java.lang.String reglaEvaluada,

java.lang.String accionEjecutada,

java.lang.String tipoAccionEjecutada,

java.lang.String resultadoEvaluacionRegla)

Este método es el constructor de la clase. Inicializa todos los miembros del

objeto.

Page 393: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

124

Parameters:

proceso - proceso ejecutado

fechaEvaluacionRegla - fecha de evaluación de la regla

reglaEvaluada - regla evaluada

accionEjecutada - acción ejecutada

tipoAccionEjecutada - tipo de acción ejecutada

resultadoEvaluacionRegla - resultado de evaluación de la regla

com.realmsoft.Bizshield.reporte

Class VisualizadorEmail

java.lang.Object

javax.servlet.GenericServlet

javax.servlet.http.HttpServlet

com.realmsoft.Bizshield

.reporte.VisualizadorEmail

All Implemented Interfaces:

java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class VisualizadorEmail

extends javax.servlet.http.HttpServlet

Es un Servlet que se encarga de consultar y mostrar el contenido de un

correo electrónico en formato MIME.

Page 394: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

125

processRequest

private void processRequest(javax.servlet.http.HttpServletRequest request,

javax.servlet.http.HttpServletResponse response)

Este método se ejecuta cuando se llama al Servlets, ya sea de tipo get o

post. Recibe el identificador de correo como parámetro del request y con este

valor realiza la consulta de los datos del correo electrónico a través de los

objetos de acceso a datos (DAO). También se encarga de imprimir en el

response el contenido del correo electrónico en formato MIME.

Parameters:

request - request del protocolo http

response - response del protocolo http

com.realmsoft.Bizshield.reporte

Class VisualizadorEmailDecorator

java.lang.Object

org.displaytag.decorator.TableDecorator

com.realmsoft.Bizshield.reporte.VisualizadorEmailDecorator

public class VisualizadorEmailDecorator

extends org.displaytag.decorator.TableDecorator

Es una clase de tipo TableDecorator que se encarga de manejar la

presentación de la columna Ver Correo del reporte de correos analizados.

Page 395: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

126

Versión:

1.0

Autor:

elfstone

Detalle del método

getLinkVisualizarEmail

public java.lang.String getLinkVisualizarEmail()

Este método construye el link al Servlets VisualizadorEmail, pasando el

identificador de cada correo como parámetro del request. El link es mostrado

en la columna Ver Correo del reporte de correos analizados.

Returns:

link al Servlets VisualizadorEmail, con el identificador de correo como

parámetro de request.

com.realmsoft.Bizshield.ejecutoresAcciones

Class AceptarCorreo

java.lang.Object

com.realmsoft.Bizshield.ejecutoresAcciones.AceptarCorreo

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Page 396: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

127

public class AceptarCorreo

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase AceptarCorreo es una implementación de la interfaz EjecutorAccion.

Esta clase ejecuta la acción de aceptar correo.

Detalle del método

ejecutarAccion

public void ejecutarAccion( com.realmsoft.deterministicos.

clasesPersistentes.DtEjecucionProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion p_datosP

araEjecutarAccion)

Método que ejecuta la acción aceptar correo

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción

Page 397: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

128

com.realmsoft.Bizshield .calculadoresVariables

Class CalculadorContentLanguaje

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorContentLanguaje

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorContentLanguaje

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorContentLanguaje es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable ContentLanguaje

Versión:

1.0, 13/05/2009

Autor:

David Toala Mosquera

Detalle del método

calcularVariable

Page 398: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

129

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable ContentLanguaje de los

correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorCorreoRemitente

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorCorreoRemitente

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorCorreoRemitente

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 399: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

130

La clase CalculadorCorreoRemitente es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable CorreoRemitente

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable Correo Remitente de los

correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorDireccionesDestinos

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorDireccionesDestinos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 400: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

131

public class CalculadorDireccionesDestinos

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorDireccionesDestinos es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable DireccionesDestinos

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable DireccionesDestino para los

correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorDominioRemitente

java.lang.Object

Page 401: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

132

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorDominioRemitente

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorDominioRemitente

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorDominioRemitente es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable DominioRemitente

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable DominioRemitente para los

correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 402: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

133

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorDominioRemitenteValido

java.lang.Object

com.realmsoft.Bizshield.calculadoresVariables.CalculadorDominioRe

mitenteValido

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorDominioRemitenteValido

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorDominioRemitenteValido es una implementación de la

interfaz CalculadorVariable y tiene como responsabilidad calcular el valor de

la variable DominioRemitenteValido

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso p_dtEjecucionProceso)

Page 403: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

134

Este método implementa el cálculo de la variable DominioRemitenteValido

para los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield .calculadoresVariables

Class CalculadorEsContenidoSoloArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorEsContenidoSoloArchivosAdju

ntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorEsContenidoSoloArchivosAdjuntos

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorEsContenidoSoloArchivosAdjuntos es una

implementación de la interfaz CalculadorVariable y tiene como

responsabilidad calcular el valor de la variable

EsContenidoSoloArchivosAdjuntos

Page 404: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

135

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable

EsContenidoSoloArchivosAdjuntos para los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

buscarContenidoTextPlain

public void buscarContenidoTextPlain(javax.mail.Part p,

java.lang.StringBuilder builder)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

tieneArchivosAdjuntos

public boolean tieneArchivosAdjuntos(javax.mail.Part p)

Page 405: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

136

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield .calculadoresVariables

Class CalculadorEstaSmtpToIgualMimeTo

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorEstaSmtpToIgualMimeTo

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorEstaSmtpToIgualMimeTo

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorEstaSmtpToIgualMimeTo es una implementación de la

interfaz CalculadorVariable y tiene como responsabilidad calcular el valor de

la variable EstaSmtpToIgualMimeTo

Detalle del método

calcularVariable

Page 406: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

137

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable EstaSmtpToIgualMimeTo

para los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorExtensionesArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorExtensionesArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorExtensionesArchivosAdjuntos

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 407: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

138

La clase CalculadorExtensionesArchivosAdjuntos es una implementación de

la interfaz CalculadorVariable y tiene como responsabilidad calcular el valor

de la variable ExtensionesArchivosAdjuntos

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable

ExtensionesArchivosAdjuntos para los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

recuperarExtenciones

public void recuperarExtenciones(javax.mail.Part p,

java.util.Set<java.lang.String> ps_extensionesArchivos)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

Page 408: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

139

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorIpOrigen

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorIpOrigen

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorIpOrigen

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorIpOrigen es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable IpOrigen

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso p_dtEjecucionProceso)

Este método implementa el cálculo de la variable IpOrigen para los correos

entrantes y salientes

Specified by:

Page 409: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

140

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield .calculadoresVariables

Class CalculadorJuegoCaracteres

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorJuegoCaracteres

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorJuegoCaracteres

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorJuegoCaracteres es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable JuegoCaracteres

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Page 410: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

141

Este método implementa el cálculo de la variable JuegoCaracteres para los

correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

recuperarJuegosCaracteres

public void recuperarJuegosCaracteres(javax.mail.Part p,

java.util.Set<java.lang.String> p_caracteres)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorMimeFrom

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorMimeFrom

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 411: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

142

public class CalculadorMimeFrom

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorMimeFrom es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable MimeFrom

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable MimeFrom para los correos

entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorNombresArchivosAdjuntos

java.lang.Object

Page 412: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

143

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorNombresArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorNombresArchivosAdjuntos

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorNombresArchivosAdjuntos es una implementación de la

interfaz CalculadorVariable y tiene como responsabilidad calcular el valor de

la variable NombresArchivosAdjuntos

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable NombresArchivosAdjuntos

para los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 413: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

144

recuperarNombres

public void recuperarNombres(javax.mail.Part p,

java.util.List<java.lang.String> ps_nombresArchivos)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorNumeroDestinatarios

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorNumeroDestinatarios

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

public class CalculadorNumeroDestinatarios

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 414: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

145

La clase CalculadorNumeroDestinatarios es una implementación de la

interfaz CalculadorVariable y tiene como responsabilidad calcular el valor de

la variable NumeroDestinatarios

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable NumeroDestinatarios para

los correos entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

com.realmsoft.Bizshield.calculadoresVariables

Class CalculadorSubject

java.lang.Object

com.realmsoft.Bizshield

.calculadoresVariables.CalculadorSubject

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Page 415: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

146

public class CalculadorSubject

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.CalculadorVariable

La clase CalculadorSubject es una implementación de la interfaz

CalculadorVariable y tiene como responsabilidad calcular el valor de la

variable Subject

Detalle del método

calcularVariable

public java.lang.Object

calcularVariable(com.realmsoft.deterministicos.clasesPersistentes.DtEjecuci

onProceso proceso)

Este método implementa el cálculo de la variable Subject para los correos

entrantes y salientes

Specified by:

calcularVariable in interface

com.realmsoft.deterministicos.interfaces.CalculadorVariable

Package com.realmsoft.Bizshield.datosParaEjecutarAcciones

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class DatosCuarentenaArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosQuitarArchivosAdjuntos

Page 416: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

147

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosCuarentenaArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

public class DatosCuarentenaArchivosAdjuntos

extends DatosQuitarArchivosAdjuntos

La clase DatosCuarentenaArchivosAdjuntos es una implementación de la

interfaz DatosQuitarArchivosAdjuntos, es el DTO que contienen los

parámetros de la acción CuarentenaArchivosAdjuntos

Detalle del método

getRutaCuarentena

public java.lang.String getRutaCuarentena()

Permite recuperar la ruta donde se pondrán los archivos en cuarentena

Returns:

la ruta donde se pondrán los archivos en cuarentena

setRutaCuarentena

public void setRutaCuarentena(java.lang.String rutaCuarentena)

Permite especificar la ruta donde se pondrán los archivos en cuarentena

Parameters:

Page 417: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

148

rutaCuarentena - específica la ruta donde se pondrán los archivos en

cuarentena

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class DatosMensajeBody

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosMensajeBody

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

public class DatosMensajeBody

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

La clase DatosMensajeBody es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, es el DTO que contienen los parámetros de la

acción AniadirMensajeBody

Detalle del método

getMensajeTxt

public java.lang.String getMensajeTxt()

Permite recuperar el mensaje que será añadido en la parte text/plain de los

datos MIME del correo

Page 418: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

149

Returns:

el mensaje que será añadido en la parte text/plain de los datos MIME del

correo

setMensajeTxt

public void setMensajeTxt(java.lang.String mensajeTxt)

Permite especificar el mensaje que será añadido en la parte text/plain de los

datos MIME del correo

Parameters:

mensajeTxt - especifica el mensaje que será añadido en la parte text/plain de

los datos MIME del correo

getMensajeHtml

public java.lang.String getMensajeHtml()

Permite recuperar el mensaje que será añadido en la parte text/html de los

datos MIME del correo

Returns:

el mensaje que será añadido en la parte text/html de los datos MIME del

correo

setMensajeHtml

public void setMensajeHtml(java.lang.String mensajeHtml)

Page 419: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

150

Permite especificar el mensaje que será añadido en la parte text/html de los

datos MIME del correo

Parameters:

mensajeHtmlespecifica - el mensaje que será añadido en la parte text/html de

los datos MIME del correo

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class DatosMensajeSubject

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosMensajeSubject

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

public class DatosMensajeSubject

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

La clase DatosMensajeSubject es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, es el DTO que contienen los parámetros de la

acción AniadirMensajeSubject

Detalle del método

getMensajeSubject

Page 420: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

151

public java.lang.String getMensajeSubject()

Permite recuperar el mensaje adicional que será añadido en el subject del

correo

Returns:

el mensaje adicional que será añadido en el subject del correo

setMensajeSubject

public void setMensajeSubject(java.lang.String mensajeSubject)

Permite especificar el mensaje adicional que será añadido en el subject del

correo

Parameters:

mensajeSubject - específica el mensaje adicional que será añadido en el

subject del correo

com.realmsoft.Bizshield .datosParaEjecutarAcciones

Class DatosQuitarArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosQuitarArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

Direct Known Subclasses:

DatosCuarentenaArchivosAdjuntos

Page 421: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

152

public class DatosQuitarArchivosAdjuntos

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

La clase DatosQuitarArchivosAdjuntos es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, es el DTO que contienen los parámetros de la

acción QuitarArchivosAdjuntos

Detalle del método

getPatronArchivoAdjunto

public java.lang.String getPatronArchivoAdjunto()

Permite recuperar el patrón de nombre de archivo adjunto que se utilizara

para quitar archivos adjuntos del correo

Returns:

el patrón de nombre de archivo adjunto que se utilizara para quitar archivos

adjuntos

setPatronArchivoAdjunto

public void

setPatronArchivoAdjunto(java.lang.String patronArchivoAdjunto)

Permite especificar el patrón de nombre de archivo adjunto que se utilizara

para quitar archivos adjuntos del correo

Page 422: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

153

Parameters:

patronesArchivosAdjunto - específica el patrón de nombre de archivo adjunto

que se utilizara para quitar archivos adjuntos

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class Datosr

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.Datosr

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

public class Datosr

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

La clase Datosr es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, es el DTO que contienen los parámetros de la

acción r

Detalle del método

getListaCorreos

public java.lang.String getListaCorreos()

Permite la recuperar la lista de correos a re direccionar

Page 423: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

154

Returns:

la lista de correos a re direccionar

setListaCorreos

public void setListaCorreos(java.lang.String listaCorreos)

Permite especificar la lista de correos a re direccionar

Parameters:

listaCorreos - especifica la lista de correos a re direccionar

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class DatosResponderRemitente

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.DatosResponderRemitente

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

public class DatosResponderRemitente

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

Page 424: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

155

La clase DatosResponderRemitente es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, es el DTO que contienen los parámetros de la

acción ResponderRemitente

Detalle del método

getSubject

public java.lang.String getSubject()

Permite recuperar el subject que será utilizado en el correo de respuesta al

remitente

Returns:

el subject que será utilizado en el correo de respuesta al remitente

setSubject

public void setSubject(java.lang.String subject)

Permite especificar el subject que será utilizado en el correo de respuesta al

remitente

Parameters:

subject - específica el subject que será utilizado en el correo de respuesta al

remitente

getContenido

public java.lang.String getContenido()

Page 425: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

156

Permite recuperar el contenido del mensaje que será utilizado en el correo de

respuesta al remitente

Returns:

el contenido del mensaje que será utilizado en el correo de respuesta al

remitente

setContenido

public void setContenido(java.lang.String contenido)

Permite especificar el contenido del mensaje que será utilizado en el correo

de respuesta al remitente

Parameters:

contenido - especifica el contenido del mensaje que será utilizado en el

correo de respuesta al remitente

com.realmsoft.Bizshield.datosParaEjecutarAcciones

Class SinDatos

java.lang.Object

com.realmsoft.Bizshield

.datosParaEjecutarAcciones.SinDatos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

Page 426: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

157

public class SinDatos

extends java.lang.Object

implements

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion

La clase SinDatos es una implementación de la interfaz

DatosQuitarArchivosAdjuntos, deberá ser usada para las acciones que no

necesitan parámetros.

Package com.realmsoft.Bizshield.ejecutoresAcciones

com.realmsoft.Bizshield .ejecutoresAcciones

Class AceptarCorreo

java.lang.Object

com.realmsoft.Bizshield

.ejecutoresAcciones.AceptarCorreo

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class AceptarCorreo

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

Page 427: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

158

La clase AceptarCorreo es una implementación de la interfaz EjecutorAccion.

Esta clase ejecuta la acción de aceptar correo.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion p_datosP

araEjecutarAccion)

Método que ejecuta la acción aceptar correo

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción

com.realmsoft.Bizshield.ejecutoresAcciones

Class AniadirMensajeBody

java.lang.Object

Page 428: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

159

com.realmsoft.Bizshield

.ejecutoresAcciones.AniadirMensajeBody

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class AniadirMensajeBody

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase AniadirMensajeBody es una implementación de la interfaz

EjecutorAccion. Esta clase ejecuta la acción añadir mensaje al body.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion paraEjecu

tarAccion)

Método que ejecuta la acción añadir mensaje en el body

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Page 429: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

160

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

buscarPartByMymeType

public javax.mail.Part buscarPartByMymeType(javax.mail.Part p,

java.lang.String ps_mymeType)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield.ejecutoresAcciones

Class CuarentenaArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.ejecutoresAcciones.CuarentenaArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Page 430: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

161

public class CuarentenaArchivosAdjuntos

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase CuarentenaArchivosAdjuntos es una implementación de la interfaz

EjecutorAccion. Esta clase ejecuta la acción de poner en cuarentena archivos

adjuntos del correo.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion paraEjecu

tarAccion)

Método que ejecuta la acción poner en cuarentena los archivos adjuntos del

correo

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

Page 431: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

162

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

eliminarArchivosAdjuntos

public boolean eliminarArchivosAdjuntos(javax.mail.Part p,

java.lang.String ps_patronesArchivos,

java.util.ArrayList<javax.mail.BodyPart> p_partesQueSonArchivo)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield.ejecutoresAcciones

Class QuitarArchivosAdjuntos

java.lang.Object

com.realmsoft.Bizshield

.ejecutoresAcciones.QuitarArchivosAdjuntos

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class QuitarArchivosAdjuntos

extends java.lang.Object

Page 432: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

163

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase QuitarArchivosAdjuntos es una implementación de la interfaz

EjecutorAccion. Esta clase ejecuta la acción quitar archivos adjuntos del

correo.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion paraEjecu

tarAccion)

Método que ejecuta la acción quitar archivos adjuntos del correo electrónico

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

Page 433: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

164

eliminarArchivosAdjuntos

public boolean eliminarArchivosAdjuntos(javax.mail.Part p,

java.lang.String ps_patronesArchivos)

throws javax.mail.MessagingException,

java.io.IOException

Throws:

javax.mail.MessagingException

java.io.IOException

com.realmsoft.Bizshield.ejecutoresAcciones

Class RechazarCorreo

java.lang.Object

com.realmsoft.Bizshield

.ejecutoresAcciones.RechazarCorreo

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class RechazarCorreo

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase RechazarCorreo es una implementación de la interfaz

EjecutorAccion. Esta clase ejecuta la acción rechazar correo.

Detalle del método

Page 434: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

165

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion p_datosP

araEjecutarAccion)

Método que ejecuta la acción rechazar correo electrónico

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

com.realmsoft.Bizshield.ejecutoresAcciones

Class r

java.lang.Object

com.realmsoft.Bizshield .ejecutoresAcciones.r

All Implemented Interfaces:

Page 435: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

166

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class r

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase r es una implementación de la interfaz EjecutorAccion. Esta clase

ejecuta la acción re direccionar correo.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion p_datosP

araEjecutarAccion)

Método que ejecuta la acción re direccionar correo electrónico

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

Page 436: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

167

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

com.realmsoft.Bizshield.ejecutoresAcciones

Class ResponderRemitente

java.lang.Object

com.realmsoft.Bizshield

.ejecutoresAcciones.ResponderRemitente

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.EjecutorAccion

public class ResponderRemitente

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.EjecutorAccion

La clase ResponderRemitente es una implementación de la interfaz

EjecutorAccion. Esta clase ejecuta la acción responder a remitente del

correo.

Detalle del método

ejecutarAccion

public void

ejecutarAccion(com.realmsoft.deterministicos.clasesPersistentes.DtEjecucio

nProceso proceso,

Page 437: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

168

com.realmsoft.deterministicos.interfaces.DatosParaEjecutarAccion paraEjecu

tarAccion)

Método que ejecuta la acción responder a remitente de correo electrónico

Specified by:

ejecutarAccion in interface

com.realmsoft.deterministicos.interfaces.EjecutorAccion

Parameters:

p_instanciaProceso - es la instancia de una ejecución de proceso sobre el

cual se ejecutara la acción

p_datosParaEjecutarAccion - los datos necesarios para ejecutar la acción, en

realidad deberá se una instancia de la clase DatosMensajeBody

Package com.realmsoft.Bizshield.procesos

com.realmsoft.Bizshield.procesos

Class CorreoEntranteSaliente

java.lang.Object

com.realmsoft.Bizshield

.procesos.CorreoEntranteSaliente

All Implemented Interfaces:

com.realmsoft.deterministicos.interfaces.Proceso

public class CorreoEntranteSaliente

Page 438: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

169

extends java.lang.Object

implements com.realmsoft.deterministicos.interfaces.Proceso

La clase CorreoEntranteSaliente es una implementación de la interfaz

Proceso y tiene como responsabilidad dar acceso a los datos del Correo

(Entrante o Saliente)

Detalle del método

getIpOrigen

public java.lang.String getIpOrigen()

Permite recuperar la IP origen del correo

Returns:

IP origen del correo

setIpOrigen

public void setIpOrigen(java.lang.String ipOrigen)

Permite especificar la IP origen del correo

Parameters:

ipOrigen - es la IP origen del correo a especificar

getCorreoRemitente

public java.lang.String getCorreoRemitente()

Permite recuperar la dirección remitente del correo

Returns:

Page 439: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

170

dirección remitente del correo

setCorreoRemitente

public void setCorreoRemitente(java.lang.String correoRemitente)

Permite especificar la dirección de correo remitente

Parameters:

correoRemitente - es la dirección de correo remitente a especificar

getDominioRemitente

public java.lang.String getDominioRemitente()

Permite recuperar el dominio de la dirección de correo remitente

Returns:

el dominio de la dirección de correo remitente

setDominioRemitente

public void setDominioRemitente(java.lang.String dominioRemitente)

Permite especificar el dominio de la dirección de correo remitente

Parameters:

dominioRemitente - es el dominio de la dirección de correo remitente a

especificar

getSubject

Page 440: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

171

public java.lang.String getSubject()

Permite recuperar el subject del correo

Returns:

el subject

setSubject

public void setSubject(java.lang.String subject)

Permite especificar el subject del correo

Parameters:

subject - es el subject del correo a especificar

getBody

public java.lang.String getBody()

Permite recuperar el body del correo

Returns:

el body del correo

setBody

public void setBody(java.lang.String body)

Permite especificar el body del correo

Parameters:

body - el body del correo a especificar

Page 441: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

172

getDireccionesDestinos

public java.util.Collection<java.lang.String> getDireccionesDestinos()

Permite recuperar las direcciones destino del correo

Returns:

las direcciones destino del correo

setDireccionesDestinos

public void

setDireccionesDestinos(java.util.Collection<java.lang.String> direccionesDe

stinos)

Permite especificar las direcciones destino del correo

Parameters:

direccionesDestinos - las direcciones destino del correo a especificar

getNumeroDestinatarios

public java.lang.Integer getNumeroDestinatarios()

Permite recuperar el número de destinatarios del correo

Returns:

el número de destinatarios del correo

setNumeroDestinatarios

Page 442: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

173

public void setNumeroDestinatarios(java.lang.Integer numeroDestinatarios)

Permite especificar el número de destinatarios del correo

Parameters:

numeroDestinatarios - el número de destinatarios del correo a especificar

getMimeFrom

public java.lang.String getMimeFrom()

Permite recuperar el campo mime from del correo

Returns:

el mime from del correo

setMimeFrom

public void setMimeFrom(java.lang.String mimeFrom)

Permite especificar el campo mime from del correo

Parameters:

mimeFrom - el campo mime from del correo a especificar

getContentLanguaje

public java.lang.String getContentLanguaje()

Permite recuperar el campo content languaje del correo

Returns:

el campo conten languaje del correo

Page 443: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

174

setContentLanguaje

public void setContentLanguaje(java.lang.String contentLanguaje)

Permite especificar el campo content languaje del correo

Parameters:

contentLanguaje - el campo content languaje del correo a especificar

getNombresArchivosAdjuntos

public java.util.Collection<java.lang.String> getNombresArchivosAdjuntos()

Permite recuperar el listado de nombres de los archivos adjuntos del correo

Returns:

el listado de nombres de los archivos adjuntos del correo

setNombresArchivosAdjuntos

public void

setNombresArchivosAdjuntos(java.util.Collection<java.lang.String> nombr

esArchivosAdjuntos)

Permite especificar el listado de nombres de los archivos adjuntos del correo

Parameters:

nombresArchivosAdjuntos - el listado de nombres de los archivos adjuntos

del correo a especificar

Page 444: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

175

getExtensionesArchivosAdjuntos

public java.util.Collection<java.lang.String>

getExtensionesArchivosAdjuntos()

Permite recuperar el listado de extensiones de los archivos adjuntos del

correo

Returns:

el listado de extensiones de los archivos adjuntos del correo

setExtensionesArchivosAdjuntos

public void

setExtensionesArchivosAdjuntos(java.util.Collection<java.lang.String> ext

ensionesArchivosAdjuntos)

Permite especificar el listado de extensiones de los archivos adjuntos del

correo

Parameters:

extensionesArchivosAdjuntos - el listado de extensiones de los archivos

adjuntos del correo a especificar

getEstaSmtpToIgualMimeTo

public java.lang.String getEstaSmtpToIgualMimeTo()

Permite recuperar la bandera estaSmtpToIgualMimeTo del correo

Returns:

Page 445: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

176

la bandera estaSmtpToIgualMimeTo del correo

setEstaSmtpToIgualMimeTo

public void

setEstaSmtpToIgualMimeTo(java.lang.String estaSmtpToIgualMimeTo)

Permite especificar la bandera estaSmtpToIgualMimeTo del correo

Parameters:

estaSmtpToIgualMimeTo - la bandera estaSmtpToIgualMimeTo del correo a

especificar

getEsContenidoSoloArchivosAdjuntos

public java.lang.String getEsContenidoSoloArchivosAdjuntos()

Permite recuperar la bandera esContenidoSoloArchivosAdjuntos del correo

Returns:

la bandera esContenidoSoloArchivosAdjuntos del correo

setEsContenidoSoloArchivosAdjuntos

public void

setEsContenidoSoloArchivosAdjuntos(java.lang.String esContenidoSoloA

rchivosAdjuntos)

Permite especificar la bandera esContenidoSoloArchivosAdjuntos del correo

Parameters:

Page 446: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

177

esContenidoSoloArchivosAdjuntos - la bandera

esContenidoSoloArchivosAdjuntos del correo a especificar

getDominioRemitenteValido

public java.lang.String getDominioRemitenteValido()

Permite recuperar la bandera dominioRemitenteValido del correo

Returns:

la bandera dominioRemitenteValido del correo

setDominioRemitenteValido

public void

setDominioRemitenteValido(java.lang.String dominioRemitenteValido)

Permite especificar la bandera dominioRemitenteValido del correo

Parameters:

dominioRemitenteValido - la bandera dominioRemitenteValido del correo ha

especificar

getJuegoCaracteres

public java.util.Collection<java.lang.String> getJuegoCaracteres()

Permite recuperar la lista de juego de caracteres del correo

Returns:

la lista de juego de caracteres del correo

Page 447: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

178

setJuegoCaracteres

public void

setJuegoCaracteres(java.util.Collection<java.lang.String> juegoCaracteres)

Permite especificar la lista de juego de caracteres del correo

Parameters:

juegoCaracteres - la lista de juego de caracteres del correo ha especificar

Package com.realmsoft.Bizshield.server

com.realmsoft.Bizshield .server

Class BizshieldService

java.lang.Object

com.realmsoft.Bizshield

.server.BizshieldService

public class BizshieldService

extends java.lang.Object

La Clase BizshieldService representa el servicio BizshieldService.

Descripción Funcional: una vez iniciado el servicio, comenzara a procesar

los correos electrónicos entrantes y salientes, evaluando las reglas

habilitantes, excluyentes y de control, debidamente configuradas en el

sistema, las que permitirán detectar los correos electrónicos considerados

Page 448: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

179

como SPAM y no SPAM. Además ejecutara las acciones de control

configuradas sobre los correos electrónicos. Descripción Técnica: esta

clase es ejecutable debido a que tiene un método main, el cual al ser

ejecutado levantara los hilos necesarios para el procesamiento de correos

spam

Detalle del método

shutdown

public static void shutdown()

Provee una forma segura para parar todos los hilos de procesamiento del

BizshieldServices

main

public static void main(java.lang.String[] args)

Método para arrancar el Bizshield Services

com.realmsoft.Bizshield.server

Class MonitorActualizaciones

java.lang.Object

com.realmsoft.Bizshield

.server.MonitorActualizaciones

All Implemented Interfaces:

ConstantesParametroConfiguracion, java.lang.Runnable

Page 449: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

180

public class MonitorActualizaciones

extends java.lang.Object

implements java.lang.Runnable,ConstantesParametroConfiguracion

La clase MonitorActualizaciones, es un hilo que se encarga buscar en el

repositorio público de reglas y en caso de encontrar nuevas definiciones

actualiza las reglas locales. El repositorio de reglas Bizshield al que se

accede para la actualización esta configurado en el archivo Bizshield .conf

en el parámetro especificado en la constante

realmsoft.Bizshield.server.configuration.ConstantesParametroConfiguracion

.URL_ACTUALIZACION

Detalle del método

ejecutarCambiarRegla

public void ejecutarCambiarRegla(java.lang.Long pl_idRegla,

java.lang.String ps_regla)

throws java.io.IOException,

java.lang.ClassNotFoundException

Implantación del método de hilo, el cual realiza la lógica de actualización

automática de las definiciones de las reglas.

Throws:

java.io.IOException

java.lang.ClassNotFoundException

Page 450: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

181

run

public void run()

Specified by:

run in interface java.lang.Runnable

shutdown

public void shutdown()

Método para de manera segura el hilo de actualizaciones

com.realmsoft.Bizshield.server

Class MonitorReglas

java.lang.Object

com.realmsoft.Bizshield.server.MonitorReglas

All Implemented Interfaces:

java.lang.Runnable

public class MonitorReglas

extends java.lang.Object

implements java.lang.Runnable

La clase MonitorReglas, es un hilo que se encarga de ejecutar

frecuentemente el proceso que sensarActualizarReglas de la clase

com.realmsoft.Bizshield.server.TraductorBO. Este hilo es el que permite que

Page 451: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

182

las reglas modificadas en la base de datos se vean reflejadas en los archivos

de reglas Drools (.drl)

Detalle del método

run

public void run()

Implantación del método de hilo, ejecuta cada 2 segundos el método

sensarActualizarReglas de la clase

com.realmsoft.Bizshield.server.TraductorBO mientras el subsistema

BizshieldServices iniciado.

Specified by:

run in interface java.lang.Runnable

shutdown

public void shutdown()

Método para detener de manera segura el hilo de monitorización de cambios

de reglas.

com.realmsoft.Bizshield.server

Class MonitorShutdown

java.lang.Object

com.realmsoft.Bizshield

.server.MonitorShutdown

All Implemented Interfaces:

Page 452: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

183

java.lang.Runnable

public class MonitorShutdown

extends java.lang.Object

implements java.lang.Runnable

La clase MonitorReglas, es un hilo que se encarga de ejecutar

frecuentemente el proceso que sensarActualizarReglas de la clase

com.realmsoft.Bizshield .server.TraductorBO. Este hilo

es el que permite que las reglas modificadas en la base de datos se vean

reflejadas en los archivos de reglas Drools (.drl)

Detalle del método

run

public void run()

Implantación del método de hilo, ejecuta cada 2 segundos el método

sensarActualizarReglas de la clase

com.realmsoft.Bizshield.server.TraductorBO mientras el subsistema

BizshieldServices iniciado.

Specified by:

run in interface java.lang.Runnable

shutdown

public void shutdown()

Page 453: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

184

Método para detener de manera segura el hilo de monitorización de cambios

de reglas

com.realmsoft.Bizshield.server

Class ShutdownService

java.lang.Object

com.realmsoft.Bizshield

.server.ShutdownService

All Implemented Interfaces:

java.lang.Runnable

public class ShutdownService

extends java.lang.Object

implements java.lang.Runnable

Hilo que se ejecuta automáticamente cuando el sistema operativo o el

usuario solicitan que el subsistema BizshieldServices se detenga, tiene como

responsabilidad iniciar la parada de todos los hilos del subsistema

BizshieldService

Detalle del método

run

public void run()

Page 454: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

185

Implantación del método de hilo, que ejecuta el método

BizshieldService.shutdown()

Package com.realmsoft.Bizshield.server.configuration

com.realmsoft.Bizshield .server.configuration

Interface ConstantesParametroConfiguracion

All Known Implementing Classes:

ConfigurationManager, MonitorActualizaciones

public interface ConstantesParametroConfiguracion

Constantes usadas como parámetros en el archivo de configuración

Bizshield.conf

Field Detail

SMTPPORT

static final java.lang.String SMTPPORT

Puerto donde se levantara el servicio SMTP

Véase también:

Constant Field Values

DOMAINS

static final java.lang.String DOMAINS

Page 455: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

186

Dominio del servidor SMTP que será protegido por Bizshield

Véase también:

Constant Field Values

EXECUTE_THREADS

static final java.lang.String EXECUTE_THREADS

Numero de hilos que atenderán las peticiones de correos SMTP

Véase también:

Constant Field Values

DEFAULT_SMTP_SERVERS

static final java.lang.String DEFAULT_SMTP_SERVERS

IP del SMTP Server que será protegido por Bizshield

Véase también:

Constant Field Values

LOGGING_DEFAULT_THRESHOLD

static final java.lang.String LOGGING_DEFAULT_THRESHOLD

Nivel de registro de logs por defecto

Véase también:

Constant Field Values

Page 456: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

187

DNS_SERVER

static final java.lang.String DNS_SERVER

IP del DNS Server

Véase también:

Constant Field Values

URL_ACTUALIZACION

static final java.lang.String URL_ACTUALIZACION

Url donde reside el repositorio publico para las actualizaciones

Véase también:

Constant Field Values

com.realmsoft.Bizshield.server.configuration

Class ConfigurationManager

java.lang.Object

com.realmsoft.Bizshield

.server.configuration.ConfigurationManager

All Implemented Interfaces:

ConstantesParametroConfiguracion

public class ConfigurationManager

extends java.lang.Object

Page 457: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

188

implements ConstantesParametroConfiguracion

Provee un repositorio centralizado para toda la información de configuración.

Toda la información de configuración deberá recuperada desde esta clase. El

ConfigurationManager se recargara los cambios en la configuración

dinámicamente. Las clases pueden almacenar en una referencia a la

instancia ConfigurationManager, ya que solo existe una solo instancia para

esta clase.

Detalle del método

initialize

public static ConfigurationManager

initialize(java.lang.String configurationDirectory)

throws java.lang.RuntimeException

Inicializa el ConfigurationManager usando el directorio especificado. Este

método sólo debe ser llamado una sola vez durante el arranque, y luego

nunca más. La ruta del archivo no se puede volver a inicializar!

Parameters:

configurationDirectory - - el directorio que contiene el archivo Bizshield.conf

Returns:

retorna la instancia singleton del ConfigurationManager

Throws:

Page 458: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

189

java.lang.RuntimeException - - lanzada si es llamada mas de una vez, el

archivo Bizshield.conf no existe o si hay un error al cargar el archivo

Bizshiel.conf

inicializarObservadorCambios

public void inicializarObservadorCambios()

getInstance

public static ConfigurationManager getInstance()

Provee acceso a la instancia singleton

Returns:

la instancia singleton

loadProperties

public void loadProperties()

getLocalDomains

public java.lang.String[] getLocalDomains()

Recupera el dominio del SMTP server que será protegido por Bizshield

Returns:

Page 459: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

190

el dominio del SMTP server que será protegido por Bizshield

setLocalDomains

public void setLocalDomains(java.lang.String[] localDomains)

Permite especificar el dominio del SMTP server que será protegido por

Bizshield

Parameters:

localDomains - es el dominio del SMTP server que se especifica para que

sea protegido por Bizshield

getExecuteThreadCount

public int getExecuteThreadCount()

Recupera el número de hilos que atenderán las peticiones SMTP

Returns:

el número de hilos que atenderán las peticiones SMTP

setExecuteThreadCount

public void setExecuteThreadCount(int executeThreadCount)

Permite especificar el número de hilos que atenderán las peticiones SMTP

Parameters:

Page 460: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

191

executeThreadCount - es el numero de hilos que se especifican para que

atiendan las peticiones SMTP

getSmtpPort

public int getSmtpPort()

Recupera el número del puerto de sistema operativo por donde se atenderán

las peticiones SMTP

Returns:

el número del puerto de sistema operativo por donde se atenderán las

peticiones SMTP

setSmtpPort

public void setSmtpPort(int smtpPort)

Permite especificar el número del puerto de sistema operativo por donde se

atenderá las peticiones SMTP

Parameters:

smtpPort - es el numero del puerto de sistema operativo que se especifica

por donde se atenderá las peticiones SMTP

tokenize

public static java.lang.String[] tokenize(java.lang.String value)

Este método divide la cadena, utilizando la (,) como caracter de división

Page 461: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

192

Parameters:

value - Cadena de caracteres a dividir

Returns:

el arreglo de caracteres con cada una de las subcadenas

getServidorCorreo

public SmtpServer getServidorCorreo()

Recupera un objeto que contiene la información del SMTP Server

Returns:

un objeto con la información del SMTP Server

setServidorCorreo

public void setServidorCorreo(SmtpServer servidorCorreo)

Permite especificar el objeto que contiene la información del SMTP Server

Parameters:

servidorCorreo - es el objeto especificado que contiene la información del

SMTP Server

getUrlActualizacion

public java.net.URL getUrlActualizacion()

Recupera una cadena con la Url que hace referencia al repositorio de

actualización automática

Page 462: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

193

Returns:

el URL que hacer referencia al repositorio de actualización automática

com.realmsoft.Bizshield.server.configuration

Class SmtpServer

java.lang.Object

com.realmsoft.Bizshield

.server.configuration.SmtpServer

public class SmtpServer

extends java.lang.Object

La clase SmtpServer es una clase DTO, que encapsula los datos del SMTP

Server

Detalle del método

getHost

public java.lang.String getHost()

Permite recuperar el host del SMTP Server

Returns:

el host del SMTP Server

setHost

public void setHost(java.lang.String host)

Permite especificar el host del SMTP Server

Page 463: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

194

Parameters:

host - es el host que se desea especificar

getPort

public int getPort()

Permite recuperar el número del puerto de sistema operativo donde estará

levantando el SMTP Server

Returns:

el número del puerto de sistema operativo por donde esta levantado el SMTP

Server

setPort

public void setPort(int port)

Permite especificar el número del puerto de sistema operativo donde estará

levantado el STMP Server

Parameters:

port - es el numero del puerto de sistema operativo que se desea especificar

getUsername

public java.lang.String getUsername()

Permite recuperar el username que se usara para conectarse al SMTP

Server

Page 464: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

195

Returns:

el username que se usara para conectarse al SMTP Server

setUsername

public void setUsername(java.lang.String username)

Permite especificar el username que se usara para conectarse al SMTP

Server

Parameters:

username - es el username que se desea especificar para conectarse al

SMTP Server

getPassword

public java.lang.String getPassword()

Permite recuperar el password que se usara para conectarse al SMTP Server

Returns:

el password que se usara para conectarse al SMTP Server

setPassword

public void setPassword(java.lang.String password)

Permite especificar el password que se usara para conectarse al SMTP

Server

Parameters:

Page 465: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

196

password - es el password que se desea especificar para conectarse al

SMTP server

toString

public java.lang.String toString()

Retorna una representación en cadena de caracteres del Objeto SmtpServer.

La cadena retornada tiene es host:port

Overrides:

toString in class java.lang.Object

Package com.realmsoft.Bizshield.server.errors

com.realmsoft.Bizshield .server.errors

Class ExcepcionDireccionInvalida

java.lang.Object

java.lang.Throwable

java.lang.Exception

com.realmsoft.Bizshield

.server.errors.ExcepcionDireccionInvalida

All Implemented Interfaces:

java.io.Serializable

public class ExcepcionDireccionInvalida

extends java.lang.Exception

Page 466: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

197

Una ExcepcionDireccionInvalida es lanzada cuando la aplicación intenta

procesar una cadena de caracteres que representa una dirección de correo

electrónico y esta cadena no tiene el formato username@domain

Package com.realmsoft.Bizshield.server.info

com.realmsoft.Bizshield.server.info

Class DireccionCorreo

java.lang.Object

com.realmsoft.Bizshield

.server.info.DireccionCorreo

All Implemented Interfaces:

java.io.Serializable

public class DireccionCorreo

extends java.lang.Object

implements java.io.Serializable

La clase DireccionCorreo es una clase DTO, que encapsula una dirección de

correo

Constructor Detail

DireccionCorreo

public DireccionCorreo()

Constructor por defecto

Page 467: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

198

DireccionCorreo

public DireccionCorreo(java.lang.String fullAddress)

throws ExcepcionDireccionInvalida

Constructor con una cadena de caracteres en formato de correo

Parameters:

fullAddress - es una cadena de caracteres que contiene una dirección de

correos ejemplo [email protected]

Throws:

ExcepcionDireccionInvalida - si fullAddress no es una dirección de correo

valida

DireccionCorreo

public DireccionCorreo(java.lang.String username,java.lang.String domain)

Constructor con los valores de una dirección de correo

Parameters:

username - corresponde a la parte del usuario de una dirección de correo

electrónico, ejemplo datoala

domain - corresponde a la parte del dominio de una dirección de correo

electrónico, ejemplo realmsoft.com

Detalle del método

toString

public java.lang.String toString()

Page 468: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

199

Convierte el objeto en una cadena de caracteres con el formato

username@domain

Overrides:

toString in class java.lang.Object

Returns:

una cadena de caracteres con el formato username@domain

getUsername

public java.lang.String getUsername()

Recupera el usuario de la dirección de correo electrónico

Returns:

el usuario de la dirección de correo electrónico

setUsername

public void setUsername(java.lang.String ps_username)

Asigna el usuario de la dirección de correo electrónico

Parameters:

ps_username - contiene usuario de la dirección de correo electrónico a

cambiar

getDomain

public java.lang.String getDomain()

Page 469: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

200

Recupera el dominio de la dirección de correo electrónico

Returns:

el dominio de la dirección de correo electrónico

setDomain

public void setDomain(java.lang.String ps_domain)

Asigna el dominio de la dirección de correo electrónico

Parameters:

domain - contiene el dominio de la dirección de correo electrónico a cambiar

getAddress

public java.lang.String getAddress()

Recupera la dirección de correo electrónico en formato username@domain

Returns:

la dirección de correo electrónico en formato username@domain

setAddress

public void setAddress(java.lang.String fullAddress)

throws ExcepcionDireccionInvalida

Setea la dirección de correo electrónico

Parameters:

Page 470: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

201

fullAddress - es una dirección de correo que debe tener el formato

username@domain

Throws:

ExcepcionDireccionInvalida - si fullAddress no tiene el formato

username@domain

Package com.realmsoft.Bizshield.server.services.general

com.realmsoft.Bizshield .server.services.general

Interface ProcesadorSocket

All Superinterfaces:

java.lang.Runnable

All Known Implementing Classes:

ProcesadorSMTP

public interface ProcesadorSocket

extends java.lang.Runnable

La interfaz ProcesadorSocket debe ser implementada por cualquier clase que

necesite implementar el comportamiento de hilo procesador de socket

Detalle del método

setSocket

void setSocket(java.net.ServerSocket serverSocket)

Page 471: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

202

Método que permite que se el especifique al procesado de socket cual es el

Serversocket por donde se esperan las conexiones

Parameters:

serverSocket - es el server socket por donde se esperaran conexiones

shutdown

void shutdown()

Método que hace que el hilo de procesamiento del socket termine

com.realmsoft.Bizshield .server.services.general

Class ServidorTCPMultihilo

java.lang.Object

com.realmsoft.Bizshield

.server.services.general.ServidorTCPMultihilo

All Implemented Interfaces:

java.lang.Runnable

public class ServidorTCPMultihilo

extends java.lang.Object

implements java.lang.Runnable

La clase ServidorTCPMultihilo representa un proceso servidor (servicio) que

podrá atender peticiones TCP (socket) paralelamente, por medio del uso de

Page 472: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

203

hilos. Para el manejo del paralelismo esta clase tiene internamente un pool

de hilos, que son los que en realidad realizan el procesamiento e

implementan el protocolo de comunicación.

Constructor Detail

ServidorTCPMultihilo

public ServidorTCPMultihilo(int port,

java.lang.Class connectionProcessorClass,

int threads)

Inicializa el ServidorTcpMultihilo

Parameters:

port - es el numero del puerto de sistema operativo por donde el servicio

estará escuchando y esperando la conexión de los

clientes.connectionProcessorClass - es la clase de los hilos que formaran

parte del pool de hilos threads - es el numero de hilos que existirán en el pool

de hilos y que podrán atender simultáneamente peticiones TCP .

Detalle del método

run

public void run()

Arranca método que iniciara cada uno de los hilos del pool de hilos

Specified by:

run in interface java.lang.Runnable

Page 473: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

204

shutdown

public void shutdown()

Detiene cada uno de los hilos del pool de hilos

Package com.realmsoft.Bizshield.server.services.smtp

com.realmsoft.Bizshield .server.services.smtp

Class EnviadorSMTP

java.lang.Object

com.realmsoft.Bizshield.server.services.smtp.EnviadorSMTP

public class EnviadorSMTP

extends java.lang.Object

La clase EnviadorSMTP se encarga de enviar los correos electrónicos hacia

el servidor de correos interno y servidores de correos externos

Detalle del método

sendMessage

public void sendMessage(MensajeSMTP message)

throws java.lang.RuntimeException

Envía un correo electrónico hacia el servidor de correos interno y externo,

según lo que indique el mensaje de correo a enviar.

Parameters:

message - es el mensaje que se quiere enviar

Page 474: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

205

Throws:

java.lang.RuntimeException

com.realmsoft.Bizshield.server.services.smtp

Class MensajeSMTP

java.lang.Object

com.realmsoft.Bizshield.server.services.smtp.MensajeSMTP

All Implemented Interfaces:

java.io.Serializable

public class MensajeSMTP

extends java.lang.Object

implements java.io.Serializable

La clase MensajeSMTP contiene los datos de un correo electrónico.

getFromAddress

public DireccionCorreo getFromAddress()

Recupera la dirección de correo From

Returns:

la dirección de correo From

setFromAddress

public void setFromAddress(DireccionCorreo fromAddress)

Page 475: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

206

Setea la dirección de correo from

Parameters:

fromAddress - es una dirección de correo

getToAddresses

public java.util.List<DireccionCorreo> getToAddresses()

Returns:

una lista de direcciones de correo destinatarios

setToAddresses

public void setToAddresses(java.util.List<DireccionCorreo> toAddresses)

Setea las direcciones de correo destinatarios

Parameters:

toAddresses - una lista de com.realmsoft.Bizshield.server.info.DireccionEmail

addToAddress

public void addToAddress(DireccionCorreo toAddress)

Añade una dirección de correo destinatario al correo

Parameters:

toAddress - un com.realmsoft.Bizshield.server.info.DireccionEmail

getDataLines

Page 476: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

207

public java.util.List<java.lang.String> getDataLines()

Retorna una lista con las líneas de datos del correo

Returns:

una lista con las líneas de datos del correo

addDataLine

public void addDataLine(java.lang.String line)

Añade una línea de datos al correo electrónico

Parameters:

line - Línea de datos

getSize

public long getSize()

Calcula el tamaño del segmento de datos del correo

com.realmsoft.Bizshield.server.services.smtp

Class ProcesadorCorreos

java.lang.Object

com.realmsoft.Bizshield.server.services.smtp.ProcesadorCorreos

All Implemented Interfaces:

java.lang.Runnable

Page 477: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

208

public class ProcesadorCorreos

extends java.lang.Object

implements java.lang.Runnable

La clase ProcesadorCorreos, es el hilo que se encarga de procesar los

correos, para determinar si son SPAM o no lo son.

Detalle del método

run

public void run()

Implementación del método de hilo, que cada dos segundos buscando

correos encolados y los envía a procesar método procesarCorreo de la clase

CorreoBO, en caso de determinar que el correo no es SPAM entonces envía

el correo con el método sendMessage de la clase

EnviadorSMTP.com.realmsoft.Bizshield.server.services.smtp

Class ProcesadorSMTP

java.lang.Object

com.realmsoft.Bizshield.server.services.smtp.ProcesadorSMTP

All Implemented Interfaces:

ProcesadorSocket, java.lang.Runnable

public class ProcesadorSMTP

extends java.lang.Object

implements ProcesadorSocket

Page 478: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

209

La clase ProcesadorSMTP, es el hilo que se encarga de procesar las

peticiones SMTP(correos). Esta clase implementa todo el mecanismo de

comunicación a nivel del protocolo SMTP Los correos recibidos son

encolados en la base de datos.

Detalle del método

setSocket

public void setSocket(java.net.ServerSocket serverSocket)

Setea el objeto ServerSocket por donde esperara las conexiones SMTP

Specified by:

setSocket in interface ProcesadorSocket

Parameters:

serverSocket - es el server socket por donde se esperaran conexiones

run

public void run()

Implementación del método de hilo, el cual espera a que un cliente SMTP

realice una conexión con el ServerSocket, una vez obtenida la conexión

comienza a procesar la petición SMTP y a crear un objeto

com.realmsoft.Bizshield.server.services.smtp.MensajeSMTP. Luego

almacena el correo electrónico en la base de datos con la clase

com.realmsoft.Bizshield.bo.CorreoBO

Specified by:

Page 479: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

210

run in interface java.lang.Runnable

Véase también:

com.realmsoft.Bizshield.server.services.smtp.MensajeSMTP,com.realmsoft.B

izshield.bo.CorreoBO, #setSocket( ServerSocket serverSocket )

shutdown

public void shutdown()

Description copied from interface: ProcesadorSocket

Método que hace que el hilo de procesamiento del socket termine

Package com.realmsoft.Bizshield.bo

com.realmsoft.Bizshield .bo

Class CorreoBO

java.lang.Object

com.realmsoft.Bizshield.bo.CorreoBO

All Implemented Interfaces:

Constantes

public class CorreoBO

extends java.lang.Object

implements Constantes

Page 480: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

211

La clase CorreoBO implementa varios métodos de operaciones y

transacciones relacionadas con las reglas y lógica de negocio de los correos

Package com.realmsoft.Bizshield.parser.com.realmsoft.Bizshield.parser

Class BizshieldParser

java.lang.Object

com.realmsoft.Bizshield.parser.Bizshield

Parser

public class BizshieldParser

extends java.lang.Object

Es una clase que representa el parseador de una expresión BLR, realiza el

análisis léxico y sintáctico de la expresión y la divide en tokens.

Constructor Detail

BizshieldParser

public BizshieldParser(java.lang.String inputString)

Este método es el constructor de la clase. Inicializa todos los miembros del

objeto, recibe como parámetro el String que contiene la expresión BRL a

parsear.

Parameters:

inputString - la expresión BRL a parsear

BizshieldParser

Page 481: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

212

public BizshieldParser(java.lang.String inputString long idProceso)

Detalle del método

getTokens

public java.util.List<BizshieldToken> getTokens()

Este método retorna la lista de Bizshield tokens obtenidos del parseo de la

expresión BRL.

Returns:

la lista de tokens producto del proceso de parseo de la expresión BRL

parse

public boolean parse()

throws java.lang.Exception

Este método es el encargado de realizar el parseado de la expresión BRL y

llenar la lista de tokens.

Returns:

true si la expresión BRL es parseada correctamente, false en caso de error.

Throws:

java.lang.Exception

com.realmsoft.Bizshield .parser

Class Bizshield Token

java.lang.Object

Page 482: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

213

com.realmsoft.Bizshield.parser.Bizshield

Token

public class BizshieldToken

extends java.lang.Object

Esta clase representa un token genérico de BRL, es un wrapper de un token

ANTLR.

Constructor Detail

BizshieldToken

public BizshieldToken(java.lang.String tokenText int tokenType,

BizshieldTokenType BizshieldTokenType, int Bizshield Id)

Este método es el constructor de la clase. Inicializa todos los miembros del

objeto, recibe como parámetro el texto del token, el tipo ANTLR del token, el

tipo Bizshield del token y el identificador Bizshield del token.

Parameters:

tokenText - texto del token

tokenType - tipo ANTLR del token

BizshieldTokenType - tipo Bizshield del token Bizshield Id - identficador

Bizshield del token

com.realmsoft.Bizshield.parser

Enum Bizshield TokenType

Page 483: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

214

java.lang.Object

java.lang.Enum<Bizshield TokenType>

com.realmsoft.Bizshield.parser.Bizshield

TokenType

All Implemented Interfaces:

java.io.Serializable, java.lang.Comparable<Bizshield TokenType>

public enum BizshieldTokenType

extends java.lang.Enum<BizshieldTokenType>

Es un enunciado que contiene las constantes que representan los tipos de

tokens Bizshield, los cuales son: operador, operando constante, operando

lista constante y operando variable.

com.realmsoft.Bizshield.validacion

Class AccionInconsistente

java.lang.Object

com.realmsoft.Bizshield.validacion.AccionInconsistente

public class AccionInconsistente

extends java.lang.Object

Es una clase que contiene métodos de utilidad para determinar si una lista de

acciones contiene acciones inconsistentes, es decir que no son compatibles.

Page 484: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

215

com.realmsoft.Bizshield .validacion

Class InvocadorValidadorSubtipos

java.lang.Object

com.realmsoft.Bizshield.validacion.InvocadorValidadorSubtipos

public class InvocadorValidadorSubtipos

extends java.lang.Object

El propósito de esta clase es realizar la invocación de los métodos

validadores de Bizshield a través del API Java Reflect.

Detalle del método

invocarMetodoValidacion

public static boolean

invocarMetodoValidacion(java.lang.String p_nombreCualificadoMetodo,jav

a.lang.String p_argumento)

Este método es el encargado de invocar a los métodos de validación de

Bizshield a través del API Java Reflect. Los subtipos de datos de Bizshield

tienen asociado un método validador, el cual es llamado vía Java Reflect. El

método invocarMetodoValidacion recibe como parámetros el nombre

cualificado del método validador y el valor a validar.

Parameters:

p_nombreCualificadoMetodo - nombre cualificado del método validador a

invocar p_argumento - argumento del método validador

Page 485: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

216

Returns:

true si la validación del parámetro es exitosa, false en caso de error

com.realmsoft.Bizshield .validacion

Class ValidadorSubtipos

java.lang.Object

com.realmsoft.Bizshield.validacion.ValidadorSubtipos

public class ValidadorSubtipos

extends java.lang.Object

Esta clase contiene los métodos de validación de datos de Bizshield. Cada

subtipo de dato tiene asociado uno de estos métodos validadores, los cuales

en su mayoría utilizan como mecanismo de validación expresiones regulares.

Detalle del método

validarDireccionIP

public static boolean validarDireccionIP(java.lang.String p_direccionIP)

El propósito de este método es realizar la validación de una expresión que

representa una dirección IP. Recibe como parámetro la cadena a validar.

Parameters:

p_direccionIP -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

Page 486: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

217

validarDireccionCorreo

public static boolean

validarDireccionCorreo(java.lang.String p_direccionCorreo)

El propósito de este método es realizar la validación de una expresión que

representa una dirección de correo electrónica. Recibe como parámetro la

cadena a validar.

Parameters:

p_direccionCorreo -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarEntero

public static boolean validarEntero(java.lang.String p_entero)

El propósito de este método es realizar la validación de una expresión que

representa un número entero. Recibe como parámetro la cadena a validar.

Parameters:

p_entero -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarDecimal

Page 487: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

218

public static boolean validarDecimal(java.lang.String p_decimal)

El propósito de este método es realizar la validación de una expresión que

representa un número decimal. Recibe como parámetro la cadena a validar.

Parameters:

p_decimal -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarCadenaCaracteres

public static boolean validarCadenaCaracteres(java.lang.String p_cadena)

El propósito de este método es realizar la validación de una expresión que

representa una cadena de caracteres. Recibe como parámetro la cadena a

validar.

Parameters:

p_cadena -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarFecha

public static boolean validarFecha(java.lang.String p_fecha)

Page 488: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

219

El propósito de este método es realizar la validación de una expresión que

representa una fecha en formato YYYY-MM-DD. Recibe como parámetro la

cadena a validar.

Parameters:

p_fecha -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarHora

public static boolean validarHora(java.lang.String p_hora)

El propósito de este método es realizar la validación de una expresión que

representa una hora en formato hh:mm:ss. Recibe como parámetro la

cadena a validar.

Parameters:

p_hora -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarFechaHora

public static boolean validarFechaHora(java.lang.String p_fechaHora)

Page 489: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

220

El propósito de este método es realizar la validación de una expresión que

representa una fecha y hora en formato YYYY-MM-DD hh-mm-ss. Recibe

como parámetro la cadena a validar.

Parameters:

p_fechaHora -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarNombrePersona

public static boolean

validarNombrePersona(java.lang.String p_nombrePersona)

El propósito de este método es realizar la validación de una expresión que

representa un nombre de persona. Recibe como parámetro la cadena a

validar.

Parameters:

p_nombrePersona -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarNombreArchivo

public static boolean

validarNombreArchivo(java.lang.String p_nombreArchivo)

Page 490: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

221

El propósito de este método es realizar la validación de una expresión que

representa un nombre de archivo. Recibe como parámetro la cadena a

validar.

Parameters:

p_nombreArchivo -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarNombreCarpeta

public static boolean

validarNombreCarpeta(java.lang.String p_nombreCarpeta)

El propósito de este método es realizar la validación de una expresión que

representa un nombre de carpeta. Recibe como parámetro la cadena a

validar.

Parameters:

p_nombreCarpeta -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarRutaCarpeta

public static boolean validarRutaCarpeta(java.lang.String p_rutaCarpeta)

Page 491: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

222

El propósito de este método es realizar la validación de una expresión que

representa una ruta de carpeta. Recibe como parámetro la cadena a validar.

Parameters:

p_rutaCarpeta -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarDominio

public static boolean validarDominio(java.lang.String p_dominio)

El propósito de este método es realizar la validación de una expresión que

representa un dominio de internet. Recibe como parámetro la cadena a

validar.

Parameters:

p_dominio -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarListaDireccionesCorreo

public static boolean

validarListaDireccionesCorreo(java.lang.String p_direccionesCorreo)

Page 492: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

223

El propósito de este método es realizar la validación de una expresión que

representa una lista de direcciones de correo electrónico. Recibe como

parámetro la cadena a validar.

Parameters:

p_direccionesCorreo -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

validarSiNo

public static boolean validarSiNo(java.lang.String p_cadena)

validarListaExpresionesRegulares

public static boolean

validarListaExpresionesRegulares(java.lang.String p_expresionesRegulare

s)

El propósito de este método es realizar la validación de una cadena que

representa una lista de expresiones regulares. Recibe como parámetro la

cadena a validar.

Parameters:

p_expresionesRegulares -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

Page 493: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

224

validarExpresionRegular

public static boolean

validarExpresionRegular(java.lang.String p_expresionRegular)

El propósito de este método es realizar la validación de una cadena que

representa una expresión regular. Recibe como parámetro la cadena a

validar.

Parameters:

p_expresionRegular -

Returns:

true si la validación del parámetro es exitosa, false en caso de error

Package com.realmsoft.deterministicos

com.realmsoft.deterministicos

Class Conjunto

java.lang.Object

com.realmsoft.deterministicos.Conjunto

public class Conjunto

extends java.lang.Object

La clase Conjunto es un DTO, que representa un conjunto que tiene un

identificador único.

Page 494: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

225

Detalle del método

getIdConjunto

public long getIdConjunto()

Permite recuperar el id del conjunto

Returns:

el id del conjunto

setIdConjunto

public void setIdConjunto(long idConjunto)

Permite especificar el id del conjunto

Parameters:

idConjunto - el id del conjunto a especificar

getElementos

public java.util.Collection<java.lang.Object> getElementos()

Permite recuperar los elementos del conjunto

Returns:

elementos del conjunto

setElementos

public void

setElementos(java.util.Collection<java.lang.Object> p_elementos)

Page 495: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

226

Permite especificar los elementos del conjunto

Parameters:

p_elementos - son los elementos del conjunto

com.realmsoft.deterministicos

Class MotorReglas

java.lang.Object

com.realmsoft.deterministicos.MotorReglas

All Implemented Interfaces:

Constantes

public class MotorReglas

extends java.lang.Object

implements Constantes

La clase MotorReglas es el encargado de evaluar las reglas sobre un

proceso

Constructor Detail

MotorReglas

public MotorReglas(long pl_idProceso)

throws java.lang.Exception

Constructor del Motor de reglas, al llamar a este constructor internamente se

cargan las reglas asociadas al proceso

Parameters:

Page 496: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

227

pl_idProceso - es el id del proceso

Throws:

java.lang.Exception - si existe algún error al crear el MotorReglas

Detalle del método

ejecutarReglas

public java.util.List<java.lang.Long> ejecutarReglas(Proceso p_proceso)

throws java.lang.Exception

Es el método encargado de evaluar las reglas para un proceso específico

Parameters:

p_proceso - es el objeto que contiene los datos

Returns:

una lista con los id de las reglas que se cumplieron para el proceso

Throws:

java.lang.Exception - en caso de existir algún error al ejecutar las reglas

(evaluar las reglas)

Package com.realmsoft.deterministicos.bo

com.realmsoft.deterministicos.bo

Class ConfiguracionAccionBO

java.lang.Object

com.realmsoft.deterministicos.bo.ConfiguracionAccionBO

public class ConfiguracionAccionBO

Page 497: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

228

extends java.lang.Object

Esta clase contiene los métodos de negocio utilizados para el mantenimiento

de las acciones antispam de Bizshield .

Detalle del método

crearOActualizarAccion

public void crearOActualizarAccion(java.lang.String p_nombreAccion,

java.lang.Long p_idTipoAccion,

java.util.Map<java.lang.String,java.lang.String> p_parametrosAccion,

java.util.List<java.lang.Long> p_reglasAsociadas,

java.lang.Integer p_idUsuario,

java.lang.Long p_idAccion)

Este método es el encargado de realizar la inserción de una nueva acción

antispam, o la actualización de una acción antispam existente. Recibe como

parámetros el nombre de la acción, el identificador del tipo de acción, la lista

de parámetros de acción, la lista de reglas asociadas a la acción, el

identificador del usuario que ingresa o modifica la acción, y el identificador de

la acción a modificar, en caso de actualización. La acción es persistida en la

base de datos a través de los objetos de acceso a datos (DAO).

Parameters:

p_nombreAccion - nombre de la acción

p_idTipoAccion - identificador del tipo de acción

Page 498: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

229

p_parametrosAccion - lista de parámetros de la acción

p_reglasAsociadas - reglas asociadas a la acción

p_idUsuario - identificador del usuario

p_idAccion - identificador de la acción

caducarAccion

public void

caducarAccion(java.lang.Long p_idAccion,java.lang.Integer p_idUsuario)

Este método es el encargado de eliminar lógicamente una acción antispam,

estableciendo la fecha de fin de vigencia de ésta. Recibe como parámetros el

identificador de la acción a eliminar y el identificador del usuario que elimina

la acción.

Parameters:

p_idAccion - identificador de la acción a eliminar

p_idUsuario - identificador del usuario que elimina la acción

com.realmsoft.deterministicos.bo

Class ConfiguracionReglaBO

java.lang.Object

com.realmsoft.deterministicos.bo.ConfiguracionReglaBO

public class ConfiguracionReglaBO

Page 499: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

230

extends java.lang.Object

Esta clase contiene los métodos de negocio utilizados para el mantenimiento

de las reglas antispam de Bizshield .

Detalle del método

crearOActualizarRegla

public void crearOActualizarRegla(java.lang.Long p_idProceso,

java.lang.String p_nombreRegla,

java.lang.String p_descripcionRegla,

java.lang.String p_contenidoRegla,

java.util.List<java.lang.Long> p_listaAccionesAsociadas,

java.lang.Integer p_idUsuario,

java.lang.Long p_idRegla)

Este método es el encargado de realizar la inserción de una nueva regla

antispam, o la actualización de una regla antispam existente. Recibe como

parámetros el identificador del proceso, el nombre de la regla, la descripción

de la regla, el contenido de la regla, la lista de identificadores de acciones

asociadas a la regla, el identificador del usuario que ingresa o modifica la

regla, y el identificador de la regla a modificar, en caso de actualización.

Antes de realizar una acción de inserción o actualización, se efectúa un

análisis léxico y sintáctico del contenido de la regla y se obtienen los

Page 500: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

231

componentes individuales de la expresión BRL los cuales serán persistidos

en la base datos utilizando los objetos de acceso a datos (DAO).

Parameters:

p_idProceso - identificador del proceso

p_nombreRegla - nombre de la regla

p_descripcionRegla - descripción de la regla

p_contenidoRegla - contenido de la regla

p_listaAccionesAsociadas - lista de acciones asociadas a la regla

p_idUsuario - identificador del usuario

p_idRegla - identificador de la regla a editar

caducarRegla

public void

caducarRegla(java.lang.Long p_idRegla,java.lang.Integer p_idUsuario)

Este método es el encargado de eliminar lógicamente una regla antispam,

estableciendo la fecha de fin de vigencia de ésta. Recibe como parámetros el

identificador de la regla a eliminar y el identificador del usuario que elimina la

regla.

Parameters:

p_idRegla - identificador de la regla a eliminar

p_idUsuario - identificador del usuario que elimina la regla

Page 501: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

232

com.realmsoft.deterministicos.bo

Class ConfiguracionUsuarioBO

java.lang.Object

com.realmsoft.deterministicos.bo.ConfiguracionUsuarioBO

public class ConfiguracionUsuarioBO

extends java.lang.Object

Esta clase contiene los métodos de negocio utilizados para el mantenimiento

de los usuarios de Bizshield .

Detalle del método

crearOActualizarUsuario

public void crearOActualizarUsuario(java.lang.Integer p_idRol,

java.lang.String p_username,

java.lang.String p_password,

java.lang.String p_nombres,

java.lang.String p_apellidos,

java.lang.String p_direccion,

java.lang.String p_telefono,

java.lang.String p_email,

java.lang.Integer p_empresa,

java.lang.Integer p_idUsuario)

Page 502: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

233

Este método es el encargado de realizar la inserción de un nuevo usuario, o

la actualización de un usuario existente. Recibe como parámetros el

identificador del rol, el username, el password, los nombres, los apellidos, la

dirección, el teléfono, el correo electrónico, el identificador de la empresa y el

identificador del usuario a modificar, en caso de actualización. El usuario es

persistido en la base de datos a través de los objetos de acceso a datos

(DAO).

Parameters:

p_idRol - identificador del rol

p_username - nombre de usuario

p_password - contraseña de usuario

p_nombres - nombres

p_apellidos - apellidos

p_direccion - dirección

p_telefono - teléfono

p_email - email

p_empresa - identificador de empresa

p_idUsuario - identificador de usuario a modificar

caducarUsuario

public void caducarUsuario(java.lang.Integer p_idUsuario)

Page 503: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

234

Este método es el encargado de eliminar lógicamente un usuario de

Bizshield, estableciendo su estado a inactivo. Recibe como parámetros el

identificador del usuario a eliminar.

Parameters:

p_idUsuario - identificador del usuario a eliminar

com.realmsoft.deterministicos.bo

Class ReglasBO

java.lang.Object

com.realmsoft.deterministicos.bo.ReglasBO

All Implemented Interfaces:

Constantes

public class ReglasBO

extends java.lang.Object

implements Constantes

La clase ReglaBO implementa varios métodos de operaciones y

transacciones relacionadas con las reglas y lógica de negocio de las reglas

que se configuran en el sistema Bizshield

Detalle del método

ejecutarReglas

public void ejecutarReglas(DtEjecucionProceso p_dtEjecucionProceso)

throws java.lang.Exception

Page 504: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

235

Método encargado de la evaluación (ejecución) de las reglas El resultado de

la evaluación de cada una las reglas es guardado en la tabla

dt_evaluacion_regla

Parameters:

p_dtEjecucionProceso - es la representación de un ejecución de un

procesamiento de correo.

Throws:

java.lang.Exception - si existe algún error en la evaluación de las reglas

ejecutarAcciones

public void ejecutarAcciones(DtEjecucionProceso p_dtEjecucionProceso)

throws java.lang.ClassNotFoundException,

java.lang.InstantiationException,

java.lang.IllegalAccessException,

java.lang.IllegalArgumentException,

java.lang.SecurityException,

java.lang.reflect.InvocationTargetException,

java.lang.NoSuchMethodException

Método encargado de la ejecución de todas las acciones configuradas y

vigentes

Parameters:

Page 505: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

236

p_dtEjecucionProceso - es la representación de una ejecución de un

procesamiento de correo

Throws:

java.lang.ClassNotFoundException

java.lang.InstantiationException

java.lang.IllegalAccessException

java.lang.IllegalArgumentException

java.lang.SecurityException

java.lang.reflect.InvocationTargetException

java.lang.NoSuchMethodException

ejecutarAccion

public void ejecutarAccion(DtAccion p_accion,

DtEjecucionProceso p_dtEjecucionProceso)

throws java.lang.ClassNotFoundException,

java.lang.InstantiationException,

java.lang.IllegalAccessException,

java.lang.IllegalArgumentException,

java.lang.SecurityException,

java.lang.reflect.InvocationTargetException,

java.lang.NoSuchMethodException

Page 506: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

237

Método que ejecuta una acción especifica

Parameters:

p_accion - es la acción especifica a ejecutar

p_dtEjecucionProceso - es la ejecución de procesamiento de correo sobre el

cual se ejecutaran las acciones

Throws:

java.lang.ClassNotFoundException

java.lang.InstantiationException

java.lang.IllegalAccessException

java.lang.IllegalArgumentException

java.lang.SecurityException

java.lang.reflect.InvocationTargetException

java.lang.NoSuchMethodException

convertirSringObjetoSubtipoDato

public java.lang.Object

convertirSringObjetoSubtipoDato(DtSubtipoDato p_dtSubtipoDato,

java.lang.String ps_valor)

throws java.lang.ClassNotFoundException,

java.lang.IllegalArgumentException,

java.lang.SecurityException,

java.lang.InstantiationException,

Page 507: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

238

java.lang.IllegalAccessException,

java.lang.reflect.InvocationTargetException,

java.lang.NoSuchMethodException

Método que convierte un String en el respectivo objeto de un subtipo de dato

Parameters:

p_dtSubtipoDato - es el subtipo de dato del cual se inferirá la clase de java

que se utilizara para construir el objeto ps_valor - es la cadena de caracteres

que será convertida a un objeto

Returns:

el objeto producto de la conversión de la cadena

Throws:

java.lang.ClassNotFoundException

java.lang.IllegalArgumentException

java.lang.SecurityException

java.lang.InstantiationException

java.lang.IllegalAccessException

java.lang.reflect.InvocationTargetException

java.lang.NoSuchMethodException

com.realmsoft.deterministicos.bo

Class TraductorBO

java.lang.Object

com.realmsoft.deterministicos.bo.TraductorBO

Page 508: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

239

All Implemented Interfaces:

Constantes

public class TraductorBO

extends java.lang.Object

implements Constantes

La clase TraductorBO es el encargado de convertir las reglas almacenadas

en la base de datos a reglas a archivos de reglas drools (.drl)

Detalle del método

traducirReglas

public void traducirReglas(long pl_idProceso)

throws java.io.IOException, java.lang.ClassNotFoundException

Método operación encargado de traducir las reglas de un proceso al archivo

drools, el archivo donde se registraran las reglas es el retornado por el

método getArchivoReglas

Parameters:

pl_idProceso - es el id del proceso asociado a las reglas que serán

traducidas

Throws:

java.io.IOException

java.lang.ClassNotFoundException

Véase también:

Page 509: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

240

getArchivoReglas()

sensarActualizarReglas

public void sensarActualizarReglas()

Método transacción encargado de verificar si se han modificado las reglas de

algún proceso en la base de datos, en caso de encontrar reglas modificadas

refrescara los archivos de reglas drools (.drl). El mecanismo usado para

determinar si las reglas de un proceso han sido modificadas es chequeando

el valor del campo cambiaron_reglas de la tabla dt_proceso, cuando este

valor esta en S significa que han ocurrido modificaciones sobre las reglas de

ese proceso

actualizarReglas

public void actualizarReglas()

Método transacción encargado de refrescara los archivos de reglas drools

(.drl) con las definiciones de las reglas de base de datos. A diferencia del

método sensarActualizarReglas, este método no censa el campo

cambiaron_reglas de la tabla dt_proceso, sin importar su valor actualiza

todas las reglas de todos los procesos

getArchivoReglas

public java.io.File getArchivoReglas(long pl_idProceso)

Page 510: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

241

Permite obtener el archivo de reglas drools (.drl) con las reglas asociadas a

un proceso

Parameters:

pl_idProceso - el id del proceso

Returns:

un objeto File que apunta al archivo de reglas drools (.drl)

validarReglaProceso

public void validarReglaProceso(long pl_idReglaProceso) throws

java.lang.Exception

Método que permite validar si una regla en la base de datos es valida y

puede ser convertida a regla drools

Parameters:

pl_idReglaProceso - id de la regla

Throws:

java.lang.Exception - en caso de haber algún error en la validación

Package com.realmsoft.deterministicos.interfaces

com.realmsoft.deterministicos.interfaces

Interface CalculadorVariable

public interface CalculadorVariable

Page 511: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

242

La interfaz CalculadorVariable deberá ser implementada por las clases que

implementen mecanismos de cálculo para variables específicas

Detalle del método

calcularVariable

java.lang.Object calcularVariable(DtEjecucionProceso p_instanciaProceso)

Este método es el que implementa el cálculo de una variable

Parameters:

p_instanciaProceso - es una instancia de ejecución de proceso

Returns:

el valor de la variable calculado

com.realmsoft.deterministicos.interfaces

Interface EjecutorAccion

public interface EjecutorAccion

La interfaz EjecutorAccion deberá ser implementadas por las clases

implementar la lógica de ejecución de acciones específicas

Detalle del método

ejecutarAccion

void ejecutarAccion(DtEjecucionProceso p_instanciaProceso,

DatosParaEjecutarAccion p_datosParaEjecutarAccion)

Este método deberá ser implementado con la lógica necesaria para ejecutar

acciones específicas

Page 512: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

243

Parameters:

p_instanciaProceso - es la instancia de procesos sobre el cual se ejecutara la

acción

p_datosParaEjecutarAccion - son los datos necesarios para la ejecución de

la acción (parámetros)

com.realmsoft.deterministicos.interfaces

Interface Proceso

public interface Proceso

La interfaz Proceso deberá ser implementada por las clases que contendrán

todos los datos de un proceso

Package com.realmsoft.deterministicos.tiposDatos

com.realmsoft.deterministicos.tiposDatos

Class Fecha

java.lang.Object

java.util.Date

com.realmsoft.deterministicos.tiposDatos.Fecha

All Implemented Interfaces:

java.io.Serializable,java.lang.Cloneable,

java.lang.Comparable<java.util.Date>

public class Fecha

Page 513: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

244

extends java.util.Date

Extensión de la clase java.util.Date, esta clase crea un constructor que

permite crear una fecha con una cadena de caracteres

Constructor Detail

Fecha

public Fecha(java.lang.String ps_fecha)

throws java.text.ParseException

Constructor que permite crear una fecha con una cadena de caracteres.

Parameters:

ps_fecha - es la cadena de caracteres que contiene la fecha, debe estar en

formato dd/mm/yyyy

Throws:

java.text.ParseException - si existe un error al convertir la cadena a fecha

com.realmsoft.deterministicos.tiposDatos

Class FechaHora

java.lang.Object

java.util.Date

com.realmsoft.deterministicos.tiposDatos.FechaHora

All Implemented Interfaces:

java.io.Serializable,java.lang.Cloneable,

java.lang.Comparable<java.util.Date>

Page 514: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

245

public class FechaHora

extends java.util.Date

Extensión de la clase java.util.Date, esta clase crea un constructor que

permite crear una fecha hora con una cadena de caracteres

Constructor Detail

FechaHora

public FechaHora(java.lang.String ps_fecha)

throws java.text.ParseException

Constructor que permite crear una fecha hora con una cadena de caracteres.

Parameters:

ps_fecha - es la cadena de caracteres que contiene la fecha hora, debe estar

en formato dd/mm/yyyy HH:mm:ss

Throws:

java.text.ParseException - si existe un error al convertir la cadena a fecha

hora

com.realmsoft.deterministicos.tiposDatos

Class Hora

java.lang.Object

java.util.Date

com.realmsoft.deterministicos.tiposDatos.Hora

All Implemented Interfaces:

java.io.Serializable,java.lang.Cloneable, ava.lang.Comparable<java.util.Date>

Page 515: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

246

public class Hora

extends java.util.Date

Extensión de la clase java.util.Date, esta clase crea un constructor que

permite crear una hora con una cadena de caracteres

Constructor Detail

Hora

public Hora(java.lang.String ps_fecha)

throws java.text.ParseException

Constructor que permite crear una hora con una cadena de caracteres.

Parameters:

ps_fecha - es la cadena de caracteres que contiene la hora, debe estar en

formato HH:mm:ss

Throws:

java.text.ParseException - si existe un error al convertir la cadena a hora

Page 516: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

247

2.20 CONFIGURACION PARA PRUEBAS

2.21 INSTALACION DE BIZSHIELD SERVICE

A continuación se detallan los pasos que hay que realizar para instalar el

Bizshield Service.

1) Copiar todos los archivos en alguna ruta del sistema de archivos.

Se recomienda que la ruta donde se copien los archivos sea

/usr/local/BizshieldService

2) Modificar el archivo /etc/profile, se deben añadir la variable

BIZSHIELD_SERVICE_HOME con el valor de la ruta donde se copio la

carpeta:

export BIZSHIELD_SERVICE_HOME=/usr/local/BizshieldService

3) Instalar el BizshieldService como servicio del sistema operativo.

Para esto se tendrá que copiar el archivo BizshieldService en la ruta

/etc/init.d y ejecutar los siguientes comandos:

chmod +x /etc/init.d/BizshieldService

cd /etc/init.d

Page 517: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

248

chkconfig --add Bizshield Service

4) Modificación del archive de configuración Bizshield.conf el cual tendrá la

ruta /usr/local/Bizshield.conf

Este archivo es muy fácil de configurar, solo tiene pocos parámetros para

modificar. Estos son los parámetros.

• spuertoSmtp=25

• numeroHilosAtencion=1

• dominio=bizshield.pro.ec

• servidorSMTP=192.168.0.102

• servidorDNS=200.124.224.195

• urlActualizaciones=http://bizshield.pro.ec/bizshield.properties

1.) spuertoSmtp: Es el puerto por el cual se va a comunicar el servidor

Antispam que en este caso sería 25.

2.) numeroHilosAtencion: Se puede definir el numero de atenciones

simultaneas a la aplicación, el cual puede ser 5, 10, 20 etc, etc.

3.) Dominio: El cual especifica el dominio de la empresa el cual para este

caso será “bizshield.pro.ec”.

4.) servidorSMTP: Ubicamos la dirección del servidor SMTP.

5.) servidorDNS: Ubicamos la dirección del servidor DNS.

6.) urlActualizaciones: Esta es la dirección de la cual se va a descargar

las actualizaciones, tales como.

Dominios, correos, IP, que están en la lista de Spam.

Page 518: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

249

2.22 ACTUALIZACIÓN DE BLACK LIST UPDATE.

Para las actualizaciones iniciales de las listas negras, para el proyecto

antispam, se utilizó una base de datos gratuita de listas negras la cual se

actualizada diariamente. Esta base no pide registro, solo una contribución

voluntaria. La actualización de estas listas negras es confiable ya que posee

un grado alto de identificación de falsos positivos. La dirección de descarga

de esta base es la siguiente:

http://www.joewein.de/sw/dbl-update/index.htm.

2.23 INSTALACION DE MYSQL EN LINUX

La manera recomendada de instalar MySQL en Linux es utilizando paquetes

RPM. Los RPMs de MySQL están generados en SuSE Linux 7.3, pero

funcionan con cualquier versión de Linux que soporte rpm y el uso de glibc.

MySQL AB proporciona RPMs específicos para algunas plataformas; la

diferencia entre un RPM específico para una plataforma y uno genérico es

que el primero es generado sobre la misma plataforma a donde está

destinado, y emplea enlazado dinámico, en tanto que el RPM genérico está

enlazado estáticamente con LinuxThreads.

En la mayoría de los casos, sólo será necesario instalar los paquetes MySQL-

server y MySQL-client para conseguir una instalación de MySQL en

Page 519: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

250

funcionamiento. Los otros paquetes no se necesitan para una instalación

estándar. Están disponibles los siguientes paquetes RPM principales:

MySQL-server-VERSION.i386.rpm

El servidor MySQL. Será necesario, a menos que solamente se desee

conectar a un servidor MySQL ejecutado en otro ordenador. Nota: los

ficheros RPM del servidor se denominaban MySQL-VERSION.i386.rpm antes de

la versión 4.0.10. Es decir, no incluían -server en su nombre.

MySQL-client-VERSION.i386.rpm

Los programas cliente MySQL estándar. Es probable que siempre se instale

este paquete.

MySQL-shared-VERSION.i386.rpm

Este paquete contiene las bibliotecas compartidas (libmysqlclient.so*) que

ciertos lenguajes y aplicaciones necesitan para enlazar dinámicamente y

usar MySQL.

MySQL-VERSION.src.rpm

Contiene el código fuente de todos los paquetes anteriores. Puede usarse

para regenerar los RPMs bajo otras arquitecturas (por ejemplo, Alpha o

Page 520: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

251

SPARC). Para ver todos los ficheros contenidos en un paquete RPM (por

ejemplo, un RPM MySQL-server), se debe ejecutar:

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

Para llevar a cabo una instalación estándar mínima, debe ejecutarse:

shell> rpm -i MySQL-server-VERSION.i386.rpm

shell> rpm -i MySQL-client-VERSION.i386.rpm

Para instalar solamente el paquete cliente, debe ejecutarse:

shell> rpm -i MySQL-client-VERSION.i386.rpm

RPM ofrece una característica para verificar la integridad y autenticidad de

los paquetes antes de instalarlos.

El servidor RPM ubica los datos bajo el directorio /var/lib/mysql. También crea

una cuenta de acceso para el usuario mysql (si no existe anteriormente) a fin

de ejecutar el servidor MySQL, y crea las correspondientes entradas en

/etc/init.d/ para iniciar el servidor automáticamente al arrancar el sistema. (Esto

significa que si se había realizado una instalación previa y se hicieron

Page 521: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

252

cambios al script de inicio, posiblemente se desee hacer una copia de ese

script para no perder los cambios al instalar un nuevo RPM.

Si se va a instalar el RPM MySQL en una distribución antigua de Linux la

cual no soporta scripts de inicio en /etc/init.d (directamente o por medio de un

symlink), deberá crearse un vínculo simbólico que apunte a la ubicación

donde realmente está instalado el script de inicialización. Por ejemplo, si la

ubicación es /etc/rc.d/init.d, se deberán ejecutar los siguientes comandos antes

de instalar el RPM para crear /etc/init.d como un vínculo simbólico que apunte

allí:

shell> cd /etc

shell> ln -s rc.d/init.d .

Sin embargo, todas las principales distribuciones Linux de la actualidad

soportan la nueva disposición de directorios que utiliza /etc/init.d, porque es un

requisito para cumplir con el LSB (Linux Standard Base, Base Estándar para

Linux).

Si entre los ficheros RPM instalados se encuentra MySQL-server, el servidor

mysqld debería estar ejecutándose luego de la instalación, y se debería

estar en condiciones de comenzar a utilizar MySQL.

Page 522: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

253

Después de todo esto hay que pegar el archivo con el nombre my.cnf en la

ruta /etc/my.cnf

2.24 INSTALACIÓN DEL JDK (J2SE)

La base para operar cualquier producto que utiliza Java es el JDK de la

plataforma correspondiente, puede encontrar instrucciones para plataformas

Linux así como Windows, en las siguientes direcciones:

JDK para Linux : http://javabasico.osmosislatina.com/java_linux.htm

JDK para Windows : http://javabasico.osmosislatina.com/java_windows.htm

Los pasos para instalar la plataforma Java versión 1.5 en Linux son los

siguientes:

1) Ingresamos a la página de descargas de Java de Sun MicroSystems:

http://java.sun.com/j2se/1.5.0/download.jsp

2) Descargamos esta versión para Linux en binario:

jdk-1_5_0_04-linux-i586.bin

3) Lo copiamos dentro de Linux en el directorio /tmp/

4) Damos permisos de ejecución con el siguiente comando:

chmod +x jdk-1_5_0_04-linux-i586.bin

5) Se inicia la instalación ejecutando el siguiente archivo:

Page 523: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

254

./jdk-1_5_0_04-linux-i586.bin

6) Al mostrar la licencia solo tendremos que aceptar algunos términos de

uso del JDK.

7) Se crea toda un estructura de nombre jdk1.5.0_04 la cual podemos

moverla donde queremos con el siguiente comando:

mv jdk1.5.0_04/ /usr/local/jdk1.5

8) Agregar las variables de entorno dentro del archivo /etc/profile:

export JAVA_HOME=/usr/local/jdk1.5

export JRE_HOME=${JAVA_HOME}/jre

export PATH=$PATH:${JAVA_HOME}/bin

2.25 INSTALACIÓN DE TOMCAT

Bajar la versión binaria de Tomcat en: http://jakarta.apache.org/tomcat . (La

versión de Código Fuente (src) solo es necesaria si quiere experimentar y/o

Instalar Apache con Tomcat.

Descomprimir el archivo Tar de Tomcat en /usr/local/, esto genera un

directorio llamado jakarta-tomcat-<numero_de_version>, para dar mayor

uniformidad se recomienda cambiar el nombre de este directorio a Tomcat.

Posteriormente se debe definir una variable ambiental la cual le indicará al

sistema la ubicación de Tomcat, esta variable se llama CATALINA_HOME la

Page 524: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

255

cual debe ser agregada a /etc/bashrc , si no esta familiarizado con ambientes

*nix, esto significa agregar la línea:

export CATALINA_HOME=/usr/local/Tomcat;

2.26 CONFIGURACIÓN DEL SERVIDOR DNS EN LA EMPRESA1.COM

Y configuración de su Servidor de correo JES que en este caso están

instalados en una misma maquina

FIGURA 46. Creación de zona con dominio empresa1.com

Page 525: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

256

Creamos una zona con el dominio empresa1.com

Después configuramos los registros tipo A y tipo MX

Un registro tipo A que tenga la IP del servidor DNS que en este caso

sería 192.168.1.254

Un registro tipo A que tenga la IP del Servidor AntiSpam Bizshield

cuya IP seria 192.168.1.253

FIGURA 47. Creación de los registros tipo A y MX

Un registro Mx que es el intercambiador de correo (Mail Exchange)

Page 526: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

257

FIGURA 48. Registro tipo MX creado.

En este encontramos la siguiente configuración, en el cual tenemos asociado

el Registro MX al registro tipo A que apunta al servidor antispam Bizshield

En el botón examinar buscamos la dirección donde se encuentra el registro

tipo A al cual se encuentra asociado como ya indicamos al servidor de

antispam

Page 527: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

258

FIGURA 49. Pantalla de propiedades de empresa1.com

Page 528: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

259

FIGURA 50. Cuadro de Examinar en Propiedades de empresa1.com

Aceptamos y ya está creado el registro tipo MX.

Para la configuración de las IP y DNS en la opción de Conexión de Área

Local - Protocolos de Internet, ingresamos la Dirección IP, la mascara de

subred, el servidor DNS, el cual como lo tenemos instalado en la misma

máquina tendrá la misma dirección.

Page 529: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

260

FIGURA 51. Configuración de la IP y Dominio del Servidor 1

Page 530: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

261

En la pestaña de DNS agregamos el sufijo empresa1.com

FIGURA 52. Anexar sufijo DNS de empresa1.com.

Page 531: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

262

2.27 CONFIGURACIÓN DEL SERVIDOR DE CORREO JES EN LA

EMPRESA 1.

Instalamos primero el “jdk” que es la máquina virtual de java, necesario para

nuestra aplicación que esta desarrollada en java.

FIGURA 53. Ejecutable para instalar el jdk.

Copiamos el Servidor de correo con el nombre de “Jes” en La partición C:

FIGURA 54. Carpeta del programa Jes en la partición C:

Page 532: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

263

Instalamos el mail.bat en el inicio de Windows para que al iniciar o arrancar

Windows se levante el servidor de correo JES

FIGURA 55. Archivo mail.bat del servidor de correo Jes.

Aquí vemos el lugar en donde esta el inicio de Windows el cual al momento

de iniciar el sistema operativo ejecutara toda aplicación que este en este

lugar

Page 533: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

264

FIGURA 56. Lugar de ubicación del mail.bat en el inicio de Windows.

Editamos los dos archivos el mail.conf y el user.conf

FIGURA 57. Archivos de configuración del Servidor Jes.

Page 534: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

265

Especificamos el dominio de la empresa que en este caso sería

“empresa1.com”

FIGURA 58. Archivo de configuración mail.conf en la empresa1.com.

Configuramos la variable “defaultsmtpservers=<IP del servidor antispam>”

En este parámetro colocamos la dirección IP del servidor antispam por

defecto.

Page 535: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

266

FIGURA 59. Archivo de configuración de mail.conf parte 2.

En el archivo de configuración de usuario se ingresan todas las cuentas de

correo de la empresa con su respectiva clave la cual una ves ingresada y

posterior cierre de el archivo, al momento de abrirlo de nuevo nos daremos

cuenta que la clave aparecerá encriptado.

Aquí agregamos la lista de cuentas de todos los usuarios. Primero escribimos

user.<nombre de cuenta>@<dominio>

Page 536: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

267

Un ejemplo de una cuenta es:

[email protected] =clave12345678

FIGURA 60. Archivo de configuración user.conf del Servidor Jes en laempresa1.com.

2.28 CONFIGURACIÓN DE SERVIDOR DNS EN LA EMPRESA2

Igual que en la empresa 1, en al empresa2 dando clic derecho vamos a host

nuevo en el cual nos permitirá crear el registro tipo A.

Page 537: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

268

FIGURA 61. Configuración de Servidor DNS en la empresa2.

Solo damos un clic en agregar host sin escribir nada y ya estará creado el

registro tipo A.

FIGURA 62. Creación del registro tipo A.

Page 538: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

269

Aquí creamos el registro de tipo MX que se utiliza para el intercambio de

correo y va asociado con el registro tipo A.

FIGURA 63. Creación del registro tipo MX en la empresa2.

En las propiedades de Conexión de área local ingresamos la Dirección IP,

La máscara de subred y el sufijo del dominio de la empresa 2, que en este

caso sería “empresa2.com”

Page 539: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

270

FIGURA 64. Configuración de IP y DNS con sufijo de dominio en laempresa2.

2.29 CONFIGURACIÓN DE EL SERVIDOR DE CORREO JES EN LA

EMPRESA2

En este vamos a configurar los archivos “mail.conf” y “user.conf”·

Page 540: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

271

FIGURA 65. Archivos de configuración de mail.conf y user.conf enempresa2.

Ponemos el puerto smtp =25, el puerto pop3=110, el pool de hilos que será

atendido simultáneamente que por motivos de prueba solo pondremos 5,

threads=5, el nombre de el dominio el cual en este caso será

“empresa2.com”

FIGURA 66. Configuración del archivo mail.conf en el Servidor Jes de laempres2.

También ponemos la IP del servidor SMTP por default que en este caso sería

la IP del servidor 2.

Page 541: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

272

Ponemos la IP del “relay.ipaddresses” que nos permite re direccionar a una

maquina especifica a la que se quiere acceder, en este caso sería la

siguiente dirección de IP con un wildcards “192.168.2.* ” .

FIGURA 67. Continuación de la configuración anterior.

Todos los usuarios serán definidos en este archivo, que en este caso nuestro

usuario de prueba tiene el nombre siguiente [email protected]

hay que tomar en cuenta que el formato debe de ser siempre primero “user.”

segundo el nombre del usuario ej.: “pepe” y su domino “@empresa1.com”.

Aquí también ingresamos la contraseña del usuario, un ejemplo de esto sería

[email protected]=miclave123”.

Page 542: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias ...repositorio.ug.edu.ec/bitstream/redug/11504/1/PTG-B-CISC...variables del correo electrónico en búsqueda de casuísticas de spam,

273

FIGURA 68. Configuración del archivo user.conf del servidor de correo Jesen la empresa2.