Repo created

This commit is contained in:
Fr4nz D13trich 2025-11-24 18:55:42 +01:00
parent a629de6271
commit 3cef7c5092
2161 changed files with 246605 additions and 2 deletions

View file

@ -0,0 +1,20 @@
plugins {
id(ThunderbirdPlugins.Library.android)
}
dependencies {
implementation(projects.app.core)
implementation(projects.mail.common)
implementation(projects.app.autodiscovery.api)
implementation(libs.timber)
testImplementation(projects.app.testing)
testImplementation(projects.backend.imap)
testImplementation(libs.robolectric)
testImplementation(libs.androidx.test.core)
}
android {
namespace = "com.fsck.k9.autodiscovery.providersxml"
}

View file

@ -0,0 +1,8 @@
package com.fsck.k9.autodiscovery.providersxml
import org.koin.dsl.module
val autodiscoveryProvidersXmlModule = module {
factory { ProvidersXmlProvider(context = get()) }
factory { ProvidersXmlDiscovery(xmlProvider = get(), oAuthConfigurationProvider = get()) }
}

View file

@ -0,0 +1,156 @@
package com.fsck.k9.autodiscovery.providersxml
import android.content.res.XmlResourceParser
import android.net.Uri
import com.fsck.k9.autodiscovery.api.ConnectionSettingsDiscovery
import com.fsck.k9.autodiscovery.api.DiscoveredServerSettings
import com.fsck.k9.autodiscovery.api.DiscoveryResults
import com.fsck.k9.helper.EmailHelper
import com.fsck.k9.mail.AuthType
import com.fsck.k9.mail.ConnectionSecurity
import com.fsck.k9.oauth.OAuthConfigurationProvider
import com.fsck.k9.preferences.Protocols
import org.xmlpull.v1.XmlPullParser
import timber.log.Timber
class ProvidersXmlDiscovery(
private val xmlProvider: ProvidersXmlProvider,
private val oAuthConfigurationProvider: OAuthConfigurationProvider
) : ConnectionSettingsDiscovery {
override fun discover(email: String): DiscoveryResults? {
val domain = EmailHelper.getDomainFromEmailAddress(email) ?: return null
val provider = findProviderForDomain(domain) ?: return null
val incomingSettings = provider.toIncomingServerSettings(email) ?: return null
val outgoingSettings = provider.toOutgoingServerSettings(email) ?: return null
return DiscoveryResults(listOf(incomingSettings), listOf(outgoingSettings))
}
private fun findProviderForDomain(domain: String): Provider? {
return try {
xmlProvider.getXml().use { xml ->
parseProviders(xml, domain)
}
} catch (e: Exception) {
Timber.e(e, "Error while trying to load provider settings.")
null
}
}
private fun parseProviders(xml: XmlResourceParser, domain: String): Provider? {
do {
val xmlEventType = xml.next()
if (xmlEventType == XmlPullParser.START_TAG && xml.name == "provider") {
val providerDomain = xml.getAttributeValue(null, "domain")
if (domain.equals(providerDomain, ignoreCase = true)) {
val provider = parseProvider(xml)
if (provider != null) return provider
}
}
} while (xmlEventType != XmlPullParser.END_DOCUMENT)
return null
}
private fun parseProvider(xml: XmlResourceParser): Provider? {
var incomingUriTemplate: String? = null
var incomingUsernameTemplate: String? = null
var outgoingUriTemplate: String? = null
var outgoingUsernameTemplate: String? = null
do {
val xmlEventType = xml.next()
if (xmlEventType == XmlPullParser.START_TAG) {
when (xml.name) {
"incoming" -> {
incomingUriTemplate = xml.getAttributeValue(null, "uri")
incomingUsernameTemplate = xml.getAttributeValue(null, "username")
}
"outgoing" -> {
outgoingUriTemplate = xml.getAttributeValue(null, "uri")
outgoingUsernameTemplate = xml.getAttributeValue(null, "username")
}
}
}
} while (!(xmlEventType == XmlPullParser.END_TAG && xml.name == "provider"))
return if (incomingUriTemplate != null && incomingUsernameTemplate != null && outgoingUriTemplate != null &&
outgoingUsernameTemplate != null
) {
Provider(incomingUriTemplate, incomingUsernameTemplate, outgoingUriTemplate, outgoingUsernameTemplate)
} else {
null
}
}
private fun Provider.toIncomingServerSettings(email: String): DiscoveredServerSettings? {
val user = EmailHelper.getLocalPartFromEmailAddress(email) ?: return null
val domain = EmailHelper.getDomainFromEmailAddress(email) ?: return null
val username = incomingUsernameTemplate.fillInUsernameTemplate(email, user, domain)
val security = when {
incomingUriTemplate.startsWith("imap+ssl") -> ConnectionSecurity.SSL_TLS_REQUIRED
incomingUriTemplate.startsWith("imap+tls") -> ConnectionSecurity.STARTTLS_REQUIRED
else -> error("Connection security required")
}
val uri = Uri.parse(incomingUriTemplate)
val host = uri.host ?: error("Host name required")
val port = if (uri.port == -1) {
if (security == ConnectionSecurity.STARTTLS_REQUIRED) 143 else 993
} else {
uri.port
}
val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) {
AuthType.XOAUTH2
} else {
AuthType.PLAIN
}
return DiscoveredServerSettings(Protocols.IMAP, host, port, security, authType, username)
}
private fun Provider.toOutgoingServerSettings(email: String): DiscoveredServerSettings? {
val user = EmailHelper.getLocalPartFromEmailAddress(email) ?: return null
val domain = EmailHelper.getDomainFromEmailAddress(email) ?: return null
val username = outgoingUsernameTemplate.fillInUsernameTemplate(email, user, domain)
val security = when {
outgoingUriTemplate.startsWith("smtp+ssl") -> ConnectionSecurity.SSL_TLS_REQUIRED
outgoingUriTemplate.startsWith("smtp+tls") -> ConnectionSecurity.STARTTLS_REQUIRED
else -> error("Connection security required")
}
val uri = Uri.parse(outgoingUriTemplate)
val host = uri.host ?: error("Host name required")
val port = if (uri.port == -1) {
if (security == ConnectionSecurity.STARTTLS_REQUIRED) 587 else 465
} else {
uri.port
}
val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) {
AuthType.XOAUTH2
} else {
AuthType.PLAIN
}
return DiscoveredServerSettings(Protocols.SMTP, host, port, security, authType, username)
}
private fun String.fillInUsernameTemplate(email: String, user: String, domain: String): String {
return this.replace("\$email", email).replace("\$user", user).replace("\$domain", domain)
}
internal data class Provider(
val incomingUriTemplate: String,
val incomingUsernameTemplate: String,
val outgoingUriTemplate: String,
val outgoingUsernameTemplate: String
)
}

