免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 21458 | 回复: 31
打印 上一主题 下一主题

[Mail] RHEL5安装postfix+maildrop+mysql+imap 测试成功! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-17 15:27 |只看该作者 |倒序浏览
在半年前就想做一个自己的邮件但一直没有实现,从上次看完marion
发出来的那个RHEL4上安装基于postfix的全功能邮件服务器
心里边就载始痒痒,按照那个一步一步的做一直是出错。不过功夫不复有心人吗。最后还是做出来了。
我把我自己的步骤贴出来供大家参考。
希望大家给点意见。

这里的大部从还是marion  老兄上边的东西 只不过有一些小地方改了改。marion老兄遗漏的东西补充了一点
大家别骂我盗版就行,因为我也是在学习中……

有些地方显示错误  我把Word文档传上来.请大家指正!
文件下载地址


前提,安装RHEL5时把所有的开发工具装上。


一、安装mysql-5.0.45
#groupadd mysql
#useradd -g mysql -s /bin/false -M mysql
#tar zxvf mysql-5.0.51b.tar.gz
#cd mysql-5.0.51b.tar.gz
#./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
/soft/mysql-5.0.51b (
这里的目录指的是原压缩包解压后的目录)
#cp
support-files/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

以下为提示信息

mysqld is alive
#/usr/local/mysql/bin/mysqladmin
version

以下为提示信息

/usr/local/mysql/bin/mysqladmin
Ver 8.41 Distrib 5.0.51b, for redhat-linux-gnu on i686

Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version
5.0.51b-log

Protocol version
10

Connection
Localhost via UNIX socket

UNIX socket
/tmp/mysql.sock

Uptime:
4 min 23 sec


Threads: 1
Questions: 2
Slow queries: 0
Opens: 12
Flush tables: 1
Open tables: 6
Queries per second avg: 0.008

(/tmp/mysql.sock 注意这是mysql. sock的位置)
#/usr/local/mysql/bin/mysql –u root -p
mysql> grant all privileges on *.* to root@"%" identified by 'password' with grant option
这这命令是让root用户通过3066端口连到数据库。 Passwordroot的密码

配置库文件搜索路径

# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig -v
添加/usr/local/mysql/bin到环境变量PATH

