配置基于虚拟账号的邮件服务系统

wps_clip_image-24610

根据上面的图,可以一步一步完成:

一、配置基本环境:

先确定服务器的地址:

wps_clip_image-28757

然后根据需要做dns指向:

wps_clip_image-22284

wps_clip_image-6756

wps_clip_image-29075

wps_clip_image-12629

删掉hosts中无用的信息:

wps_clip_image-26448

wps_clip_image-22028

然后搭建DNS:

建个光盘挂载点:

wps_clip_image-18051

wps_clip_image-13065

wps_clip_image-6117

下面要安装一些有依赖性软件包,所以编辑个yum客户端:

wps_clip_image-32120

wps_clip_image-5630

保存退出,搭建dns环境:

安装bind包:

wps_clip_image-8094

wps_clip_image-15444

wps_clip_image-24542

wps_clip_image-21741

拷贝一份样例文件到当前目录下,拷贝时,要加上-p,把模式也拷贝过来,不然是启动不了:

wps_clip_image-12455

wps_clip_image-7926

wps_clip_image-30982

wps_clip_image-16269

wps_clip_image-25279

保存退出;然后编辑区域声明文件:

wps_clip_image-30215

wps_clip_image-25098

wps_clip_image-5920

然后进入这个区域文件目录下,并拷贝个样例文件,生成a.org.zone这个文件:

wps_clip_image-3183

再编辑里面的内容:

wps_clip_image-12028

wps_clip_image-16218

启动dns:

wps_clip_image-26595

因为sendmail是开机自动启动的,所以关闭sendmail避免和postfix冲突:

wps_clip_image-23634

然后安装所需的rpm包,有以下这些需要apache、mysql、php以及必要的库文件等等:

wps_clip_image-1046

也就是这个命令行:

yum install httpd php php-mysql mysql mysql-server mysql-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect

安装完毕后,启动mysql:

wps_clip_image-20482

wps_clip_image-27455

进入mysql给管理员一个口令:

wps_clip_image-630

二、安装配置postfix

    源码安装postfix:

先上传几个要用的源代码:

wps_clip_image-4152

回到根目录下查看一下上传的文件:

wps_clip_image-560

然后解压缩postfix:

wps_clip_image-23107

进入postfix目录下,建两个组和两个用户:

wps_clip_image-2310

wps_clip_image-21750

组postfix用于接受邮件服务,组postdrop用于投递邮件服务

然后生成makefiles文件:

wps_clip_image-12528

命令行如下:

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'

然后编译:

wps_clip_image-17490

wps_clip_image-8230

在这个过程中会有几个选项:

wps_clip_image-26350

但只更改这一个就行,其他的直接按回车,默认就行;

生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低,所以执行命令:

wps_clip_image-28475

然后启动postfix:

wps_clip_image-15897

然后查看一下支持的模块和 验证  :

wps_clip_image-24863

然后改写一下控制脚本路径:

wps_clip_image-13403

wps_clip_image-24613

wps_clip_image-6737

wps_clip_image-7380

wps_clip_image-30819

拷贝到这个目录下:

wps_clip_image-6621

wps_clip_image-16556

可以看到里面全是一些路径;

退出后,试着停止服务和启动服务:

wps_clip_image-29560

可以查看一下端口:

wps_clip_image-19101

然后启动服务和查看端口:

wps_clip_image-1795

postfix完成了;

最后更改一下postfix主配置文档:

wps_clip_image-6917

指明mail服务器名称:

wps_clip_image-5969

指明mail服务器所属域:

wps_clip_image-32164

是否做地址伪装:

wps_clip_image-27769

打开所有监听端口:

wps_clip_image-24641

wps_clip_image-4868

wps_clip_image-9112

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

wps_clip_image-15791

在最后一行插入这些命令行:

wps_clip_image-30880

具体指令为:

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

然后编辑另外的文件:

wps_clip_image-9757

wps_clip_image-21739

wps_clip_image-27685

拷贝后,然后编辑:

wps_clip_image-7992

wps_clip_image-12462

保存退出,

启动sasl服务:

wps_clip_image-32112

四、 安装Courier authentication library

回到跟目录:

解压缩:

wps_clip_image-20523

进入这个目录,然后进行编译;

wps_clip_image-14242

编译命令如下:

./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

wps_clip_image-568

wps_clip_image-32693

完成后,更改一下权限:

wps_clip_image-3820

然后产生两个文件:

wps_clip_image-11251

编辑authdaemonrc,表示所采用的模块列表:

wps_clip_image-4047

wps_clip_image-8851

wps_clip_image-8618

wps_clip_image-26349

然后编辑authmysqlrc,作用是如何来调用数据库,其中2525,2525 为postfix 用户的UID和GID:

wps_clip_image-21882

