|
Esta pequeña guía, está basada en este otro artículo en inglés, con unas pocas modificaciones.
Básicamente, se trata de poder usar nuestra cuenta en Gmail para enviar/recibir correo desde la web.
Los siguientes pasos, se
han aplicado sobre Ubuntu Dapper Drake, versión de escritorio y
arquitectura i386. Por lo tanto, téngase en cuenta, antes de ponerse
manos a la obra, que las instrucciones o paquetes a isntalar, podrían
variar sobre otras distribuciones.
Comprobaciones
Asegúrate de que el sistema operativo está actualizado. Para ello, desde una consola, introduce las siguientes instrucciones:
sudo aptitude update
sudo aptitude upgrade
Asegúrate que, para usar el comando "su", tienes establecida la clave de root.
Empecemos..
Paso 1
Instalamos los paquetes que vamos a necesitar:
sudo aptitude install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail
La instrucción instalará, si no lo estuvieran ya, Postfix (nuestro programa para servir correo) con soporte sasl y tls (para la autentificación encriptada que necesita Gmail) y procmail como agente de correo que usará Postfix.
Paso 2
Reconfiguramos Postfix
sudo dpkg-reconfigure postfix
Para ello, respondemos a una serie de preguntas mientras se va reconfigurando:
General type of configuration? Internet Site
Where should mail for root go? NONE
Mail name?usuario-desktop
(En el archivo /etc/hostname
podreis ver cual es el nombre del equipo. Normalmente, es
"usuario-desktop". Comprobad cual es el nombre que aparece
dentro del archivo "hostname" y es ese el que hay que indicar en la
pregunta anterior "mail-name?")
Other destinations to accept mail for? usuario-desktop.nombre_dominio.com, localhost.nombre_dominio.com, localhost
(La pregunta anterior, nos
solita otros nombres, separados por una coma, que se van a aceptar aparte de "usuario-desktop",
os he agregado unos cuantos por si disponeis de un nombre de dominio
registrado. Si se deja en blanco, no se aceptarán otros nombres.)
Force synchronous updates on mail queue? No
Local networks? 127.0.0.0/8
Use procmail for local delivery? Yes
Mailbox size limit?0
Local address extension character? +
Internet protocols to use? all
Paso 3
Ahora, introducimos estas
instrucciones para agregar algo más de información en el archivo de
configuración, porque posteriormente nos será necesario tenerlo de este
modo (las dos últimas instrucciones, permiten autentificar a los
usuarios que se conecten a él). Desde la consola:
su
(nos pedirá la clave de root y, tras acertarla, entraremos en "consola de root")
sudo postconf -e 'smtpd_recipient_restrictions =permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
sudo echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
Salimos del modo root tecleando Exit en la consola.
Paso 4
Antes de entrar en
nuestro archivo de cofiguración, tenemos que crear un certificado para
contactar con Gmail. Este certificado sirve para verificar que
realmente eres tú o tu red la que realmente esrá enviando un mensaje.
En todo caso, no es un certificado de los "de pago" sino más bien uno
de propio para cubrir con nuestras necesidades sin gastar dinero.
Para crear el certificado:
sudo /usr/lib/ssl/misc/CA.pl -newca
Si todo ha ido bien, verás algo similar a siguiente
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
.......++++++
...................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Tienes
que introducir una clave y reescribirla para evitar posibles errores
de tipeo. Es importante que no te olvides de ella, porque te la irá
pidiendo más adelante (guárdala en un archivo de texto, o apúntala
exactamente en papel)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Tras
ello, se te irán formulando una serie de preguntas. Pon un punto
"."(sin las comillas), cuando quieras dejar alguna de las preguntas en
blanco.
Anota exactamente lo que vayas respondiendo, porque más
adelante, tendrás que reesctibir, exactamente, esos mismos datos.
Obviamente, los datos introducidos más abajo son ejemplificativos
y
cada cual debe sustituirlos por los suyos (Nombre común, País, Estado o
Provincia, Ciudad, nombre de la organización, Correo.. son preguntas
que tienes que responder)
Country Name (2 letter code) [US]:ES
State or Province Name (full name) [Pennsylvania]:Baleares
Locality Name (eg, city) []:Palma
Organization Name (eg, company) []:correo
(Y así.. vamos respondiendo al resto de preguntas, y a las que no quieras responder las puedes dejar en blanco con punto ".")
Si
por lo que fuera, te has equivocado en la creación del certificado,
puedes volver a iniciar el proceso con la misma instrucción que al
principio sudo /usr/lib/ssl/misc/CA.pl
-newca sin embargo, tienes que borrar primero la carpeta "demoCA" (que
estará normalmente en "/home/usuario", o, en el directorio donde estés
trabajando desde la consola)
Ahora
que ya tenemos nuestro certificado, podremos hacerle el certificado al servidor y la llave pública, a usar en el proceso de autentificación.
Aquí, es donde tenemos que sustituir lo destacado en rojo por los datos
introducidos cuando creábamos el cretificado:
sudo
openssl req -new -nodes -subj
'/CN=Tu_Nombre/O=Tu_Organizacion/C=SP/ST=BALEARES/L=PALMA/emailAddress==
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
'
-keyout FOO-key.pem -out FOO-req.pem -days 3650
CN es el nombre común que hayas usado, O es el nombre de la organización, C es el país, ST es el estado, L la ciudad, emailAddress
es la dirección del correo. Asegúrate que todas estas preguntas están
respondidas en la creación del certificado y que lo escribes
EXACTAMENTE en esta intrucción , o tu llave no autentificará.
Lo que hace esta instrucción es crearnos un certificado llamado FOO-key.pem y otro archivo requerido llamado FOO-req.pem. Este último, se usará para crear el archivo que necesitamos.
sudo openssl ca -out FOO-cert.pem -infiles FOO-req.pem
Con esto se
crea un certificado firmado para verificar nuestra identidad originada
desde el servidor. Simplemente, responde "yes" a todas las preguntas
que vayan formulándose
Finalmente, copia el certificado en la ruta /etc/postfix y asígnale los permisos necesarios:
sudo cp demoCA/cacert.pem FOO-key.pem FOO-cert.pem /etc/postfix
sudo chmod 644 /etc/postfix/FOO-cert.pem /etc/postfix/cacert.pem
sudo chmod 400 /etc/postfix/FOO-key.pem
Paso 5
Ahora, debemos ir a nuestra arcivo de configuración de Postfix y aplicar algunos cambios. Nos movemos al directorio de postfix
cd /etc/postfix
Antes de editar, hacemos un respaldo del archivo:
sudo cp main.cf main.cf.old
Editamos el archivo main.cf
sudo gedit /etc/postfix/main.cf
Copia las siguientes líneas al final del archivo main.cf
## Add these lines to the bottom on main.cf
##
##
## TLS Settings
#
# For no logs set = 0
smtp_tls_loglevel = 1
#
# smtp_enforce_tls = yes
# Above is commented because doing it site by site below
smtp_tls_per_site = hash:/etc/postfix/tls_per_site
#
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_cert_file = /etc/postfix/FOO-cert.pem
smtp_tls_key_file = /etc/postfix/FOO-key.pem
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache
smtp_use_tls = yes
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file = /etc/postfix/FOO-cert.pem
smtpd_tls_key_file = /etc/postfix/FOO-key.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
## SASL Settings
# This is going in to THIS server
smtpd_sasl_auth_enable = no
# We need this
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_local_domain = $myhostname
smtp_sasl_security_options = noanonymous
#smtp_sasl_security_options =
smtp_sasl_tls_security_options = noanonymous
smtpd_sasl_application_name = smtpd
## Gmail Relay
relayhost = [smtp.gmail.com]:587
## Good for Testing
# sender_bcc_maps = hash:/etc/postfix/bcc_table
# Disable DNS Lookups
disable_dns_lookups = yes
#
# Great New feature Address Mapping
# for example may mchirico@localhost to
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
smtp_generic_maps = hash:/etc/postfix/generic
#
#
transport_maps = hash:/etc/postfix/transport
Paso 6
En necesario asignar la clave al archivo sasl_passwd y obtener su hash para poder loguearse en Gmail. Introduce dentro del directorio /etc/postfix la siguiente instrucción:
sudo gedit sasl_passwd
Esto creará un nuevo archivo en /etc/postfix llamado sasl_passwd.
introduce en su interior:
[smtp.gmail.com]:587
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
:tu_password_gmail
(guardamos los cambios)
Ahora creamos su salida hash:
sudo postmap sasl_passwd
Paso 7
Con un procedimiento similar al anterior, creamos el archivo generic y su hash:
sudo gedit generic
e introducimos la siguiente línea:
usuario_ubuntu@usuario-desktop
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Debes reemplazar usuario_ubuntu@usuario-desktop por el nombre de
usuario con el que inicias la sesión en ubuntu y por el nombre de tu
equipo (el que hay en el archivo /etc/hostname) respectivamente. También
debes reemplazar tu_cuenta_gmail@gmail.com por tu dirección de correo Gmail.
Guardamos el archivo y obtenemos el hash
sudo postmap generic
Paso 8
Ahora, lo mismo que antes, pero con el archivo transport y su hash:
sudo gedit transport
Introducimos las siguientes líneas en el archivo:
# This sends mail to Gmail
gmail.com smtp:[smtp.gmail.com]:587
Guardamos el archivo y obtenemos el hash:
sudo postmap transport
Paso 9
Necesitamos crear el archivo tls_per_site y su hash. Esto es
posiblemente el archivo más importante a crear después del main.cf.
Este archivo, nos protegerá de posibles ataques por forzar una conexión
segura antes de enviar cualquier contraseña.
Creamos el archivo:
sudo gedit tls_per_site
Introducimos:
smtp.gmail.com MUST
p>
(el espacio antes de la "p>" es necesario o pueden saltar errores)
Guardamos el archivo y vamos a por el hash :
sudo postmap tls_per_site
Paso 10
Abrimos el archivo master.cf con:
sudo gedit master.cf
Y buscamos una línea en la que se lee lo siguente:
relay unix - - n - - smtp
Vas a ver algunas configuraciones que empiezan con '-o', y se trata
de añadir una nueva entrada, justo por debajo, que contenga esto:
-o smtp_generic_maps=
(guardamos el archivo)
Recargamos Postfix
sudo postfix reload
(si postfix no estuviera ejecutaándose, la instrucción anterior, debería sustituirse por esta otra sudo postfix start ). Arggggggh
Tararí tarariiiiiiiií, Fín :)
Nota informativa: Valorar
los artículos o noticias que vayas leyendo, aunque no ofrezca lecturas
reales, pues no todo el que lee algo, lo valora dejando constancia;
puede ayudar sensiblemente a esta web a la hora dar prioridad a las
nuevas publicaciones, según el interés que despierten otras de
referencia y su valoración recibida . Por favor, considéralo, solo toma
unos segundos.
También si te interesa, puedes ayudar a
incrementar/modificar/actualizar/rectificar la información desde una
base lo más real posible, dejando tus aportes, dudas o comentarios en
el foro general, sin para ello tener que estar registrado. Gracias!
Un cordial saludo. Valc
|