public static bool UpdateMx(this ServerDns dns, string domain)
        {
            var utcNow     = DateTime.UtcNow;
            var hasChanges = false;

            var dnsLookup = new DnsLookup();

            if (dns.MxDateChecked.HasValue && dns.MxDateChecked.Value.AddSeconds(dns.MxTtl) >= utcNow)
            {
                return(hasChanges);
            }

            var mxRecord =
                dnsLookup
                .GetDomainMxRecords(domain)
                .FirstOrDefault(mx => mx.ExchangeDomainName.ToString().TrimEnd('.').Equals(dns.Mx));

            dns.MxVerified    = mxRecord != null;
            dns.MxTtl         = mxRecord != null ? mxRecord.TimeToLive : Defines.ServerDnsDefaultTtl;
            dns.MxDateChecked = utcNow;

            hasChanges = true;

            return(hasChanges);
        }
Beispiel #2
0
        public void GetMxRecords()
        {
            const string domain = "onlyoffice.com";

            var dnsLoopup = new DnsLookup();

            var mxRecords = dnsLoopup.GetDomainMxRecords(domain);

            Assert.IsTrue(mxRecords.Any());
        }
Beispiel #3
0
        public void GetNoexistedDomainMx()
        {
            const string domain = "taramparam.tk";

            var dnsLoopup = new DnsLookup();

            var mxRecords = dnsLoopup.GetDomainMxRecords(domain);

            Assert.IsTrue(!mxRecords.Any());
        }
Beispiel #4
0
        private ClientConfig SearchBusinessVendorsSettings(string domain)
        {
            ClientConfig settingsFromDb = null;

            try
            {
                var dnsLookup = new DnsLookup();

                var mxRecords = dnsLookup.GetDomainMxRecords(domain);

                if (!mxRecords.Any())
                {
                    return(null);
                }

                var knownBusinessMxs =
                    Defines.MxToDomainBusinessVendorsList.Where(
                        mx =>
                        mxRecords.FirstOrDefault(
                            r => r.ExchangeDomainName.ToString().ToLowerInvariant().Contains(mx.Key.ToLowerInvariant())) != null)
                    .ToList();

                foreach (var mxXdomain in knownBusinessMxs)
                {
                    settingsFromDb = GetStoredMailBoxSettings(mxXdomain.Value);

                    if (settingsFromDb != null)
                    {
                        return(settingsFromDb);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("SearchBusinessVendorsSettings failed", ex);
            }

            return(settingsFromDb);
        }