Nuevo e-book gratuito: First Look Office 2010.

Microsoft Press ha puesto hoy a disposición del público general un e-book de su nuevo libro First Look: Office 2010, que en castellano sería algo así como “Una primera mirada a Office 2010”.

Para descargarlo pueden hacer click en la imagen.

image

En lo que respecta a Exchange (obvio!), el capítulo 6 trata sobre Outlook 2010 (Manage Rich Communications with Outlook 2010)

Si aún no han probado Office 2010, pueden bajar ahora mismo el beta público (disponible en español)

Gonzalo

Copiar Archivos Grandes usando ESEUtil.exe

Junto con discos duros cada vez más grandes, cuyas capacidades ya se miden en TeraBytes desde hace un buen rato, se está generando cada vez mayor cantidad de información almacenada, sea como Bases de Datos (SQL, Exchange u otros) o como archivos de Discos Duros Virtuales (.VHD), todos los cuales “pesan” varios GB. Un desafío importante es poder realizar el movimiento de estos archivos entre distintos discos duros, a veces ubicados en distintos servidores – muchas veces a través de la red – por distintos motivos: respaldos, mantenimiento, etc.

Esta tarea generalmente consume mucho tiempo dependiendo de varios factores: velocidad de lectura/escritura en disco, uso de CPU de los servidores involucrados, velocidad y congestión de la red, entre otros.  Una forma de disminuir notoriamente el tiempo que dicha copia de información tarda es utilizando una herramienta que viene con Exchange Server, al menos desde la versión 2000: ESEUtil.exe. En mi experiencia, el uso de ESEUtil reduce en un 40% a 50% el tiempo empleado por otras herramientas como Xcopy o RoboCopy.

ESEUtil es una herramienta de línea de comando para verificar, modificar y reparar una base de datos Exchange – las cuales típicamente son de varios GB, pero una de sus opciones permite realizar la copia de archivos usando la siguiente Sintaxis:

esutil.exe /Y Archivo_Origen /DArchivo_Destino

A continuación hay un ejemplo (real) de la copia por red de un archivo de respaldo (.bkf) por red FastEthernet (100Mbps) de 16,5 GB, el cual sólo tardó 1372 segundos = 22 minutos!. Nada mal.. hagan sus propios cálculos 😉

image

Notas:

  • Eseutil no acepta “comodines” (Wildcards) en los nombres de archivos. es decir no puedes pedir copiar c:*.*
  • Es necesario entregar la ruta completa del archivo de origen, como en el ejemplo.
  • No es necesario entregar la ruta del archivo de destino. En este caso el archivo de destino se grabará en el directorio desde donde se está ejecutando el comando y con el mismo nombre de archivo, como en el ejemplo.
  • Hay 2 versiones de ESEUtil, asegúrate de usar la adecuada a tu servidor:
    • Una de 32-bits (Exchange 2003) que generalmente se encuentra en: C:Program FilesExchsrvrBin
    • Una de 32-bits (Exchange 2003) que generalmente se encuentra en: <SystemDrive>:Program FilesMicrosoftExchange ServerBin.

      (Reemplazar SystemDrive por la letra de unidad donde está instalado Exchange)

Preguntas:

  1. ¿Tengo que tener Exchange Server instalado para usar Eseutil?.

    No, no es necesario. Desde un equipo con Exchange Server puedes copiar los archivos eseutil.exe y ese.dll a un directorio en otro servidor y realizar las copias de archivos (u otro mantenimiento a tus bases de datos de Exchange). También puedes invocar a eseutil por red (\ServidorExchangeRutaEseutil)

  2. No creo en la magia ni en la brujería, ¿Cómo funciona realmente esto “por debajo”?

    Simplificando un poco las cosas, el “truco” se consigue al no realizar verificaciones de escritura en el destino de la copia, sólo se realiza una copia “en bruto” de la información. Es el equivalente en TCP a enviar información continuamente y sin esperar por un ACK. Para mayor información puedes leer el artículo (en inglés) Slow Large File Copy Issues que está en las referencias, o dejando un comentario a este post.

  3. OK. ¿Pero si no se hacen verificaciones y estoy realizando una copia por red, cómo puedo estar seguro de que mi archivo de destino es una copia fiel del original?

    En realidad si se realizan verificaciones, pero en otros niveles de la comunicación: Ethernet y TCP al menos 😉

  4. ¿Hay algún impacto en el uso de la red al realizar esta copia de archivos?

    El uso de eseutil hace un uso más intensivo de la red de lo que harían otros programas como Windows Explorer o RoboCopy. La siguiente imagen es un ejemplo del uso de la red al realizar la copia del ejemplo anterior.. es fácil ver cuándo comenzó la copia de archivos 😉

    Para los más observadores, el servidor fuente es un Windows 2003 y el destino un Windows 2008, por lo que el alto uso de red no es producto de las mejoras en TCP/IP de Windows 2008, sino sólo de ESEUtil.

