Está en la página 1de 17

Monitorización Nagios.

Índice de contenido

Monitorización Nagios .........................................................................................................................1 1.Instalación de Nagios....................................................................................................................1 2.Entrar en la interface Web.............................................................................................................4 3.Monitorizar los servicios..............................................................................................................5 4.Modificar el fichero de configuración........................................................................................10 5.Configurar cuenta de correo .......................................................................................................12 6.Configurar postfix a través de un relay host autenticado (Gmail) ..............................................13 7.Otras herramientas de monitorización a probar ..........................................................................17

  • 1. Instalación de Nagios

Paso 1. Antes de empezar a instalar Nagios en Ubuntu es necesario instalar otros paquetes:

Apache 2 (instalado)

PHP (instalado)

GCC: librerías de desarrollo y compilación (instalado)

GD: librerías de desarrollo. Instalamos el siguiente paquete

$ sudo apt-get install libgd2-xpm-dev $ sudo /etc/init.d/apache2 restart

Paso 2. Crear información de cuenta de usuario

Después, para poder instalar Nagios en Ubuntu lo primero que debemos hacer es entrar como root:

$ sudo su

Creamos una nueva cuenta de usuario "nagios" y contraseña:

$ /usr/sbin/useradd -m -s /bin/bash nagios

Con la opción "/bin/bash" indicamos que intérprete de comandos usaremos.

Le damos un password, que introduciremos dos veces (la misma que moodle):

$ passwd nagios

Para versiones anteriores a la 6.01 es necesario crear un grupo (los que tenéis versiones posteriores podeis saltaros y pasar a crear el siguiente grupo, ya que Ubuntu lo hace automáticamente)

$ /usr/sbin/usermod -G nagios nagios

Creamos un nuevo grupo nagcmd, para permitir comandos externos:

$ /usr/sbin/groupadd nagcmd

Metemos al usuario nagios en el grupo nagcmd:

$ /usr/sbin/usermod -a -G nagcmd nagios

Metemos al usuario de apache www-data en el grupo nagcmd, ya que la aplicación lo necesita para hacer sus gestiones:

$ /usr/sbin/usermod -a -G nagcmd www-data

Paso 3 - Compilar e Instalar Nagios en Ubuntu

Una vez que ya hemos preparado el sistema para instalar Nagios en Ubuntu podemos empezar con la compilación e instalación del mismo.

Vamos a donde hemos instalado los paquetes. Descomprimimos el paquete de nagios (buscar la última versión):

 

$ wget

http://downloads.sourceforge.net/project/nagios/nagios-3.x/nagios-3.4.1/nagios-

3.4.1.tar.gz

 

$ tar xzf

nagios-3.4.1.tar.gz

 

Accedemos a la carpeta que acabamos de descomprimir:

 

$ cd nagios

 

Ejecutamos el script de configuración de Nagios pasándole el nombre del grupo que acabamos de crear:

$ ./configure --with-command-group=nagcmd

Compilamos el código fuente de Nagios:

$ make all

Por último, instalamos los archivos binarios de Nagios en Ubuntu:

$ make install

Ahora vamos instalar otros scripts y configuraciones que nos serán de utilidad más adelante. Instalar script de inicio:

$ make install-init

Instalar ejemplos de ficheros de configuracion:

$ make install-config

Dar permisos al directorio de comandos externos:

$ make install-commandmode

Paso 4 - Configurar la Interfaz Web

Ahora debemos configurar Nagios para poder acceder a él vía interfaz web.

Instalamos el archivo de configuración de Nagios para Apache. Con esto conseguimos poder ver la interfaz web de Nagios en Apache:

$ make install-webconf

Creamos un usuario (

Paso 3 - Compilar e Instalar Nagios en Ubuntu Una vez que ya hemos preparado el

nagiosadmin) que pueda acceder vía web a Nagios:

nagiosadmin
nagiosadmin

