Thunderbird为何可通过账号密码经IMAP访问Outlook邮件?
问题
Microsoft早已禁用了通过IMAP访问邮件时的Basic Auth,应改用OAuth认证。但Thunderbird在配置账户时,仅需提供邮箱地址和密码就能访问所有Outlook邮件。
请问它是如何实现的?是否在底层执行OAuth?若是,它如何获取tenant id、client id和client secret?还是采用其他技术,比如直接登录Outlook账户来获取邮件?
我希望能在自己的代码中实现同款仅用账号密码访问的方式。
回答
Thunderbird底层确实用的是OAuth认证,只是把复杂的配置和授权流程做了封装,用户完全感知不到而已。
具体细节:
- Thunderbird作为主流邮件客户端,已经在微软Azure AD注册了官方OAuth应用,自带专属的client id;tenant id用的是通用值
common,适配个人、企业等所有类型的微软账户,不需要用户手动配置这些参数。 - 当你输入邮箱和密码时,其实是在微软官方的登录验证界面完成身份校验(密码不会直接传给Thunderbird),Thunderbird后台会自动发起OAuth授权请求,拿到访问令牌和刷新令牌后,再用这些令牌通过IMAP/SMTP协议的
OAUTHBEARER认证方式访问邮件服务。
如果想在自己的代码里实现类似效果,需要按以下步骤来:
- 前往Azure AD平台注册属于你自己的OAuth应用,获取专属的client id(tenant id同样可以使用
common)。 - 实现完整的OAuth 2.0授权流程:引导用户跳转至微软的身份验证页面,完成账号密码登录后获取授权码,再用授权码兑换访问令牌和刷新令牌。
- 在IMAP/SMTP请求中,使用
OAUTHBEARER认证方式,携带获取到的访问令牌来访问邮件资源。
需要注意:微软已经彻底封禁了IMAP的Basic Auth,不存在直接用账号密码绕过OAuth访问的合法途径。Thunderbird看起来只用账号密码就能登录,本质是它把OAuth的授权交互过程做了无缝整合,用户看不到中间的授权跳转步骤而已。
内容的提问来源于stack exchange,提问作者hideaway
相关产品推荐
相关产品推荐