image

 

Referencias:

 

 

Espero que este dato les sea de utilidad.

Consultas y comentarios son siempre bienvenidos.

Gonzalo

Cómo Redirigir un correo a más de un destinatario externo con Exchange Server 2000/2003?

NOTA:

Este post fue publicado originalmente en mi anterior blog el
14/08/2007.

 

En el foro/mailing-list del G.L.U.E. he visto un par de veces que se ha hecho esta pregunta. Por ese motivo les dejo un manualcillo mostrando cómo se puede configurar Exchange Server 2000/2003 para realizar esta tarea. Espero en los próximos días publicar un artículo sobre cómo hacer esto en Exchange 2007
 

Supondremos que tenemos un usuario "Juan Pérez" con dirección de correo jperez@empresa.com, que desea que todos los mails que llegan a su casilla sean redirigidos a dos casillas de correo externas (fuera de la organización Exchange): hotmail y yahoo.

Paso 1: Creación de Contactos

En Active Directory Users and Computers (ADUC), ir a la OU donde vamos a crear a los nuevos contactos. Hacer click Derecho sobre la OU y seleccionar nuevo -> Contacto.

Tenemos que tener los siguientes datos para crear el contacto:
Nombre: Juan
Apellido: Pérez
e-mail Externo: jperez@hotmail.com

Personalmente me gusta poner junto al apellido el dominio al cual pertenece el contacto. En nuestro caso, es Juan Pérez y el Dominio es Hotmail, por lo que en el apellido escribo Pérez – Hotmail. Eso me permite visualmente saber a cuál dominio/empresa pertenece el contacto (y hacía dónde se dirigirá el mail), como se ve en la figura:

img01 

Al en la siguiente pantalla del asistente, tenemos que crear el alias de Exchange asociado al contacto y su dirección de correo. El alias viene "pre-llenado", podemos mantener el mismo o cambiarlo.

img02

Luego debemos presionar el Botón "Modify" para ingresar la dirección de correo externa.
Aparecerá una nueva ventana con varios tipos de direcciones de correo, seleccionaremos "SMTP Address" y presionamos OK.

img03 

Aparecerá una nueva ventana, en donde ingresaremos la dirección de correo de nuestro contacto, en nuestro caso: jperez@hotmail.com

img04

Presionamos OK, volvemos a la ventana original y presionamos Finish para que se cree el nuevo contacto.

img05

Nota: con esto ya es suficiente para que el contacto pueda ser encontrado en la GAL y enviarle mails, los cuales serán enviados directamente a su casilla externa.

Ahora debemos crear tantos contactos como necesitemos para hacer el envío de mails a direcciones externas. El proceso es exactamente el mismo.  En nuestro ejemplo crearemos sólo 2, tal como se ve en la imagen.

 img06

Paso 2: Creación de un Grupo de Distribución

En ADUC, Ir a la OU donde vamos a crear el grupo de distribución, Click Derecho sobre la OU y seleccionar Nuevo -> Grupo. Aparecerá la siguiente ventana.

img07

Aquí debemos dar un nombre al grupo, éste puede ser cualquiera, pero es recomendable usar nombres de objetos que sean razonables y que permitan una fácil identificación.
Los conceptos sobre el Alcance (Scope) y el tipo (type) del grupo están fuera del alcance de este tutorial, pero para nuestro propósito, es más que suficiente con seleccionar: Global y Distribution, respectivamente. Presionamos Next.

Nota: en Exchange 2007 los grupos de distribución deben ser de tipo Universal


En la nueva ventana activamos la opción de Crear una dirección de correo de Exchange, tal como muestra la figura.  El Nombre del Alias no es relevante, sólo importa que no esté repetido.

img08
La advertencia nos indica que si estamos en una situación con varios dominios o incluso varios forest, tenemos que privilegiar el uso de grupos Universales.

Presionamos Next y finalmente Finish en la siguiente ventana.

img09

Con esto el Grupo ya ha quedado Creado.

Ahora, hacemos doble click sobre el grupo creado y en la nueva ventana seleccionamos la lengüeta de Miembros

img10 


Presionamos ahora sobre el botón Agregar (Add).
Aparecerá la típica pantalla de búsqueda, pero para que busque contactos, debemos presionar el botón de Tipos de Objetos (Object Types).

img11