$ htpasswd -c /usr/local/nagios/etc/htpasswd.users

NOTA: no olvidar el password ya que lo necesitaremos luego Reiniciamos apache para que los cambios surtan efecto:

$ /etc/init.d/apache2 reload

Paso 5 - Compilar e Instalar los plugins de Nagios

Una vez que hemos configurado e instalado Nagios en Ubuntu vamos a la carpeta donde tenemos el paquete de los plugins y descomprimimos el paquete de la misma forma que lo hemos hecho antes para poder instalarlos:

 

$ cd ..

 

$ wget

http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-

1.4.16.tar.gz

 

$ tar xzf

nagios-plugins-1.4.16.tar.gz

 

Entramos a la carpeta que acabamos de descomprimir:

 

$ cd

nagios-plugins-1.4.16

 

Compilamos e instalamos los plugins:

$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-

openssl=/usr/bin/openssl --enable-perl-modules

Con "with openssl" habilitamos el soporte para SSL. Con "enable-perl-modules" habilitamos los módulos de perl para poder trabajar con perl.

Por último, instalamos:

$ make $ make install

Paso 6 - Inicio de Nagios en Ubuntu

Ahora vamos a configurar Nagios para que se inicie automáticamente junto con Ubuntu. Para ello usamos el script que hemos generado antes con "make install-init":

$ ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Verificamos que las configuraciones e instalación de Nagios en Ubuntu están bien, si hubieramos configurado algo mal durante la instalación sería en este punto donde aparecerían los errores:

$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Total Warnings: 0

Total Errors:

0

Si no tenemos errores iniciamos Nagios:

$ /etc/init.d/nagios start

2.

Entrar en la interface Web

Si todo ha ido bien ahora tendríamos que poder entrar a Nagios por un explorador Web. Abrimos un explorador web y entramos en (poner tu ip/localhost o nombre de dominio):

2. Entrar en la interface Web Si todo ha ido bien ahora tendríamos que poder entrarhttp:// www.iessietepalmas.com /nagios/ Nos pedirá el nombre de usuario ( nagiosadmin) con la contraseña que hemos elegido en el paso 4. Si vamos a "Services" (lo podéis encontrar en el menú izquierdo) veremos el estado de los servicios que se están ejecutando. Los servicios en Nagios tienen 4 estados diferentes: OK: Todo en orden WARNING: Se ha alcanzado el umbral de alerta, pero no se ha llegado al umbral de crítico CRITICAL: Se ha superado el umbral crítico o el plugin interrumpe el test después de un tiempo UNKNOWN: Ha ocurrido un error en el plugin. Por ejemplo, se ha utilizado un parámetro erróneo. Si tenemos un estado en critical puede ser porque no este instalado o que no este iniciado. " id="pdf-obj-3-9" src="pdf-obj-3-9.jpg">

Nos pedirá el nombre de usuario (

2. Entrar en la interface Web Si todo ha ido bien ahora tendríamos que poder entrarhttp:// www.iessietepalmas.com /nagios/ Nos pedirá el nombre de usuario ( nagiosadmin) con la contraseña que hemos elegido en el paso 4. Si vamos a "Services" (lo podéis encontrar en el menú izquierdo) veremos el estado de los servicios que se están ejecutando. Los servicios en Nagios tienen 4 estados diferentes: OK: Todo en orden WARNING: Se ha alcanzado el umbral de alerta, pero no se ha llegado al umbral de crítico CRITICAL: Se ha superado el umbral crítico o el plugin interrumpe el test después de un tiempo UNKNOWN: Ha ocurrido un error en el plugin. Por ejemplo, se ha utilizado un parámetro erróneo. Si tenemos un estado en critical puede ser porque no este instalado o que no este iniciado. " id="pdf-obj-3-15" src="pdf-obj-3-15.jpg">

nagiosadmin) con la contraseña que hemos elegido en el paso 4.

