public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Trace
helper-scripts/mailcow-reset-admin.sh
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
#!/usr/bin/env bash
2
[[ -f mailcow.conf ]] && source mailcow.conf
3
[[ -f ../mailcow.conf ]] && source ../mailcow.conf
5
if [[ -z ${DBUSER} ]] || [[ -z ${DBPASS} ]] || [[ -z ${DBNAME} ]]; then
6
echo "Cannot find mailcow.conf, make sure this script is run from within the mailcow folder."
7
exit 1
8
fi
10
SKIP_CONFIRM=false
11
if [[ "${1:-}" == "-y" || "${1:-}" == "--yes" ]]; then
12
SKIP_CONFIRM=true
13
shift # prevent $1 from bleeding into head -c${1:-16} below
14
fi
16
echo -n "Checking MySQL service... "
17
if [[ -z $(docker ps -qf name=mysql-mailcow) ]]; then
18
echo "failed"
19
echo "MySQL (mysql-mailcow) is not up and running, exiting..."
20
exit 1
21
fi
23
echo "OK"
24
if [[ "$SKIP_CONFIRM" == "true" ]]; then
25
response="yes"
26
else
27
read -r -p "Are you sure you want to reset the mailcow administrator account? [y/N] " response
28
response=${response,,}
29
fi
30
if [[ "$response" =~ ^(yes|y)$ ]]; then
31
echo -e "\nWorking, please wait..."
32
random=$(</dev/urandom tr -dc _A-Z-a-z-0-9 2> /dev/null | head -c${1:-16})
33
password=$(docker exec -it $(docker ps -qf name=dovecot-mailcow) doveadm pw -s SSHA256 -p ${random} | tr -d '\r')
34
docker exec -it $(docker ps -qf name=mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM admin WHERE username='admin';"
35
docker exec -it $(docker ps -qf name=mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM domain_admins WHERE username='admin';"
36
docker exec -it $(docker ps -qf name=mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "INSERT INTO admin (username, password, superadmin, active) VALUES ('admin', '${password}', 1, 1);"
37
docker exec -it $(docker ps -qf name=mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='admin';"
38
echo "
39
Reset credentials:
40
---
41
Username: admin
42
Password: ${random}
43
TFA: none
44
"
45
else
46
echo "Operation canceled."
47
fi