This tutorial is available in other languages. Help translate more
简体中文 /
Attention
Check out the lightweight on-premises email archiving software developed by iRedMail team: Spider Email Archiver.
iRedAdmin(-Pro) ships script tools/reset_user_password.py
to help you reset
one user's password. For example, on CentOS 7 (iRedAdmin is installed under
/opt/www/iredadmin
):
cd /opt/www/iredadmin/tools/
python3 reset_user_password.py user@domain.ltd '123456'
Sample output:
[user@domain.ltd] Password has been reset.
If you need to update many users' passwords, another way is resetting passwords
with script shipped in iRedAdmin-Pro: tools/update_password_in_csv.py
. It
reads the user email addresses and NEW passwords from a CSV file.
The content is CSV file is:
<email> <new_password>
One mail user (and new password) per line. For example, file new_passwords.csv
:
user1@domain.com pF4mTq4jaRzDLlWl
user2@domain.com SPhkTUlZs1TBxvmJ
user3@domain.com 8deNR8IBLycRujDN
Then run script with this file:
python3 update_password_in_csv.py new_passwords.csv
Storing password in plain text is dangerous, so we need to hash the password. In case the SQL/LDAP database was leaked/cracked, cracker still need some time to decode the password hash to get plain password, this will give you some time to reset password to prevent mail message leak.
- SSHA512 is recommended on Linux systems.
- BCRYPT is recommended on BSD systems.
- MD5 is not safe, DO NOT USE IT no matter what reasons you have.
To generate password hash for new password, please use doveadm
command.
$ doveadm pw -s 'ssha512' -p '123456'
{SSHA512}jOcGSlKEz95VeuLGecbL0MwJKy0yWY9foj6UlUVfZ2O2SNkEExU3n42YJLXDbLnu3ghnIRBkwDMsM31q7OI0jY5B/5E=
$ doveadm pw -s 'blf-crypt' -p '123'
{BLF-CRYPT}$2a$05$9CTW6FZtjHeK6W.2YMmzOeAj2YFvDpP4JEH0uH/YLQI81jPWDtzQW
To reset password for user user@domain.ltd
, please login to SQL server as
either SQL root user or vmailadmin
user (note: sql user vmail
has read-only
privilege to vmail
database, so you cannot use it to change user password),
then execute SQL commands to reset password:
sql> USE vmail;
sql> UPDATE mailbox SET password='{SSHA512}jOcGSlKEz95VeuLGecbL0MwJKy0yWY9foj6UlUVfZ2O2SNkEExU3n42YJLXDbLnu3ghnIRBkwDMsM31q7OI0jY5B/5E=' WHERE username='user@domain.ltd';
With OpenLDAP backend, you can reset it with ldapvi
, phpLDAPadmin or other
LDAP client tools. SSHA512
is recommended, but if you have some application
which needs to perform authentication with ldap dn directly, then SSHA
is
preferred.