Postfix 邮件服务器系统 (as4)
由 admin 发表于 11:21春节期间在自己的VPS上搭建了一套postfix邮件系统,参考了网上的一些文章,很多问题光看文章不行,还是要自己去亲自解决,整理一篇文档,以便以后再次安装时候做参考。
所用的软件包
Postfix-2.4.5
Mysql-5.0.45
Sasl-2.1.22
DB-4.5.20
Openssl-0.98e
httpd-2.2.4
Php-5.2.3
courier-authlib-0.59.3
courier-imap-4.1.3
Extmail-1.2
Extman-0.2.2
maildrop-2.0.4
发现一个好网站,没有的可以去这个下载
一、安装mysql-5.0.45
#groupadd mysql
#useradd -g mysql -s /bin/false -M mysql
#tar zxvf mysql-5.0.45.tar.gz
#cd mysql-5.0.45
#./configure
–prefix=/usr/local/mysql
–enable-thread-safe-client
–enable-local-infile
–with-charset=gbk
–with-extra-charset=all
–with-low-memory
#make
#make install
#cp support-files/my-medium.cnf /etc/my.cnf
#cd /usr/local/mysql
#chown -R mysql .
#chgrp -R mysql .
#bin/mysql_install_db –user=mysql
#chown -R root .
#chown -R mysql var
#bin/mysqld_safe –user=mysql &
#cd /usr/local/src/mysql-5.0.45
#cp support/mysql.server /etc/rc.d/init.d/mysqld
#chmod 700 /etc/rc.d/init.d/mysqld
加入自动启动服务队列:
#chkconfig –add mysqld
#chkconfig –level 345 mysqld on
测试
#/usr/local/mysql/bin/mysqladmin ping
#/usr/local/mysql/bin/mysqladmin version
#/usr/local/mysql/bin/mysql
添加root密码
#/usr/local/mysql/bin/mysqladmin -uroot -p 旧密码 password 新密码
说明:此时mysql的root用户的密码为空
配置库文件搜索路径
# echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf
# ldconfig -v
添加/usr/local/mysql/bin到环境变量PATH中
#export PATH=$PATH:/usr/local/mysql/bin
二、安装openssl-0.9.8e
# tar zxvf openssl-0.9.8e.tar.gz
# cd openssl-0.9.8e
# ./config shared zlib
# make
# make test
# make install
# mv /usr/bin/openssl /usr/bin/openssl.OFF
# mv /usr/include/openssl /usr/include/openssl.OFF
# rm /usr/lib/libssl.so
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
# ln -sv /usr/local/ssl/lib/libssl.so.0.9.8 /usr/lib/libssl.so
配置库文件搜索路径
# echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
# ldconfig -v
检测安装结果
# openssl version
OpenSSL 0.9.8e 23 Feb 2007
三、安装sasl-2.1.22
#tar zxvf cyrus-sasl-2.1.22.tar.gz
#cd cyrus-sasl-2.1.22
#./configure –prefix=/usr/local/sasl2 –disable-gssapi –disable-anon –disable-sample –disable-digest –enable-plain –enable-login –enable-sql –with-mysql=/usr/local/mysql –with-mysql-includes=/usr/local/mysql/include/mysql –with-mysql-libs=/usr/local/mysql/lib/mysql –with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
#make
#make install
关闭原有的sasl:
# mv /usr/lib/libsasl2.a /usr/lib/libsasl2.a.OFF
# mv /usr/lib/libsasl2.la /usr/lib/libsasl2.la.OFF
# mv /usr/lib/libsasl2.so.2.0.19 /usr/lib/libsasl2.so.2.0.19.OFF
# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF
# rm /usr/lib/libsasl2.so
# rm /usr/lib/libsasl2.so.2
# ln -sv /usr/local/sasl2/lib/* /usr/lib
postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中搜索sasl库文件及头文件,故还须将其链接至此目录中:
# ln -sv /usr/local/sasl2/lib/* /usr/local/lib
# ln -sv /usr/local/sasl2/include/sasl/* /usr/local/include
创建运行时需要的目录并调试启动
# mkdir -pv /var/state/saslauthd
# /usr/local/sasl2/sbin/saslauthd -a shadow pam -d
启动并测试
# /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用户密码
配置库文件搜索路径
# echo “/usr/local/sasl2/lib” >> /etc/ld.so.conf
# echo “/usr/local/sasl2/lib/sasl2″ >> /etc/ld.so.conf
# ldconfig -v
开机自动启动
# echo “/usr/local/sasl2/sbin/saslauthd -a shadow pam”>>/etc/rc.local
四、安装BerkeleyDB
#tar zxvf db-4.5.20.tar.gz
#cd db-4.5.20/build_unix
#../dist/configure –prefix=/usr/local/BerkeleyDB
#make
#make install
修改相应的头文件指向
# mv /usr/include/db4 /usr/inculde/db4.OFF
# rm /usr/include/db_cxx.h
# rm /usr/include/db.h
# rm /usr/include/db_185.h
# ln -sv /usr/local/BerkeleyDB/include /usr/include/db4
# ln -sv /usr/local/BerkeleyDB/include/db.h /usr/include/db.h
# ln -sv /usr/local/BerkeleyDB/include/db_cxx.h /usr/include/db_cxx.h
配置库文件搜索路径
# echo “/usr/local/BerkeleyDB/lib” >> /etc/ld.so.conf
# ldconfig –v
五、安装httpd-2.2.4
#tar jxvf httpd-2.2.4.tar.bz2
#cd httpd-2.2.4
#./configure
–prefix=/usr/local/apache
–enable-so
–enable-ssl
–with-ssl=/usr/local/ssl
–enable-track-vars
–enable-rewrite
–with-zlib
–enable-mods-shared=most
–enable-suexec (后面extmail切换”运行时用户”时要用到)
–with-suexec-caller=daemon
#make
#make install
#echo “/usr/local/apache/bin/apachectl start” >> /etc/rc.local(系统启动时服务自动启动)
六、安装php-5.2.3
# tar -zvxf php-5.2.3.tar.gz
# mkdir -p /usr/local/php
# cd php-5.2.3
# ./configure –prefix=/usr/local/php
–with-apxs2=/usr/local/apache/bin/apxs
–with-mysql=/usr/local/mysql
–with-mysqli=/usr/local/mysql/bin/mysql_config
–with-xml
–with-png
–with-jpeg
–with-zlib
–with-freetype
–with-gd
–enable-track-vars
–enable-mbstring=all
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini
注:编辑apache配置文件httpd.conf,以apache支持php
# vi /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
3、按照使用习惯,这里将网站根目录指定到/var/www:
找到DocumentRoot “/usr/local/apache/htdocs”
修改为:DocumentRoot “/var/www”(后文中我们还会注释掉此行,以启用虚拟主机)
找到<Directory “/usr/local/apache/htdocs”>
修改为:<Directory “/var/www”>
七、安装Postfix-2.4.5
1.安装
[root @ test root] # groupadd -g 2525 postfix
[root @ test root] # useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
[root @ test root] # groupadd -g 2526 postdrop
[root @ test root] # useradd -g postdrop -u 2526 -s /bin/false -M postdrop
[root @ test root] # service sendmail stop
[root @ test root] # mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
[root @ test root] # mv /usr/bin/mailq /usr/bin/mailq.OFF
[root @ test root] # mv /usr/bin/newaliases /usr/bin/newaliases.OFF
[root @ test root] # tar zxvf postfix-2.4.5.tar.gz
[root @ test root] #cd postfix-2.4.5
[root @ test postfix-2.4.5] # make makefiles ‘CCARGS=-DHAS_MYSQL
-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl -I/usr/local/BerkeleyDB/include -DUSE_TLS -I/usr/local/ssl/include/openssl ‘ ‘AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib -L/usr/local/ssl/lib -lssl -lcrypto’
[root @ test postfix-2.4.5] # make
[root @ test postfix-2.4.5] # make install
按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值)
install_root: [/] /
tempdir: [/usr/local/src/ postfix-2.4.5] /tmp
config_directory: [/etc/postfix] /etc/postfix
daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
command_directory: [/usr/sbin] /usr/local/postfix/sbin
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [no] /var/www/postfix_html
manpages: [/usr/local/man] /usr/local/postfix/man
readme_directory: [no]
如图中红色框选处所示, postfix 提示在在加载共享库文件 libssl.so.0.9.8 时,发生错误,错误的原因是没有此文件,此时你就在系统中找一下,是否存在此文件啦,如果没有的话,就要安装啦,这个库文件与 openssl 有关。本例中此文件存放于 /usr/local/ssl/lib/ 目录下,这里需要将此目录写入到 /etc/ld.so.conf 文件中,然后运行 ldconfig 命令加载。步骤如下:
[root @test ~] # echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
[root @test ~] # ldconfig
注意:在编译时出现如下错误:
这是由于 postfix 找不到 mysql 的头文件所致,解决方法:
[root @test postfix-2.4.5] # mkdir /usr/local/mysql/include/mysql
[root @test postfix-2.4.5] # ln –s /usr/local/mysql/include/* /usr/local/mysql/include/mysql
[root @ test postfix-2.4.5] # chown –R mysql.mysql /usr/local/mysql/include/mysql
3、 出现如下错误:
这是由于 postfix 找不到 mysql 的库文件引起,解决方法:
[root @test ~] # mkdir /usr/local/mysql/lib/mysql
[root @test ~] # ln –s /usr/local/mysql/lib/* /usr/local/mysql/lib/mysql
[root @test ~] # chown –R mysql.msyql /usr/local/mysql/lib/mysql
说明:这里的postfix将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方便些;
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
# newaliases
配置 postfix
[root @ test postfix-2.4.5] # vi /etc/postfix/main.cf
myhostname = mail.test.com
mydomain = test.com
myorigin = $mydomain
inet_interfaces = all
mynetworks = 192.168.98.0/24, 127.0.0.0/8
#================Virtual Setting ====================
virtual_mailbox_base = /var/mailbox/
virtual_mailbox_maps= mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#=================Quota Setting ====================
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/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 Tidy your mailbox and try again later.
virtual_overquota_bounce = yes
#=================== 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, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP, Warning:Version not Available!
[root @ test postfix-2.4.5] # mkdir -p /etc/postfix/mysql
[root @ test postfix-2.4.5] # cd /etc/postfix/mysql
说明:1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;3、虚拟用户邮箱目录我这里沿用了/home/domains,你可以指定为别的目录,比如常见到的/var/mailbox,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;
十、安装Courier authentication library
# tar jxvf courier-authlib-0.59.3.tar.bz2
# cd courier-authlib-0.59.3
./configure –prefix=/usr/local/courier-authlib –sysconfdir=/etc –without-authpam –without-authldap –without-authpwd –without-authshadow –without-authvchkpw –without-authpgsql –with-authmysql=/usr/local/mysql/lib/mysql –with-mysql-libs=/usr/local/mysql/lib/mysql –with-mysql-includes=/usr/local/mysql/include/mysql –with-redhat –with-authmysqlrc=/etc/authmysqlrc –with-authdaemonrc=/etc/authdaemonrc CFLAGS=”-march=i686 -O2 -fexpensive-optimizations” CXXFLAGS=”-march=i686 -O2 -fexpensive-optimizations”
# make
# make install
如果编译是说gdbm错误,需要安装
yum install gdbm gdbm-devel
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist /etc/authdaemonrc
# cp /etc/authmysqlrc.dist /etc/authmysqlrc
修改/etc/authdaemonrc 文件
authmodulelist=”authmysql”
authmodulelistorig=”authmysql”
daemons=10
编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
MYSQL_SERVER localhost
MYSQL_PORT 3306 (指定你的mysql监听的端口,这里使用默认的3306)
MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名)
MYSQL_PASSWORD extmail (密码)
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD ’2525′
MYSQL_GID_FIELD ’2525′
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat(‘/home/domains/’,homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat(‘/home/domains/’,maildir)
# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig –add courier-authlib
# chkconfig –level 2345 courier-authlib on
#echo “/usr/local/courier-authlib/lib/courier-authlib” >> /etc/ld.so.conf
# ldconfig -v
# service courier-authlib start (启动服务)
十一、安装Courier-IMAP-4.1.3
# tar jxvf courier-imap-4.1.3.tar.bz2
# cd courier-imap-4.1.3
./configure
–prefix=/usr/local/courier-imap
–with-redhat
–enable-unicode
–disable-root-check
–with-trashquota
–without-ipv6
CPPFLAGS=’-I/usr/local/ssl/include/openssl -I/usr/local/courier-authlib/include’
LDFLAGS=’-L/usr/local/courier-authlib/lib/courier-authlib’
COURIERAUTHCONFIG=’/usr/local/courier-authlib/bin/courierauthconfig’
# make
# make install
如果在这一步出现错误:
因为编译安装的openssl的头文件链接指定问题。默认情况下,courier-imap编译时到/usr/include下查找openssl的头文件,到/usr/lib 下查找 openssl 的库文件,这里你要查找在这两个目录下是否存在 openssl 的库文件与头文件,openssl 的头文件是 /usr/include/openssl 该文件是链接到 /urs/local/ssl/include/openssl 。openssl的库文件是 /usr/lib/libssl.so 该文件是链接到 /usr/local/ssl/lib/libssl.so.0.9.8 。如没有的,请自行链接,如下:
[root @test ~] # ln –s /usr/local/ssl/include/openssl /urs/include/openssl
[root @test ~] # ln –s /usr/local/ssl/lib/libssl.so.0.9.8 /usr/lib/libssl.so
# cp /usr/local/courier-imap/etc/imapd.dist /usr/local/courier-imap/etc/imapd
# cp /usr/local/courier-imap/etc/imapd-ssl.dist /usr/local/courier-imap/etc/imapd-ssl
# cp /usr/local/courier-imap/etc/pop3d.dist /usr/local/courier-imap/etc/pop3d
# cp /usr/local/courier-imap/etc/pop3d-ssl.dist /usr/local/courier-imap/etc/pop3d-ssl
配置Courier-IMAP,为用户提供pop3服务:
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES
注:如果你想为用户提供IMAP服务,则需在”/usr/local/courier-imap/etc/imapd”文件中设置”IMAPDSTART=yes”;其它类同;
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
#mkdir –pv /home/domains
#chown –R postfix /home/domains
#cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
#chmod 755 /etc/rc.d/init.d/courier-imapd
#chkconfig –add courier-imapd
#chkconfig –level 2345 courier-imapd on
#service courier-imapd start
接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
[root @ test courier-imap-4.1.3] # mkdir –p /home/domains [root @ test courier-imap-4.1.3] #chown –R postfix /home/domains [root @ test courier-imap-4.1.3] # cp courier-imap.sysvinit /etc/rc.d/init.d/imapd [root @ test courier-imap-4.1.3] # chmod 755 /etc/rc.d/init.d/imapd [root @ test courier-imap-4.1.3] # chkconfig —add imapd [root @ test courier-imap-4.1.3] # chkconfig —level 2345 imapd on [root @ test courier-imap-4.1.3] # service imapd start
十二、安装 extmail
[root @test root] # tar zxvf extmail-1.2.tar.gz
[root @test root] # mkdir -pv /var/www/extsuite
[root @test root] # mv extmail-1.2 /var/www/extsuite/extmail
[root @test root]# cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf
修改主配置文件
[root @test root] # vi /var/www/extsuite/extmail/webmail.cf
部分修改选项的说明:
SYS_MESSAGE_SIZE_LIMIT = 5242880
用户可以发送的最大邮件
SYS_USER_LANG = en_US
语言选项,可改作:
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_HOST = localhost
指明数据库服务器主机名,这里默认即可
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
连接数据库的sock文件位置,这里修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的位置,这里修改为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
apache相关配置
[root @test root] # vi /usr/local/apache/conf/httpd.conf
将 User daemon
Group daemon
改为
User postfix
Group postfix
将Include conf/extra/httpd-vhosts.conf
前的注释去掉,打开 apache 的虚拟主机功能。
# virtual hosts
Include conf/extra/httpd-vhosts.conf
编辑虚拟主机配置文件
<VirtualHost *:8080>
ServerName mail.szpian.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
<Directory “/var/www”>
Order Deny,Allow
allow from All
</Directory>
</VirtualHost>
依赖关系的解决
extmail将会用到perl的DBD::Mysql和Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。
[root @ test root] # tar zxvf Unix-Syslog-0.100.tar.gz
[root @ test root] # cd Unix-Syslog-0.100
[root @ test Unix-Syslog-0.100] # perl Makefile.PL
[root @ test Unix-Syslog-0.100] # make
[root @ test Unix-Syslog-0.100] # make install
DBD-Mysql目前最新的版本为DBD-mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
[root @ test root] # tar zxvf DBD-mysql-3.0002_4.tar.gz
[root @ test root] # cd DBD-mysql-3.0002_4
[root @ test DBD-mysql-3.0002_4] # perl Makefile.PL (此步骤中如果出现类同Can’t exec “mysql_config”: No such file or directory at Makefile.PL line 76.的错误是因为您的mysql的bin目录没有输出至$PATH环境变量 看编译错误路径)
[root @ test DBD-mysql-3.0002_4] # make
//////************************** 注 意 *******************************
如编译时出现如下错误:
这是由于 DBD-mysql 默认是从 /usr/lib/mysql 查找 mysql 的库文件,而我们的 mysql 的库文件是存放在 /usr/local/mysql/lib/mysql 目录下,解决方法:
[root @test ~] # mv /usr/llib/mysql /usr/lib/mysql.bak
[root @test ~] # mkdir /usr/lib/mysql
[root @test ~] # ln –s /usr/local/mysql/lib/* /usr/lib/mysql
***********************************************************\\\\\\\\\\\\\\\\\\\
[root @ test DBD-mysql-3.0002_4] # make install
好了,到此为止,您的Webmail已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问
十三、安装Extman-0.2.2
安装及基本配置
[root @ test root] #tar zxvf extman-0.2.2.tar.gz
[root @ test root] # mv extman-0.2.2 /var/www/extsuite/extman
修改配置文件以符合本例的需要:
[root @test root] # vi /var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此处修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
[root @test root] # cd /var/www/extsuite/extman/docs
[root @test docs ] # /usr/local/mysql/bin/mysql -u root < extmail.sql
[root @test docs] # /usr/local/mysql/bin/mysql -u root -p < init.sql
Enter password: 输入 mysql root 用户的密码
修改cgi目录的属主:
[root @test extman ] # chown -R postfix.postfix /var/www/extsuite/extman/cgi/
如果extman访问数据库权限不足的话,可采用以下命令将新生成的数据库赋予webman用户具有所有权限:
[root @test extman ] # /usr/local/mysql/bin/mysql
mysql> use extmail;
mysql> GRANT all privileges on extmail.* TO webman@localhost IDENTIFIED BY ‘webman’;
mysql> GRANT all privileges on extmail.* TO webman@127.0.0.1 IDENTIFIED BY ‘webman’;
mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY ‘extmail’;
mysql> GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY ‘extmail’;
mysql> quit
在apache的虚拟主机配置文件中Extmail的虚拟主机部分,添加如下两行:
[root @test extman ] # vi /usr/local/apache/conf/extra/httpd-vhosts.conf
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
启动所有服务:
[root @test root] # service mysqld start
[root @test root] # /usr/local/apache/bin/apachectl start
[root @test root] # service courier-authlib start
[root @test root] # service imapd start
[root @test root] # postfix start
mkdir -p /tmp/extman
chmod 777 /tmp/extman
在IE 浏览器中输入 http://192.168.98.204/extman ,进入邮件服务器的后台,添加域与添加用户邮箱。默认管理帐号为:root@extmail.org 密码为:extmail*123*。
说明:
(1) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可: http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
(2) extman-0.2.2自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装这些模块才可能正常显示图形日志。
接下来安装图形日志的运行所需要的软件包Time::HiRes、File::Tail和rrdtool,其中前两个包您可以去http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。
12、安装Time::HiRes
[root @test root] # tar zxvf Time-HiRes-1.9707.tar.gz
[root @test root] # cd Time-HiRes-1.9707
[root @test Time-HiRes-1.9707] # perl Makefile.PL
[root @test Time-HiRes-1.9707] # make
[root @test Time-HiRes-1.9707] # make test
[root @test Time-HiRes-1.9707] # make install
13、安装File::Tail
[root @test root] # tar zxvf File-Tail-0.99.3.tar.gz
[root @test root] # cd File-Tail-0.99.3
[root @test File-Tail-0.99.3] # perl Makefile
[root @test File-Tail-0.99.3] # make
[root @test File-Tail-0.99.3] #make test
[root @test File-Tail-0.99.3] # make install
在安装 rrdtool 之前,就确定你的系统中是否已经安装 tcl、tcl-devel、libart、libart-devel,用下面的命令检查是否已经安装
[root @test File-Tail-0.99.3] # rpm -qa | grep tcl
[root @test File-Tail-0.99.3] # rpm -qa | grep libart
如果没有安装,将 RedHat AS 4.0 光碟放入光驱,挂载安装。注:相关的安装包在第3张碟和第4张碟中。
14、安装rrdtool-1.2.23
#tar zxvf rrdtool-1.2.23.tar.gz
#cd rrdtool-1.2.23
#./configure –prefix=/usr/local/rrdtool
#make
#make install
创建必要的符号链接(Extman会到这些路径下找相关的库文件)
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.5/i386-linux-thread-multi/
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/RRDp.pm /usr/lib/perl5/5.8.5
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/5.8.5
复制mailgraph_ext到/usr/local,并启动之
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext /usr/local
# / usr/local/mailgraph_ext/mailgraph-init start
若出现rrds.pm 错误 请执行以下命令
cp -rp /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
# /usr/local/mailgraph_ext/qmonitor-init start
添加到自动启动队列
echo “/usr/local/mailgraph_ext/mailgraph-init start” >> /etc/rc.local
echo “/usr/local/mailgraph_ext/qmonitor-init start” >> /etc/rc.local
好了,接下来您就可以到extman的后台查看图表日志了。局部效果如下图:
测试 smtp
通过以下命令获得 test@test.com 的用户名和密码的BASE64 编码
获得用户名BASE64编码
[root @test root] # perl -e ‘use MIME::Base64; print encode_base64(“test\@test.com”)’
dGVzdEB0ZXN0LmNvbQ==
获得密码BASE64编码
[root @test root] # perl -e ‘use MIME::Base64; print encode_base64(“test”)’
dGVzdA==
[root @test root] # telnet localhost 25
3Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 Welcome to our mail.test.com ESMTP, Warning:Version not Available!
ehlo mail.test.com
250-mail.test.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dGVzdEB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
dGVzdA==
235 2.0.0 Authentication successful
quit
221 2.0.0 Bye
Connection closed by foreign host.
测试 pop3
[root @test root] # telnet localhost 110
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
+OK Hello there.
user test@test.com
+OK Password required.
pass test
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.
注:以上蓝色部分是自己输入的命令。
启动所有服务:
[root @test root] # service mysqld start
[root @test root] # /usr/local/apache/bin/apachectl start
[root @test root] # service courier-authlib start
[root @test root] # service imapd start
[root @test root] # postfix start
至此,邮件系统算是基本成型,已经可以用邮件服务器收发邮件啦.
开始安装 maildrop
[root @test pcre-7.4] # groupadd -g 1001 vmail
[root @test pcre-7.4] # useradd -g vmail -u 1001 -M -s /bin/nologin vmail
[root @test pcre-7.4] # cd
[root @test root] # tar jxvf maildrop-2.0.2.tar.bz2
[root @test root] # cd maildrop-2.0.2
[root @test maildrop-2.0.2] # ./configure –prefix=/usr/local/maildrop –enable-sendmail=/usr/sbin/sendmail –enable-trusted-users=’root vmail’ –enable-syslog=1 –enable-maildirquota –enable-maildrop-uid=1001 –enable-maildrop-gid=1001 –with-trashquota –with-dirsync
[root @test maildrop-2.0.2] # make
[root @test maildrop-2.0.2] # make install
[root @test maildrop-2.0.2] # cp /usr/local/maildrop/bin/maildrop /usr/bin
运行 maildrop -v ,检查安装结果,请确保有“Courier Authentication Library extension enabled”这一句出现
[root @test maildrop-2.0.2] # maildrop -v
maildrop 2.0.2 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
新建配置文件 /etc/maildroprc,首先指定 maildrop 的日志文件存放地点
[root @test maildrop-2.0.2] # vi /etc/maildroprc
添加:
logfile “/var/log/maildrop.log”
[root @test maildrop-2.0.2] # touch /var/log/maildrop.log
[root @test maildrop-2.0.2] # chown vmail.vmail /var/log/maildrop.log
配置 postfix,
编辑 /etc/postfix/master.cf
[root @test maildrop-2.0.2] # vi /etc/postfix/master.cf
启用下面这两行,将前面的注释符号去掉
maildrop unix - n n – – pipe
flags=DRhu user=vmail argv=/usr/local/maildrop/bin/maildrop -d ${recipient}
编辑 /etc/postfix/main.cf
[root @test maildrop-2.0.2] # vi /etc/postfix/main.cf
将
virtual_transport = virtual
修改为
virtual_transport = maildrop
编辑 authmysqlrc文件
[root @test maildrop-2.0.2] # vi /usr/local/courier-authlib/etc/authlib/authmysqlrc
将
MYSQL_UID_FIELD ’2525′
MYSQL_GID_FIELD ’2525′
修改为
MYSQL_UID_FIELD ’1001’
MYSQL_GID_FIELD ’1001′
注意:如果没有修改此处,maildrop 可能会报“signal 0×06” 的错误报告
这一项需要重启验证服务
service courier-authlib restart
编辑 apache 的配置文件
[root @test maildrop-2.0.2] # vi /usr/local/apache/conf/httpd.conf
将
User postfix
Group postfix
修改成
User vmail
Group vmail
将用户邮件所在目录 /var/mailbox 和 extman 的临时目录 /tmp/extman 的属主和属组指定为 vmail
[root @test maildrop-2.0.2] # chown -R vmail.vmail /var/mailbox
[root @test maildrop-2.0.2] # chown -R vmail.vmail /tmp/extman
重新启动 apache 和 postfix
[root @test maildrop-2.0.2] # /usr/local/apache/bin/apachectl restart
如果没有重新启动 apache,将不能通过 web 收发邮件,提示如下错误:
[root @test maildrop-2.0.2] # postfix reload