#!/bin/sh -efu test "$(id -n -u)" = php_roundcube IFS=: read -r user password IFS=@ read -r user domain <<-EOF $user EOF test "${user:+set}" test "${domain:+set}" test "${password:+set}" umask 0077 dir_passwd=/etc/dovecot/"$domain" old_passwd="$dir_passwd"/passwd new_passwd=$(TMPDIR= /bin/mktemp --tmpdir="$dir_passwd" -t "passwd.XXXXXXXX.tmp") return=1 while IFS=: read <&4 -r passwd_user passwd_password passwd_x do case "$passwd_user" in ("$user") return=0 /bin/cat >&3 <<-EOF $user:$(/usr/bin/doveadm pw -s SHA512-CRYPT -p "$password"):$passwd_x EOF ;; ('') : ;; (*) /bin/cat >&3 <<-EOF $passwd_user:$passwd_password:$passwd_x EOF ;; esac done 3>"$new_passwd" 4<<-EOF $(/bin/cat "$old_passwd") EOF /bin/mv -f "$new_passwd" "$old_passwd" exit $return