Se nos abrirá una nueva ventana y en ésta debemos seleccionar el tipo de Objeto: "Contactos".

img12

Presionamos OK, volvemos a la ventana original de búsqueda y escribimos o buscamos a nuestros contactos. (por su nombre, por ejemplo)

Una vez agregados los contactos, tenemos que los miembros del grupo de distribución son nuestros contactos, como en la siguiente figura.

img13

Nota: Otra forma de agregar los contactos al grupo es: desde las propiedades de cada contacto, seleccionando la lengüeta miembro de (Member Of) y ahí poner el grupo de distribución del cual el contacto va a "ser miembro".

Paso 3: Configurar el Reenvío de Correos 

Finalmente, para poder configurar el reenvío de los correos, nos vamos a las propiedades del usuario a quien deseamos configurar que sus correos sean reenviados, y seleccionamos la lengüeta: Exchange General, y ahí presionamos el botón de Delivery Options (Opciones de Entrega).

img14

En la ventana "Opciones de Entrega", en la sección de Reenvío (Forward), seleccionamos "Reenviar a" (Forward To) y presinamos el botón "Modificar" (Modify).

img15

Nos aparecerá la ya conocida ventana de búsqueda, ahi escribimos o buscamos el nombre de nuestro grupo de distribución recién creado, como muestra la figura, y presionamos OK.

img16

Volvemos al la ventana original y tenemos que decidir si vamos a reenviar los mails conservando una copia en el buzón del usuario, para lo cual debemos marcar la opción de "entregar el Mensaje a Ambas direcciones la de reenvío y la del buzón".
Si no no queremos que quede una copia en el buzón del usuario, dejamos la opción sin seleccionar.

img17

Presionamos OK dos veces y salimos de las propiedades del usuario.

Listo! Ahora cada vez que alguien le envíe un correo a nuestro usuario (jperez@empresa.com), ésta será reenviada a las direcciones de correo Externas (Ambas), definidas en los contactos que creamos y que forman parte del grupo de distribución al cual configuramos el reenvío.

Espero que les sea de utilidad, y como siempre los comentarios son bienvenidos.

Gonzalo

Cosas que siempre quisiste saber sobre el correo electrónico y que nunca te atreviste a preguntar

NOTA:

Este post fue publicado originalmente en mi anterior blog el
28/08/2007. 

 

Graciosamente, yo tenía pensado escribir exactamente este artículo, pero antes de escribirlo, chapoteando por internet, encontré que alguien ya lo había escrito por mi!!!
Daniel Matey, MCSE y ex-MVP español en MOM, escribió en su blog una serie de artículos Básicos, respondiendo a las preguntas básicas clásicas que se ha encontrado en foros… justamente lo que yo espero hacer hacer en mi blog … 😉
 
Para no reinventar la rueda, y puesto que está casi lo mismo que yo pensaba poner en este artículo, mejor les dejo estos links, pues los artículos están buenísimos y responden a preguntas del tipo: qué son los registros MX?, cómo crear registros MX?, cómo saber si mi servidor hace Relay?, cómo saber si estoy en una lista negra?, etc., etc….
 
Disfrútenlos 😉
 
Gonzalo

Haciéndole la vida difícil a los Spammers: SMTP Tar Pitting (Pozo de Brea)

NOTA:

Este post fue publicado originalmente en mi anterior blog el
14/08/2007. 
Hice algunos cambios, modificaciones y adiciones para mejorar el artículo

Como vimos en los artículos sobre envío de correo SMTP (PARTE I, PARTE II y Relay), al establecer una conexión SMTP es bastante fácil poder obtener una lista de las direcciones de correo válidas en un dominio: Basta con adivinar los nombres de usuario al enviar al correo el comando «rcpt to: <usuario_adivinando>@dominio.org».
Por ejemplo, si Juan Pérez tiene una cuenta de correo jperez@dominio.org, generalmente veremos en los logs de recepción (y/o bloqueo) de correo, más de algún mensaje dirigido a casillas del tipo: jperez128@dominio.org, juanjperez@dominio.org, etc.  Claramente el spammer está intentando adivinar direcciones de correo válidas.

Si tenemos habilitado en nuestro servidor Exchange el filtrado por destinatario (recipient filter) para que no acepte mensajes a destinatarios que no están en el directorio, es decir, sólo reciba correos para destinatarios que posean una dirección de correo válida, el servidor entregará un mensaje de error con código 5.x.y al atacante durante la conexión smtp.
Esto tiene 3 problemas:

  1. Estamos dando –indirectamente – a nuestro atacante información sobre cuáles son las direcciones de correo electrónico válidas en nuestra organización.
  2. Nuestro servidor SMTP está procesando un alto volumen de peticiones del atacante y realizando una gran cantidad de consultas al Servicio de Directorio (Active Directory), consumiendo inútilmente recursos valiosos.
  3. El servidor de correo está obligado, por adhesión a la RFC 2821 a enviar un correo con un NDR al «remitente» que trata de enviar correos a las direcciones «equivocadas». En el caso de un ataque, aún más recursos desperdiciados y posibilidad de caer en listas de backscatter.

