Skip to content

Configuración del sistema de correo electrónico

Este capítulo explica la configuración del sistema necesaria para que CiviCRM pueda enviar y recibir correos electrónicos. Esta es una tarea compleja que requiere habilidades a nivel de administrador del sistema. La configuración correcta de su sistema de correo electrónico es crucial para mantener su servidor fuera de las listas de spam y listas negras.

Consulte el capítulo de la sección Email sobre la configuración de tareas, que es necesario para configurar el envío de mensajes, una vez se haya terminado de configurar el sistema de correos electrónicos

Algunas partes de las configuraciones son la funcionalidad central de CiviCRM (envío y recepción básicos de correos electrónicos) mientras que otras (correos masivos) requieren que el componente CiviMAIL esté habilitado.

Deberá poder cambiar la configuración de su DNS, crear cuentas de correo electrónico, configurar un trabajo cron, leer los encabezados de los mensajes de correo electrónico y posiblemente cambiar la configuración de su servidor SMTP.

Este capítulo asume que está ejecutando CiviCRM en un servidor Linux y que se siente cómodo trabajando con el shell y ejecutando algunos comandos simples. La mayoría de estos pasos serán similares en otros sistemas operativos, pero deberá adaptarlos a su sistema y herramientas.

La configuración descrita funciona bien para envíos de hasta aproximadamente 10,000 personas. Si planea enviar correo electrónico a cientos de miles de contactos, debe comparar varias opciones y considerar un servidor SMTP dedicado. Esta configuración más compleja está fuera del alcance de esta documentación, pero puede encontrar instrucciones aportadas por la comunidad en la wiki de CiviCRM. (http://wiki.civicrm.org/confluence/display/CRMDOC/CiviMail+Installation).

En este capítulo usaremos una dirección de buzón de correo de Gmail externa para probar la configuración. Entonces, el primer paso es crear una cuenta de Gmail si aún no tiene una; como alternativa, puede utilizar otra dirección para probar los procedimientos de este capítulo, pero deberá poder ver el origen de los correos que reciba.

Una vez que su sistema esté configurado correctamente, usaremos cron para activar las Tareas Programadas de CiviCRM para garantizar que se envíen sus correos programados.

Configurar el servicio de correo electrónico saliente

La configuración del correo electrónico saliente se configura en: Administrar > Opciones del Sistema> Correo Saliente (SMTP / Sendmail). Las opciones aquí son:

Screen shot of mail choices

  • mail(): Esta es la opción predeterminada y, si le funciona, debería usarla.
  • SMTP: Si tiene un servidor de correo externo dedicado, especifique sus detalles aquí. Los mensajes de rebote generados con SMTP son un poco más completos que los de mail(), pero no hay ningún beneficio práctico de usar SMTP si puede usar mail().
  • Sendmail: Esta opción se mantiene por compatibilidad con versiones anteriores de CiviCRM.
  • Desactivar Correo Electrónico Saliente: Realiza lo que se espera.
  • Redireccionar a Base de Datos: Todos los correos electrónicos se registrarán como correos archivados en lugar de enviarse. Se pueden encontrar en la tabla civicrm_mailing_spool en la base de datos CiviCRM.

Después de hacer una elección, envíe un correo electrónico de prueba a su cuenta de Gmail y verifique que lo recibe.

Si recibe el siguiente mensaje de error, deberá configurar una dirección de correo electrónico FROM predeterminada (explicada en el capítulo sobre la configuración de CiviMail).

Sorry. A non-recoverable error has occurred.
The site administrator needs to enter a valid 'FROM Email Address' in
Administer -> Configure -> Domain Information.
The email address used may need to be a valid mail account with your email service provider.

Una vez que haya recibido el correo electrónico, deberá ver la fuente. Esto se hace en Gmail seleccionado "Mostrar Original" en el correo electrónico que recibe.

El correo electrónico debe contener encabezados similares a los siguientes.

Received: from yourmailserver.example.org (xxx.example.org
[12.45.120.30])
by mx.google.com with ESMTP id e31si4519230wej.3.2010.04.26.00.38.16;
Mon, 26 Apr 2010 00:38:17 -0700 (PDT) Received-SPF: pass
google.com: best guess record for domain of
[youremail@example.org](mailto:youremail@example.org) designates
12.45.120.30 as permitted sender) client-ip=12.45.120.30

