作者
作者|Feei(止介):蚂蚁金服负责安全架构工作,任高级安全专家,原美丽联合集团信息安全总监, Cobra作者,擅长解决方案产品化和项目管理,同时也是一名安全工程师,专注于自动化安全发现与防御,擅长安全架构设计、安全产品解决方案并产品化。
1 邮件伪造实践
1.1 邮件伪造原理
SMTP协议本身的From是可以随便填写的,多见于各种邮件钓鱼。
1.2 常见钓鱼邮件
冒充Apple官方,让你登陆Apple ID,从而盗取你的苹果账号,一般手机丢失后容易收到此类邮件用来骗取你账号密码从而解锁iPhone。
冒充老板、同事,索要通讯录、让你点击连接修改密码、索要其它信息等
冒充各种服务商,让你点击连接骗取账号密码。
钓鱼邮件手法多种多样,但万变不离其宗,本质上是希望你能:
- 打开邮件:不要以为就打开邮件不做其它操作就没风险,打开的这一步可能就触发邮件内的图片等资源加载,对方就能知道你打开的时间和IP等信息,另外也有一些针对邮件服务商的漏洞,打开后也会触发。
- 回复邮件:往往冒充各种人,比如你的老板、同事甚至政府机关等以各种名义让你提供账号密码或个人信息等。
- 点击连接:会跳到恶意网站,通过一些漏洞使你电脑执行特定程序。
- 下载附件:附件可能是个文档或者图标,点击后就会触发可执行程序。
目的也各不相同:
- 加密电脑所有有用文件并勒索;
- 控制电脑作为肉鸡用来攻击或浏览广告;
- 恶作剧,删除所有文件,强制死机等;
1.3 邮件伪造实践
我们以马化腾邮箱的名义给自己发一封邮件,只需改动SMTP里的From即可。
在腾讯企业邮箱邮件列表页中没有任何异常。
在腾讯企业邮箱邮件详情中会提示**真实发送地址和宣称的发件人地址不一致**,并显示了真实的发送地址。
在macOS的Mail客户端中无任何异常。
在微信小程序的腾讯企业邮箱中无任何异常。
1.4 邮件伪造代码
# -*- coding: utf-8 -*- """ fake-mail ~~~~~~~~~ 伪造发件人发送邮件 :author: Feei <feei@feei.cn> :homepage: https://github.com/FeeiCN/Mail-Checker :license: GPL, see LICENSE for more details. :copyright: Copyright (c) 2015 Feei. All rights reserved """ import smtplib import traceback from smtplib import SMTPException from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart host = 'smtp.exmail.qq.com' port = '25' username = 'feei@feei.cn' password = '配置好腾讯邮箱密码' def mail(subject, to, html, fake_name, fake_mail): """ Send mail :param subject: 主题 :param to: 发给谁 :param html: 内容 :param fake_name: 以谁的名义 :param fake_mail: 以谁的邮箱 :return: """ msg = MIMEMultipart() msg['Subject'] = subject msg['From'] = '{0} <{1}>'.format(fake_name, fake_mail) # 支持多用户接收邮件 msg['To'] = to text = MIMEText(html, 'html', 'utf-8') msg.attach(text) try: s = smtplib.SMTP(host, port) s.ehlo() s.starttls() s.ehlo() s.login(username, password) s.sendmail(username, to.split(','), msg.as_string()) s.quit() return True except SMTPException: print('Send mail failed') traceback.print_exc() return False assert mail('Test by @Feei', 'zhijie@meili-inc.com', 'Fake Mail Content', '马化腾', 'tony@tencent.com')
2 邮件伪造防范
2.1 限制来信地址(SPF)
发件人策略框架(SPF),简单理解就是告诉所有的邮件服务器收到我这个域名发送的邮件时,以我告诉你的IP地址为准,不是我们IP地址的都算作伪造。
SPF原理
通过给发件域名配置一个TXT
类型DNS记录,当其它的DNS Server收到我们域名的邮件时,会查询该域名TXT记录中是否存在SPF记录,如果存在则会获取SPF标记的IP,拿到IP和实际发件IP比对,从而判断是否伪造。
腾讯企业邮箱的SPF记录
# 查询qq.com根域名的TXT类型的DNS记录 # 解析到了spf.mail.qq.com域名上 ➜ ~ dig -t txt qq.com ; <<>> DiG 9.10.6 <<>> -t txt qq.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20179 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;qq.com. IN TXT ;; ANSWER SECTION: qq.com. 1388 IN TXT "v=spf1 include:spf.mail.qq.com -all" ;; Query time: 26 msec ;; MSG SIZE rcvd: 83 # 查询spf.mail.qq.com的TXT记录 # 解析到了spf-a.mail.qq.com等多个域名上 ➜ ~ dig -t txt spf.mail.qq.com ; <<>> DiG 9.10.6 <<>> -t txt spf.mail.qq.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8072 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;spf.mail.qq.com. IN TXT ;; ANSWER SECTION: spf.mail.qq.com. 6423 IN TXT "v=spf1 include:spf-a.mail.qq.com include:spf-b.mail.qq.com include:spf-c.mail.qq.com include:spf-d.mail.qq.com include:spf-e.mail.qq.com include:spf-f.mail.qq.com -all" ;; Query time: 15 msec ;; MSG SIZE rcvd: 224 # 查询spf-f.mail.qq.com的TXT记录 # 显示的是最终的IP地址段 ➜ ~ dig -t txt spf-a.mail.qq.com ; <<>> DiG 9.10.6 <<>> -t txt spf-a.mail.qq.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50079 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;spf-a.mail.qq.com. IN TXT ;; ANSWER SECTION: spf-a.mail.qq.com. 598 IN TXT "v=spf1 ip4:103.7.28.0/24 ip4:103.7.29.0/24 ip4:112.90.139.0/24 ip4:113.108.23.0/24 ip4:113.108.11.0/24 ip4:119.147.193.0/24 ip4:119.147.194.0/24 ip4:59.78.209.0/24 ip4:113.96.223.0/24 ip4:183.3.226.0/24 ip4:183.3.255.0/24 ip4:59.36.132.0/24 -all" ;; Query time: 38 msec ;; MSG SIZE rcvd: 304
也就是所有QQ邮箱发出去的邮件,比如网易邮箱收到时会去查询QQ的SPF设置并捞取所有信任IP,根据邮件发件人和信任IP比对来判断是否为伪造邮件。
SPF配置
在域名DNS服务商里面配置**根域名(@)的**TXT记录,**TTL**保留默认或3600,以feei.cn
(使用的腾讯企业邮箱)的TXT
记录为例。
也就是所有QQ邮箱发出去的邮件,比如网易邮箱收到时会去查询QQ的SPF设置并捞取所有信任IP,根据邮件发件人和信任IP比对来判断是否为伪造邮件。
SPF配置¶
在域名DNS服务商里面配置**根域名(@)的**TXT记录,**TTL**保留默认或3600,以feei.cn(使用的腾讯企业邮箱)的TXT记录为例。
v=spf1
代表为SPF1版本。include:spf.mail.qq.com
表示使用spf.mail.qq.com
的TXT记录作为信任IP。-
-all
表示除开之前配置的信任IP外,其它所有的都拒绝接收。 -
每条内容以空格作为分隔
- 每个修饰符只能出现一次
限定符
+
表示通过,指定允许发送的主机-
表示失败,指定拒绝发送的主机~
表示软失败,不允许发送但标记起来?
中性,不确定
all
/include
描述
all
一般放在末尾,表示始终匹配include
表示多层嵌套
ip4
/ip6
描述符
ip4:ip
,比如ip4:1.1.1.1
ip4:IP段
,比如ip4:1.1.1.1/24
ip6:ip
,比如ip6:1080::8:800:68.0.3.1/96
a
/mx
描述符
- 默认域名的A记录,比如
v=spf1 a -all
- 指定域名的A记录,比如
v=spf1 a:feei.cn -all
- 按照MX记录的优先级,比如
v=spf1 mx mx:feei.cn -all
详细的查看官方文档SPF语法。
SPF例子
# 域名不会发送邮件 "v=spf1 -all" # 认为SPF无用或无关紧要 "v=spf1 +all" # 只允许1.1.1.1发出来的邮件 "v=spf1 ip4:1.1.1.1 -all" # 只允许腾讯企业邮箱发出来的邮件 "v=spf1 ip4:spf.mail.qq.com -all"
SPF枚举邮件服务器地址
根据SPF特性,可以通过递归方式枚举出某个企业的全部邮件服务器地址。
# -*- coding: utf-8 -*- """ SPF ~~~ SPF信任IP枚举 spf = SPF() spf.spf('qq.com') print(spf.root) print(spf.ip_segments) print(spf.included_domains) print(spf.ips) :author: Feei <feei@feei.cn> :homepage: https://github.com/FeeiCN/Mail-Checker :license: GPL, see LICENSE for more details. :copyright: Copyright (c) 2015 Feei. All rights reserved """ import re import dns.resolver class SPF(object): def __init__(self): self.ips = [] self.included_domains = [] self.ip_segments = [] self.root = [] def spf(self, domain): txt_items = dns.resolver.query(domain, 'txt') for txt in txt_items: txt = txt.to_text().strip() if re.search(r"^"v=spf", txt): self.parse_spf(domain, txt.strip('"')) def parse_spf(self, domain, record): for item in record.split(' '): if re.search(r'^ip4:', item): ip = item[4:] is_ip_segment = False if '/' in ip: self.ip_segments.append(ip) is_ip_segment = True else: self.ips.append(ip) self.root.append({"domain": domain, "ip": ip, "ip_segment": is_ip_segment}) elif re.search(r'^include:', item): include = item[8:] if not (include in self.included_domains or include == domain): self.spf(include) self.included_domains.append(include) spf = SPF() spf.spf('qq.com') # 结构 print(spf.root) # IP print(spf.ips) # IP段 print(spf.ip_segments) # 域名 print(spf.included_domains)
[{'domain': 'spf-a.mail.qq.com', 'ip': '103.7.28.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '103.7.29.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '112.90.139.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.108.23.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.108.11.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '119.147.193.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '119.147.194.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '59.78.209.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.96.223.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '183.3.226.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '183.3.255.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '59.36.132.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.32.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.43.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.44.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.21.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.52.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.61.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.8.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.62.104.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '184.105.206.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '184.105.67.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '203.205.160.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '58.250.132.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.179.177.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '183.57.50.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '59.37.110.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.204.34.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.206.16.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.206.34.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.207.19.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.207.22.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.238.142.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.238.162.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.243.244.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '58.251.149.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '58.250.134.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '54.254.200.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '54.92.39.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '103.7.31.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '14.17.18.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '112.90.142.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '113.108.91.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '119.147.14.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '180.153.3.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '183.60.60.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '183.62.126.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '211.139.188.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '203.205.176.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.153.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.154.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.155.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '183.61.51.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '183.61.52.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '163.177.87.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '220.249.245.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '52.59.177.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '18.194.254.0/24', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '180.163.24.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '121.51.40.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '58.246.222.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '58.250.143.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '121.51.6.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '183.2.187.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.140.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.210.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.146.128/25', 'ip_segment': True}] [] ['103.7.28.0/24', '103.7.29.0/24', '112.90.139.0/24', '113.108.23.0/24', '113.108.11.0/24', '119.147.193.0/24', '119.147.194.0/24', '59.78.209.0/24', '113.96.223.0/24', '183.3.226.0/24', '183.3.255.0/24', '59.36.132.0/24', '14.17.32.0/24', '14.17.43.0/24', '14.17.44.0/24', '14.17.21.0/24', '183.60.52.0/24', '183.60.61.0/24', '183.60.8.0/24', '183.62.104.0/24', '184.105.206.0/24', '184.105.67.0/24', '203.205.160.0/24', '58.250.132.0/24', '54.179.177.0/24', '183.57.50.0/24', '59.37.110.0/24', '54.204.34.0/24', '54.206.16.0/24', '54.206.34.0/24', '54.207.19.0/24', '54.207.22.0/24', '54.238.142.0/24', '54.238.162.0/24', '54.243.244.0/24', '58.251.149.0/24', '58.250.134.0/24', '54.254.200.0/24', '54.92.39.0/24', '103.7.31.0/24', '14.17.18.0/24', '112.90.142.0/24', '113.108.91.0/24', '119.147.14.0/24', '180.153.3.0/24', '183.60.60.0/24', '183.62.126.0/24', '211.139.188.0/24', '203.205.176.0/24', '14.215.153.0/24', '14.215.154.0/24', '14.215.155.0/24', '183.61.51.0/24', '183.61.52.0/24', '163.177.87.0/24', '220.249.245.0/24', '52.59.177.0/24', '18.194.254.0/24', '180.163.24.128/25', '121.51.40.128/25', '58.246.222.128/25', '58.250.143.128/25', '121.51.6.0/25', '183.2.187.0/25', '203.205.140.128/25', '203.205.210.0/25', '203.205.146.128/25'] ['spf-a.mail.qq.com', 'spf-b.mail.qq.com', 'spf-c.mail.qq.com', 'spf-d.mail.qq.com', 'spf-e.mail.qq.com', 'spf-f.mail.qq.com', 'spf.mail.qq.com']
2.2 防止邮件内容篡改(DKIM)
DKIM作用
使用域名密钥识别邮件 (DKIM) 标准有助于向外发送邮件遭到假冒,包括邮件内容遭到更改、使邮件显示为非真实的来源的发件人或发件地址,这些都是对邮件未授权利用的常见手法。
DKIM原理
使用DKIM,将会加密签名添加到所有外发邮件的Header中,收到此类邮件的邮件服务器会使用DKIM解密邮件Header,并验证邮件发送后是否遭到篡改。
DKIM使用
- 为域名生成密钥
- 向域名DNS记录增加公钥,以便于其它邮件服务器使用此密钥读取邮件Header中DKIM
- 开启DKIM功能,以便于将DKIM签名添加到所有发送的邮件Header中
国内的腾讯企业邮箱和网易企业邮箱都不支持DKIM。
2.3 处理可疑邮件(DMARC)
DMARC(Domain-based Message Authentication, Reporting & Conformance)是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,邮件收发双方建立了邮件反馈机制,便于邮件发送方和邮件接收方共同对域名的管理进行完善和监督。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。
简单讲就是不像之前的SPF的管控策略,只能拦截、通过,而是可以有更多的操作方式,比如扔进垃圾箱甚至讲这些邮件转发给我们。
DMARC配置
检查一个网站的DMARC配置可以查看_dmarc.domain.com
的TXT
记录,比如qq.com
的DMARC记录。
➜ ~ dig -t txt _dmarc.qq.com ; <<>> DiG 9.10.6 <<>> -t txt _dmarc.qq.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 225 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;_dmarc.qq.com. IN TXT ;; ANSWER SECTION: _dmarc.qq.com. 3610 IN TXT "v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com" ;; Query time: 189 msec ;; MSG SIZE rcvd: 107
以qq.com
的DMARC配置为例:
v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com
v=DMARC1
表示使用的是DMARC1版本,必须放在最前面p
表示邮件处理策略none
表示不采取特定策略,初期观察建议采用此模式quarantine
表示邮件接收者将邮件标记为可疑的reject
表示邮件接收者拒收该邮件rua
表示将一段时间的汇总报告反馈的邮件地址,可用逗号分隔ruf
表示当检测到伪造邮件时将伪造信息的报告反馈的邮件地址,可用逗号分隔
详细语法介绍见DMARC文档。
例如我希望我域名feei.cn
配置DMARC,则在我的DNS服务商管理后台增加一条DNS记录。HOST为_dmarc
,类型为TXT
,值为v=DMARC1; p=none; rua=mailto:mail-report@feei.cn
。DMARC的前提必须已经配置过SPF。
DMARC例子
# 检测到伪造邮件时不做任何特殊处理,将伪造邮件报告给我 v=DMARC1; p=none; ruf=mailto:mail-report@feei.cn # 检测到伪造邮件时标记为可疑邮件,将伪造的邮件报告给我 v=DMARC1; p=quarantine; ruf=mailto:mail-report@feei.cn # 检测到伪造邮件时拒绝接受该邮件,将伪造的邮件报告给我,并将一段时间内的汇总报告给我 v=DMARC1; p=reject; ruf=mailto:mail-report@feei.cn; rua=mailto:mail-report@feei.cn
2.4 IP的反向解析地址(PTR)
PTR(Pointer Record)是将IP解析到域名上,常见的域名解析到IP是通过A(IPv4)或AAAA(IPv6)进行的,可以简单理解为IP的反向域名解析,常用于提升邮箱的发信信誉从而提高到达率。
查询IP的PTR可以通过dig -x ip
,比如查看8.8.8.8
的PTR记录为google-public-dns-a.google.com.
。
➜ ~ dig -x 8.8.8.8 ; <<>> DiG 9.10.6 <<>> -x 8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1999 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;8.8.8.8.in-addr.arpa. IN PTR ;; ANSWER SECTION: 8.8.8.8.in-addr.arpa. 75474 IN PTR google-public-dns-a.google.com. ;; Query time: 91 msec ;; MSG SIZE rcvd: 93
PTR配置
PTR的配置无法在DNS服务商配置,因为IP的归属是运营商(ISP),因此如果是买的云主机需要向运营商提交申请进行配置解析。
3 邮件安全建议
3.1 自身加固
- 强制开启登陆二次验证(扫码、短信、Google Auth)
- 关闭企业邮箱中的组织架构信息
- 去掉企业邮箱中的除姓名、邮箱地址外其它的信息(手机号、职位、部门等)
- 发送营销邮件时使用二级域名,比如
reply@event.feei.cn
,当被封禁时不会影响其他业务
3.2 安全意识
- 勿打开未知人员发送的邮件,尤其是邮件附件
- 不要回复任何要求提供账号密码或个人信息的邮件
- 发送敏感数据应进行加密
- 勿使用公司邮箱作为个人用途
- 公司邮箱邮件勿转发到个人邮箱中
- 浏览器中使用HTTPS访问邮箱,客户端中使用SSL/TLS访问邮箱