jueves, 11 de diciembre de 2008

Configurar SVN para el envío de e-mails sin MTA

Podemos configurar SVN para que envíe un e-mail al realizar el commit de una versión del repositorio pero el script que viene por defecto con el programa utiliza sendmail el cual necesita que haya un servidor de SMTP corriendo en nuestra PC. Nosotros podemos utilizar un script hecho en bash que utilice una cuenta en Gmail y que envíe los e-mails utilizando mutt.

Para ello nos vamos al directorio del repositorio SVN y creamos el script:
$ vim post-commit
#!/bin/bash

# post-commit script
# @autor: Matias J. Magni
# @email: matias.magni@gmail.com

# ----------------------------------------------------------------------------------

# variables a modificar. separar direcciones de correo electronico con un espacio.

mails="matias.magni@gmail.com thegoldmember@gmail.com"
ip="mjm.homelinux.com"

# ----------------------------------------------------------------------------------

# $1: home de svn
# $2: revision del repositorio

i=0;
autor=$(svnlook author $1 -r $2)
log=$(svnlook log $1 -r $2)
archivos=$(
for linea in $(svnlook changed $1 -r $2)
do
i=$(($i+1))
if [ $(($i%2)) -eq 1 ]
then
echo "<li>"
else
echo $linea
fi
done
)
fecha=$(svnlook date $1 -r $2 | cut -f 1,2,4,5,6,7 -d " ")

# contenido del mail
mensaje="<h1>La revisión $2 del repositorio ya se encuentra disponible.</h1>
Modificado por <b>$autor</b>.<br><br>
<b>Fecha de modificación:</b> $fecha<br><br>
<b>Comentario de modificación:</b><br>
<pre>$log</pre><br>
<b>Archivos modificados:</b><br>
<ul>$archivos</ul><br>
<b>URL:</b> svn://$ip$1"

# envio del e-mail.
echo $mensaje | mutt -e 'set content_type="text/html"' -s "SVN - Cambios en el repositorio" $mails

El e-mail debería ser una cosa así:

svn_mail

Pero para poder hacer esto necesitaremos que mutt esté configurado para poder acceder a nuestra cuenta Gmail. Lo primero que debemos hacer es configurar nuestra cuenta para que sea accesible vía protocolo IMAP, para lo cual accedemos a nuestro correo y nos vamos a Configuración > Reenvío y correo POP/IMAP y habilitamos IMAP. Luego, debemos editar un archivo rc que pondremos en nuestro home directory:
$ vim .muttrc
set imap_user = "aquí va el e-mail"
set imap_pass = "aquí va el password"

set smtp_url = "smtp://aquí va el nombre de la cuenta@smtp.gmail.com:587/"
set smtp_pass = "aquí va el password"
set from = "aquí va el e-mail"
set realname = "aquí va tu nombre"

set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed="+[Gmail]/Drafts"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set move = no

set sort = 'threads'
set sort_aux = 'last-date-received'
set imap_check_subscribed

ignore "Authentication-Results:"
ignore "DomainKey-Signature:"
ignore "DKIM-Signature:"
hdr_order Date From To Cc

No hay comentarios:

Publicar un comentario