En particular:

  • El encabezado "Received: from" debe corresponder a su servidor de correo y estar configurado correctamente. Puede contener información sobre su proveedor de alojamiento en lugar de su nombre de dominio. Esto no es un problema siempre que el servidor de correo esté configurado correctamente. Si tiene una dirección IP dedicada para su servidor, debe intentar configurar un DNS inverso que represente a su organización en lugar del nombre predeterminado.
  • El encabezado "Received-SPF" debe incluir "pass" o "neutral". Las Sender Policy Framework (SPF) se describen con más detalle en esta documentación.

El envío de correos masivos requiere muchos recursos. No recomendamos enviar correos electrónicos de proveedores de alojamiento económicos. El tiempo que dedicará a solucionar problemas a menudo costará más que actualizar a un host más profesional. Consulte con su proveedor de alojamiento para averiguar si limitan la cantidad de mensajes de correo electrónico que puede enviar y si ejecutan PHP en modo seguro.

Algunos de los servidores de correo de sus destinatarios utilizan servicios de lista negra basados ​​en DNS (DNSBL) que mantienen una lista negra de direcciones IP que probablemente envíen spam. El correo de estos servidores se marcará como spam y no llegará a su destino previsto. Si su servidor está en la lista negra (por ejemplo, porque muchos de sus destinatarios marcaron su correo electrónico como spam, o porque otro sitio web en su servidor ha sido marcado como spam), deberá comunicarse con las organizaciones que lo han incluido en la lista negra y convencerlas de que sean eliminados de ella.

Son varios sitios web que ayudan a verificar si se encuentra en una DNSBL. Una búsqueda en la web de "correo electrónico en lista negra" mostrará algunos. Pruebe regularmente para saber si se encuentra en una lista negra.

Configurar los SPF (Sender Policy Framework)

Predeterminadamente, Internet permite que cualquier servidor de correo envíe cualquier correo electrónico que afirme ser de cualquier persona. Esto facilita que los spammers falsifiquen direcciones y envíen spam utilizando su dirección de correo electrónico (o cualquier otra). SPF le permite crear un registro DNS especial que enumere las direcciones IP de los servidores de correo que pueden enviar correo electrónico legítimamente desde @sudominio.org.

Si su nombre de dominio ya tiene un registro SPF, asegúrese de que incluya la dirección IP de su servidor de correo CiviCRM (que puede ser diferente del host utilizado para el servidor web o de sus servidores de correo), y si no lo tiene , agregue su dirección IP.

Si no tiene un registro SPF, considere agregar uno. Deberá agregar al menos su servidor de correo y el servidor CiviCRM (si son diferentes) al registro SPF.

Puede leer más sobre SPF en http://www.openspf.org.

Configurar el procesamiento del correo electrónico entrante

Esta sección explica la configuración para el procesamiento de devoluciones y el archivo automático de correos electrónicos entrantes. La configuración de las Tareas Programadas para realizar el procesamiento real de rebotes se describe a continuación.

Procesamiento de rebote

