什么是反向域名解析纪录

什么是反向域名解析纪录,第1张

什么是DNS反向解析?

可逆DNS(RDNS)就是反向解析,就是把IP解析成域名。相对应的,DNS是正向解析,把域名解析成IP。可逆DNS(RDNS)的原理和DNS解析是完全相同的。

DNS反向解析就是将IP反向查询为域名,在相关IP授权DNS服务器上增加您的IP地址的PTR记录。反向解析的意义是这个IP地址的网络身份是被认可的,是合法的。

可逆DNS(RDNS)的一个应用是作为垃圾邮件过滤器.它是这样工作的:垃圾邮件制造者一般会使用与域名不合的无效IP地址,即不和域名匹配的IP地址.可逆DNS查找程序把引入信息的IP地址输入一个DNS数据库.如果没有找到和IP地址匹配的有效域名,服务器就认为该EMAIL是垃圾邮件。如AOL(美国在线)要求必须实施IP反解的邮件服务器才能向AOL/AIM邮箱发送邮件。

什么IP才能做反向解析?

国内的IP只有部分才能申请反向解析,这部分IP为电信运营商认可的固定IP地址,动态IP池中的不能申请。

一般反向解析是和IP地址分配有联系的,所以ISP(接入服务商)直接申请反向解析的授权很难得到。而电信运营商在这方面就具备天然优势,通常这个授权都会直接授予本地的电信运营商,然后再由电信运营商授予各个使用此IP地址的ISP(当然,这个ISP至少要完全占有整个C类地址的使用权,否则不会得到授权),大部分情况,电信运营商自己的DNS来提供相应IP地址的反向解析服务。

如何申请反向解析?

1)反向解析和域名注册服务商无任何关系

2)向提供您数据接入服务的ISP申请,如果ISP无授权做,则只有向ISP的上层运营商电信、网通申请

3)通常情况ISP会收取DNS反向解析服务费后,再向上层运营商下工单申请IP反解

4)申请周期长的可能需要1个月(如网通的IP反解申请一般需要统一由北京网通总部来做,周期长)

DNS反向解析费用

DNS反向解析通常需要支付年费,原因是电信运营商投入了DNS服务器运营来负责IP地址的反解,几乎所有电信运营商都将DNS反向解析列入收费项目,如果您通过ISP申请,ISP需要付费给电信运营商,产生的费用可能较高。

没做DNS反向解析造成的邮件退信举例说明

国内很多ISP还不知道什么是RDNS,更不知道如何架设RDNS服务器了。也就是说不是所有ISP都可以做RDNS的。这也就是为什么国内很多用户发往国外的遭到邮件退信的主要原因。

退信原因

某些邮件服务器为了防垃圾邮件的需要,接收邮件时进行对发信人的email地址进行DNS反向查询,对于公网存在正确DNS解析的发件人的邮件放行,而对于DNS反向解析不正确的地址予以拦截。

可能出现的关键字

can’t verify FROM domain in DNS、domain does not exist

解决方法

存在此类问题的多数是具有自己域名的企业邮箱用户,这类的服务器要求用户所用的域名解析设置中有关的SOA记录、MX记录都正确可查询。所以DNS解析记录不完整或者对方反向解析时刚好域名所在的邮件服务器出现故障不能正常返回查询,而收件人的邮件系统具有这样的验证机制时,就会出现这样的退信了。

确认退信是以上原因的时候,通知你的域名服务器的管理员检查确认你的域名解析记录信息或者稍后等域名服务器正常了即可正常发送

下面这个Java类可以帮助我们做这个事情。同时我们还可以把这个帮助方法开发一个可视化的程序,这样就更加方便:

import java.io.Fileimport java.io.FileInputStreamimport java.io.FileOutputStreamimport java.security.KeyStoreimport java.security.cert.CertificateFactoryimport java.security.cert.X509Certificateimport java.util.Listimport javax.naming.ldap.LdapNameimport javax.naming.ldap.Rdnimport javax.security.auth.x500.X500Principalpublic class KeyStoreHelper { public static void createTrustJKSKeyStore(final String originalTrustFolder, final String jksTrustStoreLocation, final String password) { File keyStoreFile = new File(jksTrustStoreLocation) if (!keyStoreFile.exists()) { try { KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()) keystore.load(null, password.toCharArray()) File trustedFolder = new File(originalTrustFolder) File[] certs = trustedFolder.listFiles() if (certs != null) { for (File cert : certs) { CertificateFactory factory = CertificateFactory.getInstance("X.509") try { X509Certificate certificate = (X509Certificate) factory.generateCertificate(new FileInputStream(cert)) X500Principal principal = certificate.getSubjectX500Principal() LdapName ldapDN = new LdapName(principal.getName()) List<Rdn>rdns = ldapDN.getRdns() for (Rdn rdn : rdns) { String type = rdn.getType() if (type.equals("CN")) { keystore.setCertificateEntry((String) rdn.getValue(),certificate)break } } } catch (Exception ex) { continue } } } FileOutputStream fos = new FileOutputStream(jksTrustStoreLocation) keystore.store(fos, password.toCharArray()) fos.close() } catch (Exception exp) { } } } /** * @param args */ public static void main(String[] args) { KeyStoreHelper.createTrustJKSKeyStore("D:\\cacerts", "D:\\cacerts\\test.jks", "test123") }}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/701162.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-04
下一篇2023-08-04

发表评论

登录后才能评论

评论列表(0条)

    保存