1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| #!/usr/bin/env bash
STORAGE_BASE_DIRECTORY="/var/vmail/vmail1"
PASSWORD_SCHEME='SSHA512'
DEFAULT_QUOTA='1024'
MAILDIR_STYLE='hashed'
if [ X"$#" != X'2' ]; then echo "Invalid command arguments. Usage:" echo "bash create_mail_user_SQL.sh user@domain.ltd plain_password" exit 255 fi
DATE="$(date +%Y.%m.%d.%H.%M.%S)" WC_L='wc -L' if [ X"$(uname -s)" == X'OpenBSD' ]; then WC_L='wc -l' fi
STORAGE_BASE="$(dirname ${STORAGE_BASE_DIRECTORY})" STORAGE_NODE="$(basename ${STORAGE_BASE_DIRECTORY})"
generate_password_hash() { _scheme="${1}" _password="${2}"
if [ X"${_scheme}" == X'BCRYPT' ]; then _scheme='BLF-CRYPT' fi
doveadm pw -s "${_scheme}" -p "${_password}" }
mail="$1" plain_password="$2"
username="$(echo $mail | awk -F'@' '{print $1}')" domain="$(echo $mail | awk -F'@' '{print $2}')"
export CRYPT_PASSWD="$(generate_password_hash ${PASSWORD_SCHEME} ${plain_password})"
if [ X"${MAILDIR_STYLE}" == X"hashed" ]; then length="$(echo ${username} | ${WC_L} )" str1="$(echo ${username} | cut -c1)" str2="$(echo ${username} | cut -c2)" str3="$(echo ${username} | cut -c3)"
test -z "${str2}" && str2="${str1}" test -z "${str3}" && str3="${str2}"
maildir="${domain}/${str1}/${str2}/${str3}/${username}-${DATE}/" else maildir="${domain}/${username}-${DATE}/" fi
cat <<EOF INSERT INTO mailbox (username, password, name, storagebasedirectory,storagenode, maildir, quota, domain, active, passwordlastchange, created) VALUES ('${mail}', '${CRYPT_PASSWD}', '${username}', '${STORAGE_BASE}','${STORAGE_NODE}', '${maildir}', '${DEFAULT_QUOTA}', '${domain}', '1', NOW(), NOW()); INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_forwarding) VALUES ('${mail}', '${mail}','${domain}', '${domain}', 1); EOF
|