2. Entrar en la interface Web Si todo ha ido bien ahora tendríamos que poder entrarhttp:// www.iessietepalmas.com /nagios/ Nos pedirá el nombre de usuario ( nagiosadmin) con la contraseña que hemos elegido en el paso 4. Si vamos a "Services" (lo podéis encontrar en el menú izquierdo) veremos el estado de los servicios que se están ejecutando. Los servicios en Nagios tienen 4 estados diferentes: OK: Todo en orden WARNING: Se ha alcanzado el umbral de alerta, pero no se ha llegado al umbral de crítico CRITICAL: Se ha superado el umbral crítico o el plugin interrumpe el test después de un tiempo UNKNOWN: Ha ocurrido un error en el plugin. Por ejemplo, se ha utilizado un parámetro erróneo. Si tenemos un estado en critical puede ser porque no este instalado o que no este iniciado. " id="pdf-obj-3-19" src="pdf-obj-3-19.jpg">

Si vamos a "Services" (lo podéis encontrar en el menú izquierdo) veremos el estado de los servicios que se están ejecutando.

Los servicios en Nagios tienen 4 estados diferentes:

OK: Todo en orden WARNING: Se ha alcanzado el umbral de alerta, pero no se ha llegado al umbral de crítico CRITICAL: Se ha superado el umbral crítico o el plugin interrumpe el test después de un tiempo UNKNOWN: Ha ocurrido un error en el plugin. Por ejemplo, se ha utilizado un parámetro erróneo.

Si tenemos un estado en critical puede ser porque no este instalado o que no este iniciado.

2. Entrar en la interface Web Si todo ha ido bien ahora tendríamos que poder entrarhttp:// www.iessietepalmas.com /nagios/ Nos pedirá el nombre de usuario ( nagiosadmin) con la contraseña que hemos elegido en el paso 4. Si vamos a "Services" (lo podéis encontrar en el menú izquierdo) veremos el estado de los servicios que se están ejecutando. Los servicios en Nagios tienen 4 estados diferentes: OK: Todo en orden WARNING: Se ha alcanzado el umbral de alerta, pero no se ha llegado al umbral de crítico CRITICAL: Se ha superado el umbral crítico o el plugin interrumpe el test después de un tiempo UNKNOWN: Ha ocurrido un error en el plugin. Por ejemplo, se ha utilizado un parámetro erróneo. Si tenemos un estado en critical puede ser porque no este instalado o que no este iniciado. " id="pdf-obj-3-29" src="pdf-obj-3-29.jpg">

3.

Monitorizar los servicios

Realizamos modificaciones en los ficheros para monitorizar el

servidor7p ( 172.31.22.100
servidor7p ( 172.31.22.100

) y quitar

localhost, también añadiremos más servicios a monitorizar y los routers.

Empezaremos chequeando el servidor por su dirección IP, y testearemos todos los servicios instalados en los apartados anteriores, más algunos del sistema.

Todo servicio hay que añadirle el comando apropiado, por eso tenemos que ir al archivo commands.cfg. Ejemplo para el SSH estará el comando

$ cat /usr/local/nagios/etc/objects/commands.cfg # 'check_ssh' command definition define command{

command_name

check_ssh
check_ssh

command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$ }

Ejemplo crear un nuevo chequeo para el squid

define command{

 

command_name

 

check_squid

 

command_line -e 'HTTP/1.0 200 OK' }

$USER1$/check_http -H $HOSTADDRESS$ -p 3128 -u http://www.google.es

Podemos hacer nuestros ejemplos de chequeos antes de ponerlos en el fichero de la siguiente forma, por ejemplo el servicio proxy:

$ cd /usr/local/nagios/libexec

 

$ ./check_http -H

172.31.22.100

-p 3128 -u http://www.google.es -e 'HTTP/1.0 200 OK'

HTTP OK: La salida de línea de estado concuerda «HTTP/1.0 200 OK» - 13905 bytes en 0,600 segundo tiempo de respuesta |time=0,599646s;;;0,000000 size=13905B;;;0