La situación recién mencionada es conocida como un ataque de Directory Harvest, o “Cosecha de Directorio”.

Como respuesta a este problema, se puede implementar en nuestros servidores SMTP la funcionalidad de Tar Pitting, la cual consiste en introducir un retraso en las respuestas con código 5.x.y, usualmente asociadas a problemas derivados de ataques de SPAM.

Exchange 2003

La funcionalidad de TarPitting no es exclusiva de Exchange 2003, pues es una característica del servidor SMTP, y por tanto de IIS, la cual está disponible para cualquier equipo tenga instalado el SP1 de Windows 2003 Server.

Cómo se configura?

Súper simple.

  1. Debemos abrir el editor del registro (Inicio -> Ejecutar -> Regedit).
  2. Buscamos la siguiente ruta: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSMTPSVCParameters
  3. Clic derecho – Nuevo Valor DWORD.
  4. Escribir: TarpitTime (OJO con las mayúsculas y minúsculas), Presionar Enter.
  5. Abrir el nuevo valor creado (TarpitTime) haciendo doble clic sobre él, luego haga clic sobre decimal e ingrese un número en el cuadro de texto. Por ejemplo: 8.
  6. Cierre el editor de Registro.
  7. Reinicie el Servicio SMTP del servidor.

Qué hicimos?. Creamos el valor en el registro y configuramos una demora de 8 segundos en las respuestas del tipo 5.x.y.
Por qué 8 segundos? porque 8 segundos es un tiempo razonable para que un usuario que escribió mal una dirección espere por su respuesta, pero es una eternidad para un robot spammer ;)… además, me gusta el número 8 :p

Referencias:

Exchange 2007/2010:

En Exchange 2007 la configuración de TarPit viene habilitada de forma predeterminada en los conectores de recepción (Servidores de Transporte) en un valor de 5 segundos. Para revisar esta configuración se puede utilizar el cmdlet:

get-ReceiveConnector | select name,tarpitinterval

y para modificar esta configuración, se puede usar este comando:

set-ReceiveConnector "Receive Connector Name" -tarpitinterval 00:00:10

hay que reemplazar el nombre del conector y el valor de la demora en horas:minutos:segundos

Referencias:

 

Bonus: Mi Amigo Christian Aguilera me comentó que además el retraso tiene una «Duración Aleatoria». Con esto se persigue engañar a los robots de spam, para que así no logren detectar que existe un mecanismo de Tar Pitting configurado en nuestro servidor. Esta es una de las ventajas que Exchange 2007 traiga su propio servicio SMTP (y ya no use el servicio SMTP del IIS).


Si quieren conocer más sobre Exchange 2007, les recomiendo los sitios de:

 

Gonzalo

Códigos de Respuesta de un Servidor SMTP

NOTA:

Este post fue publicado originalmente en mi anterior blog el
14/08/2007. 
Hice algunos cambios, modificaciones y adiciones para mejorar el artículo

Te has visto alguna vez en una situación como esta?

Usuario: (te llama y te dice:) "Hola. sabes, no puedo enviar un correo".
ADMIN: OK, me podría decir por favor qué mensaje de error le aparece en la pantalla?
Usuario: "Si, aquí dice: su mensaje no se … ha podido entregar… código del error: 5.2.3. Qué puede ser?".
ADMIN: ???? (Este tipo cree que me sé TODOS los códigos de error de memoria o qué?!).

Bueno, al menos yo sí .. más de un par de veces…. y no me sé los mensajes de error de memoria, pero…sí conozco son los primeros números que componen los códigos de las “Notificaciones de Estado de Entrega” (RFC 1891 y RFC 1893)

  • 2.X.Y : Éxito, la operación pudo ser realizada.
  • 4.X.Y : Error transitorio persistente, la operación no puede ser realizada temporalmente, por ejemplo debido a problemas con la red, o con recursos del servidor.
  • 5.X.Y : Errores permanentes, este tipo de errores implican  que el servidor esté con algún problema o que hay alguna regla específica que se esté violando, por ejemplo el error 5.2.3 significa que “el mensaje es demasiado grande para la cuota local”.

Nota: estos mismos códigos aplican para comunicaciones HTTP.