((这时为后文要用的数据库的所有者的用户名、密码)

wps_clip_image-32003

wps_clip_image-25163

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

wps_clip_image-15991

wps_clip_image-26329

wps_clip_image-21555

wps_clip_image-16661

wps_clip_image-29450

wps_clip_image-8154

wps_clip_image-1974

wps_clip_image-8943

wps_clip_image-16332

保存退出;

在这一目录下找到一个控制脚本:

wps_clip_image-10440

wps_clip_image-19847

拷贝好后,更改权限:

wps_clip_image-9446

然后我们就可以启动服务了:

wps_clip_image-24549

通过输出重定向,加载courier-authlib服务的非标准库文件:

wps_clip_image-30145

命令行就是这句话:echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf

执行完后,调用一下:

wps_clip_image-273

wps_clip_image-21543

可以看到很多库都能配系统调用了;

然后再重启一下:

wps_clip_image-10434

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

wps_clip_image-31371

接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:

wps_clip_image-10961

wps_clip_image-11214

保存退出;重启

wps_clip_image-11102

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

    编辑/etc/postfix/main.cf,添加如下内容:

wps_clip_image-15686

wps_clip_image-19768

具体命令行如下:

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

网络上都有这些内容,直接复制粘贴到最后一行就行;

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

wps_clip_image-9746

wps_clip_image-13413

做重定向:输入管理员密码:

wps_clip_image-26108

可以进入数据库看看:

wps_clip_image-1526

wps_clip_image-26743

在这个目录下可以看到有很多映射 文件,拷到postfix目录下:

wps_clip_image-6040

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

  再连接到数据库:

wps_clip_image-21624

让设置的内容生效:

wps_clip_image-68

然后再启动一次postfix:

wps_clip_image-19059

六、 配置dovecot:

编辑dovecot配置文档,编辑dovecot如何查找mysql:

wps_clip_image-22621

wps_clip_image-10671

wps_clip_image-17208

wps_clip_image-4621

wps_clip_image-18287

wps_clip_image-9492

wps_clip_image-10361

保存退出;

创建并编辑dovecot查找数据库方式的文件:

wps_clip_image-18497

wps_clip_image-11828

具体命令行为:

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = CRYPT

password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'                           

user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'

wps_clip_image-8937

wps_clip_image-11725

然后启动一下服务:

wps_clip_image-31755

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

回到根目录下,解压缩:

wps_clip_image-1729

wps_clip_image-32705

然后把两个文件移动到这个目录下:

wps_clip_image-7436

wps_clip_image-28980

wps_clip_image-25037

wps_clip_image-13634

拷贝个样例文件,生成extmail配置文档,并编辑:

wps_clip_image-17878

wps_clip_image-17202

默认语言

wps_clip_image-3594

用户邮件的存放目录:

wps_clip_image-13354

设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库:

wps_clip_image-32641

指明authdaemo socket文件的位置:

wps_clip_image-12106

启动apache:

wps_clip_image-18870

编辑apache的主配置文件:

wps_clip_image-8080

wps_clip_image-1877

wps_clip_image-18935

保存退出;

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

wps_clip_image-12908

重启apache服务:

wps_clip_image-19821

八、安装Extman-1.1

wps_clip_image-3836

拷贝样例文件,生成extman配置文档,并编辑:

wps_clip_image-9103

wps_clip_image-26433

用户邮件的存放目录:

wps_clip_image-12378

wps_clip_image-3892

保存退出;;

更改一下权限:

wps_clip_image-8228

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

wps_clip_image-4364

wps_clip_image-3739

保存退出;

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

wps_clip_image-12999

最后一步是:依赖关系的解决

wps_clip_image-1704

wps_clip_image-17669

wps_clip_image-10845

wps_clip_image-28093

wps_clip_image-2901

重启apache:

wps_clip_image-30098

完成了;测试一下:

在客户机上的浏览器输入地址:http://192.168.145.200/extmail

wps_clip_image-16188

选择邮箱管理:

有默认的账号登陆进去:

选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org  密码为:extmail*123*

wps_clip_image-5328

wps_clip_image-22860

登陆 到了后台管理:

wps_clip_image-25949

选中域列表,点击添加域:

wps_clip_image-30984

wps_clip_image-2336

自由注册并没有真正的被激活,所以再画上勾,点击操作:

wps_clip_image-24445

wps_clip_image-20650

因为支持虚拟域的,所以可以继续建新的域:

wps_clip_image-18377

一定别忘了,重新操作一遍,激活自由注册:

wps_clip_image-19496

wps_clip_image-25798

然后就可以自由注册了:

wps_clip_image-16616

wps_clip_image-13568

wps_clip_image-4081

wps_clip_image-10079

再注册一个用户:

wps_clip_image-16005

wps_clip_image-7728

wps_clip_image-6021

wps_clip_image-2933

然后试着登陆里面并发送邮件试试:

wps_clip_image-21767

wps_clip_image-30877

成功登陆,然后发个邮件:

wps_clip_image-31655

wps_clip_image-7445

发送成功!

登陆haolei用户,看看能不能收到邮件:

wps_clip_image-7513

可以看到里面有一封邮件:

wps_clip_image-596

打开内容看看是否正确:

wps_clip_image-10177

成功接收到了邮件;

然后回复一个:

wps_clip_image-26956

登陆到test1上查看:

wps_clip_image-16994