1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00
Files
go-chasquid-smtp/docker/add-user.sh
Ernesto Alfonso 0ce84a3b5d docker/add-user.sh: Support getting email and password from env variables
This patch extends docker/add-user.sh to support getting the email and
password from environment variables.

That way, docker/add-user.sh can be used in scripts.

https://github.com/albertito/chasquid/pull/43

Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
  Minor edits to the commit message.
2023-10-29 22:25:35 +00:00

48 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
#
# Creates a user. If it exists, updates the password.
#
# Note this is not robust, it's only for convenience on extremely simple
# setups.
set -e
if test -z "${EMAIL:-}"; then
read -r -p "Email (full user@domain format): " EMAIL
fi
if ! echo "${EMAIL}" | grep -q @; then
echo "Error: email should have '@'."
exit 1
fi
if test -z "${PASSWORD:-}"; then
read -r -p "Password: " -s PASSWORD
echo
fi
DOMAIN=$(echo echo "${EMAIL}" | cut -d '@' -f 2)
# If the domain doesn't exist in chasquid's config, create it.
mkdir -p "/data/chasquid/domains/${DOMAIN}/"
# Encrypt password.
ENCPASS=$(doveadm pw -u "${EMAIL}" -p "${PASSWORD}")
# Edit dovecot users: remove user if it exits.
mkdir -p /data/dovecot
touch /data/dovecot/users
if grep -q "^${EMAIL}:" /data/dovecot/users; then
cp /data/dovecot/users /data/dovecot/users.old
grep -v "^${EMAIL}:" /data/dovecot/users.old \
> /data/dovecot/users
fi
# Edit dovecot users: add user.
echo "${EMAIL}:${ENCPASS}::::" >> /data/dovecot/users
echo "${EMAIL} added to /data/dovecot/users"