hmailserver关于afterlogic webmail php版本下的用户密码修改功能(飞城原创)
hmailserver作邮件服务器,squirrelmail 作邮件服务器的web界面实在是拿不出手去。换了afterlogic的webmail,界面稍微好一些,像那么回事了。
今天测试,发现afterlogic有个小bug:当邮箱密码只有1位字符时,登录后邮箱同步等都有问题。跟踪代码发现密码重复了一下,便成了2位。不过没关系,真正部署时肯定要求用户的密码字符数。
无论是squirrelmail ,还是afterlogic,php版本都不能修改hmailserver中的邮箱用户的密码,虽然squirrelmail和afterlogic都提供了界面修改密码的插件或功能。注:afterlogic的asp.net版本可以通过增加hmailserver的dll文件作为plugin,实现界面修改密码。
网上关于linux下使用poppassd服务开启106端口增加更改密码的说明,其实更改的是操作系统用户的密码,也就是说当邮箱用户就是系统用户时,可以这么做。很遗憾,hmailserver的用户肯定是邮件服务器自己设置的。afterlogic webmail如何解决呢?方法有几种,比如直接将hmailserver的php管理界面中的密码修改移植到afterlogic webmail中,不过估计工作量也不少。
在此设计了2个简单的思路,还是使用poppassd,修改poppassd,使其直接修改密码,方法有2种:
(1)使其调用hmailserver的COM接口:hMailServer.Application。
这个是参考hmailserver的php管理界面代码中:$obBaseApp = new COM("hMailServer.Application");
(2)直接修改数据库中的用户密码。最好hmailserver直接使用mysql。这样poppassd与mysql直接打交道,绕开了hmailserver.
无论哪种方法,需要提前设置的:
1。afterlogic webmail打开poppassd-change-password插件:
修改data\settings\config.php,加入如下代码:
return array(
'plugins.poppassd-change-password' => true,
'plugins.poppassd-change-password.config.host' => "127.0.0.1",
'plugins.poppassd-change-password.config.port' => 106,
....
修改源代码,利用hmailserver的COM接口:hMailServer.Application,进行密码修改。重新编译链接,生成nt_poppassd.exe。
3。部署poppassd为安装hmailserver的window上的服务:
addsvc -add poppassd nt_poppassd.exe "poppassd -- Changing Passwords"
To remove the Service type the following:
addsvc -del poppassd
进入系统服务,开启poppassd服务。
运行tasklist /svc | find "poppassd",可查看服务运行情况:
nt_poppassd.exe 7440 poppassd1
运行C:\Windows\System32>netstat -noa | find "7440",可查看端口及连接状态:
TCP 127.0.0.1:106 0.0.0.0:0 LISTENING 7440
密码修改测试:
telnet localhost 106
S: 200 machine_name popassd v1.4 hello, who are you?\r\n
E: user yourloginname\r\n
S: 200 your password please.\r\n
E: pass yourcurrentpassword\r\n
S: 200 your new password please.\r\n
E: newpass yournewpassword\r\n
S: 200 Password changed, thank-you.\r\n
E: quit\r\n
S: 200 Bye-bye\r\n
S:
E:
如果测试成功,基本上afterlogic webmail在界面上修改密码也没有问题了。