linux通过mail命令发送邮件失败的问题

最近使用linux上的mail命令,每天晚上定时发送邮件给客户,刚开始好好的,后面就发现有些邮件发不出去,然后在自己的发送邮箱内收到 Mail Delivery System 的邮件,标题为 Mail delivery failed: returning message to sender

打开附件,找到内容 550 Ip frequency limited,这个大概意思就是说发送邮件频繁,被腾讯服务器限制了(我们用的是腾讯企业邮,用自己的公司邮箱名发的邮件)。但是,我也就每天凌晨发了几封邮件,ip被限明显不科学。
后来在网上查找问题的过程中,无意中看到设置账号密码云云,想到会不会是因为没有设置邮箱账号密码直接发送邮件容易受限。于是找到配置文件/etc/mail.rc,配置了以下内容,发现就可以发送邮件了!

1
2
3
4
set from=
set smtp=smtp.exmail.qq.com
set smtp-auth-user=
set smtp-auth-password=

应该是设置了账号密码后,相当于登录到自己的邮箱,去发送邮件,这样当然就不会那么容易ip受限了。

redis中的数据突然消失的问题

最近同事在做秘密项目开发。其间各种折腾,天天sun dog。问我怎么知道?因为我就坐在他对面。

项目用到了redis存储数据,最后发现在测试环境添加的key,过了一会就少了很多,what the fuck! 让java大神,去折腾这C++狗写的东西,简直想爆领导菊花啊。下面说一下是如何解决这个奇葩问题的。

1、发现在正式环境上是正常的,在本机上也正常,就测试环境不正常

2、难道是redis版本的bug?或者操作系统把数据删了?真是脑洞大开

3、难道是c++封装的redis客户端有问题?如果是的话,那么正式环境和本机怎么没问题?然后还是乖乖用java客户端排查下原因,往测试环境的redis添加一些数据,通过查看redis内存数据,特么还是少了很多!

4、查看redis日志也没有发现有移除数据的操作

5、最后我那同事领导找他问话了,然后重新在redis日志里发现有flush操作!由于之前查看日志的时候,日志刷得有点快,加上也没有想到还有这操作,只想着查看数据有没有移除操作,导致大意了。

6、那问题来了,flush操作哪里来的?!想到了没?兄弟?redis端口居然是对外开放的!被人尝试调用了!

分布式 Session

Web 容器(比如tomcat等)已经实现了会话的基本管理。但是,如果你的服务部署在多个容器上(或者多台服务器),那么就不能再依赖容器自身的 Session 管理了,
因为用户可能请求任何一台服务器,但是用户的会话却只存在于其中一台服务器上。除非服务器之间能共享或同步彼此的 Session。

解决方案是把对 Session 的管理从容器中分离出来,把 Session 统一存储到诸如缓存(比如 memcached、redis等)、数据库上去,并维护 Session 的有效期。

查看更多

多级路由重复劫持页面导致插入多个相同 js 的问题

路由器劫持

路由器通过劫持 http 响应包并 注入JS ,进而播放广告。
如果路由器直接上网是没有问题的。后来把路由器(假设为路由器A)的上网模式改成了无线中继,让路由器 A 通过路由器 B 间接上网(路由器 A 和 B 都有相同的劫持功能),此时返回的 http 页面就会有两条相同的 JS。原因很明显,路由器 A 和路由器 B 对同一个 http 响应先后注入了 JS。这样的话,就会执行两个相同的 JS。那么应该如何避免这种情况呢?

查看更多