CiviCRM puede recibir automáticamente la notificación por correo electrónico rebotado (http://en.wikipedia.org/wiki/Bounce_message) y, marcar los contactos dependiendo el tipo de rebote informado por el servidor del destinatario (http://tools.ietf.org/html/rfc3463). Para lograr esto, necesitará configurar un buzón de correo electrónico para recibir correos electrónicos rebotados y programar la tarea de Recuperación de Rebotes que leerá periódicamente este buzón y actualizará sus contactos en CiviCRM.

Administrar > Opciones del Sistema > Tareas Programadas

Screen shot of bounce fetcher scheduled job

La dirección de correo electrónico de rebotes es una dirección de correo electrónico "invisible" que solo se ve en el sobre del mensaje de correo electrónico (campos ocultos que preceden a los encabezados y el mensaje agregado por el usuario). Elija cualquier nombre que le guste y que sea significativo para usted. En este ejemplo, hemos elegido return, por lo que la dirección de correo electrónico que necesitamos configurar en un servidor de correo para example.org es return@example.org.

Para cada correo electrónico enviado a través de la función de envío masivo de CiviMail, se crea una nueva dirección de remitente "invisible" única usando la "ruta de retorno de sobre variable" o VERP. Cuando CiviCRM recibe un rebote, mira la dirección del remitente invisible para decidir qué correo electrónico rebotó.

CiviCRM luego observa el patrón de rebote y escribe para decidir qué acción tomar. Los tipos de rebote se dividen en dos categorías básicas: fallas permanentes (rebote duro) y falla transitoria (rebote suave). Una sola falla permanente hace que CiviCRM establezca el correo electrónico del contacto como "En Espera". Para fallas transitorias, CiviCRM espera varios rebotes antes de poner el correo electrónico del contacto "En Espera".

El umbral específico para cada tipo de rebote se puede encontrar en civcirm_mailing*_*bounce_pattern y civicrm_mailing_bounce_type. Múltiples patrones de respuesta de rebote diferentes están vinculados a un tipo y umbral determinados.

Email-a-Procesando Actividad

CiviCRM puede recuperar automáticamente el correo electrónico de una bandeja de entrada específica y archivarlo como una actividad de correo electrónico contra los contactos de tipo Individual correspondientes al remitente y destinatario del correo electrónico. Se crean nuevos contactos individuales para direcciones de correo electrónico que aún no están asignadas a personas en la base de datos.

NOTA: Esta función solo funciona para el tipo de contacto individual. Si el correo electrónico entrante proviene de una dirección de correo electrónico ya registrada en una organización, se creará un nuevo contacto individual con esa misma dirección de correo electrónico y la actividad se registrará en ese nuevo contacto individual, no en la organización.

Hay dos formas de hacer esto (una o ambas formas se pueden configurar al mismo tiempo):

  • Dirección de correo electrónico especial: Configure una dirección de correo electrónico especial para su organización, por ejemplo, civiemails@example.com. Los usuarios pueden agregar esta dirección en el campo CCO para sus correos electrónicos salientes; se archivarán automáticamente en CiviCRM como se describe arriba. Nadie que reciba el correo electrónico verá esta dirección especial si se utiliza el campo CCO.
  • Carpeta IMAP: Configure una carpeta en la bandeja de entrada IMAP donde se puedan arrastrar los correos electrónicos que quieras archivar en CiviCRM. Esto funciona con correos electrónicos entrantes y salientes (esto requiere que su correo electrónico esté configurado usando IMAP).

Dirección de correo electrónico especial para correo electrónico entrante

Hay varias formas de configurar su buzón de correo entrante:

  • Subdirección: Su servicio de correo puede permitirle agregar el caracter "+" o "-" a su dirección de correo electrónico (por ejemplo, return+test@example.org). Varios servidores de correo, incluidos Gmail, Yahoo! y Postfix proporcionan este subdireccionamiento de forma predeterminada.

Intente enviarse un correo electrónico, agregando el caracter "+" o "-". Si recibió el correo que envió con ese valor, significa que puede usar directamente el buzón que creó (return@example.org en nuestro ejemplo) como VERP. * Cuenta "Catch-all": Si la subdirección no funciona en su servidor de correo, debe definir la cuenta de correo que creó (return@example.org) como la cuenta "catch-all". Cada correo enviado a una dirección que no es una cuenta de correo real terminará allí, incluidos todos los mensajes de correo electrónico rebotados. * Dirección externa: Si ninguno de los métodos anteriores funciona, considere la posibilidad de crear una nueva cuenta en un servicio como Gmail y utilícela para recibir los correos electrónicos devueltos. Tendrá que configurar filtros en esta cuenta para que no descarte como spam todos los correos electrónicos rebotados que recibirá.

Agregar una cuenta de correo electrónico entrante para procesar rebotes y / o correo electrónico a actividades

Una vez que haya creado su cuenta de correo electrónico para recibir los correos rebotados o correos electrónicos para archivar automáticamente, debe configurar CiviMail para que sepa cómo leerlo: Administrar > CiviMail > Cuentas de Correo como la dirección de correo electrónico predeterminada.

Screen shot of the email box selection screen

Screen Shot of adding an email box

  • Especifique el servidor de correo, el nombre de usuario y la contraseña que utilizó al crear la cuenta.
  • La parte local es opcional y solo es relevante si pudo configurar una cuenta usando subdirección. Debe ser la cuenta que creó con '+' o '-' adjunto, por ejemplo, "return+" o "return-".
  • El Dominio del Email es el dominio de su dirección de correo electrónico (ejemplo.org).
  • Puede dejar la Ruta de devolución del Email vacía.
  • Si su servidor de correo lo admite, especifique el protocolo IMAP y marque SLL; de lo contrario, use POP.
  • Puede especificar una carpeta IMAP en el campo de Origen utilizando la sintaxis INBOX.CiviMail. Nota: Es posible que algunos servidores de intercambio no estén configurados de manera compatible. En ese caso, puede configurar un script como fetchmail y usar Maildir.
  • En el ¿Utilizada para? puede elegir si desea utilizar la cuenta de correo electrónico para el procesamiento de rebotes o el procesamiento de correo electrónico a actividad (o archivo automático). Puede especificar varias cuentas para la presentación automática, pero solo una para el procesamiento de rebotes. Esto se marcará como predeterminado.

Una vez que se configura el buzón de Procesamiento de Rebotes, deberá configurar CiviMail para vaciarlo, leer todos estos mensajes rebotados e identificar los contactos rebotados relacionados. Esto se realiza mediante la función de trabajos programados de CiviCRM.

Recomendamos probar el proceso de rebotes ejecutando el proceso manualmente antes de configurar CiviCRM para procesar los correos electrónicos rebotados automáticamente. Esto se puede hacer en Administrar > Opciones del Sistema > Tareas Programadas. Busque Fetch Bounces y seleccione más > Ejecutar ahora. Consulte el Registro de tareas para ver si hay mensajes de error.

Una vez que haya verificado que CiviCRM puede manejar correctamente el rebote, puede configurarlo para que procese automáticamente las respuestas y los rebotes de forma regular.

## Programación del procesamiento de correo entrante y saliente

Como se discutió en el capítulo anterior, el procesamiento de correo y otros trabajos pueden automatizarse a través de la página administrativa de Tareas Programadas, Crons o una combinación de ambos. La gama completa de opciones se analiza en la página wiki Manage Scheduled Jobs, pero a continuación se muestran ejemplos específicos para habilitar el procesamiento de correo de CiviCRM.

Tareas Programadas

Los correos masivos se generan a través de la interfaz web de CiviMail y se ponen en cola para enviarse a sus destinatarios. Para programar el procesamiento regular de esta cola y cualquier rebote que se devuelva, vaya a Administrar > Opciones del Sistema > Tareas Programadas y busque los trabajos Fetch Bounces y Send Scheduled Mailings. Edite cada uno, estableciendo su Frecuencia programada en "Hourly" ("Cada hora"), "Daily" ("Diariamente") or "Every time cron is run." ("Cada vez que se ejecuta cron"). Los valores predeterminados deberían estar bien para instalaciones pequeñas. Luego seleccione más > Habilitar para cada uno.

En este ejemplo, utilizando la frecuencia predeterminada de los trabajos y el cron configurado para ejecutarse a intervalos de 15 minutos, los correos programados se enviarían cada 15 minutos (Manage Scheduled Jobs) y los rebotes se buscarían y procesarían cada hora.

Si necesita enviar un correo electrónico desde CiviCRM de inmediato, sin esperar el trabajo cron, puede activar el proceso de envío visitando Administrar > Opciones del Sistema > Tareas Programadas seleccione más > Ejecutar ahora. Utilice esta opción con moderación, ya que podría utilizar muchos recursos del servidor y hacer que CiviCRM se ralentice notablemente. La configuración administrativa para enviar correo electrónico generalmente se configura para minimizar la carga en el servidor, y la programación del trabajo es una forma más eficiente de enviar correos electrónicos masivos.

Programar solo las tareas de correo utilizando la interfaz de línea de comandos

Como alternativa en Linux y otros sistemas Unix o similares a Unix, se pueden usar Cron individuales para programar el procesamiento de correo entrante y saliente en lugar de la sección Tareas Programadas. Este enfoque brinda a los administradores de sistemas experimentados un control más granular sobre estos procesos al configurar trabajos cron específicos además de otras tareas programadas.

El Cron debe ejecutarse con una cuenta reconocida por su CMS. Cree una cuenta dedicada a esta tarea (por ejemplo, mailprocess, civimail, etc.), asígnele una contraseña segura y otorgue acceso a CiviCRM, CiviMail y "ver todos los contactos". No cambie la contraseña de la cuenta sin cambiar la contraseña en los archivos de configuración de este Cron.

Para configurar su Cron, primero, averigüe si php-cli está instalado. Desde el shell, escriba php -v y verifique si ve (cli) en el resultado, como en:

PHP 5.2.3-1ubuntu6.5 (cli) (built: Feb 11 2009 19:55:53) Copyright (c)
1997-2007
The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007
Zend Technologies with eAccelerator v0.9.5.3, Copyright (c) 2004-2006
eAccelerator, by eAccelerator

Esto significa que tienes php-cli instalado y debes usarlo, porque tiene varias ventajas:

  • Puede ejecutar un script PHP con una prioridad más baja que su servidor web, de modo que incluso si requiere mucha CPU, no interferirá con los usuarios habituales de su sitio.
  • Puede establecer diferentes límites de memoria para el proceso php-cli y el proceso PHP utilizado por su servidor web.
  • Evita la sobrecarga del servidor web y la capa HTTP.
  • No habrá problemas de tiempo de espera.

La siguiente es una configuración de Cron completa, para manejar los requisitos de correo de CiviCRM:

# This must be set to the directory where civicrm is installed.
CIVI_ROOT=/var/www/civicrm

# Comment: I believe these two lines are unnecessary.
# USER=www-data
# MAILTO="you@example.org"

# Location of the PHP Command Line Interface binary.
# nice -19 forces to run at a lower priority than the web server

PHP=nice -n19 /usr/bin/php

# line to be modified according to the informations below
# like this: PARAMS= -j -s<default or domain> -u<user>
-p<password> -e Job -a process_mailing

PARAMS= -j -sdefault -umailprocess -pseol-lzprm42amv-psyc -e Job -a
process_mailing
PARAMSBOUNCE= -j -sdefault -umailprocess -pseol-lzprm42amv-psyc -e Job
-a fetch_bounces

# cronjob send
# m h dom mon dow command
*/5 * * * * cd $CIVI_ROOT; $PHP bin/cli.php $PARAMS
*/15 * * * * cd $CIVI_ROOT; $PHP bin/cli.php $PARAMSBOUNCE

El usuario que ejecuta los scripts (www-data en este ejemplo) necesita poder escribir en la carpeta temporal. Su configuración puede especificar un usuario diferente.

No es necesario que ejecute ambos scripts con la misma frecuencia. El archivo crontab anterior verifica cada 5 minutos si es necesario enviar mensajes de correo, pero solo cada 15 minutos si es necesario procesar el correo electrónico devuelto.

PARAMS contiene:

  1. El sitio que utilizó, que es -sdefault en Drupal. Si ejecuta varios sitios de CiviCRM en un solo servidor, debe especificar el dominio de su sitio, como -sexample.org.
  2. La cuenta de inicio de sesión del usuario (-umailprocess).
  3. La contraseña segura que definió ( por ejemplo, -pseol-lzprm42amv-psyc).