#export PATH=$PATH:/usr/local/mysql/bin
ln -sv /usr/local/mysql/bin/* /usr/bin/
#service mysqld restart

至此mysql安装完成


二、安装openssl-0.9.8h.tar.gz
# tar zxvf openssl-0.9.8h.tar.gz
# cd openssl-0.9.8h
# ./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 -sv /usr/local/ssl/bin/openssl /usr/bin/openssl
# ln -sv /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
# ldconfig -v
检测安装结果

# openssl version
OpenSSL 0.9.8h 28 May 2008

三、安装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.22
/usr/lib/libsasl2.so.2.0.22.OFF

# mv /usr/lib/sasl2
/usr/lib/sasl2.OFF

# rm /usr/lib/libsasl2.so
# rm /usr/lib/libsasl2.so.2
#rm -rf /usr/sbin/pluginviewer
# rm -rf /usr/sbin/saslauthd
# rm -rf /usr/sbin/sasldblistusers2
# rm -rf /usr/sbin/saslpasswd2
# rm -rf /usr/sbin/testsaslauthd

# 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

# ln -sv /usr/local/sasl2/sbin/* /usr/sbin
# ln -sv /usr/local/sasl2/sbin/* /usr/local/sbin/
创建运行时需要的目录并调试启动

# mkdir -pv /var/state/saslauthd

启动并测试

# /usr/local/sbin/saslauthd -a shadow pam
# /usr/local/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
# ldconfig -v

开机自动启动

# echo "/usr/local/sbin/saslauthd -a shadow pam">>/etc/rc.local


[ 本帖最后由 tlinle 于 2008-10-17 15:25 编辑 ]

安装笔记_OK.rar

136.86 KB, 下载次数: 523

论坛徽章:
0
2 [报告]
发表于 2008-09-17 15:28 |只看该作者
四、安装BerkeleyDB


#tar zxvf db-4.7.25.tar.gz
#cd db-4.7.25/build_unix
#../dist/configure --prefix=/usr/local/BerkeleyDB
#make
#make install
修改相应的头文件指向

# mv /usr/include/db4/ /usr/include/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
# 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-cgi --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 --with-suexec-docroot=/var/www/extsuite/



#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
# vim /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>

说明:这个对本文来说并非是不可少的。


# vim /var/www/index.php

<?php phpinfo(); ?>

# chmod 755 /vaw/www/index.php

测试php
http://localhost


有这个出来 就说明正确安装


七、安装postfix-2.6-20080824
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.6-20080824.tar.gz
#cd postfix-2.6-20080824
#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: [/soft// postfix-2.4.5] /tmp
config_directory: [/etc/postfix] /etc/postfix
command_directory: [/usr/sbin] /usr/local/postfix/sbin
daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
data_directory: [/var/lib/postfix]  

  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效率极低:

#
mv /etc/aliases /etc/aliases.OFF

#
ln -sv /etc/postfix/aliases /etc/aliases

#
newaliases


2.进行一些基本配置,测试启动postfix并进行发信


# /usr/local/postfix/sbin/postconf -n > /etc/postfix/main.cf2
# mv /etc/postfix/main.cf /etc/postfix/main.cf.old
# mv /etc/postfix/main.cf2 /etc/postfix/main.cf
#vim /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参数指定您的域名,默认情况下,postfixmyhostname的第一部分删除而作为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

echo "/usr/local/postfix/sbin/postfix
start" >> /etc/rc.local

连接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@extmail.org
250 2.1.0 Ok
rcpt to:test@extmail.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 – test
$ mail
Mail version 8.1 6/6/93.
Type ? for help.

"/var/spool/mail/redhat": 1 message 1 new
>N
1 root@extmail.org
Wed Sep
5 10:59
15/488
"Mail test!"

&



[ 本帖最后由 tlinle 于 2008-9-17 15:35 编辑 ]

php.jpg (70.94 KB, 下载次数: 142)

php.jpg

论坛徽章:
0
3 [报告]
发表于 2008-09-17 15:29 |只看该作者
八、为postfix开启基于cyrus-sasl的认证功能


使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:

# /usr/local/postfix/sbin/postconf
-a

cyrus
dovecot

#vim /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!

#vim /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/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: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安装文件中获得,您也可以由此不用手动输入,在安完extman之后
cp -v /var/www/extsuite/extman/docs/mysql_virtual_* /etc/postfix/  ,就可以了。;

3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;

十、安装Courier authentication library

# tar jxvf courier-authlib-0.61.0.tar.bz2
# cd courier-authlib-0.61.0
#./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
# make install-migrate
# make install-configure

# 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 为以下内容,其中25252525 postfix 用户的UIDGID
#> /etc/authmysqlrc (清空原来的文件)
#vim /etc/authmysqlrc



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/mailbox/',maildir)

MYSQL_NAME_FIELD
name

MYSQL_MAILDIR_FIELD
concat('/var/mailbox/',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
(
启动服务)






论坛徽章:
0
4 [报告]
发表于 2008-09-17 15:30 |只看该作者
十一、安装Courier-IMAP

# tar jxvf courier-imap-4.4.1.tar.bz2
# cd courier-imap-4.4.1
#./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

# 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服务:

vim /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES

注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=YES";其它类同;


新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:

#mkdir -pv /var/mailbox
#chown -R postfix /var/mailbox
# chown -R postfix.postfix /var/mailbox

#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_listLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: localhost
sql_user: extmail
sql_passwd: extmail
sql_database: extmail
sql_select: select password from mailbox where username='%u'

从新启动 authlib
/etc/init.d/courier-authlib restart

十二、安装Extmail-1.0.2

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、修改主配置文件

#vim /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


3apache相关配置


由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDApostfix自带,因此将指定为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将会用到perlDBD::MysqlUnix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。

# tar zxvf Unix-Syslog-1.1.tar.gz
# cd Unix-Syslog-1.1
# perl Makefile.PL
# make
# make install

# tar -zxf DBI-1.58.tar.gz
# cd DBI-1.58
# perl Makefile.PL
# make
# make install

DBD-Mysql目前最新的版本为DBD-mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:

# 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.的错误是因为您的mysqlbin目录没有输出至$PATH环境变量)
# make
# make install

十三、安装Extman-0.2.2

1、安装及基本配置


#tar zxvf
extman-0.2.2.tar.gz

# mv extman-0.2.2 /var/www/extsuite/extman

修改配置文件以符合本例的需要:

# vim /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.sqlinit.sql建立数据库:


# cd /var/www/extsuite/extman/docs
# 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 extmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';

apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:

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

创建其运行时所需的临时目录,并修改其相应的权限:

#mkdir
-pv
/tmp/extman

#chown postfix.postfix
/tmp/extman



好了,到此为止,重新启动apache服务器后,您的WebmailExtman已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:

http://mail.benet.org
选择管理即可登入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的支持,您需要安装此些模块才可能正常显示图形日志。





[ 本帖最后由 tlinle 于 2008-9-17 15:39 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-09-17 15:31 |只看该作者
2、使用Extman的图形日志:


接下来安装图形日志的运行所需要的软件包Time::HiResFile::Tailrrdtool,其中前两个包您可以去http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。


安装Time::HiRes
#tar zxvf Time-HiRes-1.9715.tar.gz
#cd Time-HiRes-1.9715
#perl Makefile.PL
#make
#make test
#make install

安装File::Tail
#tar zxvf File-Tail-0.99.3.tar.gz
#cd File-Tail-0.99.3
#perl Makefile
#make
#make test
#make install

安装rrdtool-1.2.23
rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm
rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm
perl-GD-2.35-1.el5.rf.i386.rpm

复制mailgraph_ext/usr/local,并启动之

# cp -r /var/www/extsuite/extman/addon/mailgraph_ext /usr/local

# /usr/local/mailgraph_ext/mailgraph-init start
# /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的后台查看图表日志了。效果如下图:



注意:安装以上软件所之前,请确保您的系统已经安装了tcltcl-devellibartlibart-devel等相关的软件包;

十四、安装maildrop-2.0.4

maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中。


我们在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展后文的邮件杀毒和反垃圾邮件功能的调用;在此可能会修改前文中的许多设置,请确保您的设置也做了相应的修改。


1、安装


courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig
/usr/bin

# ln -sv /usr/local/courier-authlib/include/*
/usr/include


maildrop需要pcre的支持,因此,接下来将首先安装pcre
# tar jxvf pcre-7.3.tar.bz2
# cd pcre-7.3
# ./configure
# make
# make check
# make install

# groupadd -g 1001 vmail
# useradd -g vmail -u 1001 -M -s /sbin/nologin vmail
# tar jxvf maildrop-2.0.4.tar.bz2
# cd maildrop-2.0.4
#./configure --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

# make
# make install

检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:

# maildrop -v
maildrop 2.0.4 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.


2、新建其配置文件/etc/maildroprc文件,首先指定maildrop的日志记录位置:

# vim /etc/maildroprc
添加:

logfile "/var/log/maildrop.log"

# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log

3、配置Postfix

编辑master.cf
# vim /etc/postfix/master.cf
启用如下两行

maildrop unix - n n - - pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}


注意:定义transport的时候,即如上两行中的第二行,其参数行必须以空格开头,否则会出错。


编辑main.cf
# vim /etc/postfix/main.cf
virtual_transport = virtual
修改为:

virtual_transport = maildrop

将下面两项指定的UIDGID作相应的修改:
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
修改为:
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001


4、编辑/etc/authmysqlrc

# vim /etc/authmysqlrc
MYSQL_UID_FIELD '2525'
MYSQL_GID_FIELD '2525'
更改为:

MYSQL_UID_FIELD '1001'
MYSQL_GID_FIELD '1001'

注意:没有此处的修改,maildrop可能会报告 signal 0x06的错误报告。

5、编辑/etc/httpd/httpd.conf,修改运行用户:

如果启用了suexec的功能,则将虚拟主机中指定的

SuexecUserGroup postfix postfix
修改为:

SuexecUserGroup vmail vmail



6、将用户邮件所在的目录/var/mailboxextman的临时目录/tmp/extman的属主和属组指定为vmail
chown -R vmail.vmail /var/mailbox
chown -R vmail.vmail /tmp/extman
chown -R vmail.vmail /var/www/extsuite/extmail/cgi/
chown -R vmail.vmail /var/www/extsuite/extman/cgi/
chown -R vmail.vmail /tmp/viewlog/
/etc/init.d/courier-authlib restart
接下来重新启动postfixapache,进行发信测试后,如果日志中的记录类同以下项,则安装成功



Sep 16 12:04:43 Ixor postfix/pipe[14266]: 46B491A5CB: to=<marion@test.com>, relay=maildrop, delay=2306, delays=2306/0.04/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop service)

致此 postfix安装成功。
参考资料
http://blog.redzone.com.cn/read.php/36.htm
http://www.extmail.org
http://bbs.chinaunix.net/viewthread.php?tid=987344



[ 本帖最后由 tlinle 于 2008-9-18 13:12 编辑 ]

ext.jpg (47.69 KB, 下载次数: 136)

ext.jpg

论坛徽章:
0
6 [报告]
发表于 2008-09-17 18:40 |只看该作者
:em11: :em11:   
发贴幸苦   uP个!

论坛徽章:
0
7 [报告]
发表于 2008-09-17 20:12 |只看该作者
强!!楼主辛苦了,学习精神可佳,值得学习

我也是从Ma兄的这篇文章开始接触Postfix的,因为他实在太详细了,非常适合初学者,非常感谢MA兄,已经模仿安装三遍以上,后来又看了Fengyong兄的文章,深受启发,能结合强大的yum在线安装工具,简直是事半功倍;

论坛徽章:
0
8 [报告]
发表于 2008-09-17 22:41 |只看该作者
不错。

请问楼主,此系统的邮件限额quota 能正常工作吗?

因为我看到MDA 为maildrop,但quota 方面的设置是加在virtual 上。
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

[ 本帖最后由 anthonyfeng 于 2008-9-17 23:02 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-09-18 13:10 |只看该作者
在我这可以正常干活的.

论坛徽章:
0
10 [报告]
发表于 2008-09-19 18:37 |只看该作者
我是菜鸟,想问问如果要加新用户的时候,怎么加他的邮件?还有就是如何更改他的邮件密码?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP