anly's blog


十月 17th, 2011

centos+mysql+extmail+extman+cyrus-sasl+courier-authlib+courier+imap

技术日志, by anly_zhang.
所涉及到的软件包

courier-authlib-0.63.0.tar.bz2
courier-imap-4.9.3.tar.bz2
cyrus-sasl-2.1.25.tar.gz
httpd-2.2.21.tar.gz
postfix-2.7.6.tar.gz MTA
extmail-1.2.tar.gz   WEBMAIL
extman-1.1.tar.gz    WEBMAN
php-5.3.8.tar.gz

1、数据库安装和配置
#yum install mysql mysql-server mysql-devel
安装完成后,使用,service mysqld start来启动mysql
#mysqladmin -u root password 'pass@word1'   设置mysql的root密码.
创建一个数据库,用来存放虚拟用户

#mysql -u root -p
mysql>create datebase mail;
mysql>create user 'mail'@'localhost' identified by 'pass@word1';
mysql>grant all privileges on mail . * to 'mail'@'localhost';

2、APACHE的安装
编译安装
#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd
--enable-so --enable-track-vars --enable-rewrite --with-zlib
--enable-mods-shared=most --enable-suexec --with-suexec-caller=postfix
--with-suexec-docroot=/var/www
#make
#make install
安装完成后我们需要查看SUSEXEC的信息
/usr/local/apache/bin/susexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="postfix"
 -D AP_LOG_EXEC="/usr/local/apache/logs/suexec_log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"
设置apache开机启动。
#cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
#chmod 700 /etc/init.d/httpd
#echo "/etc/init.d/httpd start" >> /etc/rc.local
#cd /var/www
#chow -R postfix.postfix www/

3、PHP INSTALL
编译安装之前需要提前运行:
yum install freetype-devel gd-devel libjpeg-6d libjpeg-devel libpng libpng-devel
开始编译安装。
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs
--with-mysql=/usr/lib64/mysql --with-mysqli=/usr/bin/mysql_config --with-xml
--with-png --with-jpeg --with-zlib --with-freetype --with-gd --enable-track-vars
--enable-mbstring=all
在这里,遇到报错error:xml2-conf not found
缺少libxml2-devel yum 安装即可
报错2:error: Cannot find libmysqlclient under /usr.
在/usr/lib下没有找到libmysqlclient.so,只要FIND 找到后CP到该目录后就可以正常下一步了。
#make
#make install
将/srv/php-5.3.8/php.ini-development cp到/usr/local/php/lib/作为PHP的配置文件:php.ini

4、courier-authlib install
在安装之前,要先安装gdbm-devel
#./configure --prefix=/usr/local/authlib --without-authpam --without-authdap
--without-authshadow --without-vchkpw --with-authmysql --with-mysql-libs=/usr/lib64/mysql
--with-mysql-includes=/usr/include/mysql
#make
#make install
courier-authlib配置
#cd /usr/local/authlib
#chmod 755 var/spool/authdaemon/
#cd etc/authlib/
#cp authdaemonrc.dist authaemonrc
#cp authmysqlrcc.dist authmysqlrc
#vim authdaemonrc
Authmondulelist="authmysql"
Authmodulistorig="authmysql"
Darmons=10
完成之后wq保存并退出。
#vim authmysqlrc
MYSQL_SERVER    localhost
MYSQL_PORT       3066
MYSQL_USERNAME    mail
MYSQL_PASSWORD    pass@word1
MYSQL_SOCKET  /var/lib/mysql/mysql.sock
MYSQL_DATABASE    mail
MYSQL_USER_TABLE   mailbox
MYSQL_CRYPT_PWFIELD    password
MYSQL_UID_FIELD      1000  postfix的UID GID
MYSQL_GID_FIELD      1000
MYSQL_LOGIN_FIELD    username
MYSQL_HOME_FIELD    concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD     name
MYSQL_MAILDIR_FIELD    concat('/var/mailbox/',mailbox)
设置开机自动启动
#cp /srv/courier-authlib-0.63.0/courier-authib.sysvinit /etc/init.d/courier-authlib
#chmod 755 /etc/init.d/courier-authlib
#echo "/etc/init.d/courier-authlib start" >> /etc/init.d/rc.local

