Integración de Alfresco con el correo electrónico

Se oye mucho de la integración de Alfresco con el correo electrónico, que si enviar correos, que si recibir, que si almacenamiento automático, que si clasificación automática, que si acceso IMAP con Oultook (Windows), Mail (Mac) o Thunderbird (Linux).

Vamos por partes, veremos como funciona el correo saliente, correo entrante y acceso por IMAP.

Correo saliente:

O lo que es lo mismo, cuando Alfresco envía un correo electrónico a un usuario por una invitación, notificación, desde una regla o acción, etc. Estamos hablando del protocolo SMTP, y en este caso, configuramos Alfresco para que se conecte con un servidor de correo, un MTA. Esta conexión puede ser en claro (funcionamiento por defecto) o cifrado mediante un hack que vamos a ver también en este artículo. Todos los correos que envía Alfresco lo hace con un mismo remitente que podremos especificar, es decir, el sistema no enviará correos como si fuésemos nosotros (nuestra cuenta de usuario de Alfresco) sino con su usuario específico del servidor, en mi caso [email protected].

Envio de correo por SMTP Autenticado pero sin cifrar:

En tomcat/shared/classes/alfresco-global.properties deberemos configurar así:

#
# Outbound Email Configuration
#-------------
mail.host=smtp.dominio.com
mail.port=25
[email protected]
mail.password=contraseña
mail.encoding=UTF-8
[email protected]
mail.smtp.auth=true
mail.smtp.timeout = 25000

También puedes configurar el “mail sender” descomentando las siguientes líneas en web-client-config-custom.xml (dentro del directorio extension)

<config>
<client>
<from-email-address>[email protected]</from-email-address>
<search-max-results>100</search-max-results>
</client>
</config>

Envío de correo por SMTP Autenticado y cifrado (con Gmail por ejemplo):

Crea el siguiente fichero dentro del directorio extension:

# vi outbound-secure-mail-context.xml 
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
    <!--                        -->
    <!-- MAIL SERVICE           -->
    <!--                        -->

    <bean id="mailService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host">
            <value>${mail.host}</value>
        </property>
        <property name="port">
            <value>${mail.port}</value>
        </property>
        <property name="username">
            <value>${mail.username}</value>
        </property>
        <property name="password">
            <value>${mail.password}</value>
        </property>
        <property name="defaultEncoding">
            <value>${mail.encoding}</value>
        </property>
        <property name="javaMailProperties">
            <props>
                 <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                 <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
                 <prop key="mail.smtp.socketFactory.port">${mail.smtp.socketFactory.port}</prop>
                 <prop key="mail.smtp.socketFactory.class">${mail.smtp.socketFactory.class}</prop>
                 <prop key="mail.smtp.socketFactory.fallback">${mail.smtp.socketFactory.fallback}</prop>
            </props>
        </property>
    </bean>
</beans>

En tomcat/shared/classes/alfresco-global.properties deberemos configurar así:

#
# Outbound Email Configuration
#-------------
mail.host=smtp.gmail.com
mail.port=465
[email protected]
mail.password=contraseña
mail.encoding=UTF-8
[email protected]
mail.smtp.auth=true
mail.smtp.socketFactory.port = 465
mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback = false
mail.smtp.timeout = 25000
mail.smtp.starttls.enable = true

Para ver las trazas del correo en los logs de Alfresco deberíamos añadir la siguiente línea en log4j.properties:

log4j.logger.org.alfresco.web.bean.TemplateMailHelperBean=debug

Correo entrante:

Cuando Alfresco es capaz de recibir un correo con sus archivos adjuntos y almacenarlos en el repositorio. Aquí también se utiliza el protocolo SMTP (puerto 25/TCP). Esta funcionalidad ya está terminada y soporta reglas de correos entrantes (clasificación de ficheros adjuntos, etc) lo que aun no soporta es la conversión a html del cuerpo de los mensajes. Vamos a ver como se configura.

Para activarlo debemos editar el fichero tomcat/shared/classes/alfresco-global.properties:

# Enable/Disable the inbound email service. #The service could be used by processes other than
# the Email Server (e.g. direct RMI access) so this flag is independent of the Email Service.
#-------------
email.inbound.enabled=true
# Email Server properties
#-------------
email.server.enabled=true
email.server.port=25
email.server.domain=subdominio.blyx.com
email.inbound.unknownUser=anonymous
# A comma separated list of email REGEX patterns of allowed senders.
# If there are any values in the list then all sender email addresses
# must match. #For example:
# # .*\@alfresco\.com, .*\@alfresco\.org
# Allow anyone:
#-------------
email.server.allowed.senders=.*\@blyx\.com

