Giter VIP home page Giter VIP logo

Comments (3)

bkaankose avatar bkaankose commented on June 16, 2024 1

I think you sum up pretty well. As long as we return AutoDiscoverySettings you don't need a lot of changes in the current code.

If you have something better in mind, you may completely discard the existing code and rewrite the module for auto discovery as well. I don't mind it since current implementation lacks a lot of things.

Assigned to @chenseanxy

from wino-mail.

bkaankose avatar bkaankose commented on June 16, 2024

Nicely done investigation.

AutoDiscoveryService definitely lacks lots of capabilities right now. I wanted to include Thunderbird Autoconfig at some point but never had the time for it.

This would speed up things for a lot of new users since most of them don't want to search for the IMAP settings they've been offered from their provider.

from wino-mail.

chenseanxy avatar chenseanxy commented on June 16, 2024

I think what we can do, currently, is the plain XML versions of Thunderbird and MSExchange, maybe later on we can add SRV support of both of these.

Implementing both of these should be simple enough:

  • Try sending request to multiple possible domains that contain the autodiscovery response (eg, MS: domain.tld or autodiscover.domain.tld, Thunderbird: autoconfig.domain.tld and domain.tld/.well-known)
  • On 200, deserialize and return the discovered settings

Now we're introducing multiple sources, there's the consideration about priority:

  • MS and Thunderbird admin-defined sources should get higher priority than the central DB / API sources, so admins can override bad info in the centralized sources
  • Between MS and thunderbird it shouldn't matter

So to implement this, here's what I'm thinking:

  • Every source gets its own model, as well as provider that handles request, timeout, and deserialize logic (try multiple domains), and returns AutoDiscoverySettings
  • For AutoDiscoveryService, it awaits the providers one by one according to priority, returns if settings are found
    • maybe parallize? but the providers should be pretty fast, only kinda-slow thing is gonna be cold DNS lookups

If it's OK you can assign this and I'll start working on it this week. (Sorry for writing too much, I'm usually overcautious in new codebases)

from wino-mail.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.