imail使用外部数据库保存用户列表在sqlserver上的应用。
以前一篇文章对imail如何使用外部数据库保存用户数据作了一个简单的描述,对于access由于没有什么权限方面的设置,所以比较简单,如果按照ipswitch的文档创建数据表正确的话,基本上就不会有其他的问题了。而对于sqlserver,由于有权限的问题,所以配置如果不行的话,则不能正常工作。
对于数据表的字段类型,以前已经说过了,现在主要说说配置odbc连接的方法。
一:imail使用外部数据源保存用户的原理
imail通过一个动态链接库(odbcuser.dll)通过odbc实现对外部数据库的访问和操作,由于这个链接库比较简单,只是注重于对表的操作,没有提供用户账号方面的功能。也就是说使用的odbc必须不再需要身份验证,对于access,默认本来就是不存在的,而对于sqlserver必须有一个身份验证的过程,这样的话,我们可以采取NT的验证方式来配置sqlserver的odbc连接,这样在使用该dsn的时候,可以不必提供用户名和密码去到sqlserver上进行验证了。
二:如何配置sqlserver的odbc连接?
1、对于sqlserver在本地的情况
这种情况比较简单,创建sqlserver的系统dsn的时候,直接将验证方式设置为Windows NT验证,配置默认的数据库,完成就可以了。
2、对于sqlserver在局域网或者远程的情况
由于必须要使用Windows NT的验证方式,并且对sqlserver的imail数据表要有插入删除的权限,那么两台机器之间的信任连接的创建并不能通过域信任关系创建(因为internet的服务器并不需要安装成域控制器,简单的情况下也不应该安装成域控制器,再者即便是两台机器都是域控制器,通过创建的域信任关系未必能够实现sqlserver的验证,对此没有作过试验),通过试验表明,如果两台机器的管理员(administrator)的用户名和密码一致的话,就能够直接通过了NTLM的验证,那么同时,sqlserver由于正是采用了NT的验证方式,所以也是可以配置成不需要sql的验证的dsn。这样在创建dsn的时候,sql服务器输入实际的sqlserver服务器的IP地址,验证方式仍然选择NT验证,配置好默认的数据库,就可以了。
注意:使用外部数据库保存用户列表,用户密码是以明文方式保存的,这样必须要保护好数据库不被非法存取。使用注册表保存的方式,密码是加密保存的。