配置基于虚拟账号的邮件服务系统
根据上面的图,可以一步一步完成:
一、配置基本环境:
先确定服务器的地址:
然后根据需要做dns指向:
删掉hosts中无用的信息:
然后搭建DNS:
建个光盘挂载点:
下面要安装一些有依赖性软件包,所以编辑个yum客户端:
保存退出,搭建dns环境:
安装bind包:
拷贝一份样例文件到当前目录下,拷贝时,要加上-p,把模式也拷贝过来,不然是启动不了:
保存退出;然后编辑区域声明文件:
然后进入这个区域文件目录下,并拷贝个样例文件,生成a.org.zone这个文件:
再编辑里面的内容:
启动dns:
因为sendmail是开机自动启动的,所以关闭sendmail避免和postfix冲突:
然后安装所需的rpm包,有以下这些需要apache、mysql、php以及必要的库文件等等:
也就是这个命令行:
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:
进入mysql给管理员一个口令:
二、安装配置postfix
源码安装postfix:
先上传几个要用的源代码:
回到根目录下查看一下上传的文件:
然后解压缩postfix:
进入postfix目录下,建两个组和两个用户:
组postfix用于接受邮件服务,组postdrop用于投递邮件服务
然后生成makefiles文件:
命令行如下:
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'
然后编译:
在这个过程中会有几个选项:
但只更改这一个就行,其他的直接按回车,默认就行;
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低,所以执行命令:
然后启动postfix:
然后查看一下支持的模块和 验证 :
然后改写一下控制脚本路径:
拷贝到这个目录下:
可以看到里面全是一些路径;
退出后,试着停止服务和启动服务:
可以查看一下端口:
然后启动服务和查看端口:
postfix完成了;
最后更改一下postfix主配置文档:
指明mail服务器名称:
指明mail服务器所属域:
是否做地址伪装:
打开所有监听端口:
三、 为postfix开启基于cyrus-sasl的认证功能
在最后一行插入这些命令行:
具体指令为:
############################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
然后编辑另外的文件:
拷贝后,然后编辑:
保存退出,
启动sasl服务:
四、 安装Courier authentication library
回到跟目录:
解压缩:
进入这个目录,然后进行编译;
编译命令如下:
./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
完成后,更改一下权限:
然后产生两个文件:
编辑authdaemonrc,表示所采用的模块列表:
然后编辑authmysqlrc,作用是如何来调用数据库,其中2525,2525 为postfix 用户的UID和GID:
((这时为后文要用的数据库的所有者的用户名、密码)
(指定你的mysql监听的端口,这里使用默认的3306)
保存退出;
在这一目录下找到一个控制脚本:
拷贝好后,更改权限:
然后我们就可以启动服务了:
通过输出重定向,加载courier-authlib服务的非标准库文件:
命令行就是这句话:echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
执行完后,调用一下:
可以看到很多库都能配系统调用了;
然后再重启一下:
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:
保存退出;重启
五、 让postfix支持虚拟域和虚拟用户:
编辑/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
网络上都有这些内容,直接复制粘贴到最后一行就行;
使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
做重定向:输入管理员密码:
可以进入数据库看看:
在这个目录下可以看到有很多映射 文件,拷到postfix目录下:
授予用户extmail访问extmail数据库的权限:
再连接到数据库:
让设置的内容生效:
然后再启动一次postfix:
六、 配置dovecot:
编辑dovecot配置文档,编辑dovecot如何查找mysql:
保存退出;
创建并编辑dovecot查找数据库方式的文件:
具体命令行为:
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'
然后启动一下服务:
七、 安装Extmail-1.2 : (先安装httpd)
回到根目录下,解压缩:
然后把两个文件移动到这个目录下:
拷贝个样例文件,生成extmail配置文档,并编辑:
默认语言
用户邮件的存放目录:
设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库:
指明authdaemo socket文件的位置:
启动apache:
编辑apache的主配置文件:
保存退出;
修改 cgi执行文件属主为apache运行身份用户:
重启apache服务:
八、安装Extman-1.1
拷贝样例文件,生成extman配置文档,并编辑:
用户邮件的存放目录:
保存退出;;
更改一下权限:
在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
保存退出;
创建其运行时所需的临时目录,并修改其相应的权限:
最后一步是:依赖关系的解决
重启apache:
完成了;测试一下:
在客户机上的浏览器输入地址:http://192.168.145.200/extmail
选择邮箱管理:
有默认的账号登陆进去:
选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org 密码为:extmail*123*
登陆 到了后台管理:
选中域列表,点击添加域:
自由注册并没有真正的被激活,所以再画上勾,点击操作:
因为支持虚拟域的,所以可以继续建新的域:
一定别忘了,重新操作一遍,激活自由注册:
然后就可以自由注册了:
再注册一个用户:
然后试着登陆里面并发送邮件试试:
成功登陆,然后发个邮件:
发送成功!
登陆haolei用户,看看能不能收到邮件:
可以看到里面有一封邮件:
打开内容看看是否正确:
成功接收到了邮件;
然后回复一个:
登陆到test1上查看: