miércoles, 5 de noviembre de 2014

Servidor Mail Seguro Anexo I

Posibles errores y soluciones

 Es conveniente, en diversos puntos de la guía, pararnos a comprobar el funcionamiento de lo que tenemos configurado hasta el momento, y se hace imprescindible poner todo a prueba antes de abrir los puertos que permitan el acceso público a nuestro servidor. En este apartado vamos a probar el correcto funcionamiento de cada parte de los componentes de nuestro servidor de correo electrónico y las formas de revisar los registros del sistema  en caso de fallos, que nos den pistas sobre la posible causa del error.

 Primero vamos a reiniciar los servicios para que los cambios de configuración surtan efecto:
sudo /etc/init.d/mysql restart
sudo /etc/init.d/postfix restart
sudo /etc/init.d/courier-imap-ssl restart
sudo /etc/init.d/courier-imap restart
sudo /etc/init.d/courier-authdaemon restart

Crear un usuario para las pruebas en la base de datos.

Si venimos de la parte III del manual, todavía no hemos creado ningún usuario virtual, así que, difícilmente vamos a poder poner a prueba nuestro servidor. Vamos a crear un usuario, sea cual sea, que bien nos puede servir solo para probar lo que llevamos hecho hasta ahora y lo eliminaremos cuando hayamos concluido el manual, o bien se puede hacer algo más que un corta y pega, y crear el vuestro propio y definitivo. Vamos a ello.
 Nos conectamos a la base de datos de nuestro servidor:
mysql -u mail -p maildb
 Nos identificamos con la contraseña del usuarios creado para realizar las consultas e introducimos el siguiente código que generará un dominio virtual correspondiente a nuestro propio dominio de internet. Sobra decir que tudominio.com ha de ser una dirección de dominio real.
INSERT INTO domains (domain) VALUES
('tudominio.com');
 Para el usuario 'test' con contraseña 'test1234'
INSERT INTO users (id,name,maildir,crypt) VALUES
('test@tudominio.com','test','test/',encrypt('test1234', CONCAT('$5$', MD5(RAND()))) );
  Y para terminar, creamos entradas en la table de aliases.
INSERT INTO aliases (mail,destination) VALUES
('pruebas@tudominio.com','test@tudominio.com'),
('test@tudominio.com','test@tudominio.com');
 Con aliases, en la primera entrada de la tabla, hemos enlazado la dirección pruebas@tudominio.com con la dirección del usuario test. La segunda entrada es para que se dé como final la dirección test@tudominio.com

 Recuerda que para ver las tablas se usa el comando describe seguido del nombre de la tabla a mostrar. Para eliminar una entrada se usa; DELETE FROM seguido del nombre de la tabla WHERE y la condición, es decir,  columna = fila. Por ejemplo: DELETE FROM  users WHERE name = 'test'

 Con esto queda configurado el usuario de prueba. Lo recordaré al final de la guía pero no está de más hacerlo aquí también. Si has usado el nombre de usuario y la contraseña del ejemplo,
NO OLVIDES ELIMINAR LA ENTRADA EN LA TABLA ANTES DE EXPONER EL SERVIDOR A INTERNET.

Comprobando el funcionamiento del servidor MTA (Postfix):

 ¿Puede Postfix recibir correo? Esto es lo primero que vamos a averiguar. Para ello nos vamos a servir de Telnet, que nos permitirá realizar una conexión manual al puerto de escucha SMTP.
telnet localhost 25

 Si todo va bien, el servidor nos contestará con el código 220 seguido de su nombre y el prompt quedará esperando nuestra respuesta:
chaosnet@lamula:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 lamula.thedarknode.es ESMTP Postfix (Ubuntu)
# Introducimos el saludo
EHLO lamula.thedarknode.es
250-lamula.thedarknode.es
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
# La respuesta anterior del servidor puede variar según lo que
# tengamos configurado hasta ahora.
# Ahora indicamos al servidor que queremos dejar un correo e indicamos
# su dirección de origen. No tiene por qué ser real para las pruebas.
MAIL FROM: <test@dominiodeprueba.com>                                  
250 2.1.0 Ok
# Si todo va bien nos devolverá un Ok y seguiremos con la dirección de destino
RCPT TO: <chaosnet@thedarknode.es>
250 2.1.5 Ok
# Otro Ok nos sirve para pasar al comando para dar el contenido del mensaje.
data
354 End data with <CR><LF>.<CR><LF>
# Escribimos en cuerpo y salimos con una linea de un solo punto
Esto es una prueba de recepción de correo para nuestro servidor Postfix.
Visita http://blog.thedarknode.es !!
.
250 2.0.0 Ok: queued as 2629A581177
# Tras un nuevo Ok indicándonos que el mensaje a sido aceptado y puesto
# en cola, cerramos la conexión con un;
quit
221 2.0.0 Bye
Connection closed by foreign host.
chaosnet@lamula:~$
 Esto, si lo acompañamos en otra terminal de un
tail -f -n 30 /var/log/mail.log
 Y abrimos una tercera para:
tail -f -n 30 /var/log/mysql/mysql.log
 Nos debería bastar para ver los errores que pudiese haber en nuestra configuración.

 ¿Puede Postfix enviar correo? Vamos a comprobarlo:
chaosnet@lamula:~$ telnet localhost 25
...
Connected to localhost.
Escape character is '^]'.
220 lamula.thedarknode.es ESMTP Postfix (Ubuntu)
EHLO lamula.thedarknode.es
250-lamula.thedarknode.es
250-PIPELINING
...
# Aquí esta vez damos una dirección válida en nuestro servidor
MAIL FROM: <chaosnet@thedarknode.es>
250 2.1.0 Ok
# Y aquí dejamos una dirección en internet a la que tengamos acceso
RCPT TO: <mail@real.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Esto es una prueba de envio de correo para nuestro servidor Postfix.
Visita http://blog.thedarknode.es !!
.
250 2.0.0 Ok: queued as 85EE2581189
quit
221 2.0.0 Bye
Connection closed by foreign host.
 Comprobando el registro de /var/log/mail.log y nuestra cuenta de correo a la que enviamos el mensaje, verificaremos si hay errores y cuales son.

Comprobando Courier.

Antes de proceder con esta comprobación tenemos que estar seguros de que Postix puede enviar y recibir correo correctamente. Si ya lo has comprobado, procedemos a enviar una conexión telnet al puerto IMAP 143.
chaosnet@lamula:~$ telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc.  See COPYING for distribution information.
 Si la salida es parecida a esa, el demonio está escuchando de manera correcta, de lo contrario habría que revisar los logs.

 El resto ha de ser probado por un cliente de correo externo cuando se abra el servidor a internet.

 Si existe algún problema que no saben resolver, recomiendo en primer lugar repasar la configuración en busca de pasos omitidos o errores tipográficos.

Saludos y hasta la próxima.

No hay comentarios:

Publicar un comentario