foxmail发送邮件邮件发送失败故障排查过程

Dns解析出的ip不通导致无法发送邮件

  问题:搬入公司新址,使用一运营商的专线网络后(原来使用电信宽带),经常有同事反馈有时无法发送邮件,有时能成功。今天有同事反馈无法发邮件,但他的账号在别人pc使用上是正常的,收发没有问题。Web页面模式登录邮箱,收发正常。

  排查过程

    在自己的pc上测试发送邮件,并抓包。观察现象正常。公司使用263的邮件服务器,抓包显示如下:

接收过程:

过滤smtp | |tcp.port==995 || dns contains  “公司域名”后如下显示:

发送过程:

tcp.port==25  ||  dns  contains  "公司域名“  后显示如下:

可以收发,让同事检查自己配置是否有错。有事先走了,下午问他,反馈重新安装foxmail还是没法发,安装另一款邮件程序还是发不了。

在自己的机子上测试,发现也发不了,连接错误,奇怪,抓包观察?

奇怪,为什么没有发smtp协议消息消息呢?过滤tcp的端口25,看这个端口有触发没有?

过滤tcp.port==25

发现没有握手通过,这个ip地址211.150.65.66从哪里来的?跟踪上面的包。

Dns的resonse消息里有这个ip地址。

根据dns的发送id找到本机发出的dns 的query查询邮件发送服务器域名消息,想起foxmail里的服务器里对应域名设置。

根据抓包发现,这里设置的域名,发送邮件时会主动去查询。

在dos下去ping这个地址,发现ping不通。

由此,判断是dns给的这个地址不通导致发送邮件失败。

Ping域名发现,dns给的ip地址不通。

但有一次ping通了,获取的ip是58.215.117.69,ping这个ip是可达的。

抓包发现dns到一个能够成功的ip,ping通了。直接ping这个ip如下图。

于是把stmp服务器这里的域名改成这个ip地址,试发一下。

抓包查看消息

发送成功,消息显示没有dns的过程,直接连接这个ip地址进入鉴权认证过程,发送过程,问题解决。

结论:

  1. Foxmail工作过程,服务器设置为域名情况下,先查询域名对应的ip地址,然后通过tcp协议连接目标ip995端口,三次握手,建立tcp连接,连上上后,使用pop3协议进行收取文件。tcp连接目标ip的25端口,三步握手建立tcp连接,连接成功后,使用smtp协议进行发送邮件。
  2. Dns查询接收发送服务器域名的过程和tcp连接收发邮件是两个过程,dns成功了,但tcp连接失败会收发失败。
  3. 相同的pc,每次dns获取到同一url地址有可能是不同的,如下图:

当获得无法tcp连接成功的ip时,会导致邮件发送失败。

不同的pc获取同一url地址也可能不同,获得可达ip地址的,发送邮件成功,反之,发送失败。

同时,每个dns获取到的url地址的ip都有一定的生存时间,当缓存中存在此对应关系时,不会再次查询,直到缓存失效。

  1. Wireshark里可用contains双引号字符串来查询协议层里包含的字符串,方便查询对应的包。如图:

  1. Foxmail里的pop3服务器和smtp服务器设置成ip,收发邮件时不进行dns查询过程,速度更快一些。
  2. Ping 域名的过程其实就是dns缓存里没有的情况下,先去dns的query过程,得到响应response后,再去向目标ip发出icmp的request消息。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值