以前(MySQL 5.7)我们使用这个命令将一个新的电子邮件地址添加到现有的表中:
INSERT INTO `servermail`.`virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user@example.com'),然后dovecot能够对用户进行身份验证。(更多信息关于dovecot密码方案)
现在,MySQL的最新版本已经不再推荐加密了。(链接)
我想用SHA2重写这个命令,但我没有成功。
编辑:
这可以帮助用户使用如何使用后缀、Dovecot、MySQL和SpamAssassin配置邮件服务器配置MySQL8.0版本的邮件服务器。
发布于 2018-08-09 08:20:10
最后,我将dovecote用于其用户身份验证的默认方法从SHA512-CRYPT更改为SHA512。我认为它的安全性不亚于此,但MySQL 8支持它。
之后,我使用这个命令向表中添加了一个新用户。
INSERT INTO `servermail`.`virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', TO_BASE64(UNHEX(SHA2('password', 512))), 'user@example.com'); 发布于 2021-09-08 14:31:50
why 512-密码似乎不可能在MySQL内实现,而且就Dovecot而言,我承认我无法理解为什么他们建议首先使用加密。按照OP的建议,使用强散列至少也同样有效,而且更安全。
由于我更喜欢带有额外盐的密码,下面是如何使用Dovecot的SSHA512,这是“存储在base64中的密码的盐渍SHA512和”:
INSERT INTO `virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
(NULL, '1', (SELECT REPLACE(TO_BASE64(CONCAT(UNHEX(SHA2(CONCAT('YourPasswordHere', v.salt), 512)), v.salt)), '\n', '') AS salted FROM (SELECT SHA2(RAND(), 512) AS salt) v), 'user@example.com');或更新密码:
UPDATE virtual_users
SET `password` = (
SELECT REPLACE(TO_BASE64(CONCAT(UNHEX(SHA2(CONCAT('YourPasswordHere', v.salt), 512)), v.salt)), '\n', '') AS salted
FROM (
SELECT SHA2(RAND(), 512) AS salt
) v
)
WHERE email = 'user@example.com';这些查询如下:
TO_BASE64()函数添加的不必要的换行符结果是一个256字节长的字符串,因此您可能需要将您的password字段更新为VARCHAR(256)。
有许多教程建议使用doveadm手动生成加密密码,虽然这很好,但我发现它更麻烦一些。对那些有兴趣的人来说,你可以这样称呼它:
doveadm pw -s SHA512-CRYPT -p "YourPasswordHere"更有用的功能是使用相同的实用程序验证生成的密码:
doveadm auth test user@example.com YourPasswordHerehttps://stackoverflow.com/questions/51420805
复制相似问题