活着真的很不容易 Wed, Nov 11. 2009
在色魔团伙上看到在讨论惨烈的小时候,将 re 贴记录下来:
- 2 岁的时候,家里在农村,用的那种铸铁的烧煤的炉子,在炉子边站小板凳上学大人炒鸡蛋,一下子没有掌握好平衡一脑袋扎进去了,头发全烧没了,现在下巴还一个很大的疤;
- 6 岁,跟爸(ba3)爸(ba0)第一次去水上乐园,中间是普通的游泳池,两边一个不到 0.5m 的儿童区,一个 3m 的超级深水区,在左边玩够了,去右边,看样子差不多,直接跳进去了,当时完全不会游泳,只会戏水,狗刨都不会,神奇的是居然在里面非常清醒,没有任何不适感……还能看见水里的样子…完全就像后来的人与自然里面水下摄影的感觉,…然后睁眼就是差点被吓死的老爹,导致到现在都没有学会游泳,下游泳池就哆嗦;
- 8 岁的时候,光脚,一脚踩一根向上的生锈的钉子上了,当时一下子,没有觉得有什么,回家打完了破伤风爸(ba3)爸(ba0)给我挤脚里面的淤血直接疼晕过去了;
- 同年,过年时候在叔叔家玩,当时都是组合家具,中间一半是梳妆台,上面是一个玻璃门的展示柜,在家具上跳来跳去,直到上那个玻璃柜直接扣我头上,里面全是花瓶什么的巨大的玻璃制品全砸脑袋上,所以看见IKEA的高家具都有墙面固定装置觉得实在是美好;
- 12 岁,跳窗台,直接让水磨石最尖的那个角磕到膝盖下面肉皮最薄的地方,然后第一次直接看见人的骨头是啥样的了;
- 14 岁,体育课考引体向上,做这个如果会荡起来其实可以很省力气的,我荡的最好,幅度小,基本上看不出来,一次给大叫表演的时候,在 2m 高的单杠上,荡的幅度大了点,正好手上有汗,打滑,然后整个人的后脑勺、脊椎平行和水泥地亲密的接触,等我睁眼的时候已经在急救室了;
- 16 岁,班级大扫除扫房顶,用桌子摞了两层,我在上面打扫,结果桌子塌了,摔下来,正好凑巧两个桌子的边缘就像剪刀一样把外耳廓蹭出来一个2cm的口子,当时自己没觉得,直到有人注意到我的一半外衣上都是血才发现,然后大家都来看我说送我去医院,结果一个女生血晕,晕过去了,然后没办法,先送这个吧,至少我活着,去医院后缝针,然后直接回家,忘了告诉父母要每天去输液消炎,3 天后复查的时候已经化脓,赶紧用大剂量的抗生素,幸亏小时候用抗生素很少,所以很见效,否则,就成了一只耳了;
- 18 岁,大一,玩单杠,跳上去抓杠的时候,没注意旁边有一个很大的缺口,估计是电焊焊掉旁边的杠留下的,然后右臂划出来一条长10cm的血沟,现在还有3cm的伤疤;
- 去年买了一个电热水壶,插上插座就开始烧,看了半天没动静,还想这个壶是不是坏的啊,就用手指头去摸底盘,烫出来俩大水泡才反应过来,这个壶是好的,只是没水。
生活还在延伸,悲剧未完待续……
纯粹显摆 Sat, Oct 31. 2009
自己动手,丰衣足食 Sat, Oct 31. 2009
浏览器的首页问题让洒家头疼已久,最初的空白页面,觉得太浪费了,然后用 Google 吧,其实用途不大,后来升级到 Firefox 的 Fast Dial 插件,感觉好多了但是还没有到完美的地步。
实在不行,只能自己动手,丰衣足食,自己用 HTML 写一个首页吧,这样想怎么控制就怎么控制了:
然后配合 Firefox 的 New Tab Homepage 插件,让新开的标签页都能显示默认的起始页,而且反正都是静态的,不在乎速度的问题了。
WAMP crashes easily those days: Some notes on PHP configuration Mon, Sep 14. 2009
I've upgrade my WAMP(Windows+Apache+MySQL+PHP) to lastest versions, but Apache crashes more often then it used to be due to incorrect configuring PHP.
Now I've finially got a stably working development environment. And here is some notes:
go-pear.batdose not work.When initializing as usual using
go-pear.batcommand, I got an error message:- phar "E:\HTTPD\php-5.3.0-Win32-VC9-x86\PEAR\go-pear.phar" does not have a signature
- PHP Warning: require_once(phar://go-pear.phar/index.php): failed to open stream: phar error: invalid url or non-existent phar "phar://go-pear.phar/index.php" in E:\HTTPD\php-5.3.0-Win32-VC9-x86\PEAR\go-pear.phar on line 1236
So,
go-pear.bardid not work for me, but:is all right.- php -dphar.require_hash=0 PEAR\go-pear.phar
Xdebugmakes Apache crashes everytime.As I said, I've upgraded all components to it's lastest version: Apache, version 2.2.13 form offical site, PHP, version VC9 x86 Thread Safe, MySQL, version 5.1.38-community.
Following Xdebug manual, I have to download the one matches the PHP version I'm using. So, I downloaded Xdebug 2.0.5 5.3 VC9 (32 bit), made modification to php.ini to enable Xdebug, and restart Apache.
From now on, Apache crashed everytime I call
phpinof()function. I've tried some solution from Google ,but none of them works. Though, one page remains me of the version of PHP. And I found this on PHP for Windows download page:
Change my PHP from VC6 to VC9, re-configure all settings and download Xdebug 2.0.5 5.3 VC96(32 bit), it works!Which version do I choose?
If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
If you are using PHP with IIS you should use the VC9 versions of PHP
Can't make new folder when installing PEAR.
After solve problems above, I came to a new one, When installing PEAR, ater set the dirs, PHP began to download and install PEAR components, installation programe breaks and shows:
- Unable to create Temporary directory for processing E:\HTTPD\php\PEAR\tmp.
- Run this script as administrator or pick another location.
I'm sure nothing is wrong about dir premission. Solved this problem, I'm also sure that few people may face this, because it is due to the immature hardlink mechanism on Windows Server 2008.
I made hardlink named php to folder php-5.3.0-Win32-VC6-x86 and I was running the programe in php folder. After I change my current folder to php-5.3.0-Win32-VC6-x86, it goes well.
Conclusion: harklink on Windows is still a load of crap.
Update 2009/08/15-2009/08/25 Sat, Aug 29. 2009
忍不住了,还是要学习一下 Samson 的 Update 体了。
手机篇
- 2009/08/15 回家,途径帝都。每次回家都特倒霉,2 年前在家被偷了钱包,这次在上机场大巴前丢了手机。
- 上大巴后发现手机丢失,紧急报停,进了候机隔离区,找到全球通VIP候机室,现场转成全球通,补卡。下了灰机拽上老鼠直接去苏宁拿下NokiaE71,回到旧都后去营业点办理品牌转移撤销业务,一切顺利。
- 通过 PC Suite 对上一个 Nokia E61i 进行的备份,短消息居然无法导入 E71,通讯录恢复到 2009/02/06 的备份。
- 突然想起来前段时间内测 QQ 同步助手的时候,对通讯录和短消息进行了一次备份,赶紧下载,然后恢复,神啊,居然真的恢复到了 2009/07/21 的备份,一个月的丢失完全可以接受了,唯一的问题就是放在 My Folders 里面的短信的目录格式丢失,都放在一个目录里面了,不过这个已经不算是什么问题了。我爱 QQ 同步助手。
- 在帝都购买E71入手,才发现这机器街机到什么程度,从苏宁到四惠站短短的一个小时就碰见至少6个(拿出来在手上的),包括卖手机的大妈……
- E71 居然内置了 GPS,很爽,配合 Google Maps 和内置的 GPS data 搭配的很好。
- E71 的电池真耐用,用了好多天,天天 GPS + GPRS 都不怎么费电。当然了,根据莫非法则,你想让手机没电的时候就是不耗电,当你需要手机的时候才会没电。一路上完了半天的 GPS,同时用 GPRS 上 QQ、UCWEB 都没事,等到我需要打电话问路的时候,没电了……
回家篇
- 东航的A320-200真厚道,紧急出口前一排座位直接拆除,腿伸直了都碰不到前排。
- 陪家母去庄里的中信存钱,直接取白金号,插了20+老头老太的队,家母甚悦。号码纸上写着:白金号,White Gold Service,太山寨了。
- 庄里的火车站的VIP候车室可以走光大的万里行,而且没有验资设置,用我在旧都0开的万里行直接进去,空调很爽,但是没有茶点。
- 光大VIP候车室的空调很爽,可惜没呆几分钟就被告知可以提前进站,上了火车才发现没开空调,热死,所有提前进站的人都在站台上吹风,NND,干嘛这么早赶人啊。
- 俺回家最重要的任务上就是给父母打扫垃圾,一回家家母就开始收拾冰箱:这盒巧克力快过期了,你带走吧,这次的鸭蛋不如上次的好,你带回去吃吧,这盒点心我们不爱吃,你路上吃吧,那瓶矿泉水都在家里放了好久了,不知道坏没坏,你带火车上吧,省的买了……
出游篇
- 去东极前去奉化和朋友汇合,还有时间就蹭医院的设备做做理疗拔拔火罐。说是哪里不好,那么那个对应的穴位拔出来的颜色就特别深。拔完了一看自己身上,这里颜色很深,恩,说明颈椎不好,那里也很深,说明腰椎不好,找来找去基本上我就是个废物了。突然发现有俩火罐拔出来颜色很浅,大喜,问朋友这是什么穴位对应身体哪里,看来我还是有好地方啊,友看过后淡淡的说,那俩不是穴位,是为了让你不乱动的……
- 到了东极才知道海水真的是蓝色的,天空也是蓝色的,平常去的海边都是黄河再现。可惜没有到过远洋,不知道远洋的海水天空会不会更蓝。
- 在内地吃海鲜是奢侈的事情,到了岛上吃蔬菜才是奢侈的。那些不认识的贝、螺实在是太可怕了,还是吃各种各样的鱼吧,这个不复杂。
- 本来以为一个18-55的狗头就够了,出去了才知道男人永远少一个镜头。没有200的很多景色都拍不好,18的广角基本够用,但是还是想有一个更广的。
- 东极不愧为是大陆最东端,早晨5点的太阳就高高挂在天上晒得睡不着觉。
- 一面是大海,一面是超大面积的平整光滑的玄武岩,美哉。
- 回到舟山,吃上了KFC,吹上了空调,立马感觉回到了文明社会。
- 在宁波汽车总站买回旧都的车票的时候,发现一个能够刷卡的窗口,幸福的有眩晕感。
结束篇
- 回到学校,收到交行世博金卡,YoungPower黑卡,建行对账单,拿着对账单申请乐当家白金卡去。
- 打开Google Reader,超过1k+的新post等着阅读,太可怕了……
- 两天时间总算把生活回归正常了。
在 Slackware 下全部从源代码安装邮件服务器 Thu, Jul 23. 2009
习惯于自己从源代码开始编译安装软件,现在要配置一个邮件服务器,以前用的 Qmail,感觉不是很好,sendmail 也被骂死了,决定改 Postfix 看看。
目的:搭建一个支持 POP3、IMAP、SMTP、WebMail 的邮件系统,支持虚拟域和虚拟账户。
操作系统:Slackware,所需软件(库):Postfix、Cyrus SASL、Courier Auth Lib、Courier IMAP server、Courier Maildrop、amavisd-new、Clam AntiVirus、MySQL、Apache、Extman/Extmail、RRDtool。
说明:
- 安装操作系统的时候,只安装最基本的开发环境和库,其他的服务器软件一律不装。
- 考虑到实际用途,很可能还会需要安装 PHP 和 phpMySQL,请在安装完 Cyrus SASL 后安装 PHP,否则可能会产生依赖关系,关于 PHP 的安装,请参加本 Blog 的其他文章。
- 本人习惯于按照如下方式设定安装目录,如果您习惯其它方式,请相应的修改目录,如果您全部采用默认目录,则更简洁:
- 数据文件,放在
/home下,比如 www、mailbox。 - 大型的,需要配置、启动服务的软件,放在
/home下,例如 MySQL、Apache、Postfix 等。 - 不需要配置的,而且不需要独立启动的库,放在默认目录下,例如 Perl 的模块等。
- 数据文件,放在
目录
- 系统需求
- 下载软件包
- 创建所需的用户、组和目录
- 安装 MySQL
- 安装 Apache
- 安装 Cyrus SASL
- 安装 Postfix
- 安装 Courier Authlib
- 安装 Courier IMAP
- 安装 Courier Maildrop
- 安装 Spamassassin
- 安装 Amavisd-new
- 安装 Clam AntiVirus
- 配置 MySQL
- 配置 Apache
- 配置 Postfix
- 配置 CYRUS-SASL
- 配置 Courier Authlib
- 配置 Courier IMAP
- 配置 Courier MailDrop
- 配置 Spamassassin
- 配置 Amavisd-new
- 配置 Clam AntiVirus
- 系统需求说明
- 添加数据库
- 安装 Extman/Extmail
- 配置 Apache 的虚拟主机
- 安装 RRDtool
- 配置 Extman/Extmail
- 其他配置
- 启动服务
- 测试
Install LILO to MBR on CCISS device Thu, Jul 23. 2009
I was in hell when trying to get LILO installed on a CCISS driver, which is how HP SmartArray RAID card recognized as. No matter I installed LILO to MBR or Boot Record, it always failed.
Here is my solution:
- After installing Slackware finished, reboot server with Installation CD.
- At prompt, input:
Change
- hugesmp.s root=/dev/cciss/c0d0p2 rdinit= ro
hugesmp.sto your kernel if necessary.c0d0p2means second partition of logical drive 0 on controller 0, which is my "/" partition. - Login as root, modify
/etc/lilo.conf. Changeboot = /dev/sdatoboot = /dev/cciss/c0d0p2. - Run the command:
- lilo -M /dev/cciss/c0d0 mbr
- lilo
Reboot to check if everthing is right.
在 Slackware 下全部从源代码安装邮件服务器:五、启动并且测试服务 Tue, Jul 21. 2009
1、启动服务
- # 启动 MySQL
- mysql.server start
- # 启动病毒防护
- su - amavis -c "/home/amavis/sbin/amavisd"
- /home/clamav/sbin/clamd
- # 启动 authlib
- /home/courier/authlib/sbin/authdaemond start
- # 启动 POP3 和 IMAP
- /home/courier/imap/libexec/imapd.rc start
- /home/courier/imap/libexec/imapd-ssl.rc start
- /home/courier/imap/libexec/pop3d.rc start
- /home/courier/imap/libexec/pop3d-ssl.rc start
- # 启动 Postfix
- /home/postfix/sbin/postfix start
- # 启动 Extman 所需的图形统计
- /home/www/extsuite/extman/addon/mailgraph_ext/mailgraph-init start
- /home/www/extsuite/extman/addon/mailgraph_ext/qmonitor-init start
- # 启动 Apache
- apachectl -k start
2、测试
执行 netstat -ap,看看已经打开被监听的端口中是否有下面的所有端口:
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 *:3306 *:* LISTEN 3377/mysqld
- tcp 0 0 *:auth *:* LISTEN 3080/inetd
- tcp 0 0 *:smtp *:* LISTEN 29100/master
- tcp6 0 0 [::]:imaps [::]:* LISTEN 29020/couriertcpd
- tcp6 0 0 [::]:pop3s [::]:* LISTEN 29032/couriertcpd
- tcp6 0 0 [::]:pop3 [::]:* LISTEN 29026/couriertcpd
- tcp6 0 0 [::]:imap [::]:* LISTEN 29013/couriertcpd
- tcp6 0 0 [::]:http [::]:* LISTEN 3307/httpd
注:如果你没有加载 POP3-SSL 和 IMAP-SSL 支持,那么 pop3s 和 imaps 端口就不会打开。
然后看看 /var/log/maillog 里面是否有错误,本系统主要的日志都在这个文件里。
下面就是用浏览器打开 http://domail.ltd/extman/,用 postmaster@domail.ltd:extmail*123* 登录,然后添加域、帐号并且使用邮件系统吧。
下面测试垃圾邮件和病毒邮件监控是否正常工作。
用其他的邮箱给自己的帐号发信,分别包含如下特征字符串:
- X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
- XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
第一行是病毒邮件的特征字符串,第二行是 Spamassassin 的 GTUBE 垃圾邮件特征字符串。
如果一切正常的话,那么病毒邮件就会显示出被隔离的字样,而垃圾邮件则自动存入垃圾邮件箱。如果没有,请检查 /var/log/maillog 以定位问题。
在 Slackware 下全部从源代码安装邮件服务器:四、Webmail 和管理端 Tue, Jul 21. 2009
1、系统需求说明
Extman 登录时的验证码需要 libXpm 的支持,统计图表需要 RRDtool 和 Perl 的 GD 模块的支持,Extman 还需要 Perl 的 Unix::Syslog 模块支持,mailgraph_ext 需要 Perl 的 File::Tail 模块支持。可以使用 /home/www/extsuite/extmail/tools/pkg_stats.sh 来查看还缺少什么模块。
2、添加数据库
使用 phpMyAdmin 或者其他的 MySQL 客户端,在 postfix 表中增加如下的表和初始管理员记录:
- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
- CREATE TABLE IF NOT EXISTS `alias` (
- `address` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `goto` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`address`),
- KEY `address` (`address`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Aliases';
- CREATE TABLE IF NOT EXISTS `alias_domain` (
- `alias_domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `target_domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`alias_domain`),
- KEY `active` (`active`),
- KEY `target_domain` (`target_domain`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Postfix Admin - Domain Aliases';
- CREATE TABLE IF NOT EXISTS `domain` (
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `description` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `hashdirpath` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `maxalias` INT(10) NOT NULL DEFAULT '0',
- `maxusers` INT(10) NOT NULL DEFAULT '0',
- `maxquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `maxnetdiskquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `transport` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `can_signup` TINYINT(1) NOT NULL DEFAULT '0',
- `default_quota` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `default_netdiskquota` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
- `default_expire` VARCHAR(12) COLLATE utf8_unicode_ci DEFAULT NULL,
- `disablesmtpd` SMALLINT(1) DEFAULT NULL,
- `disablesmtp` SMALLINT(1) DEFAULT NULL,
- `disablewebmail` SMALLINT(1) DEFAULT NULL,
- `disablenetdisk` SMALLINT(1) DEFAULT NULL,
- `disableimap` SMALLINT(1) DEFAULT NULL,
- `disablepop3` SMALLINT(1) DEFAULT NULL,
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`domain`),
- KEY `domain` (`domain`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Domains';
- CREATE TABLE IF NOT EXISTS `domain_manager` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ext/Webman - Domain Admins';
- CREATE TABLE IF NOT EXISTS `mailbox` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `uid` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `password` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `clearpwd` VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `mailhost` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `maildir` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `homedir` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `quota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `netdiskquota` VARCHAR(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
- `domain` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `uidnumber` INT(6) NOT NULL DEFAULT '1000',
- `gidnumber` INT(6) NOT NULL DEFAULT '1000',
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` SMALLINT(1) NOT NULL DEFAULT '1',
- `disablepwdchange` SMALLINT(1) DEFAULT NULL,
- `disablesmtpd` SMALLINT(1) DEFAULT NULL,
- `disablesmtp` SMALLINT(1) DEFAULT NULL,
- `disablewebmail` SMALLINT(1) DEFAULT NULL,
- `disablenetdisk` SMALLINT(1) DEFAULT NULL,
- `disableimap` SMALLINT(1) DEFAULT NULL,
- `disablepop3` SMALLINT(1) DEFAULT NULL,
- `question` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `answer` TEXT COLLATE utf8_unicode_ci NOT NULL,
- PRIMARY KEY (`username`),
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ExtMail - Virtual Mailboxes';
- CREATE TABLE IF NOT EXISTS `manager` (
- `username` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `password` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `type` VARCHAR(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'postmaster',
- `uid` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
- `question` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `answer` TEXT COLLATE utf8_unicode_ci NOT NULL,
- `disablepwdchange` SMALLINT(1) DEFAULT NULL,
- `createdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expiredate` DATE NOT NULL DEFAULT '0000-00-00',
- `active` TINYINT(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`username`),
- KEY `username` (`username`)
- ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ext/Webman - Admin Accounts';
- INSERT INTO `manager` (`username`, `password`, `type`, `uid`, `name`, `question`, `answer`, `disablepwdchange`, `createdate`, `expiredate`, `active`) VALUES
- ('postmaster@domain.ltd', '$1$BrT9qxfB$Ha81Mb5YVV6rNKNN5jmtj1', 'admin', 'root', 'Super User', 'my question', 'my answer', 0, '2007-02-14 15:10:04', '2010-11-08', 1);
创建的初始管理员用户名是 postmaster@domain.ltd,初始密码是 extmail*123*,下面会用到。
3、安装 Extman/Extmail
- mkdir /home/www/extsuite
- tar -zxvf extmail-1.1.0.tar.gz -C /home/www/
- tar -zxvf extman-1.0.0.tar.gz -C /home/www/
- ln -s /home/www/extman-1.0.0/ /home/www/extsuite/extman
- ln -s /home/www/extmail-1.1.0/ /home/www/extsuite/extmail
- chown vmail:vmail /home/www/ -R
4、配置 Apache 的虚拟主机
修改 /home/httpd/conf/extra/httpd-vhosts.conf,增加如下指令:
- <VirtualHost *:80>
- ServerAdmin support@domain.ltd
- DocumentRoot "/home/www/extsuite/extmail/html"
- ServerName mail.domain.ltd
- ServerAlias domain.ltd
- ErrorLog "logs/ext-error_log"
- CustomLog "logs/ext-access_log" "common"
- ScriptAlias /extman/cgi/ /home/www/extsuite/extman/cgi/
- Alias /extman/ /home/www/extsuite/extman/html/
- ScriptAlias /extmail/cgi/ /home/www/extsuite/extmail/cgi/
- Alias /extmail/ /home/www/extsuite/extmail/html/
- </VirtualHost>
5、安装 RRDtool
将 rrdtool-1.3.8.tar.gz 解压后,请参阅 doc/rrdbuild.txt 的指令安装 RRDtool 的依赖包和 RRDTool,注意首先执行下面的指令:
- export INSTALL_DIR=/usr/local/rrdtool-1.3.8
- export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
- export PATH=$INSTALL_DIR/bin:$PATH
否则后面可能提示找不到依赖的库。
最后一步安装 rrdtool-1.3.8 包的时候,在 make install 后,执行:
- make site-perl-instal
- cp /lib/perl/5.10.0/i486-linux-thread-multi/RRDs.pm /usr/lib/perl5/site_perl/5.10.0/i486-linux-thread-multi/
- cp /lib/perl/5.10.0/i486-linux-thread-multi/auto/* /usr/lib/perl5/site_perl/5.10.0/i486-linux-thread-multi/auto/ -R
安装 RRDtool 的 Perl 支持。
6、配置 Extman/Extmail
6.1、extman/webman.cf
编辑 /home/www/extsuite/extman/webman.cf,找到如下行:
- SYS_CONFIG = /var/www/extsuite/extman/
- SYS_LANGDIR = /var/www/extsuite/extman/lang
- SYS_TEMPLDIR = /var/www/extsuite/extman/html
- SYS_MAILDIR_BASE = /home/domains
- # SYS_LANG = en_US
- SYS_GROUPMAIL_SENDER = postmaster@extmail.org
- SYS_MYSQL_USER = webman
- SYS_MYSQL_PASS = webman
- SYS_MYSQL_DB = extmail
- SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
对应修改为如下:
- SYS_CONFIG = /home/www/extsuite/extman/
- SYS_LANGDIR = /home/www/extsuite/extman/lang
- SYS_TEMPLDIR = /home/www/extsuite/extman/html
- SYS_MAILDIR_BASE = /home/mailbox
- SYS_LANG = zh_CN
- SYS_GROUPMAIL_SENDER = postmaster@domain.ltd
- SYS_MYSQL_USER = postfix
- SYS_MYSQL_PASS = postfix_user_password
- SYS_MYSQL_DB = postfix
- SYS_MYSQL_SOCKET = /tmp/mysql.sock
6.2、extmail/webmail.cf
将 /home/www/extsuite/extmail/webmail.cf.default 在同目录复制为 webmail.cf,然后找到如下行:
- SYS_CONFIG = /var/www/extsuite/extmail/
- SYS_LANGDIR = /var/www/extsuite/extmail/lang
- SYS_TEMPLDIR = /var/www/extsuite/extmail/html
- SYS_SPAM_REPORT_TYPE = dspam
- SYS_USER_LANG = en_US
- SYS_MAILDIR_BASE = /home/domains
- SYS_MYSQL_USER = db_user
- SYS_MYSQL_PASS = db_pass
- SYS_MYSQL_DB = extmail
- SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
- SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
- SYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf
对应修改为如下:
- SYS_CONFIG = /home/www/extsuite/extmail/
- SYS_LANGDIR = /home/www/extsuite/extmail/lang
- SYS_TEMPLDIR = /home/www/extsuite/extmail/html
- SYS_SPAM_REPORT_TYPE = spamassassin
- SYS_USER_LANG = zh_CN
- SYS_MAILDIR_BASE = /home/mailbox
- SYS_MYSQL_USER = postfix
- SYS_MYSQL_PASS = 42R854
- SYS_MYSQL_DB = postfix
- SYS_MYSQL_SOCKET = /tmp/mysql.sock
- SYS_AUTHLIB_SOCKET = /home/courier/authlib/var/spool/authdaemon/socket
- SYS_G_ABOOK_FILE_PATH = /home/www/extsuite/extmail/globabook.cf
7、其他配置
修改 /home/www/extsuite/extman/addon/mailgraph_ext/mailgraph-init 和 /home/www/extsuite/extman/addon/mailgraph_ext/qmonitor-init,分别找到:
相应的修改为:
- MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/mailgraph_ext.pl
- MAILGRAPH_PL=/home/www/extsuite/extman/addon/mailgraph_ext/qmonitor.pl
初始化日志统计图所需要的目录:
- /home/www/extsuite/extman/addon/mailgraph_ext/queue_mkrrd.sh
在 Slackware 下全部从源代码安装邮件服务器:三、系统配置 Mon, Jul 20. 2009
1、配置 MySQL
首先启动 MySQL 服务器,并且修改 MySQL 的 root 用户的密码:
- mysql.server start
- /home/mysql/bin/mysqladmin -u root password your_password
运行 /home/mysql/bin/mysql -u root -p,并且在提示符后输入 root 用户的密码,进入 MySQL 客户端,执行以下命令:
- # 创建 postfix 数据库
- CREATE DATABASE `postfix` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
- # 创建同名用户,并且设置密码
- CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix_user_password';
- # 将 postfix 数据库的所有权限都赋予 postfix 用户
- GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfix'@'localhost';
2、配置 Apache
2.1、httpd.conf
编辑 /home/httpd/conf/httpd.conf 文件,找到如下配置并且按照你自己的实际情况修改:
- # 设置默认字符集为 utf-8
- AddDefaultCharset utf-8
- # 设置以 vmail:vmail 的身份执行所有的 web 程序
- <IfModule !mpm_netware_module>
- User vmail
- Group vmail
- </IfModule>
- # 服务器管理员电子邮件,在出错页面显示
- ServerAdmin you@domain.tld
- # 监听 80 端口
- ServerName localhost:80
- # 设置文档主目录为 /home/www
- # 我的习惯是对不同的虚拟主机使用 /home/www/domain 的目录命名习惯
- # 具体可见 home/httpd/conf/extra/httpd-vhosts.conf
- DocumentRoot "/home/www"
- # 设置 /home/www 的默认权限
- <Directory "/home/www">
- Options Indexes Includes FollowSymLinks MultiViews
- AllowOverride All
- Order allow,deny
- Allow from all
- </Directory>
- # 设置默认索引页
- <IfModule dir_module>
- DirectoryIndex index.html index.php
- </IfModule>
- # 加载虚拟主机配置文件
- Include conf/extra/httpd-vhosts.conf
2.2、httpd-vhosts.conf
编辑 /home/httpd/conf/httpd.conf 文件,找到如下配置并且按照你自己的实际情况修改。我们在后面配置 Extman/Extmail 的时候同时配置该文件。
说明:如果有域名的 DNS 管理权限,推荐使用不同的域名表示不同服务,这样便于访问和管理,那么就需要配置该文件以支持多域名对应的虚拟主机。如果没有 DNS 管理权限,那么就只能把所有的服务都放在一个目录下,那么就不需要本文件的支持,同时上一节中的 /home/httpd/conf/httpd.conf 文件的 Include conf/extra/httpd-vhosts.conf 也可以注释掉。但是这种情况下,ExtMan 和 ExtMail 的 CGI 设置需要对应的修改。
3、配置 Postfix
3.1、main.cf
编辑 /etc/postfix/main.cf 文件,如下:
- # LOCAL PATHNAME INFORMATION
- queue_directory = /home/postfix/spool
- command_directory = /home/postfix/sbin
- daemon_directory = /home/postfix/libexec
- data_directory = /home/postfix/var
- # QUEUE AND PROCESS OWNERSHIP
- mail_owner = postfix
- # INTERNET HOST AND DOMAIN NAMES
- myhostname = mail.$mydomain
- mydomain = domain.ltd
- # SENDING MAIL
- myorigin = $mydomain
- # RECEIVING MAIL
- inet_interfaces = all
- mydestination =
- # REJECTING MAIL FOR UNKNOWN LOCAL USERS
- local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname
- unknown_local_recipient_reject_code = 550
- # TRUST AND RELAY CONTROL
- mynetworks_style = subnet
- mynetworks = 202.119.43.0/24, 127.0.0.0/8
- # ALIAS DATABASE
- alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
- # DELIVERY TO MAILBOX
- home_mailbox = Maildir/
- mail_spool_directory = /home/mailbox
- # DEBUGGING CONTROL
- debug_peer_level = 2
- debugger_command =
- PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
- echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
- >$config_directory/$process_name.$process_id.log & sleep 5
- # INSTALL-TIME CONFIGURATION INFORMATION
- sendmail_path = /home/postfix/sbin/sendmail
- newaliases_path = /home/postfix/bin/newaliases
- mailq_path = /home/postfix/bin/mailq
- setgid_group = postdrop
- html_directory = /home/postfix/html
- manpage_directory = /home/postfix/man
- sample_directory = /etc/postfix
- readme_directory = /home/postfix/doc
- # VIRTUAL DOMAIN STORAGE
- virtual_mailbox_base = /home/mailbox
- virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf,
- mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
- virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
- virtual_alias_domains =
- virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf,
- mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf,
- virtual_uid_maps = static:2002
- virtual_gid_maps = static:202
- virtual_transport = maildrop
- virtual_minimum_uid = 200
- relay_domains = $mydestination
- maildrop_destination_recipient_limit = 1
- maildrop_destination_concurrency_limit = 1
- # QUOTA
- message_size_limit = 14336000
- virtual_mailbox_limit = 20971520
- virtual_create_maildirsize = yes
- virtual_mailbox_extended = yes
- virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
- virtual_mailbox_limit_override = yes
- virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
- virtual_overquota_bounce = yes
- # SASL
- smtpd_sasl_path = smtpd
- broken_sasl_auth_clients = yes
- smtpd_recipient_restrictions =
- permit_sasl_authenticated,
- permit_mynetworks,
- reject_unauth_destination
- smtpd_sasl_auth_enable = yes
- smtpd_sasl2_auth_enable = yes
- smtpd_sasl_local_domain = $myhostname
- smtpd_sasl_security_options = noanonymous
- smtpd_sasl_application_name = smtpd
- smtpd_banner=$myhostname ESMTP "Version not Available"
- smtpd_sasl_authenticated_header = yes
- # TLS
- smtpd_use_tls = yes
- smtpd_tls_cert_file = /etc/postfix/postfix.pem
- smtpd_tls_key_file = $smtpd_tls_cert_file
- # OPTIONAL PART
- smtpd_helo_required = yes
- disable_vrfy_command = yes
- smtpd_data_restrictions = reject_unauth_pipelining
- smtpd_etrn_restrictions = reject
- show_user_unknown_table_name = no
- # AMAVIS
- content_filter=smtp-amavis:[127.0.0.1]:10024
3.2、master.cf
编辑 /etc/postfix/master.cf 文件。
找到如下的代码:
- maildrop unix - n n - - pipe
- flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
修改为:
- maildrop unix - n n - - pipe
- flags=DRhu user=vmail argv=/home/courier/maildrop/bin/maildrop -d ${recipient}
在该文件的最后增加如下代码:
- smtp-amavis unix - - n - 2 lmtp
- -o lmtp_data_done_timeout=1200
- -o lmtp_send_xforward_command=yes
- 127.0.0.1:10025 inet n - n - - smtpd
- -o content_filter=
- -o local_recipient_maps=
- -o relay_recipient_maps=
- -o smtpd_restriction_classes=
- -o smtpd_client_restrictions=
- -o smtpd_helo_restrictions=
- -o smtpd_sender_restrictions=
- -o smtpd_recipient_restrictions=permit_mynetworks,reject
- -o mynetworks=127.0.0.0/8
- -o strict_rfc821_envelopes=yes
- -o smtpd_error_sleep_time=0
- -o smtpd_soft_error_limit=1001
- -o smtpd_hard_error_limit=1000
3.3、mysql_*.cf
新建如下文件:
/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
- user = postfix
- password = password_for_postfix
- hosts = localhost
- dbname = postfix
- query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
/etc/postfix/mysql_virtual_alias_domain_maps.cf
- user = postfix
- password = password_for_postfix
- hosts = localhost
- dbname = postfix
- query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/mysql_virtual_alias_maps.cf
- user = postfix
- password = password_for_postfix
- hosts = localhost
- dbname = postfix
- query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
- #expansion_limit = 100
/etc/postfix/mysql_virtual_domains_maps.cf
- user = postfix
- password = password_for_postfix
- hosts = localhost
- dbname = postfix
- query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
- #query = SELECT domain FROM domain WHERE domain='%s'
- #optional query to use when relaying for backup MX
- #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
- #expansion_limit = 100
/etc/postfix/mysql_virtual_mailbox_maps.cf
- user = postfix
- password = password_for_postfix
- hosts = localhost
- dbname = postfix
- query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
- #expansion_limit = 100
3.4、创建 SSL 证书
- cd /etc/postfix
- /usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout postfix.pem -out postfix.pem -nodes -days 365
按照提示输入你的组织等信息。
3.5、修改权限
- chmod 640 /etc/postfix/mysql_*
- chgrp postfix /etc/postfix/mysql_*
4、配置 CYRUS-SASL
创建并且修改 /home/cyrus-sasl/lib/sasl2/smtpd.conf 文件,内容如下:
- pwcheck_method:authdaemond
- log_level:3
- srp_mda:md5
- password_format:crypt
- mech_list:PLAIN LOGIN
- authdaemond_path: /home/courier/authlib/var/spool/authdaemon/socket
设置属性:
- chown postfix:postfix /home/cyrus-sasl/lib/sasl2/smtpd.conf
- chmod 400 /home/cyrus-sasl/lib/sasl2/smtpd.conf
5、配置 Courier Authlib
打开 /home/courier/authlib/etc/authlib/authdaemonrc 文件,修改 27 行:
- authmodulelist="authuserdb authldap authmysql authcustom authpipe"
为:
- authmodulelist="authmysql"
修改 /home/courier/authlib/etc/authlib/authmysqlrc:
- # MySQL 服务器地址
- MYSQL_SERVER localhost
- # MySQL 用户名
- MYSQL_USERNAME postfix
- # MySQL 密码
- MYSQL_PASSWORD password_for_postfix
- # 链接 MySQL 用的 sock
- MYSQL_SOCKET /tmp/mysql.sock
- # 上面指定了使用 sock 方式,所以端口号不需要指定
- # MYSQL_PORT 0
- MYSQL_OPT 0
- # 数据库名
- MYSQL_DATABASE postfix
- # 需要访问的表名
- MYSQL_USER_TABLE mailbox
- # 存放加密密码的列名
- MYSQL_CRYPT_PWFIELD password
- # 存放密码明文的列名,在这里不需要
- # MYSQL_CLEAR_PWFIELD clear
- # 默认域名
- DEFAULT_DOMAIN domain.ltd
- # 用户 ID 和用户组 ID
- MYSQL_UID_FIELD 2002
- MYSQL_GID_FIELD 202
- # 存放用户名 (email) 的列名
- MYSQL_LOGIN_FIELD username
- # 存放邮箱跟目录的列名,直接指定
- MYSQL_HOME_FIELD '/home/mailbox/'
- # 用户姓名列
- MYSQL_NAME_FIELD name
- # 存放用户邮箱路径的列名
- MYSQL_MAILDIR_FIELD maildir
- # MYSQL_DEFAULTDELIVERY defaultdelivery
- # 存放配额的列名
- MYSQL_QUOTA_FIELD quota
- # 附加选项列
- # MYSQL_AUXOPTIONS_FIELD CONCAT("disableimap=", disableimap, ",disablepop3=", disablepop3, ",disablewebmail=", disablewebmail, ",sharedgroup=" ,sharedgroup)
- # 附加 WHERE 语句
- MYSQL_WHERE_CLAUSE active='1'
注意:
- 确认在这个文件中不能用空格键(包括行尾),只能用 Tab 键。
- 确认只使用单引号,比如:'/var/mailbox/'
- localhost 不能用单引号。
- 确认你的 /etc/hosts 文件中有 localhost 解析。
- 编译时如果支持 Ipv6 可能导致错误。
- MYSQL_GID_FIELD 和 MYSQL_UID_FIELD 是 maildrop 所用到的用户(在这里是 vmail:vmail)的 UID 和 GID,而不是 MySQL 的。
6、配置 Courier IMAP
修改 /home/courier/imap/etc 目录下的 imapd、imapd-ssl、pop3d、pop3d-ssl 四个文件。找到 IMAPDSTART、 IMAPDSSLSTART、POP3DSTART、POP3DSSLSTART 四行,把 NO 修改为 YES。如下:
- IMAPDSTART=YES
如果你不需要 SSL 认证,则不需要修改 imapd-ssl 和 pop3d-ssl 文件。下面一步可以直接跳过。
创建 IMAP 和 POP3 需要的 SSL 证书:
- cd /home/courier/imap/share
- /usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout pop3d.pem -out pop3d.pem -nodes -days 365
- /usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout imapd.pem -out imapd.pem -nodes -days 365
按照提示输入你的组织等信息。
7、配置 Courier MailDrop
创建并修改 /etc/maildroprc 文件,内容如下:
- logfile "/var/log/maildrop.log"
- if ( $SIZE < 26144 )
- {
- exception {
- xfilter "/usr/bin/spamassassin --prefspath=$HOME/$DEFAULT/.spamassassin/user_prefs "
- }
- }
- if (/^X-Spam-Flag: *YES/)
- {
- exception {
- to "$HOME/$DEFAULT/.Junk/"
- }
- }
- else
- {
- exception {
- to "$HOME/$DEFAULT"
- }
- }
创建日志文件并且设置正确的权限:
- touch /var/log/maildrop.log
- chown vmail:vmail /var/log/maildrop.log
- chmod a+r /etc/maildroprc
8、配置 Spamassassin
修改 /etc/mail/spamassassin/local.cf,找到如下行:
- # rewrite_header Subject *****SPAM*****
- # report_safe 1
- # required_score 5.0
- # use_bayes 1
- # bayes_auto_learn 1
对应修改成如下:
- rewrite_header Subject *****SPAM*****
- report_safe 0
- required_score 10.0
- use_bayes 1
- bayes_auto_learn 1
并且最最后增加如下规则,以适应中国的邮件,减少误报的机会:
- ##################################################
- ##Follow is diables some bad rules for chinese mail
- ##################################################
- score SUBJ_FULL_OF_8BITS 0.0
- score BASE64_ENC_TEXT 0.0
- score BAYES_99 0.1
- score BAYES_90 0.1
- score BAYES_80 0.1
- score BAYES_70 0.1
- score BAYES_60 0.1
- score FROM_ILLEGAL_CHARS 0.1
- score HEAD_ILLEGAL_CHARS 0.1
- score SUBJ_ILLEGAL_CHARS 0.1
- score MIME_BASE64_TEXT 0.1
- score FAKE_HELO_AOL 0.1
- score NO_RDNS_DOTCOM_HELO 0.1
- score CHINA_HEADER 0.1
9、配置 Amavisd-new
编辑 /etc/amavisd.conf 文件。找到如下行:
- $daemon_user = 'vscan'; # (no default; customary: vscan or amavis), -u
- $daemon_group = 'vscan'; # (no default; customary: vscan or amavis), -g
- $mydomain = 'example.com'; # a convenient default for other settings
- # $MYHOME = '/var/amavis'; # a convenient default for other settings, -H
- $QUARANTINEDIR = '/var/virusmails'; # -Q
- # $db_home = "$MYHOME/db"; # dir for bdb nanny/cache/snmp databases, -D
- # $helpers_home = "$MYHOME/var"; # working directory for SpamAssassin, -S
- # $lock_file = "$MYHOME/var/amavisd.lock"; # -L
- # $pid_file = "$MYHOME/var/amavisd.pid"; # -P
- # $myhostname = 'host.example.com'; # must be a fully-qualified domain name!
- # $final_virus_destiny = D_DISCARD;
- # $final_banned_destiny = D_BOUNCE;
- # $final_spam_destiny = D_BOUNCE;
- # $final_bad_header_destiny = D_PASS;
- # ['ClamAV-clamd',
- # \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
- # qr/\bOK$/m, qr/\bFOUND$/m,
- # qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
对应修改成如下:
- $daemon_user = 'amavis'; # (no default; customary: vscan or amavis), -u
- $daemon_group = 'amavis'; # (no default; customary: vscan or amavis), -g
- $mydomain = 'domain.ltd'; # a convenient default for other settings
- $MYHOME = '/home/amavis'; # a convenient default for other settings, -H
- $QUARANTINEDIR = '/home/mailbox/virusmails'; # -Q
- $db_home = "$MYHOME/db"; # dir for bdb nanny/cache/snmp databases, -D
- $helpers_home = "$MYHOME/var"; # working directory for SpamAssassin, -S
- $lock_file = "$MYHOME/var/amavisd.lock"; # -L
- $pid_file = "$MYHOME/var/amavisd.pid"; # -P
- $myhostname = 'domain.ltd'; # must be a fully-qualified domain name!
- $final_virus_destiny = D_PASS;
- $final_banned_destiny = D_PASS;
- $final_spam_destiny = D_PASS;
- $final_bad_header_destiny = D_PASS;
- ['ClamAV-clamd',
- \&ask_daemon, ["CONTSCAN {}\n", "/tmp/clamd.socket"],
- qr/\bOK$/m, qr/\bFOUND$/m,
- qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
10、配置 Clam AntiVirus
10.1、clamd.conf
修改 /home/clamav/etc/clamd.conf,找到如下行:
- Example
- #LogFile /tmp/clamd.log
- #TemporaryDirectory /var/tmp
- #DatabaseDirectory /var/lib/clamav
对应修改成如下:
- #Example
- LogFile /tmp/clamd.log
- TemporaryDirectory /tmp
- DatabaseDirectory /home/clamav/var
10.2、freshclam.conf
修改 /home/clamav/etc/freshclam.conf,找到如下行:
- Example
- #DatabaseDirectory /var/lib/clamav
- #UpdateLogFile /var/log/freshclam.log
对应修改成如下:
- # Example
- DatabaseDirectory /home/clamav/var
- UpdateLogFile /var/log/freshclam.log
10.4、病毒库升级
首先创建日志文件并且升级病毒库:
- touch /var/log/freshclam.log
- chmod 666 /var/log/freshclam.log
- chown amavis /var/log/freshclam.log
- /home/clamav/bin/freshclam
设置定时更新,执行 crontab -e,增加如下指令:
- 00 08 * * * /home/clamav/bin/freshclam --quiet
表示每天的 08:00 自动升级病毒库。
