Linux中Postfix虚拟用户及虚拟域(六)

摘自:http://www.ywnds.com/?p=1797

 

Postfix基于虚拟用户虚拟域的邮件架构

 

上图是一个几乎完整的邮件系统架构图,这里基于Mysql数据库进行用户认证,不管是Postfix、Dovecot、webmail都需要去Mysql数据库中进行用户认证。

1、用户可以基于outlook连接postfix然后通过Courier-authlib连接到Mysql进行认证,认证成功就可以发送邮件。前面我们也是用Cyrus-sasl进行shadow用户认证,其实Cyrus-sasl也同样支持Mysql认证。但是由于驱动比较底层配置起来比较繁琐,所以选用Courier-authlib进行认证,但是从上图可以看出我们是postfix还是借用Cyrus-sasl函数库与Courier-authlib进行连接。同样的道理Postfix也可以直接连接到Courier-authlib但是比较麻烦。

2、用户可以基于outlook连接Dovecot然后直接到mysql进行认证,认证成功就可以接收Mailbox中的邮件。这里比较简单,因为Dovecot自身支持到Mysql的认证。

3、用户可以基于webmail进行收发邮件,同样通过Extmail/Extman到Mysql中认证,认证成功。就可以基于postfix发邮件,基于Dovecot收邮件。但是Extmail/Extman自身就可以到Mailbox中收取邮件。

Courier-authlib

Courier 是一个优秀的电子信件系统,拥有一个完整的邮件系统:其提供MTA(Courier-MTA),MDA(Maildrop),MUA,MRA(Courier-IMAP),SASL(Courier-authlib)WebMail(sqwebmail)等这些组件。

Courier-authlib是Courier组件中的认证库,它是courier组件中一个独立的子项目,用于为Courier的其它组件提供认证服务。其认证功能通常包括验正登录时的帐号和密码、获取一个帐号相关的家目录或邮件目录等信息、改变帐号的密码等。而其认证的实现方式也包括基于PAM通过/etc/passwd和/etc/shadow进行认证,基于GDBM或DB进行认证,基于LDAP/MySQL/PostgreSQL进行认证等。因此,courier-authlib也常用来与courier之外的其它邮件组件(如postfix)整合为其提供认证服务。

虚拟用户虚拟域配置

一、安装ltdl动态模块加载器

二、安装expect主机间通信

三、创建用户

四、安装Courier-authlib

 

五、调整配置文件

六、调整courier-authlib配置文件

七、调整通过MYSQL进行邮件账号认证文件

八、Courier-authlib提供SysV服务脚本

PS:可以使用pstree -a可以看到authdaemond已经生成了11个进程,我们开启了10个,但是有一个主进程负责生成其他进程。

九、建立虚拟用户邮箱目录

十、更改SASL认证模式为authdaemond

Postfix的SMTP认证需要透过Cyrus-SASL连接到authdaemon获取认证信息

十一、让Postfix支持虚拟用户及虚拟域

十二、安装Httpd

十三、安装extman

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

#对于MySQL-5.1以后版本,其中的服务脚本extmail.sql执行会有语法错误,因为MySQL-5.1使用的默认存储引擎是MyISAM,而在MySQL-5.1之后使用的是InnoDB存储引擎。可先使用如下命令修改extmail.sql配置文件而后再执行修改方法如下:sed -i ‘s@TYPE=MyISAM@ENGINE=InnoDB@g’ extmail.sql

#这里我使用的是PRM包,所以MySQL是5.1版本的,不用修改SQL脚本。

这两个SQL脚本会创建extmail数据库和表,以及extmail、webman用户。所以需要授予用户extmail访问extmail数据库的权限(生产环境中extmail给select权限,因为它只需要检索用户即可)。同时这里的密码设置为extmail同上面的配置文件一样,不然都要改。

十四、从Extman中复制Postfix支持虚拟用户和虚拟域及连接mysql的文件

打开一个文件看看

PS:所以在通过mysql认证配置文件/etc/authmysqlrc中的账号密码很多地方都要用到,生产环境中全部都要统一修改。

十五、取消前面配置的中心域

使用虚拟域的时候,就需要取消中心域的使用,myhostname、mydomain、myorigin、mydestination,所以现在main.cf配置文件需要添加的参数如下所示:

十六、配置Dovecot基于MySQL认证

[root@localhost ~]# vim /etc/dovecot/dovecot.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/auth-sql.conf.ext

PS:在这个MySQL验证文件中指定了用户的账号和密码需要通过/etc/dovecot/dovecot-sql.conf这个文件去数据库中取。

[root@localhost ~]# vim /etc/dovecot/dovecot-sql.conf

解释:

 PS:dovecot其实也提供了这么一个配置文件模板,在/usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext 

十七、启动所有服务

十八、测试虚拟用户

 

posted @ 2023-07-07 18:59  LiuYanYGZ  阅读(157)  评论(0编辑  收藏  举报