Confianza en el correo electrónico

danigm's picture

Hoy en día todo el mundo confía en el correo electrónico, todos confiamos en que los correos que nos llegan vienen realemente de quien dice que viene. Para el que no lo sepa, el correo electrónico no va autenticado, un correo es igual que una carta, el remitente lo pone quien lo envía, y en ningún paso del proceso se verifica la identidad del mismo.

¿Cómo envíar un correo con la dirección que yo quiera?

Hacer esto en linux es extremadamente sencillo. Para el envío de correo se utiliza el protocolo SMTP. El correo se envía desde servidores SMTP, si escribes un correo desde gmail, por ejemplo, se utiliza para mandar el correo uno de los servidores smtp de google.

Por lo tanto si queremos envíar correo desde nuestro ordenador tenemos que instalar un servidor smtp, como por ejemplo postfix (en debian/ubuntu/etc apt-get install postfix).

Cuando lo ejecutamos tenemos en el puerto 25 de nuestra máquina el servicio corriendo:


$netstat -punta | grep -i LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN -

Con el servidor smtp hay muchas formas de envíar correos (telnet, mail, sendmail, cualquier cliente de correo, ...)

Voy a poner un ejemplo de script en python que envía un correo con una dirección de correo dada

#!/usr/bin/python
# pymail.py from@mail.com "to@mail.com;to2@mail.com;..." "subject" "message"

import sys
import smtplib

if len(sys.argv) print 'pymail.py from@mail.com "to@mail.com;to2@mail.com;..." "subject" "message"'
sys.exit()

fromm = sys.argv[1]
to = sys.argv[2]
subject = sys.argv[3]
message = sys.argv[4]

msg = ('From: %(fromm)s\r\nTo: %(to)s\r\nSubject: '
'%(subject)s\r\n%(message)s' % globals())

s=smtplib.SMTP("localhost")
s.sendmail(fromm, to.split(';'), msg)

Yo por ejemplo me he envíado un correo desde google@google.com

python pymail.py "Google INK <google@google.com>" "Daniel García Moreno <danigm@gmail.com>" "Te voy a decir hola" "Hello world"

Y aquí está en mi correo.



correo

Cómo evitar esto
Si has recibido algún correo mío alguna vez habrás visto que casi siempre lleva un adjunto signature.asc, pues bien, eso es la firma del mensaje. Existen mecanismos como GnuPG para poder verificar que el mensaje viene de quien dice venir, incluso se puede cifrar el mensaje para que sólo el destinatario pueda leerlo (los correos van en claro de servidor a servidor por la red). Cualquier cliente de correo que se precie es capaz de firmar con pgp/gpg, verificar las firmas y cifrar (yo uso evolution). Si la firma es válida podemos estar seguros de que el mensaje viene de quien dice que viene, incluso podemos asegurar que no ha sido alterado.

Para crear y manejar tus claves gpg puedes utilizar seahorse en gnome.

Mi clave pública es: FE6A3613

Comments

5
Magnus's picture

Vamos, que de esta manera puedes darte la identidad que te de la gana en los correos. Eso suena interesante para gastarle alguna broma a algún amiguete :P

De todas formas tengo la sensación de que los servicios webmail incluyen esa característica de comprobar si los correos vienen de quienes dicen venir o no, pero puede ser útil... aunque de todas maneras se nota cuando es un fraude y cuando no.

danigm's picture

Los servicios de webmail no pueden comprobar nada, porque el protocolo de correo es así, te abrás dado cuenta de que te llegan a tu correo muchos correos que dicen venir de ti mismo, todo spam. Pero si lo haces bien puedes liarla un poco, sobre todo en lugares de trabajo.

Diana Fernandez's picture

Hola,
Solo como dato, existe un correo electrònico Registrado, llamado RPost (www.rpost.com), que permite ser adicionado a cualquier plataforma de Correo Electrònico existe, permitiendo tener certeza legal de envio, entrega y apertura del contenido del Correo Electrònico como de los archivos adjuntos.

RPost Correo Electrònico Registrado a su vez, permite adicionar firmas electrònicas y cualquier certificado digital existen. De otra parte la herramienta RPost, tiene su propio sello de tiempo, que otorga un timbre de tiempo con hora real de envio, esto lo hace mendiante el reloj atòmico de Colorado y el NIST.

Rpost, de igual forma tiene incorporadas como herramientas de trabajo diario: Conversiòn a Zip, Encriptaciòn, E-Contrataciòn, Vistos Buenos Electrònicos, Notas Confidenciales (Side Note), supresiòn de meta data.

Con esta herramienta, es probable entonces verificar la autoria del correo y sus documentos, de igual forma tener prueba real de cualquier aspecto de la comunicaciòn (envio, entrega y apertura), sello de tiempo y como si fuera poco, se puede de igual forma regenerar los archivos en cuestiòn de minutos, en caso tal de que sea necesario.

Es una herramienta de Correo Electrònico de ùltima generaciòn. Y pueden probarla gratis en :
www.rpost.com

Saludos!!

Diana

david's picture

Hola dani, vaya me parece muy interesante esto, no creí que el correo electrónico normal fuera tan peligroso.

Voy a implementar el sistema que mencionas, así voy a estar mucho mas tranquilo.

También quise calar tu programita, para checar todo lo que dices, ya tengo el postfix activado, y al correrlo me suelta este error:

File "pymail.py", line 7
print 'pymail.py from@mail.com "to@mail.com;to2@mail.com;..." "subject" "message"'
^
IndentationError: expected an indented block

Quizás sea un error muy obvio, pero soy nuevo en esto de la programacion en python, la verdad no me doy cuenta del porque.

Un saludo!

danigm's picture

Pues sí, es un error muy obvio, es un problema de identación. En python los bloques están definidos por la identación, es decir, por los espacios que hay antes del texto.

Si mezclas tabuladores y espacios puede darte problemas, así que te recomiendo que siempre uses cuatro espacios como tabulador, seguro que puedes configurarlo en tu editor.

Si sigues teniendo problemas con python y te interesa aprender puedes subscribirte a la lista python-es y preguntar cualquier cosa allí.

http://mail.python.org/mailman/listinfo/python-es