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]:
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:
Hecho eso y refrescando nuestra cuenta en el cliente de correo ya veremos algo como la siguiente captura:
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:
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.
Muy buen artículo. Me pondré manos a la obra para probar todo esto. Saludos.
Tony, excelente artículo. Voy a realizar los procedimientos que indicas para ver si es posible la integración vía IMAP Alfresco con Outlook.
Gracias a los dos. Germán, si es posible, ya me contarás tus avances.
Saludos.
Toni, muy buen artículo, me ha aclarado muchas zonas oscuras que tenía sobre alfresco y el correo electrónico. Soy novato en este entorno, y tengo un duda, sobre este tema: ¿existe alguna posibilidad de enviar una notificación desde alfresco con formato HTML? Solo he conseguido que lo envíe como texto plano. Me gustaría enviar los contenidos HTML creados por los usuarios. Muchas gracias y enhorabuena por tu aportación a esta comunidad!
Saludos.
Hola tocayo, gracias por tu comentario. Las notificaciones vía correo electrónico se pueden hacer por plantillas y esas plantillas (en el Data Dictionary) se pueden escribir en FreeMarker. Con FreeMarker puedes escribir html, por lo tanto, la respuesta a tu pregunta es sí 😉
Saludos.
Hola de nuevo, gracias por tu respuesta anterior. El tema es que probé ha realizar una plantilla FreeMaker con etiquetas html pero el email que llega al destinatario siempre es content-type:text/plain, por lo que las etiquetas no son interpretadas y el código se presenta dentro del mensaje, vamos que se leen las etiquetas. El caso es que no creo que sea problema de la plantilla, sino del formato del email que genera alfresco. ¿Alguna sugerencia?
Saludos.
vaya… ahora mismo no caigo, seguramente haya que modificar la cabecera del envío de correo o pegarse con la Java Mail API y su conexión con Alfresco.
Saludos.
Puf! miedito me da, en fin no me queda otra ya comentaré.
Saludos! y gracias!
Buen dia, me estan pidiendo un log de los accesos al Alfresco Ver. 2.2 ya que quieren ver el historial de usuarios que han entrado a la aplicacion.
Alguien me pudiera orientar como hacerlo?
gracias.saludos.
Hola Roberto,
Te aconsejo que este tipo de consultas las compartas con todos los usuarios de la comunidad hispana de Alfresco en http://forums.alfresco.com/es. No obstante, te adelanto que para hacer lo que quieres debes activar las auditorías en Alfresco.
http://wiki.alfresco.com/wiki/Audit_Configuration
http://wiki.alfresco.com/wiki/Auditing_%28Up_to_V3.2%29
Saludos.
Hola,
Buen artículo… pero me falta aclararme ¿cuándo se utiliza cada tipo de configuración? Es decir, el correo entrante/saliente tiene el mismo objetivo que la configuración IMAP? ¿O esta última se utiliza únicamente para la vinculación a sitios?
Vamos, que no tengo claro si tengo que utilizar una configuración entrante/saliente o una IMAP, o las 2.
Gracias!!
Hola…
Tengo otra duda. ¿Es posible enviar correo por SMTP Autenticado sobre SSL? ¿Cómo sería esta configuración?
Gracias de nuevo!!
Hola… siento los mensajes anteriores… había leído el artículo en una diagonal demasiado inclinada… al releerlo he visto las respuestas a mis preguntas.
Nuevamente, gracias por el artículo!!
Hola Toni, muy bueno tu artículo, está muy interesante.
Tengo un par de dudas.
¿Sabes como puedo integrar el alfresco con Eclipse, es decir, necesito crear un workspace en eclipse e integrar el código de alfresco allí? y otra: ¿sabes como puedo configurar alfresco con un envío de correo automático a un webmaster, cada vez que se crea alguna cuenta de un usuario en alfersco?
Saludos, muchas gracias
Hola Felipe, Respuesta a tu primera pregunta: http://wiki.alfresco.com/wiki/Alfresco_on_Eclipse
La segunda pregunta: no es una funcionalidad por defecto de Alfresco como tal, pero que si los usuarios que se crean hacen un espacio de usuario se puede hacer una regla para que envíe un mail cada vez que se crea un espacio de usuario, en ese caso el efecto sería el mismo que lo que indicas.
Saludos.
Hola Toni excelente articulo, ahora mi duda es como puedo crear un buzon de correo en alfresco? con buzon de entrada y enviados?
Precisamente como comento en el artículo, pero no es exactamente un buzón de correo con las carpetas de enviados y recibidos.
Los recibidos (SMTP) se clasifican donde quieras y los enviados (SMTP) son notificaciones, no contenidos. Y por IMAP accedes al repositorio como si de un buzón se tratase.
Hola Toni, muchas gracias por aclarar mis dudas..ahora tengo problemas con el fichero outbound-secure-mail-context.xml me funciono unas cuantas veces, pero de pronto al loggearse me da un mesaje de que el servidor no esta disponible..y al eliminar ese fichero vuelve a la normalidad..cual seria el problema?
Hola Ezequiel, Revisa el fichero de configuración con esos valores que ya vienen en Alfresco por defecto, puede que en las nuevas versiones se añaden algunos nuevos parámetros.
Saludos.
Genial articulo, pero no se si me puedan ayudar, pues soy novato ene alfresco y, he logrado que las invitaciones lleguen, pero lo de las notificaciones no lo he podido realizar. “enviar un mensaje cada vez que se asigne una tarea por workflow”.
Toni sos grande!
Gracias Mario, para enviar correos desde workflows deberás modificar dichos workflows ya que los que vienen por defecto no contemplan esa opción.
Mira estos enlaces:
http://forums.alfresco.com/en/viewtopic.php?f=34&t=15705
http://es.scribd.com/doc/33497642/Advanced-Workflow-Article
http://wiki.alfresco.com/wiki/Workflow
Saludos.
¿sabes si hay alguna manera de decirle a Alfresco qué email debe usar para el from a la hora de enviar correos smtp? yo he probado a configurar la propiedad mail.from.default y tambien mail.smtp.from sin resultado
Hola Pep,
Es la propiedad mail.from.default, igual hay otro problema, lo tengo probado en la 3.4, 4.0 y 4.0.1 y funciona. Debes ponerlo en alfresco-global.properties.
Saludos.
pues en la 4.0.1 a mi no me funciona, parece que tiene que ver con este bug:
https://issues.alfresco.com/jira/browse/ALF-12153
Perdona, no entendí que tu problema estuviese relacionado con eso.
mi problema es que mi servidor de correo smtp requiere que las direcciones de envío de correo pertenezcan a usuarios autenticados, por tanto no permite enviar un correo a nombre de [email protected] Para ello es neceario cambiar la dirección que Alfresco coloca en el from por defecto, yo he intentado cambiarla mediante la opción mail.from.default en el alfresco-global.properties pero sigue enviando los mensajes con e email de alfresco en el from. Intenté cambiarlo mediante las propiedades mail.from.enable y mail.smtp.from pero sin resultado. Ese es precisamente el bug que te indico, que al parecer se ha medio arreglado en la 4.0.1 aunque a mi no me va ¿cómo haces tu para que a ti sí te funcione?
por cierto, sabes como se puede cambiar la url que Alfresco incluye en las invitaciones para que no referencie a la ip de localhost sino al nombre (o ip) real del servidor de alfresco?
es decir quiero que en lugar de esto:
“Hola a:
Administrator le ha invitado a unirse al sitio Prueba1 con el rol de Colaborador de sitio.
Haga clic en el enlace para aceptar la invitación de Administrator:
http://127.0.0.1/share/page/accept-invi … e522adcf83
Se ha creado una cuenta para usted. Los datos de inicio de sesión son: … ”
envíe esto otro:
“Hola a:
Administrator le ha invitado a unirse al sitio Prueba1 con el rol de Colaborador de sitio.
Haga clic en el enlace para aceptar la invitación de Administrator:
http://alfresco.pruebas.es/share/page/accept-invi … e522adcf83
Se ha creado una cuenta para usted. Los datos de inicio de sesión son: … “
Hola Pep,
El servidor de correo que uso (gmail con google apps) me permite autenticar los correos salientes y puedo poner una cuenta propia en el from usando estos parámetros (en alfresco-global.properties):
### Outbound mail SMTP ###
mail.host=smtp.gmail.com
mail.port=465
mail.protocol=smtps
mail.smtps.auth=true
[email protected]
mail.password=contraseña
mail.encoding=UTF-8
[email protected]
mail.smtp.starttls.enable=true
El bug que comentas estará resuelto en la community pero no creo que sea a muy corto plazo.
Sobre tu segunda pregunta, yo diría que son estos parámetros (en alfresco-global.properties):
share.context=share
share.host=127.0.0.1
share.port=8080
share.protocol=http
Depende de la versión que uses puede que necesites este parámetro que es el que se invoca desde el ftl de turno:
repo.remote.url=http://midominio.com #no pongas el contexto /share que ya está incluido en la plantilla, si hay puerto si deberás ponerlo.
Como decía, otra forma es modificar la plantilla y hardcodear la URL, pero no es tan elegante como a nivel de configuración.
¿dónde se escribe el rep.remote.url? porque en alfresco-global.properties no encuentro nada con ese nombre, lo más parecido que veo es repo.rmi.service.port=0
por otro lado entiendo que el ftl que dices es una extensión de un archivo de plantilla (que supongo será en xml) pero ¿dónde se encuentran esos ficheros ftl?
claro, en alfresco-global.properties pero es para versiones desde 3.4.8 Enterprise o 4.0.1, no se si estará implementado en community todavía, pruébalo y nos dices.
ok, y ¿qué fichero ftl tendría que tocar para moficarlo y harcodera la URL?
En Repositorio> Diccionario de datos> Plantillas de correo electrónico > ahí tienes todas las plantillas ftl relacionadas con correo electrónico.
muchas gracias por tus respuestas
hola Toni,
Tengo otro problema relacionado tangencialmente con esto, ¿sabes si hay alguna forma de asignar usuarios a un sitio de alfresco sin enviar invitación? dado que no puedo enviar correos me preguntaba si podría hacerlo desde la consola de administración con la cuenta de administrador. Uso Alfresco community 4.0.1
Mira esto http://code.google.com/p/share-import-export/
De todas formas el envio de correo funciona, mira bien tu configuración seguro que hay forma de hacerlo funcionar.
Por cierto, no hay Community 4.0.1, esa es nomenclatura de Enterprise…
ok, miraré a ver si puedo aprovechar esos scripts python, pero de todas formas creo que debería ser posible dar de alta usuarios desde el panel de administración sin tantos problemas.
Tomo nota de lo que dices sobre la community, entonces cual es la nomenclatura de versiones en la community?
Puedes añadir usuarios mediante un csv.
Aquí tienes info de la nomenclatura http://blogs.alfresco.com/wp/phampton/2010/08/17/alfresco-product-naming-and-numbering/
Buen dia Tony, queria hacerte una consulta, tenemos una Implementacion de Alfresco para 80 usuarios, estos manejan una estructura de carpetas con casi mas de 8 mil carpetas a la actualidad y esta cifra va a ir en aumento, al conectarse por el MS Outlook con IMAP al querer sincronizar esta cantidad de carpetas el protocolo, el outlook y el alfresco se caen y no funcionan, hemos hecho todo tipo de tuning y configuracion no se si podias ayudarme con este tema darme alguna configuracion adicional o algun tip.
Gracias
Guillermo Velasquez
Hola Guillermo, no se que versión de Alfresco utilizas. Igual se debe a algún problema en IMAP de Alfresco o en Outlook como puedes ver aquí: https://issues.alfresco.com/jira/browse/ALF-4799
Te invito a que busques IMAP aquí https://issues.alfresco.com/ para poder ver posibles problemas con este tema.
Saludos.
Tony, buen dia la version que estamos utilizando para esta implementacion es Alfresco Enterprise 3.4.9. , gracias por los links, lo estuve revisando.
Crees que es posible que nos podamos contactar via skype ? Me podrias mandar por correo tu cuenta de skype y asi brindarme un poco de apoyo con este tema que hasta el momento no encontramos solucion.
Mi correo es [email protected] y mi cuenta de usuario es guille-glpx.
Desde ya muchas gracias por tu apoyo.
Saludos.
Guillermo
Hola Guillermo, tratándose de la versión Enterprise, el procedimiento debe ser abrir un ticket a soporte indicando el problema, a buen seguro que ellos te podrán ayudar a resolver las dudas o incidencias que tenéis.
Saludos.
Tony, hemos reportado los tickets a Alfresco desde hace un mes, estamos en conversaciones con el personal de soporte pero hasta el momento no encontramos solución a dicho problema, al menos no una que vaya acorde al negocio del cliente.
Desde ya muchas gracias por tu apoyo.
Saludos.
Guillermo
Te contactarán desde Soporte. Saludos.
Ok Tony en verdad muchas gracias.
Muy bueno el blog.
Esperare la comunicación de soporte.
Saludos.
Guillermo
Hola toni.
Una pregunta, yo uso la version comunity 3.2r2 y el correo me funciona, pero sólo cuando mando invitaciones desde el usuario administrador.
Sabes si se pueden mandar correos de invitaciones cuando entras como otro usuario?
gracias
Hola Raúl,
Si, las invitaciones deben funcionar desde cualquier usuario que tenga permisos de gestor de un sitio, pero es probable que en esa versión no estuviese funcionando correctamente. Te recomiendo actualizar.
Saludos.