Imap

電子郵件推送在非黑莓手機中究竟是如何工作的?

  • October 24, 2012

在過去的 6 年裡,我一直是黑莓使用者。我已經說服自己切換到 Android 設備。我已經開始了一些 Android 開發,所以擁有一個真正的 android 設備將是一個獎勵。

我的問題:推送電子郵件在非黑莓手機中究竟是如何工作的?以下是我通過一些演繹推理收集到的內容,但請糾正我:在 BB 上,有 Blackberry Internet Service,或 Blackberry Enterprise Service。它們是 RIM 控制的伺服器,它們匯集您的電子郵件帳戶(無論是 gmail 帳戶還是您自己的 linux 機器上的 imap 帳戶)以接收新電子郵件。一旦收到新電子郵件,他們就會將該電子郵件推送到您的手機。他們知道您的電話的位置/位置(其 IP 地址或其他獨特特徵),因為每次您訂閱 GPRS/3G 天線時,您的移動運營商都會通知 BB,可以在地址 Z 聯繫到使用電話 Y 的客戶 X。

現在在非 BB 場景中會發生什麼?我自己的執行 imap(比如 dovecot)的 linux 伺服器如何知道如何联系我的手機以“推送”新電子郵件?

讀了一點後,我偶然發現了 IMAP IDLE,據我了解,這是客戶端(在本例中是我的手機)用來對伺服器說的 IMAP 命令:“嘿,我是客戶端 X,我的地址是是的,所以如果有任何新電子郵件來這裡推送它”。

這是我逐漸失去理解的地方:這是否意味著每次我從一個移動天線切換到下一個(比如我在路上開車)時,我的手機都會向我的 dovecot 伺服器發送一個新的 IMAP IDLE 命令說“嘿,我的聯繫地址變了,請用這個”。

當您同時使用 WIFI 和 3G 時會發生什麼?您的手機是否發出兩個 IMAP IDLE 命令?

最後,是否所有手機(有數據計劃)都有唯一的 IP 地址?如果沒有(比如電信公司 NAT 給你),我的 imap 伺服器如何啟動與我的設備的通信?

如您所見,我有點迷茫,如果能提供更多資訊,我將不勝感激。

Does this mean that each time I switch from one mobile antenna to the next 
(say i'm driving down the road) my phone will send a new IMAP IDLE command
to my dovecot server saying "Hey, my contact address has changed, 
please use this one".

- IP 連接

您的手機正在使用與用於與 Internet 建立“數據”連接的 TCP/IP 堆棧(例如s7堆棧)不同的協議堆棧與基站通信。當您從一個基站漫游到另一個基站時,IP 堆棧對這些變化一無所知。您的手機始終(通常)始終使用相同的 IP(除非您長途跋涉,而不僅僅是在下一個桅杆的路上,到您的運營商分配了單獨的地理 IP 塊的地方)。

NO - 單一預設路由

當您同時使用 WIFI 和 3G 時會發生什麼?您的手機是否發出兩個 IMAP IDLE 命令?

不,您的手機將只使用其中一個在 Internet 上發送/接收數據(除非您有一些神奇的負載平衡手機,我從未見過,但是,嘿,我們不可能都見過一切!)。它將選擇一個首選並通過該介質(當然通常是 wifi)將預設路由安裝到它的路由表中。

Finally, do all mobile phones (with a data plan) have unique IP addresses?

- 有一個短缺“你”知道;)

這確實非常罕見,實際上我從未見過它只是聽說過它。所以我還是不相信。給每個移動使用者一個公共 IP 是非常浪費的,就像給你家裡的每台電腦一個公共 IP 一樣。您的家中可能擁有與 PC 一樣多的支持 Internet 的手機。使用一個 wifi AP,他們都可以共享 1 個 IP。“典型”的家庭使用是不費吹灰之力的。

If not (say the telco NATs you) how can my imap server initiate a 
communication to my device?

單埠/UPNP - 您不需要“完整”的 IP 可見性

為了讓您的手機與您的伺服器通信(通過 IMAP),您將從手機上 1024 以上的隨機傳出埠號連接到 TCP 埠 143(或者如果您明智的話,可能是 993)。運營商的 NAT 設備可以在他們的 GCN 設備中創建一個 NAT 狀態表條目,將您的手機私有 IP 和源埠映射到您的伺服器公共 IP 和埠號。這將進一步解釋NAT。但本質上,您只需要連接到一個埠,這對於 NAT 來說非常簡單。另一個選項(例如家庭路由器中經常使用的選項)是UPnP 轉發,但這不太可能在運營商級別使用。

總結- IP 更改

因此,當您一直使用 3G 時,當您從一個單元漫游到另一個單元或從桅杆到桅杆時,您和運營商之間的私有 IP 可能會發生變化,但您與 IMAP 伺服器通信的公共 IP 應該保持不變,因此 IMAP 連接應該保持不變積極的。如果您更改公共 IP 映射,最糟糕的情況是 IMAP 伺服器無法辨識 IDLE 提示以保持連接處於活動狀態,因為它不會將其辨識為已經過身份驗證的會話,因此假設您的 IMAP 使用者名和密碼保存到您的手機上,它應該簡單地從您的新公共 IP 重新進行身份驗證(取決於電話和郵件應用程序,但這是我發現 9/10 次的行為)。

如果您連接到無線接入點,情況也是如此。如果 IMAP 伺服器有 strop,您只需從新 IP 重新進行身份驗證並照常進行。

引用自:https://serverfault.com/questions/441801