miércoles, 20 de enero de 2010

FreeBSD 7.x: Enviar correos con SSMTP

Aqui de regreso, esta vez tengo un servidor de respaldo con bacula+mysql, bacula es muy comunicativo, siempre desea hacernos saber que va haciendo, desde un cambio de cinta hasta cuando un cliente no respondio.

Utiliza una utileria de nombre bsmtp, si leen el archivo de configuracion del director(bacula-dir.conf), se daran cuenta de ese comando.

Bien, por default FreeBSD y sus hermanos hacen uso de Sendmail para esto, mas necesitamos acessar el servidor para saber que esta pasando, ya en estos tiempos de la comunicacion no es practico esto, por que mejor no mandar esos correos a nuestra bandeja.

Se puede usar Sendmail, pero para que hacer uso de un software tan pesado para esto, si solo deseamos que nuestro servidor nos comunique todo a nuestro correo, para ello existe una aplicacion muy sencilla y fue hecha para esto, enviar correos no + no -.

Su nombre es: SSMTP.

La encuentras en los ports y en el handbook hablan de ella, vamos a ponerla a funcionar, pero 1ro que nada necesitamos deshabilitar a Sendmail y detenerlo para que nunca mas arranque.

Para ello necesitamos editar /etc/rc.conf y poner a todo "no":

mta_start_script="/etc/rc.sendmail"
sendmail_enable="NO" # Run the sendmail inbound daemon (YES/NO).
sendmail_submit_enable="NO" # Start a localhost-only MTA for mail submission
sendmail_outbound_enable="NO" # Dequeue stuck mail (YES/NO).
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_rebuild_aliases="NO" # Run newaliases if necessary (YES/NO).

Si en realidad no hacen uso de el, pueden eliminarlo del sistema pero necesitan crear un nuevo kernel y hacer ciertas a modificaciones a el sistema para que no lo vuelva a incluir, pero esta es otra historia.

Bien, una vez que ya editaron este archivo, necesitamos tronarlo:

/etc/rc.d/sendmail stop

Despues buscar todo indicio de este servicio y eliminarlo, ya saben: ps -ax | grep sendmail y matar todos los PID que se encuentren, ya deben saber como hacer esto :-).

Bien ya que sendmail ha desaparecido seguimos con la instalacion de ssmtp, el cual se localiza en:

/usr/ports/mail/ssmtp

Nos vamos hacia haya y:

make install replace clean
rehash

Listo, ahora vamos a ver cual es la informacion de nuestro dominio de correo:

Domain: mycorreo.com
smtp port: 25

Necesitamos saber esta informacion para configurar ssmtp, el cual almacena su informacion en...? /usr/local/etc/ssmtp, dentro encontraran 2 archivos base:

revaliases.sample ssmtp.conf
ssmtp.conf.sample

Los cambia por nombre-archivo.conf

En mi caso queda ssmtp.conf asi:

# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=root@mycorreo.com

# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and your mailhub is so named.
mailhub=mail.mycorreo.com

# Example for SMTP port number 2525
# mailhub=mail.your.domain:2525
# Example for SMTP port number 25 (Standard/RFC)
# mailhub=mail.your.domain
# Example for SSL encrypted connection
# mailhub=mail.your.domain:465

# Where will the mail seem to come from?
rewriteDomain=mycorreo.com

# The full hostname
hostname=bacula

# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES

# Use SSL/TLS to send secure messages to server.
#UseTLS=YES

# Use SSL/TLS certificate to authenticate against smtp host.
#UseTLSCert=YES

# Use this RSA certificate.
#TLSCert=/usr/local/etc/ssmtp/ssmtp.pem

# Get enhanced (*really* enhanced) debugging information in the logs
# If you want to have debugging of the config file parsing, move this option
# to the top of the config file and uncomment
#Debug=YES

El revaliases aun no le he encontrado uso, asi que lo omitimos. Ahora aqui tenemos que nuestro dns esta funcional, pero si no tienen alguno puede hacer uso de /etc/hosts o bien poner el IP de sus servidor en el parametro mailhub.

Aqui ya tenemos el sistema funcional, ahora solo unas pruebas para ver si es cierto:

ssmtp -s usuario@mydominio.com root@midominio.com

CTRL+D +

Nos debe caer el correo a nuestra bandeja.

Ahora en el caso de bacula, debemos cambiar ciertos parametros para que "bsmtp" pueda funcionar, quedaria asi:

mailcommand = "/usr/local/sbin/bsmtp -h 192.168.1.7:25 -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/local/sbin/bsmtp -h 192.168.1.7:25 -f \"\(Bacula\) %r\" -s \"Bacula: Necesito un Pariente Para %j\" %r"

Si observan que ahora necesitamos decirle a "bsmtp" que IP tiene nuestro server de correo o nombre si su dns esta operable, con esto bacula podra enviarme los correos a mi bandeja de entrada, asi de simple, y ademas su servdidor podra enviar todo lo que quiera a su bandeja de entrada, saludos!!!

No hay comentarios: