2010-04-13 11 views
7

Me preguntaba si alguien podría explicarme por qué tardan casi 30 segundos cada vez que mi aplicación web Java envía un correo electrónico usando el servidor SMTP de Gmail. Ver las siguientes marcas de tiempo:Uso de gmail como servidor SMTP en la aplicación web Java es lento

13/04/2010-22: 24: 27: 281 test.service.impl.SynchronousEmailService DEBUG - Antes de enviar el correo. 13/04/2010-22: 24: 52: 625 DEBUG test.service.impl.SynchronousEmailService - Después de enviar el correo.

estoy usando la clase JavaMailSender de primavera con los siguientes ajustes:

email.host = smtp.gmail.com

[email protected] email.password = mypassword correo electrónico .port = 465 mail.smtp.auth.required = true

Tenga en cuenta que el correo se está enviando y lo estoy recibiendo bien, solo hay esta demora que está resultando en una experiencia lenta para el usuario de la aplicación.

Si usted sabe cómo puedo diagnosticar el problema a mí mismo que sería bueno también :)

+0

Esta discusión puede estar relacionada: http://groups.google.com/group/Gmail-Help-POP-and-IMAP-en/browse_thread/thread/575e3f06894ab8b9/97d753671e733c41?lnk=gst&q=slow – Andre

Respuesta

4

Podría ser que Gmail utiliza este retraso para evitar que los spammers el uso de su servidor SMTP desde el "exterior": si el SMTP se llama desde el cliente de correo web real que no usaría este retraso. Para probar esto, puede abrir una sesión de Telnet en el puerto 25 y hacer una sesión SMTP manual (Buscar HELP SMTP en la web para ver ejemplos)

2

GMail usa SSL para la conexión. Para validar el certificado SSL correctamente, se necesita cierto tiempo. El tiempo exacto depende de la complejidad de la cadena de certificados y del uso y accesibilidad de las CRL y la verificación OCSP. Es muy probable que Java verifique los OCSP para los certificados presentados, y esto puede ser lento.

intente ejecutar la aplicación en diferentes sistemas (preferiblemente en otra subred) para excluir la influencia de los cortafuegos. Tal vez parte de la comunicación (SMTP en sí misma, recuperación de CRL u OCSP) se ralentiza por el firewall.

0

Dependiendo de su sistema operativo, usted debe tener un sistema electrónico adecuado que se encarga de enviar los correos realidad fuera de su red.

Por ejemplo, Postfix puede hacer el trabajo muy bien. La configuración de Postfix estaría en otro hilo, pero normalmente Postfix aceptaría correos de su LAN (aceptando ser un relé para su LAN) y transferiría los correos a gmail.

Esta es una exemple en cuanto a cómo la configuración de sufijo para tener Gmail como relé.

Tener un servicio de correo que se ocupe del relevo de correos de Gmail permite que su aplicación Java se libere casi al instante (Postfix absorbe el correo, lo almacena en su cola y lo reenvía a Gmail).

+1

Why -1 ? Tener un servidor de correo adecuado es común para tratar el tráfico de correo y resolvería la demora de su operación de envío. –

Cuestiones relacionadas