En email.server.domain debemos especificar el dominio que recibirá correos del tipo [email protected], lo más cómodo es crear un subdominio y apuntar el registro MX del DNS de dicho subdominio al servidor Alfresco.

No olvides que para evitar el uso indiscriminado de Alfresco para recibir correos, hay que añadir los usuarios del sistema que queramos permitir recibir correos al grupo EMAIL_CONTRIBUTORS (Consola de Administración), estos usuarios serán los que deben añadir el Email Alias a los espacios.

Hay dos formas de enviar correos a Alfresco, a un espacio que lo hemos activado como Email Alias, por ejemplo a [email protected] o a un espacio del que conocemos su Node DBID, por ejemplo, [email protected].

Para activar y ver el Node DBID, mira este artículo, una vez activado, en los detalles de cada contenido o espacio verás el Node DBID. Para activar el Email Alias de un espacio donde quieras enviar los correos debes ejecutar una acción sobre el espacio de turno, por ejemplo “Correo” → Ver Detalles → Ejecutar una Acción → Agregar aspecto al contenido → Email Alias, hecho esto veremos un nuevo metadato en las propiedades del espacio. Ahora tenemos que editar esos metadatos pinchando en el icono de modificar que hay en la esquina superior derecha del cuadro “Propiedades”, en el campo “Alias de email” debes especificar el identificador que usarás para enviar los correos, en el caso de la captura sería [email protected]:

email-alias
Hecho esto ya podemos enviar correos a nuestro Alfresco. Cuando pueda probar suficientemente el enrutado de documentos adjuntos os lo contaré.

El correo entrante también soporta TLS como vimos en el saliente, es muy fácil de configurar, mira aquí.

Buzón de correo:

Cuando accedemos al repositorio como si de un buzón de correo IMAP se tratase (puerto 143/TCP), es decir, acceder al repositorio mediante nuestro cliente de correo favorito, ya sea Mail, Thunderbird, Outlook u otro. Información extraída de la wiki y de mis pruebas.

Vamos a ver como activar IMAP. Para ello, editamos alfresco-global.properties y activamos los siguientes valores. En imap.server.host debes poner el nombre completo de tu servidor o IP, será donde se levante el puerto 143:

#
# IMAP
#-------------
imap.server.enabled=true
imap.server.port=143
imap.server.host=subdominio.blyx.com

Los valores anteriores son los que establece el servidor por defecto, pero hay más opciones en tomcat/webapps/alfresco/WEB-INF/classes/alfresco/repository.properties, simplemente tenemos que copiarlos justo debajo de imap.server.host.

imap.server.attachments.extraction.enabled=true
# Default IMAP mount points
imap.config.home.store=${spaces.store}
imap.config.home.rootPath=/${spaces.company_home.childname}
imap.config.home.folderPath=Imap Home
imap.config.server.mountPoints=AlfrescoIMAP
imap.config.server.mountPoints.default.mountPointName=IMAP
imap.config.server.mountPoints.default.modeName=ARCHIVE
imap.config.server.mountPoints.default.store=${spaces.store}
imap.config.server.mountPoints.default.rootPath=/${spaces.company_home.childname}
imap.config.server.mountPoints.value.AlfrescoIMAP.mountPointName=Alfresco IMAP
imap.config.server.mountPoints.value.AlfrescoIMAP.modeName=MIXED

Hay tres modos de trabajar con IMAP en Alfresco, “ARCHIVE” que permite leer y escribir vía IMAP, “VIRTUAL” que ofrece una visión del repositorio como correos electrónicos, y “MIXED” que permite los dos anteriores, es la que está activada por defecto como ves en la configuración así como el punto de montaje “IMAP Home” está definido como “Company Home”. Las plantillas para configurar la vista de los contenidos como correos electrónicos están disponibles en Freemarker en Company Home → Data Dictionary → Imap Configs → Templates.

Para configurar el cliente de correo electrónico debemos tener en cuenta los siguientes datos:

Servidor IMAP: IP o nombre del servidor Alfresco.

Puerto: 143

Usuario: tu usuario de Alfresco.

Contraseña: tu contraseña de Alfresco.

Configuración SMTP: puedes usar otra configuración que conozcas, no aplica en este caso.

¿Como activar un Site para acceder al “Document Library” y “Links” mediante IMAP?

En nuestro “Panel de control” o “Dashboard” en Share, en el cuadro “Mis sitios” deberemos activar pinchando en el icono en forma de estrella con un sobre:

favorito-site-imap

Hecho eso y refrescando nuestra cuenta en el cliente de correo ya veremos algo como la siguiente captura:

