截图分析传说中gfw造成的551 User not local错误(转)

今天在调试一个客户邮件服务器postfix的时候遇到了传说中的551错误("551 User not local; please try [forward-path]")
错误现象是这样的,用户采用smtp认证的方式自己给自己的邮箱发信,outlook或者foxmail会报551错误或者直接报未知错误。
而如果给别的信箱发信就不会有问题,在本机采用webmail发信也很正常。
很快就可以排除是postfix邮件系统的问题,因为我登录到服务器上采用telnet手工smtp认证发信没有任何问题。
那么问题一定出现在通往邮件服务器的路由中,只能通过抓包分析了。

我在我的本机采用wireshark抓包
同时邮件服务器采用tcpdump -w packet tcp port 25将数据包保存为文件packet
然后我在本机通过smtp发信,重复错误现象,然后将两边抓到的包用wireshark分析,结果果然不出所料。

先看截图(ip地址和邮箱域名等已经被处理掉)
1。邮件服务器端的截图

screenshot-5.png

图中红色圈中可以看到,mail from指令和rcpt to指令服务器都正确的返回了250 OK
但是在随后蓝色圈中突然不断收到rst中断连接。

2。本地客户端的截图
screenshot-4.png

图中红色圈中可以看到,服务器返回的信息由250 OK被替换成了"551 User not local; please try [forward-path]"。
随后又是一堆的Rst中断连接。
注意,蓝色圈中是服务器的真正返回,但是这时候连接已经中断,没有意义了。

3。很明显,双方的连接在通讯途中被干预了。更能证明这一点的一个例子是ttl值的变化。
screenshot-2.png

正常情况下服务器返回信息Ip包头中的ttl值是48,大约经过了16跳。
而"551 User not local; please try [forward-path]"这条消息的ttl值是50,发生什么事情已经很明显了。。

screenshot-3.png

在google上可以搜索到很多关于551错误的例子,从大家的评论来看,这件事情多半是gfw干的了。
只是我不太明白的是,gfw管这个做什么,出于什么目的?:em12:

补充:根据iceblood的提醒,我检查了一下邮件服务器,果然是放在国外的。
看来邮件服务器放在国外,使用smtp自己给自己发信就会报错。
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9650775/viewspace-924236/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9650775/viewspace-924236/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将字符串换为PrivateKey,您需要使用Java Cryptography Architecture (JCA)提供的Java KeyFactory类和KeySpec接口,具体步骤如下: 1. 将字符串解码为字节数组。 2. 创建一个PKCS8EncodedKeySpec对象并传入字节数组。 3. 使用KeyFactory.getInstance("RSA")获得一个KeyFactory实例。 4. 使用KeyFactory.generatePrivate()方法生成一个PrivateKey对象。 示例代码如下: ``` String privateKeyStr = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXZQwODFm+Kx0T\ndkq5jQdMjyLdE5Vf4dYyO1pP6EiGvBkLhPpNt0pZ1r5J7/3oWZoD8dMxhJzN3h9\noNvZz4aXQa1aL+yT+5hjUj7QjZzWuYQ8dD0+4t8wS3nCgLJHk+Lj8qX7yK1L4vJ4\n7Qk7jS9lXQDvB3fXq1yDwKkEwQvN2BnZkwvzT8q5KzDzFJ9fQvGfDol9oeIj1O1v\n7qFX/zh2bLDOk8oGj8B2QlJXeH8oIaWJW9Df3wE+5CJtE5KhhJ2A3B3kRJpU0v8U\nGxT1t1QnXGw2iQZQwmZv4m3lJHJ4iY8kMn9t+R3iY1ZxZiVJdV/XB7S9pZ+2Q2U/\n/l5+KzSrAgMBAAECggEBAKzUjZB1j8wT8QXy5c8LhtqK+T4f2mJj5ZtVd3CZ1Sjy\nb0t46+6Y5JYosBz7sUxXbU7DQ0dH2e0M0DkQYLAxX6V5y2ua7OaL6+gFw3P6xJ3m\nxP3Iv4/8hQy7lKXvz+2iL4FmMvVtJcKwK6h8nCZi/yiZP4pC+ZGXu1qfHEKbhpZL\nW2EGO1bD+9mJ9cU7J5UcE1wGaUJ8BY0Lj0bN5Hx2lOYrMk7f9lYvR5b0h1TcE6K2\nH4dNl9l1cH2t6hC5z2Tl8CfTjF9Qv+Gy2pU4MnQ4dQs8zXtqJl5ra5y7rFJ9Z4Xz\nH1p0/hmx4nSDDYOnC9PcJCbUVaS2z8Rj1IamGcB9wHECgYEA5NvzZG3V5lA5Vv3/\nNqUN+uWQ0bK0z8vW8PvSRhXN+o3vY7S4GQUpF2r0Z6rRJQJ4wE6vH84i4+7R5zXS\niXv2n8wW3jy8w2sGw6jJgG5mX7VgJqY8gq4Tm3GDJz7hZrXbCjJTSU3d5U4Y5Ovp\nyPX6eZpImW6pXpHJpjvC1NkCgYEAy7oQfMbU5iCf4qIzYjZ2mR3taUf/0f0QK7hF\n3+L/oLTosYl8yqLJSb+8GysamJNcS8uBpO+Z9dXb3L9bVf2yVBNK5qP6MlJYhZrT\n1yB9Z5kzjy3DkW9hHfz5j+L/+l2RMpE+QZvEbw0q7g+2wmnbRf5+sC2VZKJL+3Q5\nnw+/eAECgYB8m4DMwecpuvB1tcaDqy+XxGkXkZVJc7cKvEYJ9L9t1W0iCgLNr0jP\nfxzC5qYr5zqI5y9BQz9gS5fKs8gE5lfkmYNWpVQ1Aa0m8WmuYVZj+IAi0Ls7G8uH\nkCj1V0Lr1g5cXKdDjI+oG2eZz3Q2X4Z4KZc4ZJv4l6m5qz7OcJvKgQKBgQCT/H1r\nv3Y9ZRt2y3s7t8K/4tJX8uFyk53Vf91aYQ/5rGvMl8jgJtLmV8X2T+4L3QkqQf6w\nivpH1tL9X0zKo2fN9c6pP3E1pDqNvDb1nqM2FQzX2D2IY+q+7t5h5wUO+PZvVnKx\n5Xl0FezN9Etl4VZe8y1fJj8LJlxZt/zV9dAtqwKBgQCbZqC9P6wkhmXrD1yM+eV\nsRs4tBj9KXtNQZrX8avdMkgyJT5hKk2qN9DZTX1tQ6Z79/gjF9VgUgI5+7rKZy3Z\n9lUM8qjwQK1fjwBn5ch4gVxO7j8MkQ+MzU8a+X4Uw3L++hBb1PmEksz2/5F7Ls8W\nYvZfj75Q9JXo7QoDmyB1nA=="; byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyStr); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); ``` 请注意,这里的示例代码是将字符串解析为RSA私钥。如果您要解析其他类型的密钥,请相应地更改算法名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值