前言

一开始只是申请试试E5计划,后成功后转移域名邮箱阵地。记录下遇到的困难以及解决办法。

1.申请E5账号

  • 进入开发者中心,点击立即加入,登录微软帐号之后填写相关信息即可。点击加入后会回到主页。
  • 点击设置订阅,选择国家地区(onedrive数据位置),填写域、用户名和密码,后面使用用户名@域.onmicrosoft.com进行登陆。
  • 之后需要手机号,国内手机号即可,但需要通过谷歌验证。备好科学工具。(注:这里我在验证时无法通过,明明已经是国际互连环境,但仍然没有弹出谷歌验证。随通过一些地址提供的工具完成认证,该地址仍需科学工具。地址

至此应该已经申请成功E5计划,有效期92天,25个许可。E5计划可以让子账户拥有1T OneDrive,免费的 office 365 体验。

2.邮箱域账号设置

  • 进入365管理界面,设置->域。点击添加域,可选择自己添加DNS信息,或者授权让微软自动添加。

Quicker_20220402_141619

  • 添加用户,在用户->活跃用户中添加用户,用户名的域选择自己的域名即可。之后就可以自主登录outlook接发邮件了。

问题:该域名邮箱设置自动转发无效,被规则拦截。可以向该地址发邮件,但设置自动转发失败。后找到解决方案。方案地址:为Microsoft Office 365 自定义域开启邮件DKIM和外部转发设置

这里做记录一下:

  1. 打开计算机上的Powershell

    安装Exchange Online Module X2,进行此步之前确保电脑已经全局连接国际互联网,否则因为网络波动可能会出现不知名的错误。(只开系统代理没用的,Powershell不走代理)

    输入

    Set-ExecutionPolicy RemoteSigned
    
    Install-Module -Name ExchangeOnlineManagement
    
  2. 连接Exchange Online

    输入导入模块。

    Import-Module ExchangeOnlineManagement
    

    使用UPN登录Exchange Online

    Connect-ExchangeOnline -UserPrincipalName <UPN>
    

    替换为Exchange管理员或者全局管理员的登陆邮箱地址,如admin@contoso.onmicrosoft.com

    Quicker_20220402_143717

    弹出登录框后输入密码和2FA(if any),然后会自动下载命令。

    如果是世纪互联,命令有变化

    Connect-ExchangeOnline -Credential $UserCredential -ExchangeEnvironmentName O365China
    

    其他操作一样,登陆进去后也会自动下载命令。

  3. 查看启用DKIM所需要的两条CNAME记录值

    New-DkimSigningConfig -DomainName <domain> -Enabled $false
    

    请把 换成你绑定到全局的,并且准备启用DKIM签名的域名。比如a1.contoso.com

    回车后输入

    Get-DkimSigningConfig -Identity <domain> | Format-List Selector1CNAME, Selector2CNAME
    

    同样要替换domain。(我用的是世纪互联,后缀就是onmschina.cn)

    如果是国际版,应该长这样。

    Host name:            selector1._domainkey
    Points to address or value:    selector1-<domainGUID>._domainkey.<initialDomain>
    TTL:                3600
    
    Host name:            selector2._domainkey
    Points to address or value:    selector2-<domainGUID>._domainkey.<initialDomain>
    TTL:                3600
    
  4. 去你的域名DNS解析上,添加这两条CNAME记录。如果是Cloudflare,切记关闭云朵。.

  5. 退出Powershell,关闭窗口,等待约10分钟后,重复步骤1 2重新登陆。

  6. 开启DKIM

    Set-DkimSigningConfig -Identity <domain> -Enabled $true
    

    仍然是记得替换domain。

  7. 检查是否开启。

    使用工作或学校帐户登录 Microsoft 365。

    选择左上角的应用启动器图标,然后选择“管理员”。

    在左下侧导航中,展开“管理”并选择“Exchange”。(选旧版管理界面)

    依次转到” 保护”>” dkim”。

    选择你开启DKIM的域名,点开,应该显示已启用DKIM。

  8. 打开外部邮件转发设置。

有时候Office 365设置邮件自动转发到域外邮箱可能会被系统拒绝,这时我们要手动开启邮件外部转发。
重复步骤1-2 登录Exchange Online。

  1. 查看默认反垃圾邮件策略

    Get-HostedOutboundSpamFilterPolicy
    

    如果图上标注的地方(指AutoForwardingMode)是On 你不必接着做下去了。

    如果是Automatic或者Off,接着走。

  2. 开启组织自定义设置

    微软为了安全起见,默认不允许组织随意更改设置,需要先开启自定义设置。

    输入

    Enable-OrganizationCustomization
    

    确保连上了国际互联网,真全局代理。等待一会,进度条跑完后就可以开启Auto forwarding了。

  3. 开启外部邮件转发设置

    Set-HostedOutboundSpamFilterPolicy -Identity "Default" -AutoForwardingMode On
    

    之后的结果应该是AutoForwardingMode为On,至此,已经完全配置好。

  4. DMARC配置

    SPF由于你在绑定域名的时候微软已经帮你配置好了,不再写SPF配置。DMARC很简单,去你域名的DNS管理里面,增一条TXT记录名称为_dmarc.。记录值为如v=DMARC1; p=none;

    类似的任意满足DMARC格式的记录值,我列出的是最宽松的记录类型。(改成你自己的)


也可以设置catch-all邮箱

【E5利用】Microsoft 365 搭建邮局|设置catch-all邮箱

利用Microsoft 365 E5开发者订阅搭建自己的邮局|设置catch-all邮箱

到这里大家便可以将outlook的邮件自动转发到指定邮箱了。自然,大家可以直接设置POP3直接绑定到自己的邮箱下。

3.E5续订方法

微软的开发者计划续订理论上是无限续订的。但条件是多用api,毕竟是为了开发者而存在的。而非消费者。

以下转自浅忆博客

E5 自动订阅程序[已开源]

记录关键步骤:

  1. 注册自己的api key(最好使用不用邮箱的同域子账号创建api,之后管理员授权即可)

    登录进入 azure ,登录账号使用你的e5账户 ,就是以xxx.onmicrosoft.com开头的的账户。
    搜索“应用注册”,

    或者直接点击直达链接:

    https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

  2. 点击 新注册

    名称随意取一个,但是最重要的是 “重定向 URI (可选)”,请填写为下列地址,不然程序收不到回调。

    https://e5.qyi.io/outlook/auth2/receive
    

    2020-03-02 15:32
    小伙伴们注意了,这里**受支持的账户类型 重定向 URI (可选)**一定要填对,不然无法授权的哦。

    任何组织目录(任何Azure AD目录·多租户)中的帐户和个人Microsoft帐户(例如,Skype、Xbox刈

  3. 点击注册后记录以下信息:

    注:应用程序(客户端)ID:在应用信息中有

    创建客户端密码

    最近很多同学反应授权报错 Invalid client secret is provided. 这里请注意了,客户端密码请复制 “值”,不要复制 ID。

    客户端密码这里已经没有了“从不”,只能选2年。(别在意这些,谁也不知道2年后微软的策略会不会变,2年换一次密钥也不麻烦)

  4. 配置api权限

    点击api权限->添加权限->microsoft graph—>应用程序权限->mail->勾选除mail.send外的权限

    勾选一下四个选项后,同时点击 代表XX授予管理员同意
    PS: 这一步如果用的是子账号创建的api,那么这一项是灰色的,不能点击。需要登录 管理员 账号,再点击 代表XX授予管理员同意

  5. 添加key到自动订阅程序

    进入 https://e5.qyi.io/这里需要github账户登录,同样的,我只能获取你在 github中的 用户id、用户名等基础信息(邮箱获取不了),其他的任何信息也获取不到(可自行尝试注册一个github Apps测试)。

    填写信息再点击下一步,到了 授权

    此时会跳转到 microsoftonline Auth2.0授权页面,在这里请注意使用同一个域下的空账号(子账号)进行授权。
    (因为在这一步我能获取到授权的outlook账户 邮件,但是程序不会保存,仅仅是调用api。)以免在以后发生误会。

    点击 接受 后,将会跳转回自动订阅程序。

    到这里你就可以不用管了,程序会每两个小时调用一次outlook的api。

    还是要说一下隐私安全问题

    因为有几个读者也说到了,统一回答下

    1. api权限仅拥有 openid offline_access Mail.Read Mail.ReadWrite Mail.ReadBasic Mail.ReadBasic.ALL 这6个权限
    2. 也就是说我仅仅能读取授权账户的邮件,其他任何事都做不了,且我写的这个程序没有保存任何除key之外的信息
    3. 所以一开始我就说了,用子账户进行授权(空账户)及创建api,这样不涉及到 隐私及安全问题。
    4. 如果实在担心不想用了,azure 直接删掉api就可以了。

遇到问题:

授权报错:应用id与密钥搞错。换回即可

邮箱无法设置自动转发,outlook设置打不开页面:重新删除账号添加即可。