电子邮件如何在非黑莓手机中发挥作用?

过去6年来我一直是黑莓用户。 我已经说服自己切换到Android设备。 我已经开始一些Android开发,所以有一个实际的Android设备将是一个奖金。

我的问题:推送电子邮件如何在非黑莓手机中工作? 这里是我用一些演绎推理收集到的,但请纠正我:在BB上,有黑莓互联网服务,或黑莓企业服务。 它们是RIM控制的服务器,它们将您的电子邮件帐户(无论是gmail帐户还是您自己的Linux机器上的imap帐户)汇集到新的电子邮件中。 一旦收到新的电子邮件,他们会将该电子邮件推送到您的手机。 他们知道你的手机在哪里/哪里(IP地址或其他独特的特征),因为每当你订购GPRS / 3G天线时,你的移动运营商都会通知BB,客户X可以通过电话Y到达地址Z.

现在在非BB的情况下会发生什么? 我自己的Linux服务器如何运行imap(比如dovecot)知道如何联系我的手机来“推送”新的电子邮件?

读了一下之后,我偶然发现了IMAP IDLE,这是我所了解的IMAP命令,客户端(我的手机在这个例子中)用来对服务器说:“嗨,我是客户端X,我的地址是是的,所以如果有新的电子邮件在这里推它“。

这是我逐渐失去理解的地方:这是否意味着每次我从一个移动天线切换到另一个(比如说我正在开车),我的手机会发送一个新的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". 

NO – IP连接

您正在使用与您用来与Internet(如s7堆栈)build立“数据”连接的TCP / IP堆栈不同的协议堆栈来与手机进行通信。 当你从桅杆到桅杆漫游时,IP协议栈对这些变化一无所知。 您的手机仍然始终使用相同的IP(通常)(除非您长途跋涉,而不是在下一个桅杆的路上,到您的运营商的某个地方已经分配了一个单独的地理IP bloack)。

NO – 单个默认路由

当你同时使用WIFI和3G时会发生什么? 您的手机是否发出两个IMAP IDLE命令?

不,你的手机只能使用其中一个在互联网上发送/接收数据(除非你有一些神奇的负载平衡手机,我从来没有见过,但嘿,我们不能看到所有的东西!)。 它会select一个首选的,并通过该介质(通常是无线的当然)安装一个默认路由到它的路由表。

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

– 有一个短缺“亚”知道;)

这确实是非常罕见的,实际上我从来没有见过它只听说过它。 所以我不相信。 为每个移动用户提供一个公有知识产权将是非常浪费的,就像给你家中的每台计算机提供公有知识产权一样。 您可能拥有与您PC一样多的支持互联网的手机。 有了一个无线接入点,他们可以共享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设备中创build一个NAT状态表entriy,将您的电话私有IP和源端口映射到您的服务器公共IP和端口号。 这将进一步解释NAT 。 本质上,你只需要连接到一个端口,这对NAT来说很简单。 像家庭路由器中经常使用的另一种select是UPnP转发,但这在运营商级别上不太可能使用。

总结 – IP变化

所以,当你经常使用3Gnetworking时,当你从一个小区漫游到另一个小区时,你和运营商之间的私有IP可能会改变,但是你的公共IP与你的IMAP服务器对话应该保持不变,所以IMAP连接应该停留在活性。 如果您更改公共IP映射,则最糟糕的情况是IMAP服务器不能识别IDLE提示以保持连接处于活动状态,因为它不会将其识别为已通过身份validation的会话,所以假设您的IMAP用户名和密码保存到你的手机,它应该简单地重新authentication你的新的公共IP(电话和邮件应用程序的依赖,但这是我find的行为9/10次)。

如果连接到无线接入点,情况也是如此。 如果IMAP服务器有一个strop,你只需要重新从你的新IP进行authentication,然后继续进行。