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

邮件服务器系统的配置_邮件服务器

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

一、配置基本环境:

先确定服务器的地址:

邮件服务器系统的配置_系统配置_02

然后根据需要做dns指向:

邮件服务器系统的配置_邮件服务器_03

邮件服务器系统的配置_邮件服务器_04

邮件服务器系统的配置_系统配置_05

邮件服务器系统的配置_系统配置_06

删掉hosts中无用的信息:

邮件服务器系统的配置_系统配置_07

邮件服务器系统的配置_系统配置_08

然后搭建DNS:

建个光盘挂载点:

邮件服务器系统的配置_邮件服务器_09

邮件服务器系统的配置_邮件服务器_10

邮件服务器系统的配置_邮件服务器_11

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

邮件服务器系统的配置_系统配置_12

邮件服务器系统的配置_系统配置_13

保存退出,搭建dns环境:

安装bind包:

邮件服务器系统的配置_邮件服务器_14

邮件服务器系统的配置_邮件服务器_15

邮件服务器系统的配置_邮件服务器_16

邮件服务器系统的配置_系统配置_17

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

邮件服务器系统的配置_系统配置_18

邮件服务器系统的配置_系统配置_19

邮件服务器系统的配置_系统配置_20

邮件服务器系统的配置_邮件服务器_21

邮件服务器系统的配置_系统配置_22

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

邮件服务器系统的配置_系统配置_23

邮件服务器系统的配置_邮件服务器_24

邮件服务器系统的配置_邮件服务器_25

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

邮件服务器系统的配置_邮件服务器_26

再编辑里面的内容:

邮件服务器系统的配置_系统配置_27

邮件服务器系统的配置_邮件服务器_28

启动dns:

邮件服务器系统的配置_系统配置_29

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

邮件服务器系统的配置_系统配置_30

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

邮件服务器系统的配置_系统配置_31

也就是这个命令行:

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:

邮件服务器系统的配置_邮件服务器_32

邮件服务器系统的配置_系统配置_33

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

邮件服务器系统的配置_系统配置_34

二、安装配置postfix

    源码安装postfix:

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

邮件服务器系统的配置_系统配置_35

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

邮件服务器系统的配置_系统配置_36

然后解压缩postfix:

邮件服务器系统的配置_系统配置_37

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

邮件服务器系统的配置_系统配置_38

邮件服务器系统的配置_邮件服务器_39

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

然后生成makefiles文件:

邮件服务器系统的配置_系统配置_40

命令行如下:

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'

然后编译:

邮件服务器系统的配置_邮件服务器_41

邮件服务器系统的配置_系统配置_42

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

邮件服务器系统的配置_邮件服务器_43

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

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

邮件服务器系统的配置_邮件服务器_44

然后启动postfix:

邮件服务器系统的配置_邮件服务器_45

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

邮件服务器系统的配置_系统配置_46

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

邮件服务器系统的配置_系统配置_47

邮件服务器系统的配置_邮件服务器_48

邮件服务器系统的配置_系统配置_49

邮件服务器系统的配置_邮件服务器_50

邮件服务器系统的配置_邮件服务器_51

拷贝到这个目录下:

邮件服务器系统的配置_邮件服务器_52

邮件服务器系统的配置_系统配置_53

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

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

邮件服务器系统的配置_邮件服务器_54

可以查看一下端口:

邮件服务器系统的配置_系统配置_55

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

邮件服务器系统的配置_邮件服务器_56

postfix完成了;

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

邮件服务器系统的配置_邮件服务器_57

指明mail服务器名称:

邮件服务器系统的配置_系统配置_58

指明mail服务器所属域:

邮件服务器系统的配置_邮件服务器_59

是否做地址伪装:

邮件服务器系统的配置_邮件服务器_60

打开所有监听端口:

邮件服务器系统的配置_系统配置_61

邮件服务器系统的配置_系统配置_62

邮件服务器系统的配置_邮件服务器_63

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