5、cyrus-sasl install
#./configure --prefix=/usr/local/sasl2 --disable-gssapi --disable-anon --disable-digest
--enable-plain --enable-login --enable-sql --with-mysql=/var/lib/mysql --with-mysql-includes=/usr/include/mysql
--with-mysql-libs=/usr/lib64/mysql/ --with-authdaemond=/usr/local/authlib/var/spool/authdaemon/socket
#make
在make的时候遇到问题,error: mysql.h: No such file or directory
用这条命令做个链接,ln -sv /usr/include/mysql/*  /usr/local/include
貌似原因搜cyrus-sasl在make的时候会去/usr/local/include找与mysql相关的链接文件,难道搜我做的--with没起作用?
#make install
配置SASL
创建一个临时文件夹/tmp/saslauthd 用于存放SASL运行时的临时文件。
#mkdir –pv /var/state/saslauthd
创建一个SASL的配置文件smtpd.conf
#vim /usr/local/sasl2/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
为postfix编译安装做准备,添加链接库
#echo “/usr/local/sasl2/lib” >> /etc/li.so.conf
#echo “/usr/local/sasl2/lib/sasl2” >> /etc/ld.so.conf
#ldconfig

6、POSTFIX INSTALL
为了postfix新建一个用户组。
#groupadd –g 1000 postfix
#useradd –g 1000–u 1000 postfix –s /sbin/nologin
#groupadd –g 200 maildrop
#useradd –g 200 –u 200 maildrop –s /sbin/nologin
开始编译安装
安装之前:yum install cyrus-sasl-md5 cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl-devel
#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl
-DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib64/sasl2 -lsasl2'
#make
#make install
#install_root: [/] /
#tempdir: [/srv/postfix-2.8.5] /tmp/postfix
#command_directory:[/usr/sbin] /usr/sbin
#daemon_directory:[/usr/libexec/postfix] /usr/libexec/postfix
#data_directory:[/var/lib/postfix] /var/lib/postfix
#html_directory:[no] /var/www/postfix.html
#mail_owner:[postfix] postfix
#mailq_path:[/usr/bin/mailq] /usr/bin/mailq
#manpage_directory:[/usr/local/man] /usr/local/man
#newaliases_path:[/usr/bin/newaliases]
#queue_directory:[/var/spool/postfix] /var/spool/postfix
#readme_directory:[no] no
#sendmail_path:[/usr/sbin/sendmail]
#setgid_group:[postdrop] maildrop
配置postfix,postfix的配置文件是/etc/postfix/main.cf
我们首先要先备份一份配置文件,#cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
#vim /etc/postfix/main.cf
Myhostname = main.anlyblog.com
Myorigin = anlyblog.com
Mydomain = $myorigin
Mydestination = $myhostname,localhost.$mydomain,localhost,$mydomian
Mynetworks = 127.0.0.0/8
Inet_interfaces = all
完成后我们要将postfix设置成开机启动。
#echo “/usr/sbin/postfix start” >>/etc/rc.local
为POSTFIX开启cyrus-sasl认证
#/usr/sbin/postconf -a 检查是否支持cyrus-sasl认证,如果出现以下结果即为支持:
Cyrus
Dovecot
在main.cf下添加如下内容:
###############################CYRUS-SASL#########################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
###################################################################
这个,在postfix 2.3以前和2.3之后有个变量改变了.
2.3以后:smtpd_sasl_path = smtpd
2.3以前:smtpd_sasl_application_name = smtpd
这个一定要注意,否则会有问题.我在这个问题上纠结了将近3个小时时间。
在这里,有一点要特别注意,要将库链接到/usr/lib 因为POSTFIX会到/usr/lib下去找SASL2库,而我们的程序是安装在/usr/lib64/sasl2中,所以我们需要在/usr/lib目录下做个链接:
#ln -s /usr/lib64/sasl2 /usr/lib/sasl2
配置和建立虚拟用户
#cd /etc/postfix
#vim main.cf
在main.cf最后添加如下几行:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_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
virtual_uid_maps = static:1000
####POSTFIX1UID
virtual_gid_maps = static:1000
####POSTFIX GID
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1

##########################QUOTA Settings########################
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 message size exceeds limit, Please modify and try again!
virtual_overquota_bounce = yes

添加为支持虚拟用户和虚拟域所用到的配置文件:
#vim /etc/postfix/mysql_virtual_alias_maps.cf
user = mail
password = pass@word1
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address
#vim /etc/postfix/mysql_virtual_domains_maps.cf
user = mail
password = pass@word1
hosts = localhost
dbname = mail
table = domain
select_field = description
where_field = domain
#vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = mail
password = pass@word1
hosts = localhost
dbname = mail
table = mailbox
select_field = quota
where_field = username
#vim /etc/postfix/mysql_virtual_mailbox_maps.cf
user = mail
password = pass@word1
hosts = localhost
dbname = mail
table = mailbox
select_field = maildir
where_field = username

7、COURIER-IMAP INSTALL
#./configure --prefix=/usr/local/courier-imap --enable-unicode --disable-root-check --with-trashquota
--without-ipv6 CPPFLAGS='-I/usr/local/authlib/include' LDFLAGS='-L/usr/local/authlib/lib/courier-authlib'
COURIERAUTHCONFIG='/usr/local/authlib/bin/courierauthconfig'
#make
#make install
完成编译安装之后,我们需要对其进行配置.
CONFIG IMAP
#cd /usr/local/courier-imap/
#cp ./etc/imapd.dist ./etc/imapd
#cp ./etc/imapd-ssl.dist ./etc/imapd-ssl
#cp ./etc/pop3d.dist ./etc/pop3d
#cp ./etc/pop3d-ssl.dist ./etc/pop3d-ssl
为用户Courier-IMAP,为用户提供POP3服务:
#vim ./etc/pop3d
POP3DSTART=YES
设置为开机启动
#cp /srv/courier-imap-4.9.3/courier-imap.sysvinit /etc/init.d/courier-imapd
#chmod 755 /etc/init.d/courier-imapd
#echo "/etc/init.d/courier-imapd start" >> /etc/rc.local
启动courier-imapd
#service courier-imapd start
会提示Starting Couri
新建虚拟用户邮箱所在目录
我们在修改POSTFIX的配置文件MAIN.CF时就已经定义好了,我们现在需要建立该目录。
#mkdir –pv /var/mailbox
#chown –R postfix.postfix /var/mailbox

8、EXTMAIL INSTALL
#mv extmail-1.2 /var/www/extmail
#cd /var/www/extmail
#cp webmail.cf.defualt webmail.cf
修改配置文件webmail.cf
将以下参数修改为:
SYS_CONFIG = /var/www/extmail/
SYS_LANGDIR = /var/www/extmail/lang
SYS_TEMPLDIR = /var/www/extmail/html
SYS_MESSAGE_SIZE_LIMIT = 5242880 用户可以发送的最大邮件数
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = mail
SYS_MYSQL_PASS = pass@word1
以上是用来连接数据库所使用的用户名、密码。
SYS_MYSQL_DB = mail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_DB = mail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
SYS_AUTHLIB_SOCKET = /usr/local/authlib/var/spool/authdaemon/socke
SYS_G_ABOOK_FILE_PATH = /var/www/extmail/globabook.cf

9、EXTMAN INSTALL
#tar -zxvf extman-1.1.tar.gz
#mv extman-1.1 /var/www/extman
#mkdir /tmp/extman
#chown -R postfix.postfix /tmp/extman
#cp webman.cf.defualt webman.cf
#vim webman.cf
SYS_CONFIG = /var/www/extman/
SYS_LANGDIR = /var/www/extman/lang
SYS_TEMPLDIR = /var/www/extman/html
SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_SOCKET = /tmp/mysql.sock
修改主目录CGI的属性
#chown -R postfix.postfix /var/www/extman/cgi

10、安装Unix-syslog、DBI-1.616 、DBD-Mysql
#cd /srv
#tar –zxvf Unix-Syslog-1.1.tar.gz
#cd /Unix-Syslog-1.1
在编译安装之前,先使用yum install 完成对perl-ExtUtils-MakeMaker的安装
#perl Makefile.PL
#make
#make install
完成Unix-Syslog的编译安装
#tar –zxvf DBI-1.616.tar.gz
#cd DBI-1.616
#perl Makefile.PL
#make
#make install
对DBD-MYSQL进行编译安装
#tar -zxvf DBD-MYSQL-1.616.tar.gz
#cd DBD-mysql-1.616
#perl Makefile.PL
#make
#make install
完成对DBI-1.616的编译安装
#tar –zxvf DBD-mysql-4.020.tar.gz
#cd DBD-mysql-4.020
#perl Makefile.PL
#make
#make install

11、创建数据库信息
#cd /var/www/extman/docs
#mysql -u root -p <extmail.sql
#mysql -u root -p <init.sql
在这里,我们需要修改extmail.sql和init.sql因为我是创建了自己的数据库来存放数据的,所以要修改USE的数据库,如果按照默认的,那么不需要任何变动。
配置APACHE
在/etc/httpd/httpd.conf中添加:
NameVirtualHost *:80
Include /etc/httpd/vhost_*.conf 定义虚拟网站的配置文件路径,按照现状修改
在/etc/httpd/下创建一个vhost_extmail.conf内容如下:
# VirtualHost for ExtMail Solution
<VirtualHost *:80>
ServerName mail.extmail.org
DocumentRoot /var/www/extmail/html/

ScriptAlias /extmail/cgi/ /var/www/extmail/cgi/
Alias /extmail /var/www/extmail/html/

ScriptAlias /extman/cgi/ /var/www/extman/cgi/
Alias /extman /var/www/extman/html/

# Suexec config
SuexecUserGroup postfix postfix  按照实际情况填写
</VirtualHost>
这里http://ip/或http://domain/就可以正常访问了。
这里一定要注意:
关于susexec 我们在编译HTTPD的时候一定要定义一个账户,并且这个账户的UID、GID都必指定的最小值好像是UID:100 GID:500
--enable-suexec 这里是启用suexec
--with-suexec-caller=postfix 定义运行suexec的账户为postfix
--with-suexec-docroot=/var/www 定义suexec运行的目录
在CGI的运行的问题上,我浪费了许多时间,关键还是在权限上,权限定义好了,那么什么事情都方便许多。
有问题多看看httpd的LOG,和erro.log,这里总能找到问题的所在,然后通过GOOGLE查找解决方法。

原创文章,转载请注明转自寒冷平原.本文链接地址:http://www.anlyblog.com/482.html

博主twitter主页http://x.co/xxoo 欢迎fo


Back Top

Tags: ,