基于虚拟用户的邮件系统

 

完整的邮件系统

 

1、安装所需的rpm包

yum install httpd php php-mysql mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL

tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect

 

2、关闭sendmail,并将它的随系统自动启动功能关闭:

# service sendmail stop

# chkconfig sendmail off

 

3、安装以下开发所用到的rpm包组:

Development Libraries

Development Tools

Legacy Software Development

X Software Development

 

 

4、启动mysql数据库,并给mysql的root用户设置密码:

# service mysqld start

# chkconfig mysqld on

# mysqladmin -u root password 'your_password'

 

 

5、启动saslauthd服务,并将其加入到自动启动队列:

# service saslauthd start

# chkconfig saslauthd on

 

 

二、安装配置postfix

 

1

 

tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src

cd postfix-2.6.5

 

编译文件

# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl

-DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'

# make

# make install

 

基于虚拟用户的邮件系统_用户

 

基于虚拟用户的邮件系统_的_02

 

安装之后可以正常发邮件

 

基于虚拟用户的邮件系统_的_03

 

vi /etc/postfix/main.cf 配置

 

基于虚拟用户的邮件系统_expect_04

 

基于虚拟用户的邮件系统_mysql_05

 

基于虚拟用户的邮件系统_的_06

 

基于虚拟用户的邮件系统_用户_07

 

三、为postfix开启基于cyrus-sasl的认证功能

 

vim /etc/postfix/main.cf

添加以下内容:

基于虚拟用户的邮件系统_expect_08

 

vim/usr/local/lib/sasl2/smtpd.conf

 

添加如下内容:

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN

启动 sasl服务

基于虚拟用户的邮件系统_用户_09

 

四、安装Courier authentication library

 

基于虚拟用户的邮件系统_用户_10

 

执行以下三个步骤

cd /usr/local/src/courier-authlib-0.62.4

1 ./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-ltdl-lib=/usr/lib --with-ltdl-include=/usr/include

2 make

3 make install

 

生成文件

基于虚拟用户的邮件系统_邮件系统_11

 

修改/etc/authdaemonrc 文件

authmodulelist="authmysql"

authmodulelistorig="authmysql"

基于虚拟用户的邮件系统_用户_12

 

编辑/etc/authmysqlrc

MYSQL_SERVER localhost

MYSQL_PORT 3306 (指定你的mysql监听的端口,这里使用默认的3306)

MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名)

MYSQL_PASSWORD extmail (密码)

MYSQL_SOCKET /var/lib/mysql/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/',homedir)

MYSQL_NAME_FIELD name

MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)

 

基于虚拟用户的邮件系统_expect_13

 

基于虚拟用户的邮件系统_的_14

 

完成验证服务

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

#mkdir –-pv /var/mailbox

#chown –R postfix /var/mailbox

 

五、让postfix支持虚拟域和虚拟用户

 

1、 编辑/etc/postfix/main.cf

基于虚拟用户的邮件系统_的_15

 

2、 使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:

tar zxvf extman-1.1.tar.gz

# cd extman-1.1/docs

 

基于虚拟用户的邮件系统_expect_16

 

3、授予用户extmail访问extmail数据库的权限

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>FLUSH PRIVILEGES; 让设置的内容生效

 

基于虚拟用户的邮件系统_mysql_17

 

六、配置dovecot

vim /etc/dovrcot.conf

 

基于虚拟用户的邮件系统_邮件系统_18

 

基于虚拟用户的邮件系统_的_19

 

把userdb的其他相关禁用

vim /etc/postfix/main.cf

#postfix的配置文件也要该

vim /etc/postfix/main.cf

home_mailbox = Maildir/

基于虚拟用户的邮件系统_expect_20

# vi /etc/dovecot-mysql.conf

基于虚拟用户的邮件系统_mysql_21

 

重启dovecot服务

# service dovecot start

# chkconfig dovecot on

 

七、安装Extmail-1.2 (先安装httpd)

 

1、配置

# tar zxvf extmail-1.2.tar.gz

# mkdir -pv /var/www/extsuite

# mv extmail-1.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

此处即为您在前文所设置的用户邮件的存放目录,可改作:

SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_USER = db_user

SYS_MYSQL_PASS = db_pass

以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

 

基于虚拟用户的邮件系统_邮件系统_22

 

SYS_MYSQL_HOST = localhost

指明数据库服务器主机名,这里默认即可

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

基于虚拟用户的邮件系统_用户_23

 

3、apache相关配置

配置/etc/httpd/httpd.conf

基于虚拟用户的邮件系统_mysql_24

 

基于虚拟用户的邮件系统_用户_25

 

修改 cgi执行文件属主为apache运行身份用户:

# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/

可以访问

 

基于虚拟用户的邮件系统_mysql_26

 

八、安装Extman-1.1

 

1、安装及基本配置

# tar zxvf extman-1.1.tar.gz

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

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

# cp /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf

# vi /var/www/extsuite/extman/webman.cf

基于虚拟用户的邮件系统_邮件系统_27

 

修改cgi目录的属主:

# chown -R postfix.postfix /var/www/extsuite/extman/cgi/

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

ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi

Alias /extman /var/www/extsuite/extman/html

 

基于虚拟用户的邮件系统_expect_28

 

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

#mkdir -pv /tmp/extman

#chown postfix.postfix /tmp/extman

依赖关系的解决

extmail将会用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。

# tar zxvf Unix-Syslog-0.100.tar.gz

# cd Unix-Syslog-0.100

# perl Makefile.PL

# make

 

基于虚拟用户的邮件系统_的_29

# make install

基于虚拟用户的邮件系统_用户_30

 

登陆

基于虚拟用户的邮件系统_的_31

 

基于虚拟用户的邮件系统_expect_32

 

建立两个不同的域

基于虚拟用户的邮件系统_mysql_33

 

基于虚拟用户的邮件系统_邮件系统_34

 

在每个域里注册一个账号

 

基于虚拟用户的邮件系统_的_35

 

互发信息

User1

 

基于虚拟用户的邮件系统_expect_36

 

给user2发信

基于虚拟用户的邮件系统_邮件系统_37

 

收到

基于虚拟用户的邮件系统_用户_38