存档的‘Linux’分类

关于qmail发邮件故障的一些小问题

说这是小问题,其实也不小,折腾了我将近半年时间,那就是,服务器发送邮件到yahoo的邮箱,客户总是收不到邮件,所以一直建议客户不要使用yahoo的邮箱,今天坐下来,立志解决这个问题,一坐就坐到了凌晨三点钟。。。下面就来记录下我的解决过程 公司服务器给很多邮箱发邮件都正常,唯独yahoo的不正常,怀疑是yahoo把ip加入黑名单了,于是用telnet模拟了一下SMTP发信过程(网上教程很多,搜一下一大把,记得把消息全部写在记事本里面,然后只要复制粘贴就行了,不然手工输入很容易超时退出了),发现yahoo竟然能收到邮件,只不过是在垃圾箱里面,但是至少比收不到邮件强一点吧。这样的话,说明不是被yahoo加入黑名单。 然后我又在服务器上面tcpdump了一下 tcpdump -i eth0 -s 65535 -w /some/file 网上资料说,tcpdump默认dunp出来的数据只有200多个字节还是bit,所以要-s 65535一下,-w是写入结果到某文件,这样的话,可以用wireshark直接分析导出的数据,不然的话,分析数据累死你不偿命的。 tcpdump运行起来立即发送一封邮件到yahoo,然后重新运行tcpdump,再发一封到google邮箱,这样就得到了两个文件供分析。 分析结果令我大吃一惊,发送到google的邮件正常与服务器通讯,监控yahoo的那个文件,竟然没有发现任何一个smtp会话,于是乎,在网上找了一整天的资料,终于找到了qmail的日志,用下面的命令监控日志 tail -f /var/log/qmail/qmail-send/current 然后发信,发现了错误 @400000004e5933e615fe4984 delivery 2: deferral: CNAME_lookup_failed_temporarily._(#4.4.3)/ 继续上网查资料,然后发现,这个错误产生的原因是qmail没打bigdns的补丁,补丁在这里下载 http://www.ckdhr.com/ckd/qmail-103.patch,虽然是1.03的补丁,可是到了1.06,这个问题依旧没有解决,真的要怀疑一下qmail的开发人员了,虽然是开源软件,但是也不要这样绝情吧,哎,还算不错的是,虽然是1.03的补丁,但是经过我测试,1.06版本依然适用 把这个文件下载到 /usr/portage/mail-mta/netqmail/files里面,然后编辑这个文件 /usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild 在大约84行的地方找到 epatch "${FILESDIR}"/${PV}-exit.patch epatch "${FILESDIR}"/${PV}-readwrite.patch 在下面加一行 epatch "${FILESDIR}"/qmail-103.patch 然后执行 ebuild /usr/portage/mail-mta/netqmail/netqmail-1.06.ebuild manifest 重新编译安装qmail,重启一些服务,/etc/init.d/svscan restart 再次测试,发送到yahoo成功!

继续阅读 »

关于PPTP 和L2TP VPN的端口 以及linux下面查看占用端口进程的方法

l2tp 1701/udp pptp 1723/tcp 懒得说明了,真正懂的一眼就看懂了,下面说说怎么查占用端口的进程 server ~ # netstat -anp |grep 1701 udp 0 0 0.0.0.0:1701 0.0.0.0:* 5986/xl2tpd 说明进程号为5986的进程占用了1701端口,可能是进程挂了,成了僵尸,所以常规的方法无法停止进程了,只能kill -9 5986 这样强制干掉了,下面启动xl2tpd就很顺利了 server ~ # /etc/runlevels/default/xl2tpd start * Starting xl2tpd ... [ ok ]

继续阅读 »

Linux下面小巧的端口转发工具

今天要介绍的软件名字叫 rinetd ,是linux下面一个端口转发软件。使用这个软件的原因是,公司有很多在外面的部门,每个部门都有指纹打卡机,每个月需要导出一次数据, 如果每个月去每个部门跑一趟来取数据,有点不现实,况且现在天气这么热,咱们又没四轮的。。。 本来可以通过路由器上端口映射加上花生壳来实现这个功能,可是软件 上面限制了考勤机的地址只能是IP,不能用域名,如图 这可麻烦了,每次先要获取IP,然后才能传输,如果能有一个软件,我连接局域网内某个固定IP的电脑,这个软件会去自己连接考勤机的域名,然后把考勤机的数据转发到这个电脑的端口上,我只要连接这台电脑的IP,不就解决了,于是上网找到这个软件,ubuntu下面的安装方法就是直接apt-get了,然后编辑  /etc/rinetd.conf allow *.*.*.* 之后,下面会有转发配置的提示 bindadress    bindport  connectaddress  connectport bindaddress 意思是bind本机上某个端口 bindport意思是bind的端口 connectaddress  connectport就是远程服务器的地址和端口了,这里是可以填域名的,比如我的配置就是 192.168.3.254 4370 kaoqin.domain.com 4370 执行下面命令 /etc/init.d/rinetd restart 重启一下服务,连接192.168.3.254就可以实现连接远程考勤机了,就这么简单

继续阅读 »

使用VIM批量注释和批量反注释

在编写代码的时候经常要注释一大段代码,一行行的注释当然是最傻的方法了,在vim里面可以这样做   移到要开始注释的那行   Ctrl+v进入可视化列选择模式 移到光标到最后需要注释的行(注意,如果你知道行号,可以使用行号G(大写的G)快速跳到该行,例如 10G), 然后按I(大写)(转载注:貌似小写也可以吧),进入插入模式,输入注释符,比如C++/C#/Java是//,一些配置文件是#, 然后按ESC键回到命令模式,看到奇迹发生了吧?! 反注释怎么办呢?更简单了, 同样Ctrl+v进入列选择模式, 移到光标把注释符选中, 按下d,OK了吧?! 本文转自:http://hi.baidu.com/hansfly/blog/item/63b063d095584589a0ec9c9d.html

继续阅读 »

解决Linux下Cacti图片中文字变方框的方法

今天安装了cacti监控,发现图片上的文字全部乱码了,如图 然后我 font-list |wc -l 了一下,竟然是0,看来是太精简了,没安装字体,于是在portage里面仔细查看,找到了media-fonts,再找,发现了freefonts,于是 emerge -av freefonts 重新启动一下php cgi进程,刷新一下 问题解决

继续阅读 »

kill命令杀死父进程的同时杀死子进程的方法

命令如下 kill -TERM pid 这样就可以在杀死父进程之前通知子进程:“你们老爹快要死了,你们先跳楼去吧”,然后kill掉父进程,世界干净了 PS: 这个命令可以这么使用 kill -TERM $(cat /var/run/php-cgi.pid) 类似上面的例子,从pid文件读取父进程pid,然后杀死,实现全自动杀进程

继续阅读 »

ubuntu做单臂路由实现跨网段访问

公司有4条宽带,各条宽带分别独立,这样一点很不爽的地方就是办公室里面传文件速度跟蜗牛一样,而且传文件的时候还影响网速,解决方法有两种,第一种,将所有网段连起来,子网掩码设置255.255.0.0,就可以互相通讯了,可是这样的大网段看着不舒服,解决办法2就是购入专业的三层交换机或者路由器,这显然不现实,因为成本太高,于是我把目光瞄向办公室的一台闲置电脑,里面的系统正好是ubuntu server版,直接拿来用。本来我想装4片网卡实现的,可是这不争气的主板却只有2个pic插槽,加上板载网卡,一共才3个,不够用,于是想起了虚拟网卡加单臂路由,说干就干,开始配置。

继续阅读 »

Linux Shell 中进行条件判断

一般用法是 if [ 条件 ]; then 执行语句 fi 要注意的是,条件要包含在方括号内,且条件和方括号相连的地方要有空格隔开,不然会出错 下面是转自网上的各种条件的写法 1、比较文件 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f file 若文件存在且是一个规则文件,则为真 -g file 若文件存在且设置了SGID位的值,则为真 -h file 若文件存在且为一个符合链接,则为真 -k file 若文件存在且设置了"sticky"位的值 -p file 若文件存在且为一已命名管道,则为真 -r file 若文件存在且可读,则为真 -s file 若文件存在且其大小大于零,则为真 -u file 若文件存在且设置了SUID位,则为真 -w file 若文件存在且可写,则为真 -x file 若文件存在且可执行,则为真 -o file [...]

继续阅读 »

Linux Gnome 下文件、目录对比软件

软件名字叫MELD,ubuntu下面可以用 apt-get install meld 来安装,非常强大,并且很易用,需要的童鞋可以下载来装一下

继续阅读 »

LVM 下增加减少磁盘分区容量

以我目前使用的为例子 VG名字是 sp /data 是从 /dev/mapper/vg-data 挂载来的 那么 #umount /data 增加2G空间 # lvextend -L +2G /dev/sp/sp_data # e2fsck -f /dev/mapper/vg-data 如果是ReiserFS,则使用reiserfsck -f /dev/mapper/vg-data # resize2fs /dev/mapper/vg-data 如果是ReiserFS,则使用 resize_reiserfs /dev/mapper/vg-data # mount /dev/mapper/vg-data /data 减少2G空间 # lvresize -L -2G /dev/mapper/vg-data # e2fsck -f /dev/mapper/vg-data # resize2fs /dev/mapper/vg-data # mount /dev/mapper/vg-data /data 如果第一步无法umount,提示设备忙的话,可以按照下面的方法查找使用设备的进程:   server ~ # [...]

继续阅读 »