linux发送邮件内容变成了tcmime.xxxx.xxxx.xxxx.bin的附件形式
因为物理机比较多,为了确保在硬盘在损坏之前能够预警出来,所以每台物理机都部署了一个定时检测脚本来检测磁盘状态,如果出现问题就发送到一个汇总的服务器,由服务器过滤并发送报警信息到运维人员的邮箱。
发送邮件的命令为:echo "`cat /tmp/diskmail `"|mail -s "disk check err" 收件人邮箱。
但是问题是并没有发送附件,但是除了postfix客户端收到的是正常的报警内容外,其他的类似于QQ邮箱,163邮箱收到的都是类似于:tcmime.1146.1146.1196.bin 这种形式的附件格式。将附件下载下来,用windows的文本编辑工具是可以打开的。
可见是发送的内容有问题,导致了这种情况的出现。
博文来自:www.51niux.com
通过linux服务器上面#vim /tmp/diskmail文件,发现在内容每行的末尾有^M,然后我试着将末尾的^M去掉,再发送发现正常了。
echo "`cat /tmp/diskmail|tr -d '\r' `"|mail -s "disk check err" 收件人邮箱
然后再查看:收件箱的内容不再是附件而是下面的格式:
TIME: Apr 10 10:08:13
ERR:
sd 0:0:5:0: [sdd] Sense Key : Medium Error [current]
sd 0:0:5:0: [sdd] Add. Sense: Unrecovered read error
当然有时候vim文件发现每行的末尾没有^M,但是发送还是附近的形式。
#yum install dos2unix -y
#dos2unix /tmp/diskmail
再次发送次文件的内容,也不再是附件了。
注:
dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。很多时候再windows上面编辑的shell脚本上传到linux服务器上面的时候,也需要用此命令转换一下格式,以防止运行报错。