ver-sitio-en-cliente
Vale, ¿y como subo ficheros a Alfresco mediante IMAP? Fácil, si en tu cliente de correo tienes otras cuentas de correo configuradas prueba pinchar sobre un correo y arrástrarlo a la carpeta principal de la cuenta recién configurada de AlfrescoIMAP, el correo electrónico y sus ficheros adjuntos subirán a Company Home → IMAP Home → Usuario → INBOX, veríamos algo como lo siguiente en Alfresco Explorer:

vista-inbox-en-alfresco-explorer

También podemos arrastrar a cualquier otra carpeta de Alfresco a la que tengamos acceso de escritura mediante IMAP, como por ejemplo el DocumentLibrary de cualquiera de nuestros Sites en Alfresco Share, mira esto.

Puede ser cómodo para almacenar correos en Alfresco de forma rápida, simplemente pinchando, arrastrando y soltando, como dicen los guiris “drag and drop” 😉

He intentado cubrir todos las posibilidades con el correo electrónico y espero que haya sido claro en las explicaciones. Perdonad la maquetación del artículo. Como siempre, los comentarios están abiertos a vuestras sugerencias, correcciones y demás.

Consultoría sobre Zimbra en el mundo real.

zimbra_logoEl otro día recibí un correo electrónico de un antiguo compañero de trabajo que sabía que yo andaba en temas del mundo Open Source, para hacerme una serie de cuestiones relacionadas con Zimbra. Le respondí y le pregunté si le importaba que usara esa respuesta para crear un artículo en mi blog, él accedió y aquí está el correo con cierto toque de rimel y polvos para que quedase medio bien.

Antes de seguir quiero describir de una forma muy breve qué es Zimbra (extraído/traducido de su web): Zimbra Collaboration Suite (ZCS) 5.0 es una moderna e innovadora aplicación de mensajería y colaboración. Zimbra es la primera solución de código abierto para la empresa, proveedor de servicios, educación, gobiernos y medios; ofreciendo tanto a administradores como a usuarios finales una cantidad importante de características y beneficios. Zimbra es una opción interesante como servidor de correo electrónico en Mac y Linux, también soporta clientes para Windows y protocolos para reemplazar MS Exchange sin problemas. Más información aquí.

Consulta:

Tengo un amigo que tiene una empresa y necesita algo para tener sincronizado el mail, contactos, calendario y demás en las tres delegaciones que tiene, además el tiene un flamante iPhone y quiere tener acceso a todo ello de manera móvil.

En los PCs de las delegaciones podría instalar el Yahoo Zimbra Desktop (que no es mas que un cliente para Zimbra) o bien el conector de Zimbra para MS Outlook que sincronice todos los datos. Pero claro he visto que la versión Open Source ni tiene conector ni tiene soporte para iPhone.

He visto que para el tema de importar los datos de MS Outlook (mensajes, adjuntos, contactos y calendario) existe el Zimbra Import Wizard que en teoría tras la migración te lo deja todo bien en el nuevo entorno y te mantiene la estructura de carpetas.

La pregunta es: ¿puedo hacer eso con la Open Source? Sino es asi, merece la pena pagar por la versión Zimbra Network y un plus para el iPhone?

Respuesta:

Como sabes Zimbra tiene dos versiones, la Network Edition (de pago) y la Open Source Edition (gratis), la diferencia principal entre ambas es:

  1. Una es de pago por número y tipo de usuario (Basic, Standard o Enterprise) y la otra es gratis. Eso ya lo sabías 😉
  2. La Network soporta MAPI y la Open Source no. MAPI es el protocolo de MS que ha conseguido implementar Zimbra y simula ser un MS Exchange por lo que permite a un iPhone configurarlo como si de un cliente Exchange se tratara y sincronizar OTA (over the air) tanto la libreta de direcciones, calendarios y correos. La opción MAPI solo está disponible en la Network Edition para cuentas de usuario Enterprise (las más caras).

Otros aspectos a tener en cuenta:

  1. El Yahoo Zimbra Desktop es un cliente de correo pesado que permite trabajar offline, pero es pesado de verdad, te monta un servidor de aplicaciones Java (Jetty) en local, por lo que consume recursos y necesitaras estaciones de trabajo potentes. Este cliente funciona muy bien, pero consume memoria y disco (como es lógico porque descarga los correos del servidor). Este cliente te funciona para Zimbra Colaboration Suite tanto la versión Network como Open Source y es gratis, también para cualquier otra cuenta de Yahoo, Gmail u otros. En cuanto al conector de Zimbra para sincronizar con MS Outlook, las últimas versiones funciona bien, puedes tenerlo en cuenta en clientes MS Windows.
  2. Para importar los PTS y demás datos de Outlook, Zimbra se lo tiene muy currado y dispone de una aplicación que funciona muy bien pero que, por lo que yo se, sólo te sirve para la versión Enterprise (yo lo he probado en esta).