邮件服务器系统的配置_邮件服务器_64

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

邮件服务器系统的配置_邮件服务器_65

具体指令为:

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

然后编辑另外的文件:

邮件服务器系统的配置_系统配置_66

邮件服务器系统的配置_系统配置_67

邮件服务器系统的配置_邮件服务器_68

拷贝后,然后编辑:

邮件服务器系统的配置_邮件服务器_69

邮件服务器系统的配置_系统配置_70

保存退出,

启动sasl服务:

邮件服务器系统的配置_邮件服务器_71

四、 安装Courier authentication library

回到跟目录:

解压缩:

邮件服务器系统的配置_系统配置_72

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

邮件服务器系统的配置_系统配置_73

编译命令如下:

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

邮件服务器系统的配置_系统配置_74

邮件服务器系统的配置_邮件服务器_75

完成后,更改一下权限:

邮件服务器系统的配置_系统配置_76

然后产生两个文件:

邮件服务器系统的配置_邮件服务器_77

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

邮件服务器系统的配置_邮件服务器_78

邮件服务器系统的配置_邮件服务器_79

邮件服务器系统的配置_邮件服务器_80

邮件服务器系统的配置_邮件服务器_81

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

邮件服务器系统的配置_邮件服务器_82

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

邮件服务器系统的配置_系统配置_83

邮件服务器系统的配置_系统配置_84

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

邮件服务器系统的配置_邮件服务器_85

邮件服务器系统的配置_邮件服务器_86

邮件服务器系统的配置_邮件服务器_87

邮件服务器系统的配置_邮件服务器_88

邮件服务器系统的配置_邮件服务器_89

邮件服务器系统的配置_邮件服务器_90

邮件服务器系统的配置_系统配置_91

邮件服务器系统的配置_系统配置_92

邮件服务器系统的配置_邮件服务器_93

保存退出;

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

邮件服务器系统的配置_系统配置_94

邮件服务器系统的配置_系统配置_95

拷贝好后,更改权限:

邮件服务器系统的配置_系统配置_96

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

邮件服务器系统的配置_邮件服务器_97

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

邮件服务器系统的配置_系统配置_98

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

执行完后,调用一下:

邮件服务器系统的配置_邮件服务器_99

邮件服务器系统的配置_邮件服务器_100

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

然后再重启一下:

邮件服务器系统的配置_系统配置_101

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

邮件服务器系统的配置_邮件服务器_102

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

邮件服务器系统的配置_系统配置_103

邮件服务器系统的配置_邮件服务器_104

保存退出;重启

邮件服务器系统的配置_邮件服务器_105

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

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

邮件服务器系统的配置_系统配置_106

邮件服务器系统的配置_系统配置_107

具体命令行如下:

########################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建立数据库:

邮件服务器系统的配置_邮件服务器_108

邮件服务器系统的配置_系统配置_109

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

邮件服务器系统的配置_系统配置_110

可以进入数据库看看:

邮件服务器系统的配置_邮件服务器_111

邮件服务器系统的配置_系统配置_112

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

邮件服务器系统的配置_邮件服务器_113

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

  再连接到数据库:

邮件服务器系统的配置_邮件服务器_114

让设置的内容生效:

邮件服务器系统的配置_邮件服务器_115

然后再启动一次postfix:

邮件服务器系统的配置_系统配置_116

六、 配置dovecot:

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

邮件服务器系统的配置_系统配置_117

邮件服务器系统的配置_邮件服务器_118

邮件服务器系统的配置_系统配置_119

邮件服务器系统的配置_邮件服务器_120

邮件服务器系统的配置_邮件服务器_121

邮件服务器系统的配置_邮件服务器_122

邮件服务器系统的配置_系统配置_123

保存退出;

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

邮件服务器系统的配置_系统配置_124

邮件服务器系统的配置_邮件服务器_125

具体命令行为:

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'

邮件服务器系统的配置_邮件服务器_126

邮件服务器系统的配置_系统配置_127

