mirror of https://github.com/M66B/FairEmail.git
Use MX host name as last attempt
This commit is contained in:
parent
137be8d101
commit
e050d43fdc
|
@ -278,33 +278,63 @@ public class EmailProvider implements Parcelable {
|
||||||
DnsHelper.DnsRecord[] records = DnsHelper.lookup(context, domain, "mx");
|
DnsHelper.DnsRecord[] records = DnsHelper.lookup(context, domain, "mx");
|
||||||
|
|
||||||
for (DnsHelper.DnsRecord record : records)
|
for (DnsHelper.DnsRecord record : records)
|
||||||
if (!TextUtils.isEmpty(record.name))
|
if (!TextUtils.isEmpty(record.name)) {
|
||||||
|
String target = record.name.toLowerCase(Locale.ROOT);
|
||||||
|
EntityLog.log(context, "MX target=" + target);
|
||||||
|
|
||||||
for (EmailProvider provider : providers) {
|
for (EmailProvider provider : providers) {
|
||||||
if (provider.mx != null)
|
if (provider.mx != null)
|
||||||
for (String mx : provider.mx)
|
for (String mx : provider.mx)
|
||||||
if (record.name.toLowerCase(Locale.ROOT).matches(mx)) {
|
if (target.matches(mx)) {
|
||||||
EntityLog.log(context, "Provider from mx=" + record.name + " domain=" + domain);
|
EntityLog.log(context, "From MX domain=" + domain);
|
||||||
candidates.add(provider);
|
candidates.add(provider);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
String mxparent = UriHelper.getParentDomain(context, record.name);
|
String mxparent = UriHelper.getParentDomain(context, target);
|
||||||
String pdomain = UriHelper.getParentDomain(context, provider.imap.host);
|
String pdomain = UriHelper.getParentDomain(context, provider.imap.host);
|
||||||
if (mxparent.equalsIgnoreCase(pdomain)) {
|
if (mxparent.equalsIgnoreCase(pdomain)) {
|
||||||
EntityLog.log(context, "Provider from mx=" + record.name + " host=" + provider.imap.host);
|
EntityLog.log(context, "From MX host=" + provider.imap.host);
|
||||||
candidates.add(provider);
|
candidates.add(provider);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DnsHelper.DnsRecord record : records) {
|
while (candidates.size() == 0 && target.indexOf('.') > 0) {
|
||||||
String target = record.name;
|
candidates.addAll(_fromDomain(context, target, email, discover));
|
||||||
while (candidates.size() == 0 && target != null && target.indexOf('.') > 0) {
|
|
||||||
candidates.addAll(_fromDomain(context, target.toLowerCase(Locale.ROOT), email, discover));
|
|
||||||
int dot = target.indexOf('.');
|
int dot = target.indexOf('.');
|
||||||
target = target.substring(dot + 1);
|
target = target.substring(dot + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (DnsHelper.DnsRecord record : records)
|
||||||
|
if (!TextUtils.isEmpty(record.name)) {
|
||||||
|
String target = record.name.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
|
EmailProvider mx1 = new EmailProvider(domain);
|
||||||
|
mx1.imap.score = 0;
|
||||||
|
mx1.imap.host = target;
|
||||||
|
mx1.imap.port = 993;
|
||||||
|
mx1.imap.starttls = false;
|
||||||
|
mx1.smtp.score = 0;
|
||||||
|
mx1.smtp.host = target;
|
||||||
|
mx1.smtp.port = 587;
|
||||||
|
mx1.smtp.starttls = true;
|
||||||
|
candidates.add(mx1);
|
||||||
|
|
||||||
|
EmailProvider mx2 = new EmailProvider(domain);
|
||||||
|
mx2.imap.score = 0;
|
||||||
|
mx2.imap.host = target;
|
||||||
|
mx2.imap.port = 993;
|
||||||
|
mx2.imap.starttls = false;
|
||||||
|
mx2.smtp.score = 0;
|
||||||
|
mx2.smtp.host = target;
|
||||||
|
mx2.smtp.port = 465;
|
||||||
|
mx2.smtp.starttls = false;
|
||||||
|
candidates.add(mx2);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
Log.w(ex);
|
Log.w(ex);
|
||||||
}
|
}
|
||||||
|
@ -387,7 +417,7 @@ public class EmailProvider implements Parcelable {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Scan ports
|
// Scan ports
|
||||||
Log.i("Provider from template domain=" + domain);
|
Log.i("Provider from scan domain=" + domain);
|
||||||
result.add(fromScan(context, domain, discover));
|
result.add(fromScan(context, domain, discover));
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
Log.w(ex);
|
Log.w(ex);
|
||||||
|
@ -860,7 +890,10 @@ public class EmailProvider implements Parcelable {
|
||||||
public boolean starttls;
|
public boolean starttls;
|
||||||
|
|
||||||
// Scores:
|
// Scores:
|
||||||
// 10 from scan; +2 trusted; +1 trusted alt
|
// 0 from MX record
|
||||||
|
// 10 from port scan
|
||||||
|
// +2 trusted host
|
||||||
|
// +1 trusted DNS name
|
||||||
// 20 from autoconfig
|
// 20 from autoconfig
|
||||||
// 50 from DNS
|
// 50 from DNS
|
||||||
// 100 from profile
|
// 100 from profile
|
||||||
|
|
Loading…
Reference in New Issue