RHEL4上搭建基于postfix的全功能邮件服务器
2010-04-23 11:58
639 查看
RHEL4上搭建基于postfix的全功能
邮件服务器(全目前最新源码)
本文凝聚了作者不少的安装经验,写出来供各位同仁参考指正,也为自己留一个“备份”,以便以后安装时作为参照!安
装过程中借鉴了不少google出来的文章,是你们先行的足迹为作者今天的成功打下了基础,在此先行谢过!
转载请注明出处:http://marion.cublog.cn
系统逻辑结构:
前提:使用时请确保您已经配
置好指向此邮件服务器MX记录及其它DNS设置;本示例中的域名为benet.org,邮件服务器FQDN为mail.benet.org、www.benet.org
、postfix.benet.org,IP地址为
192.168.1.6;同时,如果您的服务器事先已经安装了sendmail,请卸载之;
所用软件包:
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.0.2
Extman-0.2.2
maildrop-2.0.4
clamav-0.91.2
amavisd-new
SpamAssassin-3.2.3
一、安装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.old
mv /usr/include/openssl /usr/include/openssl.old
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
如果出现下面的错误:
auth_getpwent.c:48:20: des.h:
No such file or directory
make[3]: *** [auth_getpwent.o] Error 1
make[3]: Leaving directory `/tmp/cyrus-sasl-2.1.21/saslauthd'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/tmp/cyrus-sasl-2.1.21/saslauthd'
make[1]: *** [all-recursive]
Error 1
make[1]: Leaving directory `/tmp/cyrus-sasl-2.1.21'
make: *** [all] Error 2
修改/tmp/cyrus-sasl-2.1.21/saslauthd
/Makefiles内的变量CFLAGS添加-I/opt/openssl/include/openssl
或者直接
mail~#cp /tmp/cyrus-sasl-2.1.21/mac/libdes/public/des.h
/tmp/cyrus-sasl-2.1.21/
关闭原有的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 /
--sysconfdir=/etc/httpd
/
--enable-so /
--enable-ssl /
--with-ssl=/usr/local/ssl /
--enable-track-vars
/
--enable-rewrite /
--with-zlib /
--enable-mods-shared=most /
--enable-suexec
/
--with-suexec-caller=daemon
#make
#make install
#echo
"/usr/local/apache/bin/apachectl start" >>
/etc/rc.local(系统启动时服务自动启动)
六、安装php-5.2.3
#jpeg目录
mkdir
/usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir
/usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir
/usr/local/jpeg6/man
mkdir /usr/local/jpeg6/man/man1
安装zlib
tar xzvf zlib-1.2.2.tar.gz
cd zlib-1.2.2
#不要用--prefix自定义安装目
录,影响gd的安装
./configure
make
make install
安装freetype
tar xzvf freetype-2.1.5.tar.gz
cd freetype-2.1.5
./configure
--prefix=/usr/local/freetype
make
make install
安装libpng
tar xzvf libpng-1.2.5.tar.gz
#不要用--prefix自定义安装目录,影响gd的安装
cd
libpng-1.2.5
cp scripts/makefile.std makefile
make test
make
install
安装jpeg
tar xzvf jpegsrc.v6b.tar.gz
./configure
--prefix=/usr/local/jpeg6 --enable-shared --enable-static
make
make
install
安装GD
tar xzvf gd-2.0.33.tar.gz
./configure
--prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg6 --with-png
--with-zlib --with-freetype=/usr/local/freetype
make
make
install
安装PHP
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-dir=/usr/local/jpeg6 /
--with-zlib
/
--with-freetype-dir=/usr/local/freetype /
--with-gd=/usr/local/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.安装
groupadd -g 2525 postfix
useradd -g
postfix -u 2525 -s /sbin/nologin -M postfix
groupadd -g 2526 postdrop
useradd
-g postdrop -u 2526 -s /bin/false -M postdrop
#tar zxvf
postfix-2.4.5.tar.gz
#cd 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'
#make
#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将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方
便些;
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
# newaliases
2.
进行一些基本配置,测试启动postfix并进行发信
#vi /etc/postfix/main.cf
修改以下几项为您需要的配置
myhostname
= mail.benet.org
myorigin = benet.org
mydomain = benet.org
mydestination
= $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks =
192.168.1.0/24, 127.0.0.0/8
说明:
myorigin参数用来指明发件人所在的域名;
mydestination
参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
myhostname
参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默认情况
下,postfix将myhostname的第一部分删除而作为mydomain的值;
mynetworks
参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces
参数指定postfix系统监听的网络接口;
注意:
1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2、
任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3、每修改参数及其值后执行 postfix reload
即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4、如果一个参数的值有多个,可以将它们放在不同的行
中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
启动
postfix
/usr/local/postfix/sbin/postfix start
连接postfix,验正服务启动
状况:
# telnet localhost 25
Trying 127.0.0.1...
Connected to
localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220
mail.benet.org ESMTP Postfix
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE
10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250
DSN
mail from:root@benet.org
250 2.1.0 Ok
rcpt
to:redhat@benet.org
250 2.1.5 Ok
data
354 End data with
<CR><LF>.<CR><LF>
subject:Mail test!
Mail
test!!!
.
250 2.0.0 Ok: queued as AB94A1A561
quit
221 2.0.0
Bye
Connection closed by foreign host.
切换到redhat用户进行收信:
#
su - redhat
$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/redhat":
1 message 1 new
>N 1 root@benet.org
Wed Sep 5 10:59 15/488 "Mail test!"
&
八、为postfix开启基于
cyrus-sasl的认证功能
使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支
持的:
# /usr/local/postfix/sbin/postconf -a
cyrus
dovecot
#vi
/etc/postfix/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_application_name = smtpd
smtpd_banner =
Welcome to our $myhostname ESMTP,Warning: Version not Available!
#vi
/usr/local/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list:
PLAIN LOGIN
让postfix重新加载配置文件
#/usr/local/postfix/sbin/postfix
reload
# telnet localhost 25
Trying 127.0.0.1...
Connected
to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220
Welcome to our mail.benet.org ESMTP,Warning: Version not Available!
ehlo
mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE
10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN
LOGIN (请确保您的输出以类似两行)
250-ENHANCEDSTATUSCODES
250-8BITMIME
250
DSN
九、让postfix支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如
下内容:
########################Virtual Mailbox
Settings########################
virtual_mailbox_base =
/var/spool/mail
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:2525
virtual_gid_maps = static:2525
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 user's maildir has
overdrawn his diskspace quota, please Tidy your mailbox and try again
later.
virtual_overquota_bounce = yes
2、添加为支持虚拟域和虚拟用户所用到的配置文件
编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
user =
extmail
password = extmail
hosts = localhost
dbname = extmail
table
= alias
select_field = goto
where_field = address
编辑/etc
/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
user = extmail
password
= extmail
hosts = localhost
dbname = extmail
table = domain
select_field
= description
where_field = domain
编辑/etc/postfix
/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
user = extmail
password
= extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field
= quota
where_field = username
编辑/etc/postfix
/mysql_virtual_mailbox_maps.cf ,添加如下内容:
user = extmail
password =
extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field
= maildir
where_field = username
说明:
1、这里用到的数据库及用户的建立可
以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;
2、以上新建文件亦可以从extman安装文
件中获得,您也可以由此不用手动输入;
3、虚拟用户邮箱目录我这里沿用了/var/spool/mail,你可以指定为别的目录,比如常见到的
/var/mailbox,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;
十、安装
Courier authentication library
http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.59.3.tar.bz2
# 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 /
--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
#
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('/var/spool/mail/',maildir)
MYSQL_NAME_FIELD
name
MYSQL_MAILDIR_FIELD concat('/var/spool/mail/',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
(启动服务)
# netstat -antl|grep :25
tcp 0 0
0.0.0.0:25 0.0.0.0:* LISTEN
十一、
安装Courier-IMAP-4.1.3
http://nchc.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.3.tar.bz2
# 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
##############出现错误start@@@@@@@@@@@@@@@@@@@
./.libs/libcouriertls.a(libcouriertls.o):
In function `init_session_cache':
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:590:
undefined reference to `SSL_CTX_sess_set_new_cb'
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:591:
undefined reference to `SSL_CTX_sess_set_get_cb'
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:592:
undefined reference to `SSL_CTX_sess_set_remove_cb'
collect2: ld
returned 1 exit status
make[3]: *** [couriertls] 错误 1
make[3]:
Leaving directory `/usr/local/courier-imap-4.1.3/tcpd'
make[2]: ***
[all] 错误 2
make[2]: Leaving directory
`/usr/local/courier-imap-4.1.3/tcpd'
make[1]: *** [all-recursive] 错误 1
make[1]:
Leaving directory `/usr/local/courier-imap-4.1.3'
make: *** [all] 错误
2
解决方法:更新了openssl到openssl-0.9.8f
ps:极有可能是我openssl-0.9.8e没有装好
tar
zxvf openssl-0.9.8f.tar.gz
cd openssl-0.9.8f
./config shared zlib
make
make test
make install
#不再备份是因为之前已经备份!
rm -rf
/usr/bin/openssl
rm -rf /usr/include/openssl
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
终于可以通过make
##############
出现错误end@@@@@@@@@@@@@@@@@@@
# make install
# 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 /var/spool/mail
#chown
postfix -R /var/spool/mail
#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
#netstat
-antl|grep :110
tcp 0 0 0.0.0.0:110
0.0.0.0:* LISTEN
接下来重新配置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
十二、安装Extmail-1.0.2
http://www.extmail.org/cgi-bin/download.cgi
1、安装
# tar zxvf extmail-1.0.2.tar.gz
# mkdir -pv
/var/www/extsuite
# mv extmail-1.0.2 /var/www/extsuite/extmail
#
cp /var/www/extsuite/extmail/webmail.cf.default
/var/www/extsuite/extmail/webmail.cf
2、修改主配置文件
#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
此处即为您在前文所设置的用户邮件的存放目
录,可改作(要根据签名postfix的位置一致):
SYS_MAILDIR_BASE = /var/spool/mail
SYS_MYSQL_USER
= db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服
务器用到的数据库,这里修改为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = 123456
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
3、
apache相关配置
由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的
用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指
定为postfix用户:
<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot
/var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi
/var/www/extsuite/extmail/cgi
Alias /extmail
/var/www/extsuite/extmail/html
SuexecUserGroup postfix postfix
</VirtualHost>
修改 cgi执行文件属主为apache运行身份用户:
# chown -R postfix.postfix
/var/www/extsuite/extmail/cgi/
如果您没有打开apache服务器的suexec功能,也可以使用以下方
法解决:
# vi /etc/httpd/httpd.conf
User postfix
Group postfix
<VirtualHost
*:80>
ServerName mail.benet.org
DocumentRoot
/var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi
/var/www/extsuite/extmail/cgi
Alias /extmail
/var/www/extsuite/extmail/html
</VirtualHost>
4、依赖关系的解决
extmail将会用到perl的DBD::Mysql和Unix::syslogd功能,您可以去http://search.cpan.org
搜索下载原码包进行安装。
http://cpan.modperl.cn/authors/id/M/MH/MHARNISCH/Unix-Syslog-1.0.tar.gz
#
tar zxvf Unix-Syslog-0.100.tar.gz
# cd Unix-Syslog-0.100
# perl
Makefile.PL
# make
# make install
DBD-Mysql目前最新的版本为DBD-
mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
PATH=/usr/local/mysql/bin:$PATH;
export PATH
rpm -qa perl-DBI #没有就安装
rpm -ivh
perl-DBI-1.53-2.fc7.i386.rpm
# tar zxvf DBD-mysql-3.0002_4.tar.gz
#
cd cd 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环境变量)
# make
# make install
好
了,到此为止,您的Webmail已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:
http://mail.benet.org
十三、安装
Extman-0.2.2
http://www.extmail.org/cgi-bin/download.cgi
#tar zxvf extman-0.2.2.tar.gz
# mv extman-0.2.2
/var/www/extsuite/extman
修改配置文件以符合本例的需要:
# vi
/var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE =
/home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE =
/var/spool/mail
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此
处修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
使用extman源码目录下docs目录中的
extmail.sql和init.sql建立数据库:
# mysql -u root -p <extmail.sql
#
mysql -u root -p <init.sql
修改cgi目录的属主:
# chown -R
postfix.postfix /var/www/extsuite/extman/cgi/
如果extman访问数据库权限不足的
话,可采用以下命令将新生成的数据库赋予webman用户具有所有权限:
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';
在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
ScriptAlias
/extman/cgi /var/www/extsuite/extman/cgi
Alias /extman
/var/www/extsuite/extman/html
重新启动apache服务器,即可使用Extman了。默认管理帐号为:root@extmail.org
密码为:extmail*123*
有验证码问题,需要安装perl-gd库,我安了一下报错,干脆屏蔽这个功能
修改/var/www/extsuite/extman
/webman.cf
SYS_CAPTCHA_ON = 0
取消验证就改成0
perl-gd下载安装就行了
[url=>http://www.extmail.org/forum/thread-1747-1-1.html
安
装ExtMan手记(extman-0.15-20060518)
1,下载相关软件:
[Copy to clipboard] [
- ]CODE:
extman-0.15-20060518.tar.gz
File-Tail-
0.99.3.tar.gz(extman需要)
libart_lgpl-2.3.17.tar.gz(rrdtool需要)
rrdtool-1.2.13.tar.gz
Time-
HiRes-1.87.tar.gz(extman需要)
2,安装libart_lgpl
[Copy to
clipboard] [ - ]CODE:
./configure --prefix=/usr &&
make
&&
make install
3,安装rrdtool-1.2.13
[Copy to
clipboard] [ - ]CODE:
./configure &&
make &&
make
install
ln -s rrdtool-1.2.13 rrdtool (建立连接,部分脚本文件调用命令的时候使用rrdtool路径)
cd
/usr/local/rrdtool-1.2.13/lib/perl/5.8.7
cp -pR *
/usr/lib/perl5/5.8.7/
(将RRD的perl模块复制到系统的perl目录,在安装RRDTOOL的时候可以指定perl模块的安装目录)
注意:安装rrdtool的时
候可能需要其它的依赖软件你没有安装,请安装相应的软件。
4,安装perl_File-Tail
[Copy to
clipboard] [ - ]CODE:
cd File-Tail-0.99.3 &&
perl
Makefile.PL &&
make &&
make install
5,安装
perl_Time-HiRes
[Copy to clipboard] [ - ]CODE:
cd
Time-HiRes-1.87 &&
perl Makefile.PL &&
make
&&
make install
配置Mailgraph_ext
XiaoHui 补充:
此模块主要是为提供图形化显示日志的能力。可以不必安装。
自ExtMan 0.14-pre2
开始,系统集成了Mailgraph_ext插件,该插件使extman具备图形化显示邮件日志的能力。mailgraph_ext融合了
mailgraph和queuegraph两个软件包,除增加了更多的日志分析及图形显示能力外,还重写了web模块,集成到ExtMan后台里,这样邮
件日志将只能给经过授权的用户查看,提高了安全性。
mailgraph_ext及Extman都需要安装rrdtool工具
必
需的软件包
- Perl 5.6+ (建议5.8以上)
- rrdtool 及rrdtool的perl包,地址:
邮件服务器(全目前最新源码)
本文凝聚了作者不少的安装经验,写出来供各位同仁参考指正,也为自己留一个“备份”,以便以后安装时作为参照!安
装过程中借鉴了不少google出来的文章,是你们先行的足迹为作者今天的成功打下了基础,在此先行谢过!
转载请注明出处:http://marion.cublog.cn
系统逻辑结构:
前提:使用时请确保您已经配
置好指向此邮件服务器MX记录及其它DNS设置;本示例中的域名为benet.org,邮件服务器FQDN为mail.benet.org、www.benet.org
、postfix.benet.org,IP地址为
192.168.1.6;同时,如果您的服务器事先已经安装了sendmail,请卸载之;
所用软件包:
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.0.2
Extman-0.2.2
maildrop-2.0.4
clamav-0.91.2
amavisd-new
SpamAssassin-3.2.3
一、安装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.old
mv /usr/include/openssl /usr/include/openssl.old
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
如果出现下面的错误:
auth_getpwent.c:48:20: des.h:
No such file or directory
make[3]: *** [auth_getpwent.o] Error 1
make[3]: Leaving directory `/tmp/cyrus-sasl-2.1.21/saslauthd'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/tmp/cyrus-sasl-2.1.21/saslauthd'
make[1]: *** [all-recursive]
Error 1
make[1]: Leaving directory `/tmp/cyrus-sasl-2.1.21'
make: *** [all] Error 2
修改/tmp/cyrus-sasl-2.1.21/saslauthd
/Makefiles内的变量CFLAGS添加-I/opt/openssl/include/openssl
或者直接
mail~#cp /tmp/cyrus-sasl-2.1.21/mac/libdes/public/des.h
/tmp/cyrus-sasl-2.1.21/
关闭原有的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 /
--sysconfdir=/etc/httpd
/
--enable-so /
--enable-ssl /
--with-ssl=/usr/local/ssl /
--enable-track-vars
/
--enable-rewrite /
--with-zlib /
--enable-mods-shared=most /
--enable-suexec
/
--with-suexec-caller=daemon
#make
#make install
#echo
"/usr/local/apache/bin/apachectl start" >>
/etc/rc.local(系统启动时服务自动启动)
六、安装php-5.2.3
#jpeg目录
mkdir
/usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir
/usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir
/usr/local/jpeg6/man
mkdir /usr/local/jpeg6/man/man1
安装zlib
tar xzvf zlib-1.2.2.tar.gz
cd zlib-1.2.2
#不要用--prefix自定义安装目
录,影响gd的安装
./configure
make
make install
安装freetype
tar xzvf freetype-2.1.5.tar.gz
cd freetype-2.1.5
./configure
--prefix=/usr/local/freetype
make
make install
安装libpng
tar xzvf libpng-1.2.5.tar.gz
#不要用--prefix自定义安装目录,影响gd的安装
cd
libpng-1.2.5
cp scripts/makefile.std makefile
make test
make
install
安装jpeg
tar xzvf jpegsrc.v6b.tar.gz
./configure
--prefix=/usr/local/jpeg6 --enable-shared --enable-static
make
make
install
安装GD
tar xzvf gd-2.0.33.tar.gz
./configure
--prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg6 --with-png
--with-zlib --with-freetype=/usr/local/freetype
make
make
install
安装PHP
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-dir=/usr/local/jpeg6 /
--with-zlib
/
--with-freetype-dir=/usr/local/freetype /
--with-gd=/usr/local/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.安装
groupadd -g 2525 postfix
useradd -g
postfix -u 2525 -s /sbin/nologin -M postfix
groupadd -g 2526 postdrop
useradd
-g postdrop -u 2526 -s /bin/false -M postdrop
#tar zxvf
postfix-2.4.5.tar.gz
#cd 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'
#make
#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将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方
便些;
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
# newaliases
2.
进行一些基本配置,测试启动postfix并进行发信
#vi /etc/postfix/main.cf
修改以下几项为您需要的配置
myhostname
= mail.benet.org
myorigin = benet.org
mydomain = benet.org
mydestination
= $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks =
192.168.1.0/24, 127.0.0.0/8
说明:
myorigin参数用来指明发件人所在的域名;
mydestination
参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
myhostname
参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默认情况
下,postfix将myhostname的第一部分删除而作为mydomain的值;
mynetworks
参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces
参数指定postfix系统监听的网络接口;
注意:
1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2、
任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3、每修改参数及其值后执行 postfix reload
即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4、如果一个参数的值有多个,可以将它们放在不同的行
中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
启动
postfix
/usr/local/postfix/sbin/postfix start
连接postfix,验正服务启动
状况:
# telnet localhost 25
Trying 127.0.0.1...
Connected to
localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220
mail.benet.org ESMTP Postfix
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE
10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250
DSN
mail from:root@benet.org
250 2.1.0 Ok
rcpt
to:redhat@benet.org
250 2.1.5 Ok
data
354 End data with
<CR><LF>.<CR><LF>
subject:Mail test!
test!!!
.
250 2.0.0 Ok: queued as AB94A1A561
quit
221 2.0.0
Bye
Connection closed by foreign host.
切换到redhat用户进行收信:
#
su - redhat
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/redhat":
1 message 1 new
>N 1 root@benet.org
Wed Sep 5 10:59 15/488 "Mail test!"
&
八、为postfix开启基于
cyrus-sasl的认证功能
使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支
持的:
# /usr/local/postfix/sbin/postconf -a
cyrus
dovecot
#vi
/etc/postfix/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_application_name = smtpd
smtpd_banner =
Welcome to our $myhostname ESMTP,Warning: Version not Available!
#vi
/usr/local/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list:
PLAIN LOGIN
让postfix重新加载配置文件
#/usr/local/postfix/sbin/postfix
reload
# telnet localhost 25
Trying 127.0.0.1...
Connected
to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220
Welcome to our mail.benet.org ESMTP,Warning: Version not Available!
ehlo
mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE
10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN
LOGIN (请确保您的输出以类似两行)
250-ENHANCEDSTATUSCODES
250-8BITMIME
250
DSN
九、让postfix支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如
下内容:
########################Virtual Mailbox
Settings########################
virtual_mailbox_base =
/var/spool/mail
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:2525
virtual_gid_maps = static:2525
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 user's maildir has
overdrawn his diskspace quota, please Tidy your mailbox and try again
later.
virtual_overquota_bounce = yes
2、添加为支持虚拟域和虚拟用户所用到的配置文件
编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
user =
extmail
password = extmail
hosts = localhost
dbname = extmail
table
= alias
select_field = goto
where_field = address
编辑/etc
/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
user = extmail
password
= extmail
hosts = localhost
dbname = extmail
table = domain
select_field
= description
where_field = domain
编辑/etc/postfix
/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
user = extmail
password
= extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field
= quota
where_field = username
编辑/etc/postfix
/mysql_virtual_mailbox_maps.cf ,添加如下内容:
user = extmail
password =
extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field
= maildir
where_field = username
说明:
1、这里用到的数据库及用户的建立可
以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;
2、以上新建文件亦可以从extman安装文
件中获得,您也可以由此不用手动输入;
3、虚拟用户邮箱目录我这里沿用了/var/spool/mail,你可以指定为别的目录,比如常见到的
/var/mailbox,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;
十、安装
Courier authentication library
http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.59.3.tar.bz2
# 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 /
--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
#
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('/var/spool/mail/',maildir)
MYSQL_NAME_FIELD
name
MYSQL_MAILDIR_FIELD concat('/var/spool/mail/',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
(启动服务)
# netstat -antl|grep :25
tcp 0 0
0.0.0.0:25 0.0.0.0:* LISTEN
十一、
安装Courier-IMAP-4.1.3
http://nchc.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.3.tar.bz2
# 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
##############出现错误start@@@@@@@@@@@@@@@@@@@
./.libs/libcouriertls.a(libcouriertls.o):
In function `init_session_cache':
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:590:
undefined reference to `SSL_CTX_sess_set_new_cb'
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:591:
undefined reference to `SSL_CTX_sess_set_get_cb'
/usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:592:
undefined reference to `SSL_CTX_sess_set_remove_cb'
collect2: ld
returned 1 exit status
make[3]: *** [couriertls] 错误 1
make[3]:
Leaving directory `/usr/local/courier-imap-4.1.3/tcpd'
make[2]: ***
[all] 错误 2
make[2]: Leaving directory
`/usr/local/courier-imap-4.1.3/tcpd'
make[1]: *** [all-recursive] 错误 1
make[1]:
Leaving directory `/usr/local/courier-imap-4.1.3'
make: *** [all] 错误
2
解决方法:更新了openssl到openssl-0.9.8f
ps:极有可能是我openssl-0.9.8e没有装好
tar
zxvf openssl-0.9.8f.tar.gz
cd openssl-0.9.8f
./config shared zlib
make
make test
make install
#不再备份是因为之前已经备份!
rm -rf
/usr/bin/openssl
rm -rf /usr/include/openssl
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
终于可以通过make
##############
出现错误end@@@@@@@@@@@@@@@@@@@
# make install
# 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 /var/spool/mail
#chown
postfix -R /var/spool/mail
#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
#netstat
-antl|grep :110
tcp 0 0 0.0.0.0:110
0.0.0.0:* LISTEN
接下来重新配置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
十二、安装Extmail-1.0.2
http://www.extmail.org/cgi-bin/download.cgi
1、安装
# tar zxvf extmail-1.0.2.tar.gz
# mkdir -pv
/var/www/extsuite
# mv extmail-1.0.2 /var/www/extsuite/extmail
#
cp /var/www/extsuite/extmail/webmail.cf.default
/var/www/extsuite/extmail/webmail.cf
2、修改主配置文件
#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
此处即为您在前文所设置的用户邮件的存放目
录,可改作(要根据签名postfix的位置一致):
SYS_MAILDIR_BASE = /var/spool/mail
SYS_MYSQL_USER
= db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服
务器用到的数据库,这里修改为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = 123456
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
3、
apache相关配置
由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的
用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指
定为postfix用户:
<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot
/var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi
/var/www/extsuite/extmail/cgi
Alias /extmail
/var/www/extsuite/extmail/html
SuexecUserGroup postfix postfix
</VirtualHost>
修改 cgi执行文件属主为apache运行身份用户:
# chown -R postfix.postfix
/var/www/extsuite/extmail/cgi/
如果您没有打开apache服务器的suexec功能,也可以使用以下方
法解决:
# vi /etc/httpd/httpd.conf
User postfix
Group postfix
<VirtualHost
*:80>
ServerName mail.benet.org
DocumentRoot
/var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi
/var/www/extsuite/extmail/cgi
Alias /extmail
/var/www/extsuite/extmail/html
</VirtualHost>
4、依赖关系的解决
extmail将会用到perl的DBD::Mysql和Unix::syslogd功能,您可以去http://search.cpan.org
搜索下载原码包进行安装。
http://cpan.modperl.cn/authors/id/M/MH/MHARNISCH/Unix-Syslog-1.0.tar.gz
#
tar zxvf Unix-Syslog-0.100.tar.gz
# cd Unix-Syslog-0.100
# perl
Makefile.PL
# make
# make install
DBD-Mysql目前最新的版本为DBD-
mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
PATH=/usr/local/mysql/bin:$PATH;
export PATH
rpm -qa perl-DBI #没有就安装
rpm -ivh
perl-DBI-1.53-2.fc7.i386.rpm
# tar zxvf DBD-mysql-3.0002_4.tar.gz
#
cd cd 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环境变量)
# make
# make install
好
了,到此为止,您的Webmail已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:
http://mail.benet.org
十三、安装
Extman-0.2.2
http://www.extmail.org/cgi-bin/download.cgi
#tar zxvf extman-0.2.2.tar.gz
# mv extman-0.2.2
/var/www/extsuite/extman
修改配置文件以符合本例的需要:
# vi
/var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE =
/home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE =
/var/spool/mail
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此
处修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
使用extman源码目录下docs目录中的
extmail.sql和init.sql建立数据库:
# mysql -u root -p <extmail.sql
#
mysql -u root -p <init.sql
修改cgi目录的属主:
# chown -R
postfix.postfix /var/www/extsuite/extman/cgi/
如果extman访问数据库权限不足的
话,可采用以下命令将新生成的数据库赋予webman用户具有所有权限:
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';
在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
ScriptAlias
/extman/cgi /var/www/extsuite/extman/cgi
Alias /extman
/var/www/extsuite/extman/html
重新启动apache服务器,即可使用Extman了。默认管理帐号为:root@extmail.org
密码为:extmail*123*
有验证码问题,需要安装perl-gd库,我安了一下报错,干脆屏蔽这个功能
修改/var/www/extsuite/extman
/webman.cf
SYS_CAPTCHA_ON = 0
取消验证就改成0
perl-gd下载安装就行了
[url=>http://www.extmail.org/forum/thread-1747-1-1.html
安
装ExtMan手记(extman-0.15-20060518)
1,下载相关软件:
[Copy to clipboard] [
- ]CODE:
extman-0.15-20060518.tar.gz
File-Tail-
0.99.3.tar.gz(extman需要)
libart_lgpl-2.3.17.tar.gz(rrdtool需要)
rrdtool-1.2.13.tar.gz
Time-
HiRes-1.87.tar.gz(extman需要)
2,安装libart_lgpl
[Copy to
clipboard] [ - ]CODE:
./configure --prefix=/usr &&
make
&&
make install
3,安装rrdtool-1.2.13
[Copy to
clipboard] [ - ]CODE:
./configure &&
make &&
make
install
ln -s rrdtool-1.2.13 rrdtool (建立连接,部分脚本文件调用命令的时候使用rrdtool路径)
cd
/usr/local/rrdtool-1.2.13/lib/perl/5.8.7
cp -pR *
/usr/lib/perl5/5.8.7/
(将RRD的perl模块复制到系统的perl目录,在安装RRDTOOL的时候可以指定perl模块的安装目录)
注意:安装rrdtool的时
候可能需要其它的依赖软件你没有安装,请安装相应的软件。
4,安装perl_File-Tail
[Copy to
clipboard] [ - ]CODE:
cd File-Tail-0.99.3 &&
perl
Makefile.PL &&
make &&
make install
5,安装
perl_Time-HiRes
[Copy to clipboard] [ - ]CODE:
cd
Time-HiRes-1.87 &&
perl Makefile.PL &&
make
&&
make install
配置Mailgraph_ext
XiaoHui 补充:
此模块主要是为提供图形化显示日志的能力。可以不必安装。
自ExtMan 0.14-pre2
开始,系统集成了Mailgraph_ext插件,该插件使extman具备图形化显示邮件日志的能力。mailgraph_ext融合了
mailgraph和queuegraph两个软件包,除增加了更多的日志分析及图形显示能力外,还重写了web模块,集成到ExtMan后台里,这样邮
件日志将只能给经过授权的用户查看,提高了安全性。
mailgraph_ext及Extman都需要安装rrdtool工具
必
需的软件包
- Perl 5.6+ (建议5.8以上)
- rrdtool 及rrdtool的perl包,地址:
相关文章推荐
- ·RHEL4上搭建基于postfix的全功能邮件服务器(续前篇)
- RHEL4上安装基于postfix的全功能邮件服务器
- RHEL4上安装基于postfix的全功能邮件服务器
- RHEL4上安装基于postfix的全功能邮件服务器(热心网友对系统功能的进一步扩充)
- RHEL4上搭建基于postfix的全功能邮件服务器(全目前最新源码)
- (4) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- (6) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- 源码搭建lamp+postfix全功能邮件服务器
- 源码搭建lamp+postfix全功能邮件服务器
- linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件
- RHEL4上安装基于postfix的全功能邮件服务器(全目前最新源码)
- (5) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建)(1)
- (1) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建) (2)
- CentOS5.1上安装基于postfix的全功能邮件服务器
- (2) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- (3) [Mail]RHEL4上安装基于postfix的全功能邮件服务器
- 借助postfix搭建基于虚拟账户的邮件服务器
- CentOS7下搭建postfix邮件服务器实现extmail的web访问