En respuesta a tu pregunta, con la Open Source no puedes si los clientes son iPhone, por el soporte MAPI, si tus clientes móviles son otros podrías utilizar Funambol (algún día hablaré de esa maravilla) que, basado en syncML, permite sincronizar dispositivos móviles y no tan móviles con aplicaciones de servidor. Funambol cuenta con un conector para Zimbra libre y gratuito. Funambol tiene clientes para BlackBerry, Thunderbird y muchos más, incluso para iPhone, la diferencia es que en todos funciona genial menos en iPhone porque este último no permite exportar datos del calendario por syncML, es decir, sólo puedes sincronizar la agenda. Son cosas de los amigos de Apple… a veces no son tan “cool” como parece…

¿Te merece la pena pagar por la versión Network Edition? Pues para lo que quiere esta empresa yo pienso que si, no es mucho dinero y la solución, desde mi punto de vista, es mucho mejor que MS Exchange, las posibilidades que te brinda Zimbra son inmensas, los Zimlets son muy potentes, la capacidad de integración es muy buena y el soporte no funciona nada mal. En http://www.zimbra.com/quote/configurator.php puedes ver lo que cuestan las cuentas Network Edition de una forma más o menos estimada, de las que deberías comprar como mínimo 25 Enterprise a un precio de 875USD (35 dolares por usuario) y no necesitarás ningún plugin de iPhone. También dispones de la Starter Edition (http://www.zimbra.com/quote/starterpkg.php) que son 15 cuentas Professional por 399USD (26,6 dolares por usuario). La Starter no tiene soporte pero si actualizaciones, por eso es más barata. Además en la Wiki y en los Foros de Zimbra hay muy buena información.

Eso ha sido todo.

Ya sabéis, en Intecna somos partners de Zimbra, si queréis una implantación no dudéis en contactar.

Cómo hacer que la batería del iPhone dure un 30-40% más

Prometo que es la última cosa que digo del iPhone.

Tras una semana y pico trabajando con el “bicho” me he dado cuenta de varias cosillas, entre otras que posiblemente “ya echo de menos mi Blackberry” pero le estoy dando una oportunidad a este aparato tan “guay” como es el iPhone. Supongo que a los que tenéis iPhone 3G os estará pasando como a mi, que el iPhone es muy bonito, una chulería, pero en cuanto a batería deja mucho que desear y sobre todo cuando lo utilizamos como teléfono para trabajar y correo electrónico simplemente.

Desde que lo tengo vengo cargándolo todos los días (cada 20 o 24 horas) y si salgo de viaje casi siempre me quedo sin batería.

Para optimizar al máximo hay, al menos, ocho pasos fundamentales que debéis hacer, os los cuento a continuación:

1º Desactiva el WiFi, si no es estrictamente necesario no lo uses. Generalmente no es necesario.
· Puedes desactivar el WiFi desde “Ajustes” -> “WiFi” = 0

2º Establece el brillo al mínimo para que veas la pantalla, con un 10% es más que suficiente.
· Desde “Ajustes” -> “Brillo”

3º Desactiva el 3G, tampoco es estrictamente necesario, los correos siguen llegando igualmente por GPRS.
· Para desactivarlo: “Ajustes” -> “General” -> “Red” -> “Activar 3G” = 0

4º Desactiva siempre que puedas el Bluetooth
· Para desactivarlo: “Ajustes” -> “General” -> “Bluetooth” = 0

5º Desactiva el GPS, es decir, lo que iPhone llama “Localización”.
· Para desactivarlo: “Ajustes” -> “General” -> “Localización” = 0

6º Asegúrate que el bloqueo automático está a 1 minuto.
· Para comprobarlo: “Ajustes” -> “General” -> “Bloqueo automático” = 1 minuto

7º Desactiva la Itinerancia de datos:
· Para desactivarlo:  “Ajustes” -> “General” -> “Red” -> “Itinerancia de datos” = 0

8º Comprueba el correo o bien de forma manual o cambia la frecuencia a 30 minutos:
· Puedes adaptarlo en: “Ajustes” -> “Obtener datos” -> “Cada 30 minutos” o mejor “Manualmente”
Eso es todo, he leido por ahí que si está desbloqueado (el mío no porque es corporativo), al meterle otras aplicaciones suele quedarse sin batería demasiado rápido y hay otros trucos.

¿Será que hecho de menos la Blackberry…?