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.
在 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 自动升级病毒库。
在 Slackware 下全部从源代码安装邮件服务器:二、软件包安装 Mon, Jul 20. 2009
1、安装 MySQL
- tar -zxvf mysql-5.1.31.tar.gz
- cd mysql-5.1.31
- # 安装到 /home/mysql目录下,加入对 UTF-8 的支持,使用 mysql user,支持所有的字符和和插件
- ./configure --prefix=/home/mysql --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-plugins=all
- make; make install
- # 变更 /home/mysql 的属主
- chown -R mysql.mysql /home/mysql
- # 运行 MySQL 的初始化脚本
- ./scripts/mysql_install_db --user=mysql
- ln -s /home/mysql/share/mysql/mysql.server /usr/sbin
- ln -s /home/mysql/bin/mysql /usr/sbin/
- echo "/home/mysql/lib/mysql" >> /etc/ld.so.conf
- ldconfig
2、安装 Apache
- tar -zxvf httpd-2.2.11.tar.gz
- cd httpd-2.2.11
2.1、安装 APR
- cd srclib/apr
- ./configure
- make; make install
2.2、安装 APR-Util
- cd ../apr-util/
- ./configure --with-apr=/usr/
- make; make install
2.3、安装 Apache:
- cd ../../
- # 安装到 /home/httpd 目录下,支持动态链接路,支持 rewrite,支持 SSL,支持 DAV,支持代理
- ./configure --prefix=/home/httpd --enable-so --enable-auth-digest --enable-rewrite --enable-ssl --enable-dav --enable-dav-fs --enable-proxy --enable-proxy-ftp --enable-proxy-http --enable-proxy-balancer --with-apr=/usr/ --with-apr-util=/usr/
- make; make install
- ln -s /home/httpd/bin/apachectl /usr/sbin/
- ln -s /home/httpd/bin/htpasswd /usr/sbin/
3、安装 Cyrus SASL
- tar -zxvf cyrus-sasl-2.1.23.tar.gz
- cd cyrus-sasl-2.1.23
- # 安装到 /home/cyrus-sasl 目录下
- ./configure --prefix=/home/cyrus-sasl --enable-anon --enable-plain --enable-login --enable-sql --disable-krb4 --disable-otp --disable-cram --disable-digest --with-mysql=/home/mysql/ --without-pam --without-saslauthd --without-pwcheck --with-dblib=berkeley --with-bdb-libdir --with-bdb-incdir --with-openssl --with-plugindir=/home/cyrus-sasl/lib/sasl2
- make; make install
- # 创建符号链接,原因见 http://www.postfix.org/SASL_README.html#build_sasl
- ln -s /home/cyrus-sasl/lib/sasl2/ /usr/lib/sasl2
- echo "/home/cyrus-sasl/lib" >> /etc/ld.so.conf
- ldconfig
- # 很多弱智软件都找不到路径或者能找到但是配置很麻烦,例如 courier-authlib 和 PHP,于是直接做个符号链接
- ln -s /home/cyrus-sasl/lib/libsasl2.la /usr/lib/libsasl2.la
4、安装 Postfix
- tar -zxvf postfix-2.6.2.tar.gz
- cd postfix-2.6.2
- make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/home/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/home/cyrus-sasl/include/sasl -DUSE_TLS' 'AUXLIBS=-L/home/mysql/lib/mysql -lmysqlclient -lz -lm -ldb -L/home/cyrus-sasl/lib -lsasl2 -lssl -lcrypto'
- make install
make install 需要你指定路径,根据我的安装习惯,直接安装到 /home/postfix 下面,但是 etc 目录如果指定到 /home/postfix/etc,会出现很多错误,虽然能够解决,但是太麻烦了,所以 etc 例外,安装到默认的 /etc/postfix目录。
需要指定的目录如下,默认的直接回车。
- install_root: [/]
- tempdir: [/root/old/pkg/postfix-2.6.2] /tmp
- config_directory: [/etc/postfix]
- command_directory: [/usr/sbin] /home/postfix/sbin
- daemon_directory: [/usr/libexec/postfix] /home/postfix/libexec
- data_directory: [/var/lib/postfix] /home/postfix/var
- html_directory: [no] /home/postfix/html
- mail_owner: [postfix]
- mailq_path: [/usr/bin/mailq] /home/postfix/bin/mailq
- manpage_directory: [/usr/local/man] /home/postfix/man
- newaliases_path: [/usr/bin/newaliases] /home/postfix/bin/newaliases
- queue_directory: [/var/spool/postfix] /home/postfix/spool
- readme_directory: [no] /home/postfix/readme
- sendmail_path: [/usr/sbin/sendmail] /home/postfix/sbin/sendmail
- setgid_group: [postdrop]
修改权限:
- chmod a+x+g+s /home/postfix/sbin/postqueue
5、安装 Courier Authlib
说明:Courier 系列软件包的习惯都是用非 root 身份的用户 configure、make,然后再用 root 用户 make install。上面创建的 courier 用户就是这里起作用的。
注意:因为我们是非标准目录安装,所以在这里特别要增加 --without-stdheaderdir 选项,否则后面的组件无法找到 courier-authlib。
- # 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
- tar -jxvf courier-authlib-0.62.2.tar.bz2 -C /tmp/
- cd /tmp/courier-authlib-0.62.2/
- su courier
- # 下面的 configure 和 make 都是以 courier 用户的身份执行
- ./configure --prefix=/home/courier/authlib --with-authmysql=yes --with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/home/mysql/lib/mysql --with-mysql-includes=/home/mysql/include/mysql/ --without-stdheaderdir
- make
- exit
- # 切换到 root 用户 make install
- make install
- make install-configure
- # 修改权限
- chmod +x /home/courier/authlib/var/spool/authdaemon
6、安装 Courier IMAP server
注意:设置 COURIERAUTHCONFIG 环境变量,否则因为是非标准目录安装,找不到 courier-authlib 的路径,下面安装 Courier Maildrop 时也一样。
- # 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
- tar -jxvf courier-imap-4.5.0.tar.bz2 -C /tmp/
- cd /tmp/courier-imap-4.5.0/
- su courier
- # 下面的 configure 和 make 都是以 courier 用户的身份执行
- export COURIERAUTHCONFIG=/home/courier/authlib/bin/courierauthconfig
- ./configure --prefix=/home/courier/imap --with-authmysql=yes --with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/home/mysql/lib/mysql --with-mysql-includes=/home/mysql/include/mysql/ --enable-workarounds-for-imap-client-bugs --with-authchangepwdir --enable-unicode --with-trashquota
- make
- exit
- # 切换到 root 用户 make install
- make install-strip
- make install-configure
7、安装 Courier Maildrop
注意:下面 configure 命令参数里面的 --enable-maildrop-uid=2002 --enable-maildrop-gid=202 中的 2002 和 202 分别对应我们最开始添加的 vmail:vmail 的 UID 和 GID。如果你自己用其它方式增加的用户,则从 /etc/passwd 中找到对应的 UID/GID 并且替换。
- # 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
- tar -jxvf maildrop-2.1.0.tar.bz2 -C /tmp/
- cd /tmp/maildrop-2.1.0/
- su courier
- # 下面的 configure 和 make 都是以 courier 用户的身份执行
- export COURIERAUTHCONFIG='/home/courier/authlib/bin/courierauthconfig'
- # 设置编译时用到的类库
- export CPPFLAGS='-I/home/mysql/include/mysql/ -I/home/courier/authlib/include'
- export LDFLAGS="-L/home/mysql/lib/mysql/ -L/home/courier/authlib/lib/courier-authlib/"
- ./configure --prefix=/home/courier/maildrop --enable-sendmail=/home/postfix/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=2002 --enable-maildrop-gid=202 --with-trashquota --with-dirsync
- make
- exit
- # 切换到 root 用户 make install
- make install
8、安装 Spamassassin
执行以下指令进入 Perl CPAN 环境:
- perl -MCPAN -e shell
依次安装如下模块:
- YAML
- Digest::SHA1
- LWP
- Digest::BubbleBabble
- Net::DNS
- HTTP::Date
- IO::Zlib
- MIME::Base64
- DB_File
- Mail::SPF
- IP::Country::Fast
- Net::Ident
- IO::Socket::INET6
- IO::Socket::SSL
- Compress::Zlib
- Time::HiRes
- Mail::DKIM
- Mail::DomainKeys
- DBI
- DBD::mysql
- Encode::Detect
- Apache::Test
- Mail::SpamAssassin
说明:
- 安装
Net::DNS的时候,会询问是否进行测试,推荐选择 No。 - 在
CPAN里安装DBD::mysql的时候,因为我们不是在标准路径下安装,所以会提示找不到mysql_config错误。解决方法:返回 Shell(BASH),执行如下命令:- cd ~/.cpan/build/DBD-mysql-4.012-*
- perl Makefile.PL --mysql_config=/home/mysql/bin/mysql_config
- make
- make install
- 安装
Apache::Test的时候,会询问你httpd和apxs的安装位置,对应输入/home/httpd/bin/httpd和/home/httpd/bin/apxs。
9、安装 Amavisd-new
同上,进入 CPAN 界面,以此安装如下模块:
- Archive::Tar
- Archive::Zip
- Convert::UUlib
- Convert::BinHex
- Mail::Internet
- Net::Server
- Net::SMTP
- Digest::MD5
- IO::Stringy
- Unix::Syslog
- BerkeleyDB
- MIME::Tools
- Convert::TNEF
准备安装用到的环境,创建 Amavisd-new 所用到的目录并设置权限:
- mkdir /home/amavis
- chmod 750 /home/amavis
- mkdir /home/amavis/tmp/
- mkdir /home/amavis/db/
- mkdir /home/amavis/sbin/
- chown -R amavis:amavis /home/amavis
设置垃圾邮件存放的目录并且设置权限:
- mkdir /home/mailbox/virusmails
- chmod 750 /home/mailbox/virusmails/
- chown amavis /home/mailbox/virusmails/
安装 Amavisd-new,拷贝文件到对应的目录:
- tar -zvxf amavisd-new-2.6.4.tar.gz
- cd amavisd-new-2.6.4
- cp amavisd /home/amavis/sbin/
- chown root /home/amavis/sbin/amavisd
- chmod 755 /home/amavis/sbin/amavisd
- cp amavisd.conf /etc
- chown root /etc/amavisd.conf
- chmod 644 /etc/amavisd.conf
10、安装 Clam AntiVirus
- tar -zxvf clamav-0.95.2.tar.gz
- cd clamav-0.95.2
- ./configure --prefix=/home/clamav
- make
- make install
- mkdir /home/clamav/var
- chown clamav:clamav /home/clamav/ -R
在 Slackware 下全部从源代码安装邮件服务器:一、安装前的准备 Fri, Jul 10. 2009
1、系统需求
在安装前请确认您的系统已经安装了以下的组件或者类库,如果没有请先安装:
- Perl w/ CPAN
- OpenSSL
- Berkeley Database / libdb
2、下载软件包
下面是我们必须用的软件包,请分别下载:
- Postfix:消息传送代理/电子邮件服务器。下载地址
- Cyrus SASL:简单认证安全层。下载地址
- Courier Auth Lib:嵌入式身份认证系统。下载地址
- Courier IMAP server:提供 POP3 和 IMAP 服务。下载地址
- Courier Maildrop:投递邮件。下载地址
- amavisd-new:位于 MTA 和内容过滤器之间的接口。下载地址
- Clam AntiVirus:对邮件进行病毒检查。下载地址
- MySQL:数据库服务器,用来存储虚拟域、虚拟账户等信息。下载地址
- Apache:Web 服务器,用来给 Extman/Extmail 提供 Web 服务。下载地址
- Extman/Extmail:网页客户端和网页管理端。下载地址
- RRDtool:数据日志可视化库,Extman 生成统计图时使用。下载地址
下面是可选组件,请根据情况下载:
- PHP:如果你想使用 phpMyAdmin,或者同时提供其他的 Web 服务,则需要 PHP 支持。下载地址
- phpMyAdmin:提供一个简单、方便的 Web 数据库管理界面。下载地址
3、创建所需的用户、组和目录
创建所需要的用户组和用户,为了不和 Slackware 的默认 GID/UID 冲突,所以我们从 200 和 2000 开始。如果你使用自己的 GID/UID,那么后继的配置需要注意替换成您的 GID/UID。
- # Slackware 默认安装有 mysql:mysql 用户组,所以不必再新增
- # groupadd mysql
- # useradd -g mysql -d /home/mysql -s /sbin/false -c "MySQL" mysql
- groupadd -g 200 postfix
- groupadd -g 201 postdrop
- groupadd -g 202 vmail
- groupadd -g 203 amavis
- groupadd -g 204 clamav
- useradd -u 2000 -g postfix -d /dev/null -s /bin/false postfix
- useradd -u 2002 -g vmail -d /dev/null -s /bin/false vmail
- useradd -u 2003 -g amavis -d /home/amavis -s /bin/bash amavis
- useradd -u 2004 -g clamav -d /home/clamav -s /bin/false -c "Clam Antivirus" clamav
- useradd -u 2010 -g users -d /home/courier -s /bin/bash courier
创建邮件(虚拟域、虚拟帐号)所在的目录,并修改权限。
- mkdir /home/mailbox
- chown vmail:vmail /home/mailbox -R
创建 Web 服务(虚拟主机)所在目录,并且修改权限。
- mkdir /home/www
- chown vmail:vmail /home/www -R
Installing PHP w/ IMAP support on Slackware Thu, Jul 2. 2009
When installing PostfixAdmin, I found that I need to re-compile PHP to support IMAP, but later more problems came to me.
Environment: Linux mail 2.6.27.7-smp #2 SMP Thu Nov 20 22:32:43 CST 2008 i686 Intel(R) Xeon(R) CPU E5405 @ 2.00GHz GenuineIntel GNU/Linux
Q: PHP configure utility reports that there is no IMAP support on my system.
A: According to PHP Manual: IMAP Installation, I need to get something named c-client, and compile PHP with --with-imap[=DIR].
Q: Where to get c-client?
A: Googled answer IMAP Information Center: The software and documentation is available at ftp://ftp.cac.washington.edu/imap. UW IMAP toolkit source distribution is available at ftp://ftp.cac.washington.edu/mail/imap.tar.Z.
Q: So strange a package, how to make and install?
A: Normally, you should run configure, make and make install to install a package from source, but no configure found and make is different.
First, make sure you have OpenSSL installed, and then follow the setps:
Extract the archive downloaded to /usr/local folder named imap-2007e
- cd /usr/local/imap-2007e
- # slx means Linux using -lcrypt to get the crypt() function
- make slx
- # BTW: you are supposed to fail this step, see notes below
- mkdir include
- mkdir lib
- cd c-client
- cp *.h ../include/
- cp *.c ../lib/
- ln -s ../c-client/c-client.a ../lib/libc-client.a
NOTE:
If you like me discover that "make slx" fails, but you're damn sure you've openssl installed then, it might be that the lib and include paths on your distribution are different then the defaults provided in the imap-2007e (or imap-XXXXx). To modify go to dir src/osdep/unix and edit Makefile, around L55:
# Extended flags needed for SSL. You may need to modify. SSLDIR=/usr/local/ssl SSLCERTS=$(SSLDIR)/certs SSLKEYS=$(SSLCERTS) SSLINCLUDE=$(SSLDIR)/include SSLLIB=$(SSLDIR)/lib SSLCRYPTO=-lcryptoChange SSLDIR, SSLINCLUDE and SSLIB to valid paths for Slackware. In my case, it should like this:
# Extended flags needed for SSL. You may need to modify. SSLDIR=/etc/ssl SSLCERTS=$(SSLDIR)/certs SSLKEYS=$(SSLCERTS) SSLINCLUDE=/usr/include/openssl SSLLIB=/usr/lib SSLCRYPTO=-lcryptoYou should also check your ld.so.conf for valid paths.
Q: How to compile PHP w/ IMAP support?
A: Finally, we've reached the last step. Re-compile PHP and everything is done. When configuring, just add those two imap options
- ./configure ... --with-imap=/usr/local/imap-2007e --with-imap-ssl
- make
- make install
Bing! Your system is ready for your imap application.
终于用上左手的 Logitech V450 Nano Cordless Laser Mouse Tue, Sep 16. 2008
和谐四年秋,洒家弱冠六年纪念日当天,于京东购买赛普泰克——啊不,是罗技泰克无尾老鼠一只。
但是此鼠娘家罗技泰克所附送嫁妆 SetPoint 乃伪劣产品,不得博得洒家新欢 Microsoft Windows 2008 之欢心,2008 不认其名门出身,只当是一 HID compliant Mouse,真是狗眼看人低,微软看鼠卑啊。
SetPoint 迫东家 2008 的于淫威,亦不敢主仆相认,就是不敢显示出那欲说还羞的 My Mouse 选项卡。
借古狗洋大人之力,终于在无尾鼠娘家旁边的一个老爷们扎堆聊天的地方找到了前人留下的洋文名帖一张,将藩语译成我中华之文字,方懂上书意思是,喜新厌旧是罪过的,有了新老婆 2008,不能忘了二老婆 Vista 和小妾 XP,须到二老婆或者小妾房中寻得名为 CDDRV2 的仙丹一枚给新老婆服用才可解除新老婆的障眼之疾。
虽说此方甚好,可以药到病除,但是难为了吾等洁身自好,二老婆小妾皆无之人,难道为了这个还要纳上一房不成?未免荒谬。再看前述之帖,此洋鬼子上留蝇头小楷一行,曰,吾等清白之人之赤心,上可达天庭,故玉帝命他将仙丹藏于一个名为 RapidShare 之八卦炉内,以诚心猛击此链接即可得仙丹。
洒家于是踏上 NJU_BRAS 大道前去寻访仙丹,不曾想,好事多磨,玉帝说 BRAS 戴着不爽,遂令如来将 BRAS 大道缩成极小,以难为用 BRAS 取经之人。无奈之下,退回来继续用 PROXY 小道,道上无人阻碍,方能够到达藩国按洋鬼子之指点找到仙丹,取回,用 LDPINST.exe 做药引给新欢 2008 服下,之间电光火石之间,2008 立马认出洒家的无尾鼠出自罗技泰克名门,立即取名为 Logitech HID compliant Cordless mouse。此时寻到 SetPoint,SetPoint 一看婆家已经接纳此鼠,亦显现出 My Mouse 以和之。
至此,洒家魂牵梦绕之 My Mouse 终得拨云见日,吾等方能用上左手鼠标。善哉善哉。
附上洋泾兵之贴:Windows Server 2008 x86(32bit) + Setpoint 4.6 installation ,后来者请自去寻访仙丹。
