Category Archives: Linux

procmail + kdialog 构建邮件提醒脚本

Mutt真的是神器,越用越觉得爽。可惜命令行模式的工具都有个弊端:跟X交互能力比较弱,例如Mutt就木有邮件提醒功能。之前在Gnome2的年代里还有mail-notification可以对付用(这玩意占用系统资源狂多,似乎是通过监视文件更改来提醒的),在Gnome3之后这个工具就完全不工作了,而且又没有后续版本。青蛙抛弃Gnome,换成KDE之后,也没有找到KDE下的邮件提醒工具,于是一直酝酿着自己写一个。 实现邮件提醒功能,无非就是监控邮箱变更,可以在几个点检查: 直接使用POP/IMAP协议检查服务器端 监视MTA动作 监视MDA动作 监视MUA动作 监视邮箱文件/目录更改 直接访问服务器是最直接的办法,但是既然MTA都把邮件收下来了,再去监视服务器就有点绕腾了,这种方法监视gmail/hotmail之类的邮箱还是很不错的。 监视MUA的动作,adam8157同学就是这么做的,监视Mutt startusbar的特殊字符串,通过Mutt的filter发送notify消息。 监视邮箱文件/目录变化就是mail-notification的做法了,但是如果不想轮询的话,大概需要内核开启inotify支持。 监视MTA动作,青蛙没有仔细研究,似乎还是需要MDA的某些行为处理,所以青蛙直接用了在MDA里加入提醒脚本的方法。 监视MDA动作,就是青蛙的做法,利用procmail的nested block,把邮件pipe到一个脚本中处理,提取邮件发送者、标题和内容,然后发notify。 消息提醒的脚本已经有人做好了: http://blargasm.com/post/7980037487/evolution-new-mail-notifier 青蛙拿过来修改了一下,去掉pynotify,直接调用kdialog命令发送消息。 修改后的脚本在这里: http://code.google.com/p/gfrog/source/browse/mail/mail-notifier.py 脚本有了,然后修改~/.procmailrc,在需要监视的过滤规则里面加入 :0 # Some filter rule {    :0 c    | ~/.mail-notifier.py    :0    #Here is your inbox    … Continue reading

Posted in Linux | Leave a comment

配置wordpress的邮件发送功能

青蛙继续倒腾vps,今天的主题是调教wordpress发送邮件。 之前在Dreamhost上面,邮件系统已经配置好了,wordpress不需要任何设置就可以直接发送邮件。到了vps上之后,青蛙为了节省资源,没有安装邮件服务器,所以想要发送邮件,还需要自己折腾。 青蛙首先是想到了配置一个轻量级的MTA,例如msmtp之类的,然后修改php.ini的sendmail_path参数,使它指向msmtp。这样php程序就具有邮件发送能力了,但是这样产生的问题就是邮件的发送服务器是固定的,而且需要配置一个帐号来做登录服务器,如果某个用户希望使用自己的服务器发送某些邮件,这样配置就无法实现了。 为了实现完美的解决方案,青蛙又搜了一圈,发现了wordpress已经集成了一个PHPMailer[1]类,并且提供了一个wp_mail函数[2]来发送邮件,有很多设置SMTP的插件[3]方便我们配置SMTP服务器和外发邮件帐号信息。 青蛙选择了WP Mail SMTP插件,非常简单,把所有参数填好,wordpress就可以发送邮件了。 参考资料: [1] PHPMailer http://phpmailer.worxware.com/ [2] Function Reference/wp_mail http://codex.wordpress.org/Function_Reference/wp_mail [3] 让 WordPress 通过 SMTP 发送邮件 http://goto8848.net/2008/04/wordpress-mail-via-smtp/

Posted in Linux | Tagged , , , | 2 Comments

Install Xmind in Fedora with deb package

原始文件地址: http://www.xmind.net/share/gfrog1/install-xmind-in-fedora-with-deb-package/

Posted in Linux | Tagged , , | Leave a comment

在NGINX上开启https

青蛙的新VPS是基于nginx的,仅仅是因为传言nginx在小内存,大压力的时候表现好一些。当然,为了获得这点好处,还是要付出一些代价的,例如nginx没有apache的htaccess,对每个目录的控制都需要写到nginx的配置文件中,这样对普通用户来说十分的不方便。 哦,有点跑题,继续说https的问题,其实给nginx配置https也不复杂,按照网上现成的模板,改一下自己的域名和目录位置就好了。 下面是一个完整的示例[1][2]:(来自这里) upstream test.com { server 192.168.1.2:80; } server { server_name test.com; include port.conf; ssl on; ssl_certificate server.crt; # ${nginx_install_dir}/conf/server.crt ssl_certificate_key server.key; # ${nginx_install_dir}/conf/server.key error_page 497 “https://$host$uri?$args”; location / { proxy_pass http://test.com; include proxy.conf;# auth_basic “status”; auth_basic_user_file trac.passwd; } … Continue reading

Posted in Linux, 青蛙的杂烩 | Leave a comment

一堆小Tips (4)

今天的Tip是关于虚拟化的。 问题的起因是青蛙当时使用的VirtualBox的网络配置很不方便,guset系统启动之后不能该网络连接类型不说(后来的版本做了改进,但是用着还是不够舒服),NAT模式下还不能直接跟Host系统通信。于是青蛙痛下决心,学习了一下Linux tap和br设备的用法,写了一个小脚本来搞定虚拟机的网络问题。 这个脚本同样也可以用于KVM的虚拟机。 这个脚本会根据配置文件建立一系列的tap设备,然后桥街到几个br设备上去,然后在br上设置好IP,如果需要NAT功能则配置iptables规则。 脚本文件在这里: http://gfrog.googlecode.com/hg/script/vnet.sh 配置文件如下: USER=gfrog #指定建立tap设备时所用的用户名 VNET_NUM=2 #需要建立的虚拟网络数 EXITIF=eth0 #SNAT的出口接口 #以下是每个虚拟网络的配置 [vnet1] VETH_NUM=4 #虚拟网络中包含的tap设备数 VNET_IP=11.11.1.1/24 #虚拟网络br设备上配置的ip地址 DONAT=no #是否需要做nat [vnet2] VETH_NUM=4 VNET_IP=11.11.2.1/24 DONAT=yes EXITIF=wlan0 #针对这个虚拟网络指定专门的SNAT出口 此配置脚本需要一个名为confget的程序解析配置文件,这个程序在debian/ubuntu源上有,fedora系需要自己找一下。 还要注意一点,因为每次建立tap设备的MAC地址都会变化,所以使用KVM虚拟机的时候需要在启动虚拟机时给网卡指定MAC地址,防止guest系统里的网卡名称变化。

Posted in Linux | Tagged , , , | Leave a comment