Reducir el envío de email en Redmine
Redmine es una herramienta estupenda para gestionar proyectos (yo la uso para proyectos informáticos), pero cuando hay varios usuarios, roles y demás, el envío de emails que genera llegan a rozar el spam.
Para evitar esto, hay un plugin llamado Redmine_Mail_Notification que ayuda un poco. El desarrollador original del plugin se llama Goyello, y puedes acceder a este proyecto en GitHub:
https://github.com/GOYELLO/Redmine_Mail_Configuration_plugin.
Probé a instalarlo sobre la versión de Redmine que tengo (no estoy seguro de la versión, pero es más moderna que la 1.0.0) y me daba algunos problemas. Principalmente porque hay que aplicar un patch a algunos ficheros de Redmine. Navegando por el proyecto, vi que hay otro desarrollador que ha mejorado el plugin para que no sea necesario aplicar ningún patch. Este segundo desarrollador es Friflaj, y el proyecto se puede descargar desde su GitHub:
https://github.com/friflaj/redmine_mail_configurator.
Para descargarlo, he ido al directorio en el que tengo Redmine, y he seguido los pasos que se indican en la Guía de instalación de plugins de Redmine, concretamente hice:
$ cd /var/www/redmine/vendor/plugins $ git clone https://github.com/friflaj/redmine_mail_configurator.git $ rake db:migrate_plugins RAILS_ENV=production $ sudo /etc/init.d/apache2 restart
Tras realizar estos pasos, el plugin funciona, pero parece que hay algunas frases sin traducción. Para traducirlas, he añadido las siguientes líneas…:
es: label_user_mail_assigned_only_mail_notification: Envía email sólo si estoy asignado/a a la petición label_user_mail_block_mail_notification: No quiero ser avisado/a por email. Gracias label_mail_if: Enviar email si label_new_issue_created: Se ha creado una nueva petición label_issue_assigned_to: "Petición asignada a:" label_no_assignation: Ninguno label_use_custom_mail: Especificar una dirección de mail diferente
…en los siguientes ficheros (tuve que crear los ficheros):
/var/www/redmine/vendor/plugins/redmine_mail_configuration/config/locales/es.yml /var/www/redmine/vendor/plugins/redmine_mail_configuration/lang/es.yml /var/www/redmine/vendor/plugins/redmine_mail_configuration/locales/es.yml
Cabe decir que antes de hacer todo esto, y por precaución frente a mis manazas, hice una copia de la base de datos de Redmine y de los ficheros subidos, siguiendo este esquema:
Base de datos:
mysqldump -u <username> -p <password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz
Attachments:
rsync -a /path/to/redmine/files /path/to/backup/files
Todo esto lo he sacado tirando del hilo, que empezó en el blog de Goyello en:
http://blog.goyello.com/2009/07/16/how-to-manage-email-notifications-within-redmine/
Una vez realizados los pasos anteriores, en la configuración de mi cuenta se puede ver:
Sólo un comentario final, la última opción (No quiero emails) es la más restrictiva y se aplica al margen de las opciones anteriores. Esto es, que si marco la última no recibo ni un correo aunque marque alguna de las anteriores.
Muchos saludos, después de muchos meses :)
EDICIÓN:
Al poner en marcha el sistema, tuve un problema al acceder a la configuración de cada proyecto (tab de ‘Settings’ o ‘Configuración’ para un proyecto). Me daba un ‘Internal Error’ de Redmine, y mirando el log me salía un error en el fichero:
vendor/plugins/redmine_mail_configurator/_mail_if.rhtml
Venía a decir que “undefined local variable or method ‘members’”. No sé mucho de Ruby (ego-code alert: no sé nada de Ruby) pero estaba claro que la variable ‘members’ no la encontraba. Buscando por ahí encuentro que se puede pillar esa variable, así que edito el fichero _mail_if.rhtml y añado la siguiente línea:
<% members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %>
justo antes de que se use( <% members.each do |assigned_member| %> )
Y… tachán!
También he aprovechado para cambiar un poco una frase de la traducción inglesa, que sugería que uno es asignado a una petición, cuando en realidad es la petición la que es asignada a uno. La frase que he cambiado es:
label_user_mail_assigned_only_mail_notification: Mail me only if an issue is assigned to me
en los siguientes ficheros:
/var/www/redmine/vendor/plugins/redmine_mail_configuration/config/locales/en.yml /var/www/redmine/vendor/plugins/redmine_mail_configuration/lang/en.yml /var/www/redmine/vendor/plugins/redmine_mail_configuration/locales/en.yml

