-
Sto utilizzando OS X 10.9 con Server 3.0.1 su un Mac che risiede su una subnet privata posta dietro un router la cui porta WAN è collegata a un modem via cavo, quindi l'ISP è un noto servizio Internet via cavo fornitore.
-
Questo server ha il suo DNS configurato correttamente (ad esempio, il risultato di "sudo changeip -checkhostname" sul server tramite riga di comando produce risultati perfetti).
-
Questo server sta eseguendo un Open Directory Master.
-
Il DNS dinamico è configurato correttamente per il router e risolve l'indirizzo IP pubblico assegnato dal mio ISP allo stesso nome di dominio del server (inoltro eventuali porte richieste per i servizi che eseguo).
-
Questo server ha anche installato un certificato server firmato da una CA attendibile (ad esempio, Go Daddy) e funziona perfettamente per tutti i servizi di OS X Server, tra cui Open Directory.
-
Questo server ha anche il servizio di posta configurato (SMTP e IMAP) senza problemi (posso inviare e ricevere posta al / dal server.
-
Questo server server ha anche notifiche push abilitate e ha un certificato di notifica push installato perfettamente (ottenuto dal portale dei certificati di notifica push di Apple, appena rinnovato pochi giorni fa).
-
Ho alcuni dispositivi iOS con iOS 7.0.4. Ho configurato Mail su questi dispositivi iOS per inviare e ricevere posta da / verso il server sopra menzionato per alcuni account utente diversi sul server. Funziona bene (testato, può inviare e ricevere posta senza problemi).
-
Le suddette impostazioni della posta dei dispositivi iOS per il server sopra menzionato sono state configurate per ricevere notifiche push quando la posta viene ricevuta a detti account utente sul server.
Con tutto ciò detto, i dispositivi iOS sono a volte in grado di ricevere notifiche push da Servizio di notifica push Apple ("cloud" APNS) in situazioni in cui i dispositivi iOS risiedono nella stessa sottorete privata del server Mac (tramite Wi-Fi), e quando risiedono su Internet pubblica (tramite reti di dati cellulari o reti Wi-Fi pubbliche come le caffetterie).
Pertanto, le notifiche push do funzionano quando vengono ricevuti messaggi di posta elettronica sul server, ma non sempre. Dopo che è trascorso un certo periodo di tempo sul server in cui non sono stati ricevuti messaggi e-mail (sembra che siano passate diverse ore ma non sono ancora stato in grado di individuarlo con precisione), il server perde apparentemente quello che dovrebbe essere un persistente connessione con il gateway APNS. Sfortunatamente OS X Server non registra quando questa connessione viene persa. Quindi, quando un nuovo messaggio di posta elettronica arriva nuovamente dopo diverse ore e viene ricevuto dal server, i dispositivi iOS not ricevono le loro notifiche push previste e invece OS X Server registra in modo coerente un messaggio di errore come questo (le uniche differenze sono ovviamente l'ID del processo e l'ora / data):
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 volta registrato il tipo di errore sopra riportato nei log, un successivo messaggio di posta elettronica inviato al server genera correttamente un messaggio di notifica push sui dispositivi iOS configurati a patto che il messaggio successivo venga inviato prima che sia trascorso il tempo minimo (cioè diversi ore). Non porto le porte 2195 o 2196 dal router al server Mac perché il documento di supporto di Apple implica che queste porte siano in uscita traffico (dal server al gateway APNS) a meno che non abbia frainteso.
Un estratto nella nota tecnica della libreria per sviluppatori Mac di Apple TN2265 ha attirato la mia attenzione su idle :
An occasional disconnect while your provider is idle is nothing to be concerned about; just re-establish the connection and carry on. If one of the push servers is down, the load balancing mechanism will transparently direct your new connection to another server assuming you connect by hostname and not by static IP address.
È OS X Server (il "provider" in questo contesto) essenzialmente "portare avanti" "ristabilendo" la connessione ad APNS dopo essere "inattivo" per diverse ore come indicato nei log per l'errore di flusso sopracitato ?
Qualcuno con cui ho parlato di questo problema potrebbe essere dovuto al fatto che alla porta WAN del router non è stato assegnato un indirizzo IP statico dal mio ISP, ma a tutti i documenti di documentazione e supporto degli sviluppatori Apple che ho visto sulle notifiche push con OS X Server non viene indicato un indirizzo IP statico.
nota: Ho anche provato questo con lo stesso hardware e le impostazioni, ma eseguendo OS X 10.8.5 Mountain Lion con Server App 2.2.1 con essenzialmente gli stessi risultati ma IMHO migliorava la verbosità del registro, come in:
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
Qualsiasi aiuto o suggerimento per risolverlo sarebbe molto apprezzato, potrebbe essere qualcosa di semplice che ho trascurato.