Pero, más importante aún, aunque no me conozca los códigos de errores, al menos sé donde encontrarlos ;D

KB284204: Notificaciones del estado de entrega en Exchange Server y Small Business Server

Espero que les sirva.

Gonzalo

PS: Cualquier relación o parecido con las historias del BOFH es completamente intencional 😉

Herramientas Gratuitas. Parte I

NOTA:

Este post fue publicado originalmente en mi anterior blog el
13/08/2007. 
Hice algunos cambios, modificaciones y adiciones para actualizar un par de herramientas

Hace unos días atrás, se dio una discusión bastante interesante en el foro/mail-list de ITPRO Chile, la cual trataba básicamente sobre la «legitimidad» de tener software pirata, por el simple hecho que «todo el mundo usa software pirata».

Más allá del dilema moral al respecto y de la Guerra Santa entre los adherentes al software de código abierto (y software libre) «Versus» el Software Propietario, me declaro un simpatizante y usuario de software GRATIS. En este punto no puedo eludir mi deber de aclarar que en castellano libre NO ES LO MISMO que gratis. (lo siento…)

Bueno, aquí les dejo una pequeña lista de los programas y herramientas gratuitas que habitualmente utilizo como usuario doméstico, o como Administrador de Sistemas. 

  • Antivirus:
  • AntiSpyware: Windows Defender
  • Cliente (y Servidor) FTP: FileZilla
  • Compresor: 7-zip, excelente herramienta, incluso descomprime .rar 🙂
  • CD/DVD Burner:
    • IsoRecorder, Excelente programa para grabar .iso a CD/DVD. Compatible con XP, Vista, Windows7 y Windows 2008/R2.
    • CDBurn y DVDBurn, ambas vienen en el Resource Kit de Windows 2003 Server.
    • Daemon-Tools: Permite leer y cargar en un CD/DVD Virtual imagenes .iso. OJO: en las últimas versiones (4.x) han incluido en la instalación la «opción» de instalar Software Spyware: DAEMON Tools Searchbar y Save Now. Mi recomendación es instalar versiones anteriores (3.x) y poner MUCHO cuidado a las opciones de instalación
  • Sniffers:
  • Capturas de Pantalla
    • Recortes (Cropper), viene con Windows Vista y Windows 7. Permite sacar recortes de pantalla (ventanas completas o sólo alguna parte seleccionada). Ideal para hacer informes de forma rápida.
    • Snapshots. Captura imágenes de la pantalla, muy sencillo y simple de usar
    • Camstudio: Permite grabar en video lo que ocurre en tu pantalla (tipo screencast), una excelente alternativa a software como Camtasia
  • Virtualización: Microsoft ofrece en el nuevo programa VHD Test Drive la posibilidad de bajar discos duros virtuales de servidores con productos pre-instalados para probarlos. Imperdible.
  • IMFCompanion. Indispensable para los administradores de Exchange 2003 que usamos IMF como filtro antispam. Permite «ver» y «rescatar» correos que han sido bloqueados erróneamente (falsos positivos).
  • Crimson Editor. Excelente editor de texto. Permite editar casi cualquier archivo de texto en casi cualquier formato (HTML, C, ASM, XML, y un largo etc.), con highlights de sus palabras reservadas. Además tiene un cliente ftp incorporado para hacer actualizaciones a sitios web desde el mismo editor, en incluso se puede configurar un compilador y así compilar desde el mismo editor.
  • Karen’s Power Tool. Lejos uno de mis favoritos. Karen ha escrito un montón de herramientas gratuitas súper útiles y simples de usar para poder realizar tareas importantes.
    En más de una oportunidad sus aplicaciones me han ayudado :D. Por mencionar sólo algunas:
    • Replicator. Esta herramienta replica y sincroniza archivos y directorios. La copia es idéntica al original, incluso replica la fecha de creación del archivo. Es capaz de replicar «el borrado de archivos» entre el origen y el destino. Se puede configurar para que replique periódicamente.
    • ‘Net Monitor. Permite monitoreo básico de algunos servicios críticos de cualquier red: HTTP y SMTP; también verifica la conectividad con cualquier equipo de la red (ping). En conjunto con EMailer II es capaz de enviar correos o alertas en caso de fallas. (casi igual que MOM :p)
    • Karen’s EmailerII. Envía correos desde la línea de comandos. Puede ser usado para, por ejemplo, enviar alertas desde el ‘Net Monitor, o desde el Performance Monitor de Windows (Les Recomiendo el Blog de Isabel de la Barra sobre PerfMon 😉 ) 
    • Karen’s Print Logger. Esta herramienta se instala en nuestro servidor de impresión y lleva un registro (en .txt, fácilmente importable en excel) sobre qué cosas han sido impresas: usuario, cantidad de hojas, nombre del archivo o URL, fecha y hora, entre otros. Increíblemente útil y Gratis.

