IMail 外部数据库

12/3/2006来源:IMail Server人气:8244

iMail是一种非常优秀的基于win平台的mail server程序,在中小型应用中受到广泛的欢迎。

  iMail有三种用户数据接口方式:

  。默认方式:存放于系统注册表中。
  。系统帐号:用户数据依赖于nt/2000用户管理,此种方式常用于局域网环境中,而在互联网服务器应用中,系统帐号越少,则服务器被入侵的可能越少,自是不便使用。
  。以ODBC接口方式连接的外部数据库方式。

  一、ODBC库表结构设置

  imail提供了一个动态链接库odbcuser.dll,通过这个接口,imail可以使用odbc的数据源,在外部数据库中保存用户列表。odbcuser.dll已经在imail的安装目录下面。其vc++源程序可以在ftp://ftp.ipswitch.com/Ipswitch/PRoduct_Support/IMail/odbcuser.zip下载到。打开odbcuser.zip中的readme.txt文件我们可以看到表结构定义(如下),依此建表。

Default ODBC Tables
-------------------
 The default ODBC table consists of 9 entries:

  USERID - varchar(31)...........用户名
  PASSWord - varchar(31).........密码
  FULLNAME - varchar(63).........全名
  USERDIR - varchar(255).........用户目录
  MAILADDR - varchar(255)........邮件地址(如abc@my.com)
  MAXSIZE - integer..............最大邮件大小
  MAXMSGS - integer..............最大消息大小
  FLAGS - integer
  TYPE - integer
  NUMTRIES - integer
  ATTEMPTTIME - integer
  NUMTIMESSUSP - integer
  LASTLOGIN - integer
  SPNDUSRACCT - integer
  ICALENBL - integer
  SPELLENBL - integer
  NUMSGSTNS - integer
  IWDEPTH - integer
  IWOPTIONS - integer
  SPELLCHKG - integer
  PRVWSIZE - integer
  DEFVIEW - varchar(40)
  TIMEZONE - varchar(255)
  STRTDAY - integer
  DEFCALNM - varchar(40)
  ENTRYGRNL - integer
  STARTTIME - integer
  ENDTIME - integer
  MAXEVNTDISP - integer
  MAXTSKDISP - integer
  MAXNOTEDISP - integer
  MAXDLYRCURCNT - integer
  MAXWKLYRCURCNT - integer
  MAXMONRCURCNT - integer
  MAXYRLYRCURCNT - integer
  DISPCMPLTDTSKS - integer
  HOURSCLOCK - integer
  MAXSRCHRESPPG - integer
  MAXEVENTTITLELEN - integer
  MAXTASKTITLELEN - integer
  CONFIRMONDELETE - integer


  二、创建系统DSN并设置iMail采用ODBC方式。

  1、在系统DSN中添加相应系统数据源。
  2、在iMail Administrator中选取主机,将radio按钮设为“Extenal Database”,选择Configure...按钮进行ODBC设置。
  3、搞定

  三、程序设计。
  由于iMail用户数据存储于数据库中,添加用户自然可以用asp/php/jsp等web程序对数据表做相应操作即可。
  创建abc@my.com的邮件,只需要向库中添加“abc”的USERID记录,再添加 相应的用户目录即可。
  删除、修改。。。等操作也都较为简单,不再废话。

  BTW:

  若采用MySQL做为用户数据,在添加用户时一定记住将USERDIR中的""字符replace为“\\”。


--------------------------------------------------------

1.对于所有帐号,没有密码算法,所有的密码以明文显示,不保密!
2.对于非本机的SQL,ODBC测试是通过的,但在Imail中却无法加入用户信息.(提示存取错误).
3.无法使用该方式修改邮件用户列表.
4.用ODBC连接SQL做外部数据库,从其他邮件系统给imail发邮件总是报550:unknown user的错误。
5.用外部数据库(sqlserver)时遇到问题!

ODBC配置中只能用WIN NT 验证方式!用sqlserver
user(例如:SA) IMAIL 出错,连接数据库失败!
SYSLOG 中信息是:
04:10 22:03 ODBC(220358100) (Table: (null)) Initialize:SQLDriverConnect (Check userid and password on server.)
04:10 22:03 ODBC(220358100) (Table: root_net) IsValidTable:SQLAllocHandle-hStmt
04:10 22:03 ODBC(220358100) (Table: root_net) CreateTable ERROR SQLAllocHandle
04

用WIN NT 验证方式!可成功产生表,并可正常登陆使用邮箱。

但又有新问题! 用WIN NT 验证方式连接另外服务器上的sqlserver 可正常生成用户(表里都保存了用户的信息),但无论是WEB,还是POP3形式都服务登陆邮箱,邮箱用户的身份无法通过!!!!???

[color=blue>解答:
数据库的信息的传输是有安全保障的。这是由SQL Server 控制的。 SQL Server 已经考虑到了数据传输的安全性的。数据库中的数据是否加密是没有关系的。
如果你没有办法保存信息,请你检查你的sql server 的用户权限设置。
For users using SQL 7.0 or above: In the ODBC Data Source Name input the line: IMAILSECDB; UID=username; PWD=password. The user name and password need to be the user ID and password for the SQL database and not an IMail Server account.

用sqlserver 的 user 配完系统的ODBC后
再在IMAIL EXTERNAL DATABASE 的CONFIG里

IMAILSECDB; UID=username; PWD=password

后就一切正常了!