Si paramos el servicio:

 

./check_http -H

172.31.22.100

-p 3128 -u http://www.google.es -e 'HTTP/1.0 200 OK'

Conexión rehusada HTTP CRÍTICO - Imposible abrir el zócalo TCP

 

Comando para chequear HTTPS

define command{ command_name command_line }

check_https $USER1$/check_http -H $HOSTADDRESS$ -S

Comandos para chequear los ping a los alias

# 'check_ping11100' Ping a 172.31.11.100 command definition define command{

command_name

check_ping11100

command_line

$USER1$/check_ping -H 172.31.11.100 -w 100.0,20% -c 500.0,60% -p 5

}

# 'check_ping12100' Ping a 172.31.12.100 command definition define command{

command_name

check_ping12100

command_line

$USER1$/check_ping -H 172.31.12.100 -w 100.0,20% -c 500.0,60% -p 5

}

# 'check_ping11100' Ping a 172.31.21.100 command definition

define command{ command_name command_line }

check_ping21100

$USER1$/check_ping -H 172.31.21.100 -w 100.0,20% -c 500.0,60% -p 5

# 'check_ping11100' Ping a 172.31.22.100 command definition define command{

command_name check_ping22100 command_line $USER1$/check_ping -H 172.31.22.100 -w 100.0,20% -c 500.0,60% -p 5 } • Comando para
command_name
check_ping22100
command_line
$USER1$/check_ping -H 172.31.22.100 -w 100.0,20% -c 500.0,60% -p 5
}
Comando para chequear el DNS
define command{
command_name
command_line
}
check_dns
$USER1$/check_dns -H $ARG1$ -a $ARG2$
Comando para comprobar las carpetas compartidas
define command {
command_name
command_line
$ARG3$ -w 85 -c 95
}
check_samba_disk
$USER1$/check_disk_smb -H $HOSTADDRESS$ -s $ARG1$ -u $ARG2$ -p
Por último hacemos una prueba de descargar un comando que no está e instalarlo, en este
caso para testear una base de datos necesitaremos el comando check_mysql
$ wget http://labs.consol.de/wp-content/uploads/2011/08/check_mysql_health-2.1.7.tar.gz
$ tar -zxf check_mysql_health-2.1.7.tar.gz
$ cd check_mysql_health-2.1.7/
$ sudo ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
--with-perl=/usr/bin/perl
$ sudo make
$ sudo make install
$ ls /usr/local/nagios/libexec/ | grep mysql
check_mysql_health
Ahora lo utilizamos para testear una base de datos, para ello creamos el comando en el
mismo fichero que antes (commands.cfg).
define command {
command_name
command_line
check_mysql
$USER1$/check_mysql_health -H $ARG1$ --username $ARG2$ --password
$ARG3$ --port $ARG4$ --mode $ARG5$
}
Ejemplo de uso:
$ ./check_mysql_health -H 127.0.0.1 --username usuario --password contraseña --port 3306 --mode
connection-time
OK - 0.03 seconds to connect as usuario | connection_time=0.0295s;1;5
Servidor7p.
Los servicios que vamos a chequear, y están señalados en el fichero
$ cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/ servidor7p.cfg
$
chown
nagios: /usr/local/nagios/etc/objects/ servidor7p.cfg
$ chmod 664 /usr/local/nagios/etc/objects/ servidor7p.cfg

$ vim /usr/local/nagios/etc/objects/

servidor7p.cfg
servidor7p.cfg

define host{ use

linux-server

; Name of host template to use

host_name

servidor7p
servidor7p

alias

linux

icon_image

linux40.jpg

statusmap_image

linux40.jpg

address

172.31.22.100

 

}

define hostgroup{ hostgroup_name nagios ; The name of the hostgroup

 

alias

linux ; Long name of the group

 
 

#

members

servidor7p
servidor7p

; Comma separated list of hosts that belong to this group

 

}