Hasta aquí mi lista de herramientas gratuitas favoritas. Como pueden ver, son hartas las cosas que se pueden hacer con herramientas de buena calidad y sin necesidad de piratear software ;).

Espero, que la parte II de éste artículo la construyan Ustedes contándome cuáles son sus herramientas gratuitas favoritas ;).

Gonzalo

Etiquetas de Technorati: ,,

Cómo saber si tu servidor de correo permite Relay?

NOTA: Este post fue publicado originalmente en mi anterior blog el
13/08/2007

Como «Corolario» a los artículos sobre Cómo Enviar Correo Electrónico «a mano» (PARTE I y PARTE II), les quiero mostrar una forma rápida de verificar si un servidor de correo está permitiendo el reenvío no autorizado de de correos (Open-Relay).

Primero que todo, me gustaría quitar un poco el estigma negativo a la palabra Relay: Relay significa simplemente «retransmitir». El Relay en sí no es malo, de hecho, hay un «Relay Bueno» y un «Relay Malo«.

Todo Servidor SMTP, por definición, debe aceptar los correos que van dirigidos hacia su dominio SMTP, es decir, «si yo soy el servidor de @dominio.org, debo aceptar todos los correos entrantes dirigidos a *@dominio.org». (dejamos de lado por un momento las consideraciones de filtrado antispam previas y posteriores a la conexion SMTP, hasta un próximo post).
 
Que pasa si, por ejemplo, tengo a muchos clientes remotos que revisan su correo usando protocolos POP3 o IMAP (diversas razones pueden justificar este escenario: desde las preferencias personales del administrador hasta el uso de dispositivos móviles como PDAs o BlackBerry en modo «Profesional»). Ellos necesitarán un Servidor de Correo Saliente (SMTP) para poder enviar su correo electrónico, el cual no solamente irá dirigido a nuestro dominio SMTP, sino que muchos otros dominios SMTP de clientes, proveedores, amigos, familiares, etc, etc, etc. Por lo tanto, en este escenario, nosotros debiésemos permitir el relay a través de nuestros servidores a nuestros usuarios en ubicaciones remotas. Esto sería «Relay Bueno«.

Por otra parte, si yo soy un spammer, me gustaría poder enviar miles (o millones) de correo comercial  no solicitado (UCE, Unsolicited Comercial E-Mail, o SPAM), idealmente a costa de los recursos de otros servidores (entre otras razones, para no caer yo mismo en una lista negra). Entonces yo busco a servidores que me permitan, sin autentificarme, enviar correos electrónicos a cualquier dominio SMTP. (ver Cómo Enviar correo electrónico a mano, Parte II: SMTP Autenticado). Esto sería el «Relay Malo»

Enredado?
En realidad es súper simple: Si yo soy el servidor de correo que sirve al dominio SMTP @empresa.org, nadie debe ser capaz de enviar correo electrónico a través mío a un dominio que no sea @empresa.org. (salvo mis usuarios autenticados).

Luego de esta larga, pero necesaria introducción sobre relay, manos a la obra.

La prueba para verificar si un servidor está permitiendo el Relay Abierto (Open Relay o Anonymous Relay), es conectarse anónimamente al servidor y tratar de enviar un correo a un dominio cualquiera de internet, distinto del dominio SMTP del servidor.
(Los detalles los puedes ver en el Artículo sobre cómo enviar correo electrónico a mano).

image

En este caso, el servidor de correo, al verificar que, anónimamente, estamos tratando de enviar un correo a un dominio que no es el propio, de inmediato arroja un mensaje de error (550 5.7.1 Unable to relay for usuario88@hotmail.com) indicando que no va a reenviar este mensaje.
Espero, en un próximo post mostrarles cómo se configura el servidor Virtual SMTP de un Exchange Server 2003 para conseguir este resultado.

Update: … y en Exchange 2007 y 2010 también!

Finalmente, no puedo dejar de mencionar que existen varias herramientas gráficas y sitios de internet a través de los cuales revisar si un servidor está permitiendo Relay, es cosa de pedirle a nuestro buscador favorito que nos encuentre «test open relay»…. pero no es tan divertido como hacerlo uno mismo usando la línea de comandos, verdad? 😉

Gonzalo

Cómo enviar Correo Electrónico a mano, Parte II: SMTP Autenticado

NOTA: Este post fue publicado originalmente en mi anterior blog el
11/08/2007

