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.

75 thoughts to “Integración de Alfresco con el correo electrónico”

  1. Estimado Toni excelente blog felicitaciones…
    Tengo unas pequeñas consultas sobre el correo entrante, te comento estoy utilizando alfresco community 4.2.f en un servidor ubuntu 14.04 no esta instalado con el autoinstaller, lo instalo desde las fuentes.
    1. Para hacer funcionar el correo entrante configure en alfresco-global.propesties en email.inbound.unknownUser= el usuario que tengo definido en esta configuracion es administrador y el EMAIL_CONTRIBUTORS, hay como hacer configurar para que permitan todos los usuarios EMAIL_CONTRIBUTORS? o estoy configurando mal yo y por eso no me funciona?

    2. Es esta configuracion es puesto email.server.allowed.senders=.*\@midominio\.com y en alfresco share recibe los correos de las cuentas de email que estan bajo este dominio, puedo recibir de otrosdominios? ejemplo puedo recibir correos en alfresco enviados desde gmail.com, yahoo.com u otros? o estoy configurando mal?

    Espero tu gentil ayuda….

    Saludos
    Roberto

  2. Hola Roberto,

    La autenticación que se hace es mediante el sender-from, el email del quien envía, y ese usuario debe tener ese email en su perfil y debe estar en el grupo EMAIL_CONTRIBUTORS. Si el email que envía no está en alfresco lo marca como unknownUser y se rige por email.inbound.unknownUser= que sirve para decirle a alfresco con qué usuario escribirá el nodo en el repositorio si el usuario que envía es desconocido. Tener admin ahí es peligroso. Por eso es importante que especifiques tu propio dominio en email.server.allowed.senders. Yo creo que enviar emails desde cualquier dominio no está permitido en la versión 4.2 por seguridad, lo ideal es hacer un redirect desde el servidor de correo con una cuenta corporativa. Mira aquí:
    http://docs.alfresco.com/4.2/concepts/email-groupspermissions.html

    Saludos.

  3. Muchas gracias por responder Toni y felicitaciones por tu excelente trabajo.
    Respecto de mis inquietudes esta mas claro, sabes que estoy creando otro usuario y le doy permisos de administrador y de EMAIL_CONTRIBUTORS para hace esta configuración.

    Gracias y saludos…

  4. Estimado Toni tengo una pequeña duda, haber si me puedes dar una ayuda…
    En la configuración de correo entrante configure en alfresco-global.propesties en email.server.allowed.senders=.*\@midominio\.com.co es correcta esa configuración? o debe ir email.server.allowed.senders=.*\@midominio\.com\.co, de esto tengo duda cuando son este tipo de dominios.

    De antemano gracias…..

  5. La sintaxis correcta sería email.server.allowed.senders=.*\@midominio\.com\.co ya que debes escapar todos los puntos.

  6. Hola Toni una consulta.
    Cuando realizo invitaciones a Sitios en Alfresco Share community 4.2.f. encontré donde cambiar el contenido del mensaje, pero no encuentro donde cambiar el asunto del mensaje y se envía así: (Share Alfresco: Ha sido invitado a unirse al sitio prueba), requiero cambiar ese asunto, donde lo puedo cambiar?

    Saludos
    Roberto

  7. Hola Toni.
    Respecto de cambiar el asunto de los correos que de invitaciones a sitios encuentro esto

    en la plantilla invite-email-es.html.ftl en Diccionario de datos, me podrías aclarar como cambiar para que en el asunto del correo no salga (Share Alfresco: Ha sido invitado a unirse al sitio …. )
    De antemano gracias y disculpa las molestias.

    Saludos.

  8. Debes crear la carpeta tomcat/shared/classes/alfresco/messages y ahí dentro un fichero llamado: invitation-service_es.properties y hacer las modificaciones necesarias basadas en el fichero original que debe estar en:
    tomcat/webapps/alfresco/WEB-INF/classes/alfresco/messages/invitation-service_es.properties

    Espero que te sea útil. He visto esa información aquí:
    https://forums.alfresco.com/forum/end-user-discussions/alfresco-share/solved-how-change-subject-invitation-mail-11042011-1422

    Saludos.

  9. Hola Toni.

    Gracias por tus excelentes aportes y te comento, tengo un problema: instale un alfresco en una red local en ubuntu server 14.04, hice todas las configuraciones, de los DNS y creación de subdominio y mx records para que alfresco reciba el correo; en esta red local están abiertos los puerto 8080, 25, mediante un router, puedo acceder a alfresco mediante el nombre de subdominio, puedo enviar invitaciones a sitios conectándome al servidor de correo que esta fuera de la red local, el problema que tengo es al momento de recibir los correos en alfresco, pues he realizado todas las configuraciones recomendadas y no recibe alfresco el correo, hago un telnet al puerto 25 con el nombre del subdominio creado y me arroja lo siguiente:

    Test Result
    SMTP Reverse DNS Mismatch Warning – Reverse DNS does not match SMTP Banner
    SMTP Banner Check OK – IPpublica resolves to IPpublica.uio.satnet.net
    SMTP TLS OK – Supports TLS.
    SMTP Connection Time 0.920 seconds – Good on Connection time
    SMTP Open Relay OK – Not an open relay.
    SMTP Transaction Time 3.260 seconds – Good on Transaction Time
    Session Transcript:
    Connecting to IPpublica

    220 subdominio.com ESMTP SubEthaSMTP 3.1.6 [733 ms]
    EHLO MXTB-PWS3.mxtoolbox.com
    250-subdominio.com
    250-8BITMIME
    250-STARTTLS
    250-AUTH PLAIN LOGIN
    250 Ok [733 ms]
    MAIL FROM:
    530 Must issue a STARTTLS command first [764 ms]
    RCPT TO:
    530 Must issue a STARTTLS command first [733 ms]

    MXTB-PWS3v2 4072ms

    Con esto puedo ver que hay restricción al puerto 25 y que el SMTP de ALFRESCO esta funcional, pero alfresco no recibe los correos, no entiendo por que razón puede pasar eso o que me falta configurar, en alfresco-global.properties tengo la configuración así:

    email.inbound.enabled=true

    email.inbound.unknownUser=usuario
    email.server.enabled=true
    email.server.port=25
    email.server.domain=subdominio.com

    email.server.hideTLS=false
    email.server.enableTLS=true
    email.server.requireTLS=false

    email.server.allowed.senders=.*\@dominio\.com

    Que mas puedo revisar? alguna idea? de antemano te agradezco por cualquier sugerencia.

    Saludos…

  10. Hola Roberto,

    Puede que tengas algún filtro en la red? Se supone que solo deberías ver:
    220 subdominio.com ESMTP SubEthaSMTP 3.1.6 [733 ms]

    Recuerda que para recibir correos electrónicos el usuario que envía debe estar en Alfresco (“usuario”@subdominio.com) y debe estar en el grupo EMAIL_CONTRIBUTORS. Luego debes crear el email alias a una carpeta que es la que recibe el correo electrónico y enviarías el correo hacia [email protected] y el usuario que envía debe tener permisos para escribir en esa carpeta (esa es la configuración minima que debes tener).

    Igual te falta lo del grupo. Espero que sea eso.

    Saludos.

  11. Gracias Toni.

    Sabes que el usuario es parte del Grupo de EMAIL_CONTRIBUTORS, en la carpeta esta el alias y el usuario tiene el correo (“usuario”@subdominio.com), este usuario esta creando los sitios y por ende es propietario, pero no recibe el correo.

    El servidor DNS esta fuera de la red interna, es un servidor con Cpanel/whm VPS y ahi se hizo toda la confiración de los subdominios y el MX RECORDS, puede ser que sea un problema del MX RECORDS?, te comento cree un registro de tipo A apuntando a la IP publica de la red local, luego hice hice MX apuntando a ese registro A ejemplo:

    mail.ecm.midominio.com a la IP publica tipo de registro A
    Luego ecm.midominio.com apuntando a mail.emc.midominio.com tipo de registro MX

    Cuando hago Ping a mail.ecm.midominio.com hay repuesta y me sale la IP publica de la red local (red Empresa).

    Te comento como tengo configurado el servidor de alfresco, tengo un servidor con win 2012 instalado el rol de active directory, rol de escritorio remoto, rol de hyper V, rol DNS y la red de dominio es midominio.local, dentro del Hyper V tengo un servidor virtual para Alfresco. Este servidor virtual para Alfresco es un Ubuntu server 14.04.

    Estos son los detalles de la instalación tal vez alguna idea para revisar las configuración?

    Ya no se que mas revisar y gracias por tu gentil ayuda.

    Saludos…

  12. Hola Roberto, creo que hay una confusión. El usuario no es quien recibe el correo, el correo lo recibe el alias de la carpeta@subdominio. El usuario solo debe tener permisos para escribir en esa carpeta.

    Sobre el DNS, tampoco necesitas nada de MX, si el servidor SMTP inbound de Alfresco escucha en el puerto 25, cualquier correo que envíes a “aliascarpeta”@nombreservidor-de-alfresco debe llegarle a Alfresco. Es decir, con un registro A tienes suficiente y que resuelva igual tanto dentro como fuera de tu red. Además de ping debes poder hacer un telnet mail.ecm.midominio.com 25 y ver si llegas al puerto SMTP de entrada de Alfresco.

    Revisa eso que te digo, debe ser eso, es más fácil de lo que parece.

  13. Cordial Saludo he tenido inconvenientes al configurar alias en alfresco community en teoría funciona según vídeo y puesta en funcionamiento del los vídeo agregados al sitio en alfresco community si se puede configurar el alias esto lleva a la configuracion de los demas temas de servidor de correo imap y smpt las notificaciones salen de mi alfresco creación de sitios y demas pero la entreda no he visto varios foros y me encuentro con la consola de administracion pero la community no esta activa las funcionalidades y me ha tocado todo por los archivos en los log aparece el servicio activo cuando creo la carpeta su alias y envio el correo este llega las 2 horas rechazado y que se envié de nuevo para solucionar el problema quedo atento Gracias me he guiado por los datos e tony de la fuente y otros blog pero no muestran la version utilizada creo que toni utiliza la 4.2 estoy tomando la configuracion de estos conceptos pero lo que logro ver es que no aplican para la version community por favor su aclaración
    Using the Share Admin Tools | Alfresco Documentation , IMAP Integración de Alfresco con el correo electrónico – : : blyx.com : : Blog : : Toni de la Fuente : :

    un saludo Ivan Lopez

  14. La version que uso es Edición: Community
    Número de versión: 5.2.0 (r125711-b6)
    Etiqueta de versión:
    Número de versión y compilación de Alfresco.
    Esquema: 10.001

  15. Saludos Toni,

    Tras seguir los pasos del Correo Entrante todo funciona genial, pero aún así hay un pequeño problema.

    Tengo Alfresco instalado en el subdominio “miserver.midominio.com”. Pero para que sea más intuitivo podemos acceder a ese subdominio a través de una redirección desde “alfresco.midominio.com”. El problema es que solo puedo mandar correos a “[email protected]” pero no a través de la redirección.

    He probado a establecer:

    email.server.domain=alfresco.midominio.com

    Y luego mandar correos a “[email protected]” pero no los recibe. Solo me funciona si los mando a “[email protected]” (y estableciéndolo en email.server.domain). Disculpa por si es una pregunta muy básica, pero… ¿Hay algo que pueda hacer para mandar correos a la redirección?

  16. Eso tiene pinta de problema con el DNS, deberás apuntar el MX al dominio que quieras usar, no al host y establecerlo en email.server.domain como lo tienes.

  17. Buenas, a la hora de configurar el TLS, según la documentación si nos da:

    “startTLS() failed: no cipher suites in common”

    en el log debemos ejecutar:

    “keytool -genkey -keystore mySrvKeystore -keyalg RSA”

    ejecuto eso y me pido unos datos que no para de pedírmelos una y otra vez en modo bucle. La última pregunta es: todo corrrecto? [no] y yo pongo yes y me lo vuelve a preguntar….

  18. Toni, para acceder a Alfresco como buzon de correo IMAP, y mover correos arrastrando simplemente, uan vez que activas la estrella con el sobre… hay que hacer algún paso intermedio para que aparezca la carpeta en nuestro cliente de correo?
    Gracias de antemano.

  19. Buenos días Toni, tengo IMAP configurado y el puerto escuchando en Alfresco. Ahora bien, mi cliente de correo es outlook 365 vía navegador web y no veo la forma de configurarlo, no se si es necesario tener el cliente de correo en la versión de escritorio…
    Gracias de antemano Toni.

  20. Buenos dias Toni

    Soy nuevo en Alfresco y Activiti, y estoy buscando la forma de como acceder, abrir y leer el contenido de un correo via la API de Alfresco, como lo haria la API de JavaMail. ¿Es posible esto, o no esta dentro de las capacidades de Alfresco?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.