Ping a la máquina local

 

define service{

 

use

local-service

 

; Name of service template to use

host_name

servidor7p

 

service_description

PING

172.31.22.100

 

check_command }

check_ping!100.0,20%!500.0,60%

Ping a cada uno de los alias

define service{

 
 

use

local-service

 

; Name of service template to use

host_name

 

servidor7p

PING

172.31.11.100

 
 

service_description check_command }

define service{

define service{

check_ping11100!100.0,20%!500.0,60%

use

local-service

 

; Name of service template to use

host_name

 

servidor7p

service_description

PING

172.31.12.100

 

check_command }

check_ping12100!100.0,20%!500.0,60%

use

local-service

 

; Name of service template to use

host_name

 

servidor7p

 

service_description

PING

172.31.21.100

 

check_command }

check_ping21100!100.0,20%!500.0,60%

Chequeamos el espacio en disco de la partición root (/). Warning si tenemos menos del 20% libre y crítico si tenemos menos del 10% libre.

define service{

 
 

use

local-service

 

; Name of service template to use

host_name

servidor7p
servidor7p
 

service_description

Root Partition

 

check_command

check_local_disk!20%!10%!/

}

Chequeamos el espacio en disco de la partición home (/home). Warning si tenemos menos del 20% libre y crítico si tenemos menos del 10% libre.

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Home Partition

check_command check_local_disk!20%!10%!/home }

Chequeamos el espacio en disco de la partición home (/copias). Warning si tenemos menos del 20% libre y crítico si tenemos menos del 10% libre.

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Home Partition

check_command check_local_disk!20%!10%!/copias }

Chequeamos número de usuarios logeados en el sistema. Warning si es > 20 usuarios y crítico si es >50 usuarios.

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Current Users

check_command }

check_local_users!20!50

Chequeamos el número de procesos en la máquina. Warning si es > 250 y crítico si es mayor de 400.

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Total Processes

check_command check_local_procs!250!400!RSZDT }

Chequeamos la carga actual

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Current Load

check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 }

Chequeamos la swap. Warning si queda menos del 20% y crítica si queda menos del 10%.

define service{ use host_name service_description check_command }

local-service

servidor7p
servidor7p

; Name of service template to use

Swap Usage

check_local_swap!20!10

Chequeamos el servicio SSH

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

SSH

check_command }

check_ssh

Chequeamos el servicio HTTP

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

HTTP

check_command }

check_http

Chequeamos el servicio HTTPS

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

HTTPS

check_command }

check_https

Chequeamos el servicio SQUID

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

Proxy_Squid

check_command }

check_squid

Chequeamos el servicio FTP

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

FTP

check_command }

check_ftp

Chequeamos el servicio POP

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

POP

check_command }

check_pop

Chequeamos el servicio IMAP

 

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

IMAP

check_command

check_imap

}

Chequeamos el servicio SMTP

define service{ use

local-service

; Name of service template to use

host_name

servidor7p
servidor7p

service_description

SMTP

check_command }

check_smtp

Chequeamos el servicio DNS

define service{ use

local-service

; Name of service template to use

host_name

servidor7p

 

service_description

DNS

check_command

check_dns!

www.iessietepalmas.com

! 127.0.0.1
!
127.0.0.1

}

Chequeamos el servicio Mysql

define service{ use host_name service_description check_command connection-time }

local-service

servidor7p MYSQL usuario
servidor7p
MYSQL usuario

check_mysql!127.0.0.1!

usuario !
usuario !

contraseña!3306!

Chequeamos las carpetas compartidas. Solo voy a chequear una, la de utilidades, si está compartida se asume que las demás también lo están.

define service{ use host_name service_description check_command }

local-service

  • servidor7p

; Name of service template to use

SAMBA utilidades check_samba_disk!utilidades!

usuario ! contraseña
usuario ! contraseña
  • 4. Modificar el fichero de configuración

