由于特殊需求,服务器上的一个文件夹既要可以使用ftp访问,又要可以使用samba文件共享方式访问,于是在服务器上安装了samba和vsftpd(选vsftpd是因为centos安装盘上自带,偷个懒),安装使用大体没问题,但发现通过vsftpd上传的文件,在samba下看是乱码,并且很多乱码文件无法删除,估计是编码问题,搜了一下,果然如此。
其原因就是vsftp没有处理编码,而一般用IE或者别的工具上传文件就会使用GB2312编码,Linux服务器上使用的是utf8编码,用samba访问肯定造成乱码,如果使用Firefox设置默认使用UTF8编码的话就可以解决这个问题,但是没法要求客户端都统一做这个设置,并且也不能避免用户使用IE登录FTP,只好在服务器上下手了。
因为是迁就客户端,所以vsftpd上不用做修改了,只需要修改samba配置文件,让samba使用的编码更改成中文编码就可以了
在/etc/samba/smb.conf文件中[global]区域内增加如下配置,如果已有则修改成如下配置。

display charset = cp936
dos charset = cp936
unix charset = cp936

再重启samba服务即可

#/etc/init.d/smb restart

需要注意到一点是,之前正常在samba共享里存入的正常显示中文名的文件会变成乱码,需要重新修改成中文才可以,之前通过vsftpd文件传上去的乱码文件会自动变成正常中文,如果中文名数据很多,最好先挪出来再改这个配置。

使用Windows系统共享的网络打印机,在安装的时候直接右键连接就可以自动安装好驱动,而Linux下的CUPS则需要samba配合才可以实现。
配置方法参考以下链接http://www.enterprisenetworkingplanet.com/netsysm/article.php/3621876
首先我们需要下载通用驱动文件
http://www.cups.org/windows/software.php
cups-windows-6.0-1.i386.rpm
http://www.adobe.com/support/downloads/product.jsp?product=44&platform=Windows
winsteng.exe,我下载的英文版,可以根据自己需要下载别的语言
首先编辑/etc/samba/smb.conf,增加以下内容,并创建/etc/samba/drivers文件夹

[print$]
 comment = Printer drivers
 path = /etc/samba/drivers
 browseable = yes
 readonly = yes
 guest ok = yes
 write list = root

安装cups-windows-6.0-1.i386.rpm

rpm -i cups-windows-6.0-1.i386.rpm

在windows上安装好winsteng.exe,然后拷贝C:\WINDOWS\system32\spool\drivers\w32×86\3文件夹下的以下几个文件到/usr/share/cups/drivers/

 ps5ui.dll
 pscript5.dll
 pscript.hlp
 pscript.ntf 

基本文件已经准备完毕,因为前面配置写了write list = root,所以要确认一下samba是否有root用户,如果没有则用以下命令创建

# smbpasswd -a root

输入两遍密码即可,最后可以使用以下命令进行驱动文件的生成了

# cupsaddsmb -H localhost -U root -a -v 

最后可以看到一堆信息,如果看到类似如下信息则说明安装成功

 Printer Driver HPXXXX successfully installed.
 Running command: rpcclient localhost -N -A /tmp/4d47636686f16 -c "setdriver HPXXXX HPXXXX"
 params.c:Parameter() - Ignoring badly formed line in configuration file: w
 Succesfully set HPXXXX to driver HPXXXX.

最后可以到windows上测试一下效果了,我的测试结果是,点击右键安装,几乎在瞬间安装完成,比windows上共享的速度快太多了。

下载地址(需免费注册并登陆才可以下载):http://www.vmlite.com/index.php/products/vboot/download/download
说明:http://www.vmlite.com/vboot/instructions.html
其实该软件可以让大部分系统安装在vhd镜像文件,vboot核心功能基于grub,很早就听说了grub已经的实现了通过映射光盘镜像和软盘镜像的方式来安装系统,一直没有更方便的管理工具,而vboot就应运而生了,以下就是试用过程。
首先下载vboot,解压到C盘,拷贝C:vbootvbootldr和vbootldr.mbr到C盘根目录
修改boot.ini,增加一行

C:\vbootldr.mbr=VBOOT

输入以下命令创建一个20G容量的vhd文件

c:\vboot\tools\x86\vbootctl.exe createhd c:\winxp.vhd /size 20

