7 votes

Services de messagerie du serveur Mac OS X et notifications push vers les appareils iOS

  • J'utilise OS X 10.9 avec Server 3.0.1 sur un Mac résidant sur un sous-réseau privé situé derrière un routeur dont le port WAN est branché sur un modem câble, donc le FAI est un fournisseur d'accès à Internet par câble bien connu.

  • Ce serveur a son DNS correctement configuré (c'est-à-dire que le résultat de "sudo changeip -checkhostname" sur le serveur via la ligne de commande donne des résultats parfaits).

  • Ce serveur exécute un Open Directory Master.

  • Le DNS dynamique est correctement configuré pour le routeur et résout l'adresse IP publique attribuée par mon FAI au même nom de domaine que le serveur (je transfère tous les ports requis pour les services que j'exécute).

  • Ce serveur a également installé un certificat de serveur signé par une autorité de certification de confiance (Go Daddy) et fonctionne parfaitement pour tous les services du serveur OS X, y compris Open Directory.

  • Ce serveur dispose également du service de messagerie configuré (SMTP et IMAP) sans aucun problème (je peux envoyer et recevoir du courrier vers/depuis le serveur).

  • Ce serveur a également activé les notifications push et dispose d'un certificat de notification push parfaitement installé (obtenu sur le portail de certificats de notification push d'Apple, renouvelé il y a quelques jours).

  • J'ai quelques appareils iOS fonctionnant sous iOS 7.0.4. J'ai configuré Mail sur ces appareils iOS pour envoyer et recevoir du courrier vers/depuis le serveur susmentionné pour quelques comptes utilisateurs différents sur le serveur. Cela fonctionne bien (testé, envoi et réception de courrier sans problème).

  • Les paramètres de messagerie des appareils iOS susmentionnés pour le serveur susmentionné ont été configurés pour recevoir des notifications push lorsque du courrier est reçu pour lesdits comptes d'utilisateur sur le serveur.

Ceci étant dit, les appareils iOS sont parfois de recevoir des notifications push de la part de l Service de notification push d'Apple (APNS "cloud") dans les situations où les appareils iOS résident sur le même sous-réseau privé que le serveur Mac (via Wi-Fi), et lorsqu'ils résident sur l'internet public (via des réseaux de données cellulaires ou des réseaux Wi-Fi publics tels que les cafés).

Ainsi, les notifications push faire fonctionnent lors de la réception de messages sur le serveur, mais pas toujours. Après une période de temps écoulée sur le serveur pendant laquelle aucun message électronique n'a été reçu (il semble que ce soit plusieurs heures, mais je n'ai pas encore pu le déterminer avec précision), le serveur perd apparemment ce qui est censé être un persistant connexion avec la passerelle APNS. OS X Server n'enregistre malheureusement pas la perte de cette connexion. Ensuite, lorsqu'un nouveau message électronique arrive à nouveau après plusieurs heures et est reçu par le serveur, les appareils iOS n'ont pas de connexion avec le serveur APNS. pas reçoivent les notifications push attendues et, au lieu de cela, OS X Server affiche systématiquement un message d'erreur comme celui-ci (les seules différences étant bien sûr l'ID du processus et l'horodatage) :

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

Une fois que le type d'erreur ci-dessus est enregistré dans les journaux, un message électronique ultérieur envoyé au serveur génère avec succès un message de notification push sur les appareils iOS configurés, à condition que le message ultérieur soit envoyé avant qu'un délai minimal ne se soit écoulé (c'est-à-dire plusieurs heures). Je ne transfère pas les ports 2195 ou 2196 du routeur vers le serveur Mac, car le protocole de transfert de port d'Apple ne permet pas d'accéder à ces ports. document d'appui implique que ces ports sont destinés au trafic sortant (du serveur vers la passerelle APNS), sauf si j'ai mal compris.

Un extrait de la note technique TN2265 de la bibliothèque des développeurs Mac d'Apple a attiré mon attention sur les points suivants oisif :

A Il suffit de rétablir la connexion et de continuer. Si l'un serveurs push est en panne, le mécanisme d'équilibrage de la charge de charge dirigera de manière transparente votre nouvelle connexion vers un autre serveur, en supposant que vous vous connectez par nom d'hôte et non par adresse IP statique.

OS X Server (le "fournisseur" dans ce contexte) ne fait-il que "continuer" en "rétablissant" la connexion à APNS après avoir été "inactif" pendant plusieurs heures, comme l'indiquent les journaux dans l'erreur de flux susmentionnée ?

Quelqu'un à qui j'en ai parlé a avancé que les problèmes susmentionnés pouvaient être dus au fait que le port WAN du routeur ne s'est pas vu attribuer une adresse IP statique par mon fournisseur d'accès, mais de toute la documentation des développeurs Apple et des documents d'assistance que j'ai consultés au sujet des notifications push avec OS X Server, il n'est pas indiqué qu'une adresse IP statique est nécessaire.

note : J'ai également testé ceci avec le même matériel et les mêmes paramètres mais sous OS X 10.8.5 Mountain Lion avec Server app 2.2.1 avec essentiellement les mêmes résultats mais IMHO une meilleure verbosité des logs, comme par exemple :

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

Toute aide ou suggestion pour résoudre ce problème serait grandement appréciée, il s'agit peut-être de quelque chose de simple que j'ai négligé.

1voto

Cameron Points 1371

Ce problème a été résolu. Le routeur ASUS "Dark Knight" qui fournissait le réseau local privé (NAT) et la redirection de port au Mac fonctionnant sous OS X Server présente un bogue de micrologiciel. Le bogue se manifeste par l'ABANDON de la connexion TCP établie sur le port 2195 entre le Mac fonctionnant sous OS X Server et l'APNS, après deux heures d'inactivité. Le routeur n'aurait pas dû interrompre cette connexion, aucune règle de pare-feu ne le lui ordonnait. La leçon à retenir est qu'il faut être beaucoup plus sélectif et avisé dans le choix des routeurs (en particulier les routeurs grand public) à utiliser avec des serveurs, même pour des serveurs exploités dans le cadre d'une petite entreprise (comme un serveur Mac Mini).

Rubrique

0voto

Tony Williams Points 11219

Mes premières mesures de diagnostic consisteraient à transférer ces deux ports et à voir ce qui se passe (je pourrais même placer la machine dans une zone démilitarisée pendant quelques heures).

Je mettrais alors un renifleur de paquets sur le bloc d'adresses 17.0.0.0/8 et je verrais quel trafic sur quels ports passe sur le réseau quand il fonctionne et quand il ne fonctionne pas.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X