En un artículo anterior aprendimos cómo enviar un correo electrónico a mano, es decir, utilizando solamente la línea de comandos y las instrucciones del protocolo SMTP. 

La gran mayoría de los servidores SMTP del mundo piden credenciales a los clientes que tratan de enviar correos a través de ellos, cuando el correo no está dirigido al dominio SMTP de éste (algunos simplemente las exigen, como espero mostrarles en una futura sección de Antispam), por esta razón en esta segunda parte veremos cómo es el procedimiento para enviar correo electrónico autentificándonos en el servidor, es decir, entregando nuestros nombre de usuario y contraseña durante la sesión SMTP. 

Los detalles sobre cómo es una sesión SMTP pueden verlos en el post sobre cómo enviar un correo electrónico a mano, por lo que ahora nos centraremos en la parte de la autenticación.

Primero, desde una línea de comandos, hay que conectarse al Servidor SMTP usando:

telnet <Servidor_SMTP> 25

Como respuesta obtendremos un banner similar a este:

image

Los pasos a seguir son:

1. Saludo al Servidor. Ahora, saludaremos al servidor con un comando EHLO, en vez de HELO. Esto no es dislexia (ni disteclia), sino que es una abreviación de Extended HELO ;).
En el Banner vimos que el Servidor es un Servidor que soporta Extended SMTP (ESMTP), por lo que como respuesta a este saludo, el servidor nos entregará una lista de los comandos de ESMTP que soporta.

image

Nota: algunos sistemas verifican que nosotros seamos realmente quienes decimos ser realizando consultas de DNS-Reverso o verificando nuestra IP en una Lista Negra, pero esos temas los veremos pronto, en los artículos de Antispam que pronto publicaré 😉 

2. Ingresamos el nombre de usuario y contraseña. usando el comando AUTH LOGIN, decimos al servidor que vamos a autenticarnos usando login y password, por lo que el servidor nos responde con un amistoso: 334 VXNlcm5hbWU6  QUË?

ESMTP usa como método de codificación Base64, por lo que, salvo que seas un balazo (de)codificando en Base64, es indispensable que tengas un codificador/decodificador de Base64 a mano ;).
Luego de una búsqueda por «Base64 Decoder», nuestro buscador favorito debiese darnos al menos una respuesta, por ejemplo yo usé éste decodificador.

Ahora si …

334 es un código para indicarnos: OK, esperando Datos, y VXNlcm5hbWU6 , que es la codificación para «Username:«-. 

Usando el Codificador transformamos nuestro nombre de usuario a Base64, y lo pegamos en la línea de comandos. Si nuestro login name fuese, por ejemplo: nombre.apellido, al servidor hay que ingresarle: bm9tYnJlLmFwZWxsaWRv.

La respuesta del servidor ahora es:  334 UGFzc3dvcmQ6.
334, al menos ahora ya sabemos lo que significa ;), y nuestro decodificador de base64 nos dice que «UGFzc3dvcmQ6» es la codificación para «Password:».
Necesitamos, entonces, codificar nuestro password y pegarlo para enviárselo al servidor. Si nuestro password fuese, por ejemplo: P@assw0rd, la codificación sería: UEBhc3N3MHJk.

image