View file

@ -0,0 +1,10 @@
package com.fsck.k9.autodiscovery.providersxml
import android.content.Context
import android.content.res.XmlResourceParser
class ProvidersXmlProvider(private val context: Context) {
fun getXml(): XmlResourceParser {
return context.resources.getXml(R.xml.providers)
}
}

View file

@ -0,0 +1,774 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
This file is used to specify providers that we know default settings for
so that the user can set up their account by simply entering their email
address and password.
When a user starts this process, the email address is parsed, the domain
broken out and used to search this file for a provider. If one is found the
provider's settings are used to attempt to connect to the account.
At this time, the id and label attributes are not used. However, please include them
if you make edits to this file. id must also be completely unique. label will be shown
to the user when there are multiple options provided for a single domain (not currently
supported).
A provider contains the settings for setting up an email account
that ends with the given domain. Domains should be unique within
this file. Each provider should have at least one incoming section and
one outgoing section. If more than one is specified only the first
will be used.
Valid incoming uri schemes are:
imap+tls+ IMAP with required TLS transport security.
If TLS is not available the connection fails.
imap+ssl+ IMAP with required SSL transport security.
If SSL is not available the connection fails.
Valid outgoing uri schemes are:
smtp+tls+ SMTP with required TLS transport security.
If TLS is not available the connection fails.
smtp+ssl+ SMTP with required SSL transport security.
If SSL is not available the connection fails.
The URIs should be full templates for connection, including a port if
the service uses a non-default port. The default ports are as follows:
imap+tls+ 143 smtp+tls+ 587
imap+ssl+ 993 smtp+ssl+ 465
The username attribute is used to supply a template for the username
that will be presented to the server. This username is built from a
set of variables that are substituted with parts of the user
specified email address.
Valid substitution values for the username attribute are:
$email - the email address the user entered
$user - the value before the @ sign in the email address the user entered
$domain - the value after the @ sign in the email address the user entered
The username attribute MUST be specified for the incoming element, so the IMAP
server can identify the mailbox to be opened.
The username attribute MAY be the empty string for the outgoing element, but only if the
SMTP server supports anonymous transmission (most don't).
While it would technically work please DO NOT add providers that don't support encrypted
connections.
-->
<providers>
<!-- Gmail variants -->
<provider id="gmail" label="Gmail" domain="gmail.com">
<incoming uri="imap+ssl+://imap.gmail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email" />
</provider>
<provider id="googlemail" label="Google Mail" domain="googlemail.com">
<incoming uri="imap+ssl+://imap.googlemail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.googlemail.com" username="$email" />
</provider>
<provider id="google" label="Google" domain="google.com">
<incoming uri="imap+ssl+://imap.gmail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email" />
</provider>
<provider id="android" label="Android" domain="android.com">
<incoming uri="imap+ssl+://imap.gmail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email" />
</provider>
<!-- USA -->
<provider id="comcast" label="Comcast" domain="comcast.net">
<incoming uri="imap+ssl+://imap.comcast.net" username="$email" />
<outgoing uri="smtp+tls+://smtp.comcast.net" username="$email" />
</provider>
<provider id="montclair.edu" label="MSU" domain="montclair.edu">
<incoming uri="imap+ssl+://mail.montclair.edu" username="$user" />
<outgoing uri="smtp+tls+://smtp.montclair.edu" username="$user" />
</provider>
<provider id="gmx.com" label="GMX" domain="gmx.com">
<incoming uri="imap+ssl+://imap.gmx.com" username="$email" />
<outgoing uri="smtp+ssl+://mail.gmx.com" username="$email" />
</provider>
<provider id="zoho.com" label="Zoho Mail" domain="zoho.com">
<incoming uri="imap+ssl+://imap.zoho.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.zoho.com" username="$email" />
</provider>
<provider id="riseup" label="Riseup Networks" domain="riseup.net">
<incoming uri="imap+ssl+://mail.riseup.net" username="$user" />
<outgoing uri="smtp+tls+://mail.riseup.net" username="$user" />
</provider>
<!-- Mail.com Variants -->
<provider id="mail.com" label="Mail.com" domain="mail.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="email.com" label="Mail.com" domain="email.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="techie.com" label="Mail.com" domain="techie.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="email.com" label="Mail.com" domain="email.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="usa.com" label="Mail.com" domain="usa.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="myself.com" label="Mail.com" domain="myself.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="consultant.com" label="Mail.com" domain="consultant.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="post.com" label="Mail.com" domain="post.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="europe.com" label="Mail.com" domain="europe.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="asia.com" label="Mail.com" domain="asia.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="iname.com" label="Mail.com" domain="iname.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="writeme.com" label="Mail.com" domain="writeme.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="dr.com" label="Mail.com" domain="dr.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="engineer.com" label="Mail.com" domain="engineer.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="cheerful.com" label="Mail.com" domain="cheerful.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="accountant.com" label="Mail.com" domain="accountant.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="techie.com" label="Mail.com" domain="techie.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="linuxmail.org" label="Mail.com" domain="linuxmail.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="uymail.com" label="Mail.com" domain="uymail.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<provider id="contractor.net" label="Mail.com" domain="contractor.com">
<incoming uri="imap+ssl+://imap.mail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.com" username="$email" />
</provider>
<!-- Yahoo! Mail Variants -->
<provider id="yahoo" label="Yahoo" domain="yahoo.com">
<incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" />
</provider>
<provider id="yahoo.de" label="Yahoo" domain="yahoo.de">
<incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" />
</provider>
<provider id="ymail" label="YMail" domain="ymail.com">
<incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" />
</provider>
<provider id="rocketmail" label="Rocketmail" domain="rocketmail.com">
<incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" />
</provider>
<!-- Apple -->
<provider id="apple" label="Apple" domain="apple.com">
<incoming uri="imap+ssl+://imap.mail.apple.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.apple.com" username="$user" />
</provider>
<provider id="dotmac" label=".Mac" domain="mac.com">
<incoming uri="imap+ssl+://imap.mail.mac.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.mac.com" username="$user" />
</provider>
<provider id="mobileme" label="MobileMe" domain="me.com">
<incoming uri="imap+ssl+://imap.mail.me.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.me.com" username="$user" />
</provider>
<provider id="icloud" label="iCloud" domain="icloud.com">
<incoming uri="imap+ssl+://imap.mail.icloud.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.icloud.com" username="$user" />
</provider>
<!-- Australia -->
<provider id="fastmail-fm" label="Fastmail" domain="fastmail.fm">
<incoming uri="imap+ssl+://mail.messagingengine.com" username="$email" />
<outgoing uri="smtp+ssl+://mail.messagingengine.com" username="$email" />
</provider>
<!-- Virgin Media variants -->
<provider id="virginmedia.com" label="Virgin Media" domain="virginmedia.com">
<incoming uri="imap+ssl+://imap.virginmedia.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.virginmedia.com" username="$email" />
</provider>
<provider id="virgin.net" label="Virgin Media" domain="virgin.net">
<incoming uri="imap+ssl+://imap.virginmedia.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.virginmedia.com" username="$email" />
</provider>
<provider id="blueyonder.co.uk" label="Virgin Media" domain="blueyonder.co.uk">
<incoming uri="imap+ssl+://imap.virginmedia.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.virginmedia.com" username="$email" />
</provider>
<provider id="ntlworld.com" label="Virgin Media" domain="ntlworld.com">
<incoming uri="imap+ssl+://imap.virginmedia.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.virginmedia.com" username="$email" />
</provider>
<!-- France -->
<provider id="mailo.com" label="mailo.com" domain="mailo.com">
<incoming uri="imap+ssl+://mail.mailo.com" username="$email" />
<outgoing uri="smtp+ssl+://mail.mailo.com" username="$email" />
</provider>
<provider id="net-c.fr" label="net-c.fr" domain="net-c.fr">
<incoming uri="imap+ssl+://mail.mailo.com" username="$email" />
<outgoing uri="smtp+ssl+://mail.mailo.com" username="$email" />
</provider>
<!-- Germany -->
<provider id="mailbox.org" label="mailbox.org" domain="mailbox.org">
<incoming uri="imap+tls+://imap.mailbox.org" username="$email" />
<outgoing uri="smtp+tls+://smtp.mailbox.org" username="$email" />
</provider>
<provider id="freenet" label="Freenet" domain="freenet.de">
<incoming uri="imap+tls+://mx.freenet.de" username="$email" />
<outgoing uri="smtp+tls+://mx.freenet.de" username="$email" />
</provider>
<provider id="T-Online" label="T-Online" domain="t-online.de">
<incoming uri="imap+ssl+://secureimap.t-online.de" username="$email" />
<outgoing uri="smtp+tls+://securesmtp.t-online.de" username="$email" />
</provider>
<provider id="web.de" label="Web.de" domain="web.de">
<incoming uri="imap+ssl+://imap.web.de" username="$user" />
<outgoing uri="smtp+tls+://smtp.web.de" username="$user" />
</provider>
<provider id="posteo" label="Posteo" domain="posteo.net">
<incoming uri="imap+tls+://posteo.de" username="$email" />
<outgoing uri="smtp+tls+://posteo.de" username="$email" />
</provider>
<provider id="posteo" label="Posteo" domain="posteo.de">
<incoming uri="imap+tls+://posteo.de" username="$email" />
<outgoing uri="smtp+tls+://posteo.de" username="$email" />
</provider>
<provider id="systemliorg" label="systemli.org" domain="systemli.org">
<incoming uri="imap+ssl+://mail.systemli.org" username="$email" />
<outgoing uri="smtp+tls+://mail.systemli.org" username="$email" />
</provider>
<!-- GMX variants -->
<provider id="gmx.net" label="GMX.net" domain="gmx.net">
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
</provider>
<provider id="gmx.de" label="GMX.de" domain="gmx.de">
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
</provider>
<provider id="gmx.at" label="GMX.at" domain="gmx.at">
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
</provider>
<provider id="gmx.ch" label="GMX.ch" domain="gmx.ch">
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
</provider>
<provider id="gmx.eu" label="GMX.eu" domain="gmx.eu">
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
</provider>
<!-- Greece -->
<provider id="otenet.gr" label="otenet.gr" domain="otenet.gr">
<incoming uri="imap+ssl+://imap.otenet.gr" username="$email" />
<outgoing uri="smtp+tls+://mailgate.otenet.gr" username="$email" />
</provider>
<provider id="cosmotemail.gr" label="cosmotemail" domain="cosmotemail.gr">
<incoming uri="imap+ssl+://imap.cosmotemail.gr" username="$email" />
<outgoing uri="smtp+tls+://mailgate.cosmotemail.gr" username="$email" />
</provider>
<provider id="mycosmos.gr" label="mycosmos" domain="mycosmos.gr">
<incoming uri="imap+ssl+://mail.mycosmos.gr" username="$email" />
<outgoing uri="smtp+tls+://mail.mycosmos.gr" username="$email" />
</provider>
<provider id="espiv" label="Espiv.net" domain="espiv.net">
<incoming uri="imap+ssl+://mail.espiv.net" username="$email" />
<outgoing uri="smtp+tls+://mail.espiv.net" username="$email" />
</provider>
<provider id="squat" label="Squat.gr" domain="squat.gr">
<incoming uri="imap+ssl+://mail.espiv.net" username="$email" />
<outgoing uri="smtp+tls+://mail.espiv.net" username="$email" />
</provider>
<!-- Italy -->
<provider id="poste" label="poste" domain="poste.it">
<incoming uri="imap+ssl+://relay.poste.it" username="$email" />
<outgoing uri="smtp+ssl+://relay.poste.it" username="$email" />
</provider>
<provider id="vodafone" label="vodafone" domain="vodafone.it">
<incoming uri="imap+ssl+://imap.vodafone.it" username="$email" />
<outgoing uri="smtp+ssl+://smtp.vodafone.it" username="$email" />
</provider>
<!-- Switzerland -->
<!-- KolabNow.com variants -->
<provider id="kolabnow.com" label="KolabNow.com" domain="kolabnow.com">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="attorneymail.ch" label="KolabNow.com" domain="attorneymail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="barmail.ch" label="KolabNow.com" domain="barmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="collaborative.li" label="KolabNow.com" domain="collaborative.li">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="diplomail.ch" label="KolabNow.com" domain="diplomail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="groupoffice.ch" label="KolabNow.com" domain="groupoffice.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="journalistmail.ch" label="KolabNow.com" domain="journalistmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="legalprivilege.ch" label="KolabNow.com" domain="legalprivilege.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="libertymail.co" label="KolabNow.com" domain="libertymail.co">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="libertymail.net" label="KolabNow.com" domain="libertymail.net">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="mailatlaw.ch" label="KolabNow.com" domain="mailatlaw.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="medmail.ch" label="KolabNow.com" domain="medmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="mykolab.ch" label="KolabNow.com" domain="mykolab.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="mykolab.com" label="KolabNow.com" domain="mykolab.com">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="myswissmail.ch" label="KolabNow.com" domain="myswissmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="opengroupware.ch" label="KolabNow.com" domain="opengroupware.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="pressmail.ch" label="KolabNow.com" domain="pressmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="swisscollab.ch" label="KolabNow.com" domain="swisscollab.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="swissgroupware.ch" label="KolabNow.com" domain="swissgroupware.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="switzerlandmail.ch" label="KolabNow.com" domain="switzerlandmail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<provider id="trusted-legal-mail.ch" label="KolabNow.com" domain="trusted-legal-mail.ch">
<incoming uri="imap+ssl+://imap.kolabnow.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.kolabnow.com" username="$email" />
</provider>
<!-- Japanese -->
<provider id="auone" label="au one" domain="auone.jp">
<incoming uri="imap+ssl+://imap.gmail.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email" />
</provider>
<!-- Korean -->
<provider id="naver" label="Naver" domain="naver.com">
<incoming uri="imap+ssl+://imap.naver.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.naver.com:587" username="$user" />
</provider>
<provider id="hanmail" label="Hanmail" domain="hanmail.net">
<incoming uri="imap+ssl+://imap.hanmail.net" username="$user" />
<outgoing uri="smtp+ssl+://smtp.hanmail.net" username="$user" />
</provider>
<provider id="daum" label="Hanmail" domain="daum.net">
<incoming uri="imap+ssl+://imap.hanmail.net" username="$user" />
<outgoing uri="smtp+ssl+://smtp.hanmail.net" username="$user" />
</provider>
<!-- Russia -->
<!-- Mail.Ru variants -->
<provider id="rumailmailimap" label="mail.ru" domain="mail.ru">
<incoming uri="imap+ssl+://imap.mail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.ru" username="$email" />
</provider>
<provider id="rumailinboximap" label="inbox.ru" domain="inbox.ru">
<incoming uri="imap+ssl+://imap.mail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.ru" username="$email" />
</provider>
<provider id="rumaillistimap" label="list.ru" domain="list.ru">
<incoming uri="imap+ssl+://imap.mail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.ru" username="$email" />
</provider>
<provider id="rumailbkimap" label="bk.ru" domain="bk.ru">
<incoming uri="imap+ssl+://imap.mail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.ru" username="$email" />
</provider>
<!-- Yandex variants -->
<provider id="comyanyandeximap" label="yandex.com" domain="yandex.com">
<incoming uri="imap+ssl+://imap.yandex.com" username="$user" />
<outgoing uri="smtp+ssl+://smtp.yandex.com" username="$user" />
</provider>
<provider id="ruyanyandeximap" label="yandex.ru" domain="yandex.ru">
<incoming uri="imap+ssl+://imap.yandex.ru" username="$user" />
<outgoing uri="smtp+ssl+://smtp.yandex.ru" username="$user" />
</provider>
<provider id="ruyanyaimap" label="ya.ru" domain="ya.ru">
<incoming uri="imap+ssl+://imap.ya.ru" username="$user" />
<outgoing uri="smtp+ssl+://smtp.ya.ru" username="$user" />
</provider>
<provider id="byyandeximap" label="yandex.by" domain="yandex.by">
<incoming uri="imap+ssl+://imap.yandex.by" username="$user" />
<outgoing uri="smtp+ssl+://smtp.yandex.by" username="$user" />
</provider>
<provider id="kzyandeximap" label="yandex.kz" domain="yandex.kz">
<incoming uri="imap+ssl+://imap.yandex.kz" username="$user" />
<outgoing uri="smtp+ssl+://smtp.yandex.kz" username="$user" />
</provider>
<provider id="uayandeximap" label="yandex.ua" domain="yandex.ua">
<incoming uri="imap+ssl+://imap.yandex.ua" username="$user" />
<outgoing uri="smtp+ssl+://smtp.yandex.ua" username="$user" />
</provider>
<!-- Rambler.ru variants -->
<provider id="ruramramblerimap" label="rambler.ru" domain="rambler.ru">
<incoming uri="imap+ssl+://mail.rambler.ru" username="$email" />
<outgoing uri="smtp+ssl+://mail.rambler.ru" username="$email" />
</provider>
<provider id="ruramlentaimap" label="lenta.ru" domain="lenta.ru">
<incoming uri="imap+ssl+://mail.rambler.ru" username="$email" />
<outgoing uri="smtp+ssl+://mail.rambler.ru" username="$email" />
</provider>
<provider id="ruramroimap" label="ro.ru" domain="ro.ru">
<incoming uri="imap+ssl+://mail.rambler.ru" username="$email" />
<outgoing uri="smtp+ssl+://mail.rambler.ru" username="$email" />
</provider>
<!-- QIP.RU variants -->
<provider id="ruqipqipimap" label="qip.ru" domain="qip.ru">
<incoming uri="imap+ssl+://imap.qip.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.qip.ru" username="$email" />
</provider>
<provider id="ruqippochtaimap" label="pochta.ru" domain="pochta.ru">
<incoming uri="imap+ssl+://imap.pochta.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.pochta.ru" username="$email" />
</provider>
<provider id="comqipfromruimap" label="fromru.com" domain="fromru.com">
<incoming uri="imap+ssl+://imap.fromru.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.fromru.com" username="$email" />
</provider>
<provider id="ruqipfrontimap" label="front.ru" domain="front.ru">
<incoming uri="imap+ssl+://imap.front.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.front.ru" username="$email" />
</provider>
<provider id="ruqiphotboximap" label="hotbox.ru" domain="hotbox.ru">
<incoming uri="imap+ssl+://imap.hotbox.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.hotbox.ru" username="$email" />
</provider>
<provider id="ruqiphotmailimap" label="hotmail.ru" domain="hotmail.ru">
<incoming uri="imap+ssl+://imap.hotmail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.hotmail.ru" username="$email" />
</provider>
<provider id="suqipkrovatkaimap" label="krovatka.su" domain="krovatka.su">
<incoming uri="imap+ssl+://imap.krovatka.su" username="$email" />
<outgoing uri="smtp+ssl+://smtp.krovatka.su" username="$email" />
</provider>
<provider id="ruqiplandimap" label="land.ru" domain="land.ru">
<incoming uri="imap+ssl+://imap.land.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.land.ru" username="$email" />
</provider>
<provider id="comqipmail15imap" label="mail15.com" domain="mail15.com">
<incoming uri="imap+ssl+://imap.mail15.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail15.com" username="$email" />
</provider>
<provider id="comqipmail333imap" label="mail333.com" domain="mail333.com">
<incoming uri="imap+ssl+://imap.mail333.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail333.com" username="$email" />
</provider>
<provider id="ruqipnewmailimap" label="newmail.ru" domain="newmail.ru">
<incoming uri="imap+ssl+://imap.newmail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.newmail.ru" username="$email" />
</provider>
<provider id="ruqipnightmailimap" label="nightmail.ru" domain="nightmail.ru">
<incoming uri="imap+ssl+://imap.nightmail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.nightmail.ru" username="$email" />
</provider>
<provider id="ruqipnmimap" label="nm.ru" domain="nm.ru">
<incoming uri="imap+ssl+://imap.nm.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.nm.ru" username="$email" />
</provider>
<provider id="netqippisemimap" label="pisem.net" domain="pisem.net">
<incoming uri="imap+ssl+://imap.pisem.net" username="$email" />
<outgoing uri="smtp+ssl+://smtp.pisem.net" username="$email" />
</provider>
<provider id="ruqippochtamtimap" label="pochtamt.ru" domain="pochtamt.ru">
<incoming uri="imap+ssl+://imap.pochtamt.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.pochtamt.ru" username="$email" />
</provider>
<provider id="ruqippop3imap" label="pop3.ru" domain="pop3.ru">
<incoming uri="imap+ssl+://imap.pop3.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.pop3.ru" username="$email" />
</provider>
<provider id="ruqiprbcmailimap" label="rbcmail.ru" domain="rbcmail.ru">
<incoming uri="imap+ssl+://imap.rbcmail.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.rbcmail.ru" username="$email" />
</provider>
<provider id="ruqipsmtpimap" label="smtp.ru" domain="smtp.ru">
<incoming uri="imap+ssl+://imap.smtp.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.smtp.ru" username="$email" />
</provider>
<provider id="ruqip5ballovimap" label="5ballov.ru" domain="5ballov.ru">
<incoming uri="imap+ssl+://imap.5ballov.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.5ballov.ru" username="$email" />
</provider>
<provider id="ruqipaeternaimap" label="aeterna.ru" domain="aeterna.ru">
<incoming uri="imap+ssl+://imap.aeterna.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aeterna.ru" username="$email" />
</provider>
<provider id="ruqipzizaimap" label="ziza.ru" domain="ziza.ru">
<incoming uri="imap+ssl+://imap.ziza.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.ziza.ru" username="$email" />
</provider>
<provider id="ruqipmemoriimap" label="memori.ru" domain="memori.ru">
<incoming uri="imap+ssl+://imap.memori.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.memori.ru" username="$email" />
</provider>
<provider id="ruqipphotofileimap" label="photofile.ru" domain="photofile.ru">
<incoming uri="imap+ssl+://imap.photofile.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.photofile.ru" username="$email" />
</provider>
<provider id="ruqipfotoplenkaimap" label="fotoplenka.ru" domain="fotoplenka.ru">
<incoming uri="imap+ssl+://imap.fotoplenka.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.fotoplenka.ru" username="$email" />
</provider>
<provider id="comqippochtaimap" label="pochta.com" domain="pochta.com">
<incoming uri="imap+ssl+://imap.pochta.ru" username="$email" />
<outgoing uri="smtp+ssl+://smtp.pochta.ru" username="$email" />
</provider>
<!-- Slovakia -->
<provider id="azet.sk" label="Azet.sk" domain="azet.sk">
<incoming uri="imap+ssl+://imap.azet.sk" username="$email" />
<outgoing uri="smtp+ssl+://smtp.azet.sk" username="$email" />
</provider>
<!-- The Netherlands -->
<!-- Ziggo variants -->
<provider id="casema.nl" label="Ziggo" domain="casema.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="chello.nl" label="Ziggo" domain="chello.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="hahah.nl" label="Ziggo" domain="hahah.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="home.nl" label="Ziggo" domain="home.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="multiweb.nl" label="Ziggo" domain="multiweb.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="quicknet.nl" label="Ziggo" domain="quicknet.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="razcall.com" label="Ziggo" domain="razcall.com">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="razcall.nl" label="Ziggo" domain="razcall.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="upcmail.nl" label="Ziggo" domain="upcmail.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="zeggis.com" label="Ziggo" domain="zeggis.com">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="zeggis.nl" label="Ziggo" domain="zeggis.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="ziggomail.com" label="Ziggo" domain="ziggomail.com">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="ziggo.nl" label="Ziggo" domain="ziggo.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<provider id="zinders.nl" label="Ziggo" domain="zinders.nl">
<incoming uri="imap+ssl+://imap.ziggo.nl" username="$email" />
<outgoing uri="smtp+tls+://smtp.ziggo.nl" username="$email" />
</provider>
<!-- EU wide -->
<provider id="fairnatics.net" label="Fairnatics" domain="fairnatics.net">
<incoming uri="imap+ssl+://mail.fairnatics.net" username="$email" />
<outgoing uri="smtp+tls+://mail.fairnatics.net:25" username="$email" />
</provider>
<!-- eFoundation -->
<provider id="e.foundation" label="/e/" domain="e.email">
<incoming uri="imap+ssl+://mail.ecloud.global" username="$email" />
<outgoing uri="smtp+tls+://mail.ecloud.global" username="$email" />
</provider>
<!-- AOL variants -->
<provider domain="aol.com">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.de">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.it">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.fr">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.es">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.se">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.co.uk">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.co.nz">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.com.au">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.com.ar">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.com.br">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<provider domain="aol.com.mx">
<incoming uri="imap+ssl+://imap.aol.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.aol.com" username="$email" />
</provider>
<!-- Microsoft variants -->
<provider domain="outlook.com">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="hotmail.com">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="msn.com">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="live.com">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="live.co.uk">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="hotmail.co.uk">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
<provider domain="outlook.sk">
<incoming uri="imap+ssl+://outlook.office365.com" username="$email" />
<outgoing uri="smtp+tls+://smtp.office365.com" username="$email" />
</provider>
</providers>

View file

@ -0,0 +1,64 @@
package com.fsck.k9.autodiscovery.providersxml
import androidx.test.core.app.ApplicationProvider
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import com.fsck.k9.RobolectricTest
import com.fsck.k9.mail.AuthType
import com.fsck.k9.mail.ConnectionSecurity
import com.fsck.k9.oauth.OAuthConfiguration
import com.fsck.k9.oauth.OAuthConfigurationProvider
import org.junit.Test
class ProvidersXmlDiscoveryTest : RobolectricTest() {
private val xmlProvider = ProvidersXmlProvider(ApplicationProvider.getApplicationContext())
private val oAuthConfigurationProvider = createOAuthConfigurationProvider()
private val providersXmlDiscovery = ProvidersXmlDiscovery(xmlProvider, oAuthConfigurationProvider)
@Test
fun discover_withGmailDomain_shouldReturnCorrectSettings() {
val connectionSettings = providersXmlDiscovery.discover("user@gmail.com")
assertThat(connectionSettings).isNotNull()
with(connectionSettings!!.incoming.first()) {
assertThat(host).isEqualTo("imap.gmail.com")
assertThat(security).isEqualTo(ConnectionSecurity.SSL_TLS_REQUIRED)
assertThat(authType).isEqualTo(AuthType.XOAUTH2)
assertThat(username).isEqualTo("user@gmail.com")
}
with(connectionSettings.outgoing.first()) {
assertThat(host).isEqualTo("smtp.gmail.com")
assertThat(security).isEqualTo(ConnectionSecurity.SSL_TLS_REQUIRED)
assertThat(authType).isEqualTo(AuthType.XOAUTH2)
assertThat(username).isEqualTo("user@gmail.com")
}
}
@Test
fun discover_withUnknownDomain_shouldReturnNull() {
val connectionSettings = providersXmlDiscovery.discover(
"user@not.present.in.providers.xml.example"
)
assertThat(connectionSettings).isNull()
}
private fun createOAuthConfigurationProvider(): OAuthConfigurationProvider {
val googleConfig = OAuthConfiguration(
clientId = "irrelevant",
scopes = listOf("irrelevant"),
authorizationEndpoint = "irrelevant",
tokenEndpoint = "irrelevant",
redirectUri = "irrelevant"
)
return OAuthConfigurationProvider(
configurations = mapOf(
listOf("imap.gmail.com", "smtp.gmail.com") to googleConfig
),
googleConfiguration = googleConfig
)
}
}