En el fichero de configuración cambiamos y añadimos las siguientes líneas

$ vim /usr/local/nagios/etc/nagios.cfg # Definitions for monitoring the local (Linux) host #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

} • Chequeamos el servicio SMTP define service{ use local-service ; Name of service template tohttps:// www.iessietepalmas.com /nagios $ /etc/init.d/nagios restart " id="pdf-obj-9-116" src="pdf-obj-9-116.jpg">

cfg_file=/usr/local/nagios/etc/objects/servidor7p.cfg

Reiniciamos el servicio y después de los chequeos si está todo ok tendríamos el siguiente resultado

   

$ /etc/init.d/nagios restart

Hacemos lo mismo para testear la ADSL $ cp /usr/local/nagios/etc/objects/switch.cfg /usr/local/nagios/etc/objects/router.cfg $ chmod 664 /usr/local/nagios/etc/objects/router.cfg $

Hacemos lo mismo para testear la ADSL

$ cp /usr/local/nagios/etc/objects/switch.cfg /usr/local/nagios/etc/objects/router.cfg $ chmod 664 /usr/local/nagios/etc/objects/router.cfg $ chown nagios: /usr/local/nagios/etc/objects/router.cfg $ vim /usr/local/nagios/etc/objects/router.cfg

Voy a añadir un comando para chequear si hay internet, y aunque lo ponga en el host router, realmente lo estamos comprobando en el host del servidor, pero es para que se vea más claro

define command{ command_name command_line

check_internet $USER1$/check_http -H google.es -u http://www.google.es

El fichero del router finalmente quedará así (nota no tienes acceso a la adsl del centro, dará crítico)

$ cat /usr/local/nagios/etc/objects/router.cfg define host{

use

generic-switch

host_name

routermov

alias

address

172.30.0.1

icon_image

statusmap_image

hostgroups

switches

}

define service{

use

host_name

Hacemos lo mismo para testear la ADSL $ cp /usr/local/nagios/etc/objects/switch.cfg /usr/local/nagios/etc/objects/router.cfg $ chmod 664 /usr/local/nagios/etc/objects/router.cfg $

; Inherit default values from a template

; The name we're giving to this switch

Router Movistar ; A longer name associated with the switch

; IP address of the switch

router40.jpg

router40.jpg

; Host groups this switch is associated with

generic-service ; Inherit values from a template

routermov
routermov

; The name of the host the service is associated with

service_description

PING

; The service description

check_command

check_ping!200.0,20%!600.0,60%

normal_check_interval

5

retry_check_interval

1

}

define service{ use

local-service

; Name of service template to use

host_name

routermov

service_description

INTERNET

check_command }

check_internet

El gráfico quedará así.

normal_check_interval 5 retry_check_interval 1 } define service{ use local-service ; Name of service template to use

Más cosas a monitorizar podría ser la otra ADSL y los puntos de acceso Wifi.

  • 5. Configurar cuenta de correo.

Falta solo configurar para que llegue los mensajes de error al correo. Para eso tenemos que definir el contacto en el archivo contacts.cfg

$ vim /usr/local/nagios/etc/objects/contacts.cfg define contact{

contact_name

nagiosadmin

; Short name of user

use

generic-contact

alias

Nagios Admin

; Full name of user

email

cuentadecorreo@gmail.com

 

}

$ /etc/init.d/nagios restart

Nota: para que llegue debe estar correctamente configurado el servidor de correo (postfix, en este caso estamos utilizando el relayhost de gmail).

Ejemplo, si paramos el servicio de samba, en nagios aparecerá:

normal_check_interval 5 retry_check_interval 1 } define service{ use local-service ; Name of service template to use

Nos llegará el siguiente correo (para ello debe estar bien configurado el servidor de correo, será necesario realizar el siguiente apartado):

Para chequear la configuración de nagios, y ver la versión y demás ejecutaremos lo siguiente: $

Para chequear la configuración de nagios, y ver la versión y demás ejecutaremos lo siguiente:

$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

  • 6. Configurar postfix a través de un relay host autenticado (Gmail).

En principio sería posible instalar un servidor de correo en cualquier equipo conectado a Internet con una dirección IP pública, pero debido al problema del spam, mucho de los servidores de correo de Internet bloquean el correo no autenticado que venga de direcciones IP dinámicas, que son las habituales en conexiones domésticas, que es el caso del instituto.

Una solución es instalar un servidor de correo que no envíe directamente el correo al servidor destino, sino que utilice el equipo smtp.gmail.com para que retrasmita (relay) sus mensajes.

Si tratamos de enviar un correo desde efren@iessietepalmas.com a tucorreo @gmail.com recibiremos el siguiente correo desde
Si tratamos de enviar un correo desde efren@iessietepalmas.com a tucorreo @gmail.com
recibiremos el siguiente correo desde gmail:

Que viene a decir si hacemos clic en el enlace:

"La dirección IP que utilizas para enviar correos electrónicos no está autorizada

"

...

Gmail rechaza el correo cuando la dirección IP de envío no coincide con el dominio de envío a fin de evitar el spam. Para enviar correo desde tu servidor a Gmail, te sugerimos que utilices el relevo SMTP1 que te haya proporcionado el ISP. Ten en cuenta que no podemos crear una lista blanca de direcciones IP ni hacer excepciones en este momento.

Así que eso es lo que vamos a hacer, utilizar el servidor SMTP de gmail para reenviar nuestro correo, y al final realizaremos la prueba.

Características de la conexión

Para enviar correo utilizando el servidor SMTP de Gmail la conexión tiene que estar cifrada con TLS, para lo que debemos añadir la Autoridad Certificadora adecuada (en este caso Thawte, aunque parece que ahora utilizar Equifax como autoridad certificadora) y autenticada, para lo que utilizaremos un nombre de usuario (dirección de correo) y contraseña del servicio.

Empezamos: configuración de main.cf

Modificamos las siguientes líneas:

$ sudo vim /etc/postfix/main.cf relayhost = [smtp.gmail.com]:587

Donde indicamos el nombre del equipo que retransmitirá nuestro mensajes (los corchetes ([ ]) son para que no haga la resolución MX) y el puerto de la conexión es el que se utiliza para la conexión entre un cliente y un servidor SMTP (587/TCP message submission).

smtp_use_tls=yes smtp_tls_CAfile = /etc/postfix/certs/cacert.pem

Para que utilice TLS al enviar correo y confíe en las autoridades certificadoras que se añadan al fichero cacert.pem

smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous

donde le decimos a postfix que debe autenticarse mediante SASL y especificamos la ubicación del fichero con la información del nombre de usuario y contraseña.

Datos de autenticación

Creamos el fichero /etc/postfix/sasl_passwd con el siguiente contenido:

$ sudo su

$ vim /etc/postfix/sasl_passwd

[smtp.gmail.com]:587

tucorreo
tucorreo

@gmail.com:

password
password

$ chmod 600 /etc/postfix/sasl_passwd

El fichero de configuración hay que transformarlo a un fichero indexado de tipo hash mediante la instrucción, que creará el fichero /etc/postfix/sasl_passwd.db

$ postmap /etc/postfix/sasl_passwd

Crear archivo de alias, /etc/postfix/generic

$ vim /etc/postfix/generic efren@iessietepalmas.com

tucorreo
tucorreo

@gmail.com

$ chmod 600 /etc/postfix/generic $ postmap /etc/postfix/generic

Como he realizado bastantes cambios, pongo cual es finalmente el contenido entero del fichero.

$ cat /etc/postfix/main.cf # See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name biff = no

# appending .domain is the MUA's job. append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h

readme_directory = no

inet_interfaces = all

myhostname =

servidor7p.iessietepalmas.com

 

myorigin = /etc/mailname

 

mydestination =

iessietepalmas.com

, servidor7p, localhost.localdomain, localhost

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

#192.168.100.100

alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mailbox_size_limit = 0 recipient_delimiter = +

# SMTP relayhost relayhost = [smtp.gmail.com]:587 #relayhost =

## TLS Settings smtp_tls_loglevel = 1 smtp_tls_CAfile = /etc/postfix/certs/CAcert.pem smtp_tls_cert_file = /etc/postfix/certs/mycert.pem smtp_tls_key_file = /etc/postfix/certs/mykey.pem smtp_use_tls = yes smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # configuracao tls #smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous

smtpd_tls_CAfile = /etc/postfix/certs/CAcert.pem smtpd_tls_cert_file = /etc/postfix/certs/mycert.pem smtpd_tls_key_file = /etc/postfix/certs/mykey.pem #smtpd_tls_received_header = yes smtpd_use_tls = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

# alias de mapeamento interno para externo smtp_generic_maps = hash:/etc/postfix/generic

smtpd_sasl_type = dovecot smtpd_sasl_path = private/dovecot-auth smtpd_sasl_authenticated_header = yes #smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sender_restrictions = reject_unknown_sender_domain mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-mail-stack- delivery.conf -m "${EXTENSION}" smtpd_tls_received_header = yes smtpd_tls_mandatory_protocols = SSLv3, TLSv1 smtpd_tls_mandatory_ciphers = medium smtpd_tls_auth_only = yes tls_random_source = dev:/dev/urandom

Creamos los certificados

Durante la creación de los certificados serán consultados algunos datos de manera interactiva, el único dato que el obligatorio es Country Name (2 letter code) [AU]:CL

$ mkdir /etc/postfix/certs/ $ cd /etc/postfix/certs/ $ openssl dsaparam 1024 -out dsa1024.pem $ openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out mycert.pem -keyout

mykey.pem

 

$ ln -s

mycert.pem

CAcert.pem

smtpd_tls_CAfile = /etc/postfix/certs/CAcert.pem smtpd_tls_cert_file = /etc/postfix/certs/mycert.pem smtpd_tls_key_file = /etc/postfix/certs/mykey.pem #smtpd_tls_received_header = yes smtpd_use_tls = yes smtpd_tls_session_cache_database

$ openssl req -x509 -new -days 3650 -key /etc/postfix/certs/mykey.pem

smtpd_tls_CAfile = /etc/postfix/certs/CAcert.pem smtpd_tls_cert_file = /etc/postfix/certs/mycert.pem smtpd_tls_key_file = /etc/postfix/certs/mykey.pem #smtpd_tls_received_header = yes smtpd_use_tls = yes smtpd_tls_session_cache_database

/etc/postfix/certs/mycert.pem

$ rm dsa1024.pem

-out

Utilización del certificado adecuado

Para añadir la autoridad certificadora Thawte (y Equifax) al fichero de certificados que utilizará postfix, hacemos:

$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem >> /etc/postfix/certs/

$ cat /etc/ssl/certs/Equifax_Secure_CA.pem >> /etc/postfix/certs/

 

CAcert.pem

CAcert.pem

 

y reiniciamos el demonio de postfix (bastará hacer reload).

$ /etc/init.d/postfix restart

Pruebas de funcionamiento. Podemos realizarla desde consola o desde la aplicación horde.

$ echo "contenido correo" | mail -s "asunto"

correo@yahoo.es

La desventaja es que envíe quien envíe el correo al remitente siempre le va a aparecer la dirección que se utiliza en el relay, y no la verdadera, con lo que no podrá recibir la respuesta correctamente.

  • 7. Otras herramientas de monitorización a probar.

Sería interesante seguir la guía de ubuntu y probar otras herramientas de monitorización (posibles trabajos de integración como:

Munin.

Ossim.

Zabbix.