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
后就一切正常了!