-
Estoy ejecutando OS X 10.9 con Server 3.0.1 en un Mac que reside en una subred privada situada detrás de un router cuyo puerto WAN está conectado a un módem por cable, de ahí que el ISP sea un conocido proveedor de servicios de Internet por cable.
-
Este servidor tiene sus DNS correctamente configurados (es decir, el resultado de "sudo changeip -checkhostname" en el servidor a través de la línea de comandos arroja resultados perfectos).
-
Este servidor está ejecutando un Open Directory Master.
-
El DNS dinámico está correctamente configurado para el router, y resuelve la dirección IP pública asignada por mi ISP al mismo nombre de dominio que el servidor (reenvío los puertos necesarios para los servicios que ejecuto).
-
Este servidor también tiene instalado un certificado de servidor firmado por una CA de confianza (es decir, Go Daddy) y funciona perfectamente para todos los servicios de OS X Server, incluido Open Directory.
-
Este servidor también tiene configurado el servicio de Correo (SMTP e IMAP) sin problemas (puedo enviar y recibir correo a/desde el servidor.
-
Este servidor también tiene activadas las notificaciones push y tiene perfectamente instalado un certificado de notificaciones push (obtenido del portal de certificados de notificaciones push de Apple, recién renovado hace unos días).
-
Tengo algunos dispositivos iOS con iOS 7.0.4. He configurado Mail en estos dispositivos iOS para enviar y recibir correo a/desde el servidor mencionado para algunas cuentas de usuario diferentes en el servidor. Esto funciona bien (probado, puede enviar y recibir correo sin problemas).
-
Los ajustes de correo de los dispositivos iOS mencionados para el servidor mencionado se han configurado para recibir notificaciones push cuando se reciba correo a dichas cuentas de usuario en el servidor.
Dicho todo esto, los dispositivos iOS son a veces recibir notificaciones push del Servicio de notificaciones push de Apple (APNS "nube") en situaciones en las que los dispositivos iOS residen en la misma subred privada que el servidor Mac (a través de Wi-Fi), y cuando residen en la Internet pública (a través de redes de datos celulares o redes Wi-Fi públicas como cafeterías).
Así, las notificaciones push do funcionan cuando se reciben mensajes de correo en el servidor, pero no siempre. Una vez transcurrido un periodo de tiempo en el servidor en el que no se han recibido mensajes de correo electrónico (parece ser de varias horas, pero aún no he podido precisarlo), el servidor pierde aparentemente lo que se supone que es un persistente conexión con la pasarela APNS. Lamentablemente, OS X Server no registra cuándo se pierde esta conexión. Entonces, cuando un nuevo mensaje de correo electrónico finalmente llega de nuevo después de varias horas y es recibido por el servidor, los dispositivos iOS hacen no reciben las notificaciones push esperadas y, en su lugar, OS X Server registra sistemáticamente un mensaje de error como éste (las únicas diferencias son, por supuesto, el ID del proceso y la marca de fecha y hora):
11/26/13 5:48:11.762 AM push_notify[181]: stream: received error: The operation couldn’t be completed. Connection reset by peer on: incoming stream: APN to host: gateway.push.apple.com:2195
Una vez que el tipo de error anterior se registra en los registros, un mensaje de correo electrónico posterior enviado al servidor genera correctamente un mensaje de notificación push en los dispositivos iOS configurados siempre que el mensaje posterior se envíe antes de que transcurra un tiempo mínimo (es decir, varias horas). No reenvío los puertos 2195 o 2196 desde el router al servidor Mac porque Apple documento de apoyo implica que estos puertos son para el tráfico saliente (del servidor a la pasarela APNS) a menos que lo haya entendido mal.
Un extracto de la nota técnica TN2265 de la Mac Developer Library de Apple me llamó la atención con respecto a inactivo :
Una desconexión ocasional mientras su proveedor está inactivo es n restablecer la conexión y continuar. Si uno uno de los servidores push está caído, el mecanismo de equilibrio de carga dirigirá de forma transparente su nueva conexión a otro servidor suponiendo que que te conectas por nombre de host y no por dirección IP estática.
¿Está OS X Server (el "proveedor" en este contexto) esencialmente "continuando" al "restablecer" la conexión con APNS después de haber estado "inactivo" durante varias horas, como se observa en los registros por el error de flujo antes mencionado?
Una persona con la que hablé de esto me dijo que los problemas anteriores podían deberse a que mi ISP no había asignado una dirección IP estática al puerto WAN del router, pero en toda la documentación para desarrolladores y de soporte de Apple que he consultado sobre las notificaciones push con OS X Server no se indica que sea necesaria una dirección IP estática.
nota: También he probado esto con el mismo hardware y configuración, pero ejecutando OS X 10.8.5 Mountain Lion con Server app 2.2.1 con esencialmente los mismos resultados, pero IMHO mejor verbosidad de registro, como en:
11/29/13 11:16:55.713 PM push_notify[11951]: stream: received error: The operation couldn’t be completed. Connection reset by peer on: incoming stream: APN to host: gateway.push.apple.com:2195
11/29/13 11:16:55.722 PM push_notify[11951]: Disconnected from apn server gateway.push.apple.com for topic com.apple.mail.XServer.2a132c32-dda4-45a1-68e1-b3cca3865c12: error Connection reset by peer
11/29/13 11:16:55.722 PM push_notify[11951]: will attempt to reconnect stream APN to host gateway.push.apple.com:2195 in 15 seconds
Cualquier ayuda o sugerencia para resolver esto sería muy apreciada, puede ser algo simple que he pasado por alto.