Finalmente, si ingresamos bien la contraseña, el servidor nos entrega un mensaje de autentificación exitosa: 235 2.7.0 Authentication successful. (mmm….esta vez sin codificar? … cómo?, y justo cuando ya nos estábamos acostumbrando al Base64… 😉

En este momento, ya estamos autenticados en el servidor, por lo que en adelante el proceso de envío de mail es el ya conocido.

3. Indicamos el remitente y destinatario(s): MAIL FROM: y RCPT TO.
Lo importante es que ahora, dependiendo de la configuración del servidor, podríamos enviar correos sin importar que el remitente y/o destinatario pertenecieran al dominio SMTP del servidor. En nuestro ejemplo, el dominio smtp del servidor es @dominio.org, pero como remitente se usó una dirección @gmail.com, y como destinatarios direcciones @gmail.com y @hotmail.com

image

4. Enviamos el Cuerpo del Mensaje. Usamos el comando DATA. Dentro del cuerpo del mensaje es muy recomendable incluir un nombre de destinatario (Esto le indica al servidor que comenzaremos a enviar el cuerpo del correo («la Data»).

El Servidor nos responde que podemos comenzar a enviar los datos, y que debemos presionar la secuencia Enter -> . -> Enter para indicarle que hemos terminado con el cuerpo del mensaje (Enter, luego un punto y Enter nuevamente).

En el cuerpo del mensaje se incluye una línea con el comando From: (Usuario Gonzalez), y otra con el comando subject: (mail de prueba). Estas líneas son importantes pues la gran mayoría de los servidores de correo bloquean los mensajes sin «asunto», o sin nombre de remitente por considerarlos SPAM.

image

Update: Los servidores de Correo Exchange 2007 exigen que el remitente sea una dirección de correo válida: usuario@dominio.org.

Luego, el Servidor nos responderá que el mensaje fue recibido correctamente, indicándonos el identificador interno que le dio al correo.

5. Cerrar la Conexión. Finalmente, debemos cerrar la sesión en el servidor con el comando QUIT. (como lo muestra la imagen anterior) 

En este segundo artículo de la serie, vimos como enviar un correo electrónico autentificándonos en el servidor con nuestro nombre de usuario y contraseña usando el protocolo ESMTP.

Gonzalo

Etiquetas de Technorati: ,,

Cómo Enviar Correo Correo Electrónico "a mano"?: Parte I

NOTA: Este post fue publicado originalmente en mi anterior blog el
11/08/2007

En una conferencia sobre Troubleshooting que dimos en el GLUE, me llamó la atención que muy pocas personas supieran enviar correos electrónicos usando sólo la línea de comandos (y no a través de un cliente de correo, como Outlook u Outlook Express). Por eso el siguiente artículo.

Muchas veces, como parte de las pruebas que realizamos para resolver problemas de flujo de correo entre servidores, luego de hacer un TroubleShooting de Redes Básico, el siguiente paso es revisar que la comunicación SMTP pueda establecerse exitosamente.

Para esto es necesario conocer un poco de «SMTP-nés».

Primero, desde una línea de comandos, hay que conectarse al Servidor SMTP usando:

telnet <Servidor_SMTP> 25

El 25 luego del nombre o dirección IP del servidor corresponde al puerto al cual estamos estableciendo la conexión, en este caso el 25 es el estándar para smtp.

Si la conexión se establece exitosamente, el servidor mostrará una respuesta consistente de un código, y un banner con su nombre, el software SMTP que está ejecutando, la versión de éste, la fecha y la hora. Un servidor SMTP MS Exchange 2003 SP2, despliega un banner similar a este:

image 

En este punto es interesante mencionar que como respuesta a nuestros comandos (o verbos), el servidor siempre nos entregará un código numérico con la siguiente nomenclatura:

  • 2XX: operación ha concluido con éxito. 
  • 3XX: operación aceptada, pero se esperan nuevos datos.
  • 4XX: error, servidor queda a la espera que se repita la instrucción.
  • 5XX: error permanente.

Los pasos a seguir son:

1. Saludo al Servidor. Como personas educadas que somos, lo que corresponde es saludar al Servidor, indicando nuestra identificación (nuestro nombre dns). El Servidor, que también es todo un caballero, nos responderá el saludo (con su correspondiente código).

image

Nota: algunos sistemas verifican que nosotros seamos realmente quienes decimos ser realizando consultas de DNS-Reverso o verificando nuestra IP en una Lista Negra, pero esos temas los veremos pronto, en los artículos de Antispam que pronto publicaré 😉 

2. Indicamos el remitente y destinatario(s), usando los comandos MAIL FROM: y RCPT TO:, éste último más de una vez, en caso de querer enviar mail a más de un destinatario.

Nota: Los comandos SMTP no son sensibles a mayúsculas y minúsculas.

image

El servidor nos validó como remitentes válidos y validó al destinatario de nuestro mail (su dirección de correo electrónico) como válida, y está listo para recibir el mensaje.

3. Enviamos el Cuerpo del Mensaje. Para realizar esto le escribimos el comando DATA. Esto le indica al servidor que comenzaremos a enviar el cuerpo del correo («la Data»).

image

El Servidor nos responde que podemos comenzar a enviar los datos, y que debemos presionar la secuencia Enter -> . -> Enter para indicarle que hemos terminado con el cuerpo del mensaje (Enter, luego un punto y enter nuevamente). 
En el cuerpo del mensaje se incluye una línea con el comando subject: (mail de prueba). Esta línea es importante pues la gran mayoría de los servidores de correo bloquean los mensajes sin «asunto» por considerarlos SPAM.

Luego, el Servidor nos responderá que el mensaje fue recibido correctamente, indicándonos el identificador interno que le dio al correo.

4. Cerrar la Conexión. Finalmente, debemos cerrar la sesión en el servidor con el comando QUIT.

image

En este primer artículo de la serie, vimos como enviar un correo electrónico usando sólo comandos smtp. En el Próximo Artículo veremos cómo enviar correo cuando el servidor SMTP Requiere de Autentificación.

Gonzalo

Etiquetas de Technorati: ,,