然后启动一下服务:

邮件服务器系统的配置_邮件服务器_128

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

回到根目录下,解压缩:

邮件服务器系统的配置_系统配置_129

邮件服务器系统的配置_邮件服务器_130

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

邮件服务器系统的配置_邮件服务器_131

邮件服务器系统的配置_邮件服务器_132

邮件服务器系统的配置_邮件服务器_133

邮件服务器系统的配置_邮件服务器_134

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

邮件服务器系统的配置_系统配置_135

邮件服务器系统的配置_邮件服务器_136

默认语言

邮件服务器系统的配置_系统配置_137

用户邮件的存放目录:

邮件服务器系统的配置_系统配置_138

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

邮件服务器系统的配置_系统配置_139

指明authdaemo socket文件的位置:

邮件服务器系统的配置_邮件服务器_140

启动apache:

邮件服务器系统的配置_邮件服务器_141

编辑apache的主配置文件:

邮件服务器系统的配置_邮件服务器_142

邮件服务器系统的配置_系统配置_143

邮件服务器系统的配置_系统配置_144

保存退出;

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

邮件服务器系统的配置_系统配置_145

重启apache服务:

邮件服务器系统的配置_邮件服务器_146

八、安装Extman-1.1

邮件服务器系统的配置_系统配置_147

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

邮件服务器系统的配置_邮件服务器_148

邮件服务器系统的配置_系统配置_149

用户邮件的存放目录:

邮件服务器系统的配置_系统配置_150

邮件服务器系统的配置_邮件服务器_151

保存退出;;

更改一下权限:

邮件服务器系统的配置_系统配置_152

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

邮件服务器系统的配置_系统配置_153

邮件服务器系统的配置_系统配置_154

保存退出;

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

邮件服务器系统的配置_邮件服务器_155

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

邮件服务器系统的配置_邮件服务器_156

邮件服务器系统的配置_系统配置_157

邮件服务器系统的配置_系统配置_158

邮件服务器系统的配置_系统配置_159

邮件服务器系统的配置_邮件服务器_160

重启apache:

邮件服务器系统的配置_邮件服务器_161

完成了;测试一下:

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

邮件服务器系统的配置_邮件服务器_162

选择邮箱管理:

有默认的账号登陆进去:

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

邮件服务器系统的配置_系统配置_163

邮件服务器系统的配置_邮件服务器_164

登陆 到了后台管理:

邮件服务器系统的配置_邮件服务器_165

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

邮件服务器系统的配置_邮件服务器_166

邮件服务器系统的配置_系统配置_167

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

邮件服务器系统的配置_系统配置_168

邮件服务器系统的配置_邮件服务器_169

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

邮件服务器系统的配置_邮件服务器_170

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

邮件服务器系统的配置_邮件服务器_171

邮件服务器系统的配置_邮件服务器_172

然后就可以自由注册了:

邮件服务器系统的配置_邮件服务器_173

邮件服务器系统的配置_系统配置_174

邮件服务器系统的配置_系统配置_175

邮件服务器系统的配置_系统配置_176

再注册一个用户:

邮件服务器系统的配置_系统配置_177

邮件服务器系统的配置_邮件服务器_178

邮件服务器系统的配置_邮件服务器_179

邮件服务器系统的配置_邮件服务器_180

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

邮件服务器系统的配置_系统配置_181

邮件服务器系统的配置_邮件服务器_182

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

邮件服务器系统的配置_系统配置_183

邮件服务器系统的配置_系统配置_184

发送成功!

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

邮件服务器系统的配置_系统配置_185

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

邮件服务器系统的配置_邮件服务器_186

打开内容看看是否正确:

邮件服务器系统的配置_邮件服务器_187

成功接收到了邮件;

然后回复一个:

邮件服务器系统的配置_邮件服务器_188

登陆到test1上查看:

邮件服务器系统的配置_邮件服务器_189

哎呀,到现在基于虚拟账号的邮件系统终于完成了!!!!