所涉及到的软件包 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