Buscando en una base de datos a golpe de correo

pullcart_library_book_open_md_whtRevisando notas, me he encontrado una solución que preparé en su momento para consultar mediante el correo una base de datos en formato ISIS, poniendo en la línea de asunto el tema a buscar.

En aquellos tiempos estaba de informático en un centro de documentación, y publicaba en nuestra página web las bases de datos bibliográficas del MINED mediante los softwares al efecto provistos por BIREME (¿existirán todavía? Han pasado más de 10 años… ni idea de qué se está usando en el mundo en estos momentos), wwwisis y wxis.  No eran software libre, desafortunadamente.

La idea era que los interesados que no residieran en La Habana, por ejemplo, pudieran consultar el catálogo en línea (el OPAC, para usar la palabra técnica), descargarse directamente la tesis o el documento que les interesara, o si el documento no estaba digitalizado, solicitarlo mediante préstamo interbibliotecario. Si no quedaba otra opción, sabiendo que existía y conociendo su entrada en el catálogo, podrían (sin perder tiempo buscando) consultarlo durante alguna visita posterior al centro.

Hasta ahí todo bien.

Si bien el acceso a esas bases mediante nuestra página no tenía limitaciones por nuestra parte, sucedía (y todavía sucede) que muchos interesados en consultar la base bibliográfica disponían cuando más de correo nacional. Así que al interesado no lo quedaba más opción que mandar un correo al centro solicitando que le hicieran la búsqueda de este o aquel tema en el catálogo, esperar la respuesta y entonces decidir si la bibliografía relacionada ameritaba darse una vuelta, pues no siempre era posible el préstamo.

Así pues, se me ocurrió buscar una solución para que la base pudiera ser consultada directamente por correo. Asumiendo que la base de datos existe en el mismo equipo donde está el MTA (en aquel momento sendmail, pero funciona para Postfix), que se tiene una cuenta de usuario mailisis en /home/mailisis y que se han instalado los paquetes formail y procnail, la solución fue crear un fichero /home/mail/.procmailrc con este contenido:

ASUNTO=`formail -x Subject:`

:1 h
* !^X-Loop: mailisis@cied.rimed.cu
|( formail -r -I”Precedence: junk” \
-A”X-Loop: mailisis@cied.rimed.cu”; \
/bases/wwwisis db=/bases/edu gizmo=/bases/gizmo2 bool=`echo ${ASUNTO}` h1=1 h2=100 pft=@/bases/edu.pft ) | $SENDMAIL -t

Explico: la cuenta a la cual se deben dirigir los mensajes era mailisis@cied.rimed.cu.

La sección

/bases/wwwisis db=/bases/edu gizmo=/bases/gizmo2 bool=`echo ${ASUNTO}` h1=1 h2=100 pft=@/bases/edu.pft )

buscaba en la base de datos (el `echo ${ASUNTO}` aseguraba que en la instrucción de búsqueda se pasara como parámetro la línea de asunto del correo-este tip se lo debo a Roger Peña Escobio, por entonces gurú de Linux en INFOMED) y lo demás, h1=1 h2=100 pft=@/bases/edu.pft son especificaciones de control de la búsqueda (recupera hasta 100 entradas del catálogo, formatea la salida usando como plantilla lo que se especifica en el fichero edu.pft). El pipìng con

| $SENDMAIL -t

aseguraba que la salida se le pasara como correo de salida inmediata al sendmail.

El correo que se recibía tenía como línea de asunto el tema solicitado, y como ya he dicho, contenía las primeras 100 entradas bibliográficas que coincidieran.

Cambiando la instrucción de búsqueda y el MTA (pero manteniendo el `echo ${ASUNTO}`), la solución puede ser adaptada para realizar consultas en otros sistemas de bases de datos. ¿Alguien se anima a probarlo?

 

Esta entrada fue publicada en Administración, Debian, Linux, Programación. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *