设为首页 收藏本站
查看: 1463|回复: 0

[经验分享] extmail 密码加密方式修改为plain-md5的方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-26 08:46:52 | 显示全部楼层 |阅读模式
extmail默认密码加密方式是md5crypt,但是有些时候会遇到这样的问题——老的邮件系统中的用户密码是md5加密的。

此时需要将extmail的密码加密方式修改为md5,通过官方解释(md5和md5crypt没有区别),修改为plain-md5即可。但是,这只解决了web登陆的验证问题,没有解决smtp以及pop3的验证问题。


通过 http://www.extmail.org/forum/viewthread.php?tid=3175 帖子解决了验证问题,内容摘录如下:
courier-authlib的auth_generic手册里提到crypted密码的格式支持3类:

1)传统的crypted 的密码,如crypt()或md5-salted的密码
2){MD5}为前缀,后面是base64编码后的md5密码
3){SHA}为前缀(实际还支持{SAH256},这个看source知道)后面是base64编码的sha密码

如何能实现2呢?在目前的extmail/extman实现里,md5密码只支持以16进制形式存在的密码,例如:


d41d8cd98f00b204e9800998ecf8427e


经过base64编码后依然无法通过authlib的认证,后来仔细看Digest::MD5手册里的介绍,发现md5函数返回的是二进制的、产度为16个字节的密文,而md5_hex(也就是目前extmail/extman使用的)是其16进制的形式(长度32个字节)。

于是测试用md5函数产生md5密文并用base64编码后,加上{MD5}前缀,塞到mysql里,发现通过了authtest的测试!再查看了一下courier-authlib的checkpasswd.c及checkpasswdmd5.c和md5目录下的md5加密函数,证实了就是校验二进制+base64编码后的md5密文,而不是hex后的密文。

问题是如何从hex格式的密文转成binary格式?很多用户从其他系统转到ext*下时,密码大多是md5 hex格式的,于是编写如下代码实现转换:


use MIME::Base64;

my $s = 'd41d8cd98f00b204e9800998ecf8427e';

$s =~ s/(..)/bin($1)/ge;
$s = '{MD5}'.encode_base64($s);
$s =~ s/\s+//; # remove newline

print $s, "\n";

sub bin {
       my $n = shift;
       sprintf("%c", hex($n));
}


这样常规的md5密文就被转成符合要求的{MD5}XXXXX格式了。刚才这个脚本的执行结果:


{MD5}1B2M2Y8AsgTpgAmY7PhCfg==


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-42633-1-1.html 上篇帖子: Outlook邮箱目录与规则迁移工具 下篇帖子: Mac自带mail客户端只能收不能发送邮件问题解决 加密 密码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表