今天利用postfix在亚马逊的VPS上搭建了一个邮件服务器,做好配置并添加了mx记录指向服务器之后,邮件收发均正常。当遇到用postfix发送附件的问题时,难倒我了。在没有安装pop和smtp的情况下,在服务器上只能通过命令行发送信件,命令行的方式只能发送文本内容,而不能发送整个文件。
我们知道,信息在网络上的传输只能采用ASCII编码,那么文件的编码显然不是ASCII的,所以,如果我们要发送附件,肯定是需要对其进行编码的。查找了一些资料,邮件传送用主要的编码方式有 7bit ASCII,8bit ASCII,binary,quoted-printable,base64. 其中base64是最常用的编码方式,为了测试效果,分别用腾讯,163,新浪以及Google向我的邮件服务器发送了一封带附件的邮件,可以看到所有的附件编码都是base64。那么,如果我只想用命令行的方式发送附件,该怎么做呢?幸好linux提供了基于base64的编解码工具base64,使用方法很简单:
1,编码字符串 echo “string”|base64
2,编码文件 base64 文件名
3,解码 echo “code” |base64 -d
…阅读更多>>
问题是这样的,前一段时间需要做一个二级菜单,为了保证浏览器的兼容性,需要用到mouseover和mouseout进行二级菜单的显示和隐藏。当用mouseout从二级菜单的父元素内移动的时候,发现父元素的mouseout事件被触发了很多次,下面是模拟的代码:
<!DOCTYPE HTML>
<html>
<head>
<style>
#parent {width:500px;height:500px;position:absolute;left:50%;top:50%;margin-left:-250px;
margin-top:-250px;background:red;}
#child {width:300px;height:300px;background:blue;margin:100px}
</style>
</head>
<body>
<div id="parent" onmouseout="alert('leave')">
<div id="child">
</div>
</div>
</body>
</html>
…阅读更多>>
在linux下编译使用Nginx的同学都知道,Linux下Nginx本身并没有自动启动的功能,并且关闭或者reload起来都比较麻烦,比如关闭,要么通过killall结束nginx进程,要么进入nginx安装目录通过nginx -t的指令进行相关操作。另外一点,有时候服务器可能有问题需要重启,系统重启之后,nginx还需要手动运行,这样都比较麻烦。下面来讲一下具体的办法:
如果你只需要让nginx开机自己自动,有个最简单的办法,编辑/etc/rc.d/rc.local文件,在最后加入一行”nginx安装路径/sbin/nginx” 即可(不包含引号),系统将会在启动之后自动启动nginx。当然,如果你需要关闭,重启,或者reload就必须要进入到nginx的安装目录,通过/sbin/nginx来操作(也可以直接kill掉nginx主进程来关闭)。可以说,这样是非常麻烦的,特别是在经常要往服务器里添加新网站或者测试参数,添加之后,每次都需要进入安装目录操作。
…阅读更多>>
进度条在windows系统中非常常见,像常见的软件安装部署等。它能够提示用户系统正在运行而不是被卡死,从而避免了用户错误操作,提高了用户体验。在web中,我们可能也会遇到前台和服务器交换大量数据,这时候我们就需要给用户一个良好的提示。如在一些图片浏览网站,当我们点击观看下一张图片时,很多都做了一个正在加载的提示,个人觉得这些提示不仅仅能够留住浏览者,也是衡量一个网站是否真正尊重用户的标志。
当然,这些图片浏览网站,我们没有必要去告诉用户图片下载了多少,因为一个图片顶多就几M,也不会占用太多的下载时间。但是在一些特殊的情况下,用户可能需要等待的时间比较长,这时候如果能够用进度条展示当前任务的完成度是比较好的。
…阅读更多>>
环境:Centos 5.8 64位
系统自带zlib:1.2.1
安装版本:1.2.3
这段时间在重新编译LNMP,发现linux中很多软件对zlib依存都比较大,但是系统中安装的版本都比较低,如果用yum直接升级的话,安装nginx时候没法指定zlib的目录,所以要编译安装zlib。编译的话,如果能把系统中已经安装的版本替换掉,这样才是最好的.但是由于在编译过程中,很多工具都对zlib有依存,所以掌握顺序非常必要,下面是博主在毫无指导资料的情况下,尝试了差不多一天总结出来的经验:
1,下载,解压 zlib1.2.3到/usr/local/src/下
2,查看一下zlib安装文件,rpm -ql zlib,可以看到库文件在lib64下
3,配置zlib,参数为 ./configure –prefix=/usr/local/zlib/,也可以加上–libdir=/lib64/直接指定库文件安装位置,这里为了我便于管理,就把所有文件放在一个目录下
…阅读更多>>
今天在编译LNMP环境时,遇到系统zlib版本有点低,由于Nginx需要指定zlib库安装位置,所以干脆就直接替换掉系统自带的zlib。在这里遇到了一个问题:升级zlib时候,是用yum直接升级呢,还是先卸载掉原来的,然后编译安装。如果是用yum升级的话,nginx安装时候指定zlib位置时用哪个?由于不能解决解决这个问题,所以最终我选择编译安装zlib,去官网下载了最新版本,然后编译,编译时指定安装目录为/usr/local/zlib,库文件路径为/lib64,编译完成之后,其它一切正常,却发现yum运行不正常,一直提示Segmentation fault。
网上查了一些资料,最终在centos的网站上找到了关于这个信息的描述,原来是个bug! http://bugs.centos.org/view.php?id=4702&nbn=1上有这样的描述:
Some apps require the latest version of zlib (1.2.5)
After installation from source yum segfaults. (took me ages to figure it out)
Solution, rm -rf /usr/lib/libz.* & reinstall zlib-1.2.3.
Affects all CentOS 4.* and RHEL 4.* versions.
…阅读更多>>