拷贝XP的ISO到C盘根目录,并改名为winxp-sp2.iso
注:改成这个名字是为了免去更改vboot的配置文件,偷了个懒,嘿嘿
重新启动计算机,开机选择VBOOT
然后选择xp install step1
之后和你插光盘安装XP一个步骤
在选择安装位置的时候,虚拟磁盘并不是C盘,不过不要担心,因为这个时候你的真实硬盘还存在的
重起以后,选择xp install step2
在这时候虚拟盘已经是C盘了(不过看不到,呵呵),等你装好系统后,选择XP VHD启动就可以啦
启动完后,就可以看到C盘已经是虚拟的20G盘,而原来的C盘已经变到后面了
接着试用了一下快照功能
在启动选择XP VHD的时候,按s就可以为当前系统创建一个快照
并且新创建一个文件,winxp-s1.vhd,值得注意的是,这个是winxp.vhd的差分盘,变化越多文件越大,开始时只有几百兆
有一点需要注意,一旦一个vhd有了一个快照,它本身就不能再用于启动了,但你可以通过这个vhd创建一个新的和它一样内容的快照来启动。
经过多台计算机的测试发现,并不是所有计算机都兼容,有些计算机在挂载iso安装系统的时候直接蓝屏了,有两种方法解决:
第一种方法,在运行正常的计算机上安装好vhd系统后,在vhd系统中进行封装,也就是像做完能ghost一样的步骤,之后关机拷贝该vhd文件到别的计算机上就可以正常运行了
第二种方法,在不兼容计算机上正常安装XP或者2003,手动添加硬件,指向C:\vboot\floppies\vboot-img\i386\vbootdsk.inf或C:\vboot\floppies\vboot-2k3-img\i386\vbootsmp.inf,然后用Win7的PE加载vhd文件拷贝已安装系统到vhd中即可。

今天日本同事和我说日本的邮件服务器(邮件服务器使用的是Postfix)无法发送给特定邮件域了,我登到服务器上看了一下,大致是收件方拒收了,错误日志如下:

connect to xxx.com[x.x.x.x]:25: Connection refused
 host xxx.com[x.x.x.x] refused to talk to me: 554- (RTR:SC) http://postmaster.info.aol.com/errors/554rtrsc.html 554 Connecting IP: x.x.x.x
 delivery temporarily suspended: host xxx.com[x.x.x.x] refused to talk to me: 421 4.7.1 [TS03] All messages from x.x.x.x will be permanently deferred; Retrying will NOT succeed. See http://postmaster.yahoo.com/421-ts03.html

基本上确定了,不是有人中毒,就是有帐户有弱口令被垃圾邮件者利用了
因为已经拒收信了,所以,直接去查看邮件队列

postqueue -p

可以看到大量垃圾邮件队列,从数量上很容易判断出问题帐号,马上对问题帐号进行修改密码或者暂时禁用,然后清除邮件队列中的垃圾邮件,以下是清除邮件队列中特定邮箱发出的邮件

mailq | awk "/test@test.com/ {print $1}" | tr -d "*" | xargs -n 1 postsuper -d

处理完毕后,等一段时间,如果对方仍然拒收的话,按照日志提供的网址去提交申请解封就可以了,如果是合作伙伴公司的话,最好直接申请加到白名单,这样比较省事,找垃圾邮件厂商申请的话,通常时间周期很长,而且得不到解决的可能性会非常大,我在国内的邮件服务器就曾经因为服务器IP在对方垃圾邮件规则的动态IP范围而导致邮件被拒收,最后只能通过改邮件发送服务器的IP才解决的。

新买了个带USB接口的无线路由器(中兴H118B),终于可以尝试把PXE网络启动服务全装在路由器上了,以前只是路由器上配置dhcp指向局域网的一台TFTP,现在可以完全跑在路由器上了。
方法很简单,刷机成openwrt,这个就不说了,太简单了,我刷的是http://downloads.openwrt.org/backfire/10.03/brcm-2.4/openwrt-brcm-2.4-squashfs.trx
如果只需要传统的pxe,也就是dhcp+tftp的话,openwrt全都自带,ssh登录进路由器,输入以下指令即可

 uci set dhcp.@dnsmasq[0].enable_tftp=1
 uci set dhcp.@dnsmasq[0].tftp_root=/mnt/usb/tftp
 uci set dhcp.@dnsmasq[0].dhcp_boot=/mnt/usb/tftp/gpxelinux.0
 uci commit dhcp

注:/mnt/usb/目录是我U盘的位置
由于我用gpxe,所以还加入了ftp的配置,这样可以网络启动通过ftp来传输引导文件

 #opkg install pure-ftpd
 #vi /etc/config/pure-ftpd #按下面进行修改
config pure-ftpd
 option port "21"
 option noanonymous "0"
 option chrooteveryone "0"
 option maxclientsperip "5"
 option maxclientsnumber "4"
 option peruserlimits "3:4"
 option umask "133:022"
 option authentication "unix"
 option enabled "1"
 #vi /etc/passwd #增加下面一行创建ftp匿名访问的账户
ftp:x:500:500:Linux User,,,:/mnt/usb/tftp:/bin/false

注:这里配置的ftp为开发匿名访问,如果不需要匿名把option的noanonymous改成1就可以了

更多uci命令请参考http://wiki.openwrt.org/zh-cn/doc/uci