Como Configurar el Servidor de Correo Saliente

coreBOS necesita una cuenta de correo de salida para poder enviar correos administrativos relativos al funcionamiento de la aplicación. Utilizando esta cuenta de correo enviará correos de aviso provenientes de los flujos de trabajo, del calendario o al finalizar una importación (por ejemplo).

Dado que es necesaria esta cuenta de correo se ha tomado la decisión de utilizarla también para enviar los correos de trabajo de los propios usuarios. Para que esto funcione y parezca que cada usuario manda los correos desde su propia cuenta se utiliza una técnica permitida por el protocolo de envíos de correo (SMTP) denominado RELAY. Esto consiste en que el programa se conecta al servidor con la cuenta que tiene configurada y le indica que va a mandar el correo en nombre de otra cuenta de correo.

Esta característica propia del sistema SMTP ha pasado por una fase de mala prensa debido a su abuso por parte de generadores de spam y virus que lo aprovechan para enviar emails no autorizados en nombre de otros usuarios. Es por ello que algunos servidores, más estrictos con los emails que pasan por ellos, no lo permiten y NO FUNCIONARAN con coreBOS o solo permitirán enviar emails como un único usuario, el que se utiliza para conectar al servidor.

Para introducir los datos de la cuenta de correo de salida hay que ir a la sección de Configuración y dentro de la misma a la sección Configuración del Servidor de Correo

Configuración > Configuración del Servidor de Correo

Servidor de Correo Salientees el servidor al que hemos de conectar para poder enviar correos. este campo soporte una sintaxis extendida mediante la cual podremos indicar el protocolo y el puerto, algo así:
ssl://smtp.gmail.com:467

o

tsl://msexchange:587
Usuario y Contraseñason el usuario y la contraseña para conectar al servidor
Email deeste campo forzará que todos los emails que salgan del sistema parezcan que provienen de este email. No obstante el email del usuario que envía el email se utilizará como “Responder a”. Esto significa que si el receptor pulsa sobre responder, su respuesta llegará al usuario que lo ha mandado aunque el correo se haya enviado desde este email. Supongo que por temas de spam y/o imagen tendrá alguna justificación
Requiere autentificaciónnos permite definir el protocolo a utilizar para la conexión

Al guardar los datos se hará una comprobación de conexión y envío de correo. Si no se consigue enviar correctamente el correo NO se guardarán los datos. Seremos devueltos a la página de configuración con un mensaje que indica que no se ha podido enviar el correo. Llegados a este punto hay un error de conexión o autentificación o de soporte de RELAY y hay que acudir a las técnicas de depuración.

Cuando volvemos a la página de configuración, los valores anteriores están presentes. No podemos ver el campo de la contraseña, pero es lo más probable que sea incorrecta, el valor que se introduce NO es rellenado de nuevo. Debes introducir la contraseña en todas las pruebas que hagas.

Si al depurar llegamos a un mensaje de error del tipo:

SMTP -> FROM SERVER:550 5.7.1 Client does not have permissions to send as this sender
SMTP -> ERROR: DATA END command failed: 550 5.7.1 Client does not have permissions to send as this sender
SMTP Error: data not accepted.

El servidor de correo está diciendo que no tenemos permiso para enviar. Básicamente dice que el error es porque la cuenta con la que se conecta ha de ser la misma que el remitente, el servidor no soporta RELAY.

Si os pasa esto, os recomiendo pillar una cuenta en sendgrid, de verdad que funciona de maravilla y os da mucha más información de la que tenéis ahora. Tienen cuentas gratuitas con un limite de 200 correos al día y por poco dinero podéis hacer aun más. Nosotros lo utilizamos con regularidad para envíos masivos desde coreBOSCRM y para controlar las entregas de correo administrativo. Vale más de lo que cuesta.

Algunas páginas relativas al error de configuración

Depurando errores

Email

Have a read here about how coreBOS outgoing email server works and how to configure it.

Activate the debug log at level FATAL and set the Debug_Email_Sending global variable to 1. This will send the whole conversation between coreBOS and the email server to the log file so you can diagnose the problem.

In previous versions, we used to need the changes below which I leave here as a reference only. The global variable method is better.

To debug the outgoing email server the best is to activate PHPMailer debugging with the changes below and look in the debug log file (logs/vtigercrm.log)

diff --git a/modules/Emails/class.phpmailer.php b/modules/Emails/class.phpmailer.php
index 8427255..61bd55c 100644
--- a/modules/Emails/class.phpmailer.php
+++ b/modules/Emails/class.phpmailer.php
@@ -326,7 +326,7 @@ class PHPMailer
      * @var integer
      * @see SMTP::$do_debug
      */
-    public $SMTPDebug = 0;
+    public $SMTPDebug = 4;
 
     /**
      * How to handle debug output.
diff --git a/modules/Emails/mail.php b/modules/Emails/mail.php
index a8cac72..7674172 100755
--- a/modules/Emails/mail.php
+++ b/modules/Emails/mail.php
@@ -328,7 +328,14 @@ function setMailServerProperties($mail)
        $mail->Host = $server;          // specify main and backup server
        $mail->Username = $username ;   // SMTP username
        $mail->Password = $password ;   // SMTP password
-
+global $log;$log->fatal(array(
+       'SMTPOptions' => $mail->SMTPOptions,
+       'SMTPSecure' => $mail->SMTPSecure,
+       'Host' => $mail->Host = $server,
+       'Username' => $mail->Username = $username,
+       'Password' => $mail->Password = $password,
+));
+$mail->Debugoutput = function($str, $level) { global $log;$log->fatal($str);};
        return;
 }
 
2014/05/19 11:20 · joebordes

coreBOS Documentación