mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2025-08-18 16:49:06 +02:00
Complete Refactor for target/bin
(#1654)
* documentation and script updates trying to fix #1647 * preparations for refactoring target/bin/ * complete refactor for target/bin/ * changing script output slightly * outsourcing functions in `bin-helper.sh` * re-wrote linting to allow for proper shellcheck -x execution * show explanation for shellcheck ignore * adding some more information
This commit is contained in:
parent
0ada57d87c
commit
da8171388f
37 changed files with 579 additions and 504 deletions
|
@ -1,64 +1,62 @@
|
|||
#! /bin/bash
|
||||
|
||||
MODE="$1"
|
||||
USER="$3"
|
||||
# shellcheck source=../bin-helper.sh
|
||||
. /usr/local/bin/bin-helper.sh
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 <add|del|list> <send|receive> [<email@domain.com>]"
|
||||
}
|
||||
MODE="${1}"
|
||||
USER="${3}"
|
||||
|
||||
raise() {
|
||||
echo "$@" 1>&2
|
||||
exit 1
|
||||
}
|
||||
function usage { echo "Usage: ${0} <add|del|list> <send|receive> [<email@domain.com>]" ; }
|
||||
|
||||
escape() {
|
||||
echo "${1//./\\.}"
|
||||
}
|
||||
[ -z "$MODE" ] && raise "missing parameters: <add|del|list> <send|receive> [<email@domain.com>]"
|
||||
[[ -z ${MODE} ]] && errex "missing parameters: <add|del|list> <send|receive> [<email@domain.com>]"
|
||||
|
||||
case $2 in
|
||||
send)
|
||||
DATABASE="/tmp/docker-mailserver/postfix-send-access.cf"
|
||||
;;
|
||||
receive)
|
||||
DATABASE="/tmp/docker-mailserver/postfix-receive-access.cf"
|
||||
;;
|
||||
*)
|
||||
usage; raise "missing parameters. Specify \"send\" or \"receive\"";
|
||||
;;
|
||||
case ${2} in
|
||||
send)
|
||||
DATABASE="/tmp/docker-mailserver/postfix-send-access.cf"
|
||||
;;
|
||||
receive)
|
||||
DATABASE="/tmp/docker-mailserver/postfix-receive-access.cf"
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
errex "missing parameters. Specify \"send\" or \"receive\""
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$USER" ] && [ "$MODE" != list ]; then
|
||||
read -p "User(user@domain.com): " USER
|
||||
echo
|
||||
[ -z "$USER" ] && raise "User must not be empty"
|
||||
if [[ -z ${USER} ]] && [[ ${MODE} != list ]]
|
||||
then
|
||||
read -r -p "User(user@domain.com): " USER
|
||||
echo
|
||||
[[ -z ${USER} ]] && errex "User must not be empty"
|
||||
fi
|
||||
|
||||
case ${MODE} in
|
||||
add)
|
||||
grep -qi "^$(escape "${USER}")" "${DATABASE}" 2>/dev/null && errex "User \"${USER}\" already denied to ${2} mails"
|
||||
|
||||
if [[ ! -f ${DATABASE} ]]
|
||||
then
|
||||
# shellcheck disable=SC2015
|
||||
[[ ${DATABASE} = *"send"* ]] && \
|
||||
sed -i 's|smtpd_sender_restrictions =|smtpd_sender_restrictions = check_sender_access texthash:/tmp/docker-mailserver/postfix-send-access.cf,|' /etc/postfix/main.cf \
|
||||
|| sed -i 's|smtpd_recipient_restrictions =|smtpd_recipient_restrictions = check_recipient_access texthash:/tmp/docker-mailserver/postfix-receive-access.cf,|' /etc/postfix/main.cf
|
||||
|
||||
case $MODE in
|
||||
add)
|
||||
grep -qi "^$(escape "$USER")" $DATABASE 2>/dev/null &&
|
||||
raise "User \"$USER\" already denied to $2 mails"
|
||||
if [ ! -f $DATABASE ]; then
|
||||
[[ $DATABASE = *"send"* ]] && \
|
||||
sed -i 's|smtpd_sender_restrictions =|smtpd_sender_restrictions = check_sender_access texthash:/tmp/docker-mailserver/postfix-send-access.cf,|' /etc/postfix/main.cf \
|
||||
|| sed -i 's|smtpd_recipient_restrictions =|smtpd_recipient_restrictions = check_recipient_access texthash:/tmp/docker-mailserver/postfix-receive-access.cf,|' /etc/postfix/main.cf
|
||||
service postfix reload > /dev/null
|
||||
fi
|
||||
echo -e "$USER \t\t REJECT" >>$DATABASE
|
||||
;;
|
||||
del)
|
||||
sed -ie "/^$(escape "$USER")/d" $DATABASE 2>/dev/null ||
|
||||
raise "User \"$USER\" not found."
|
||||
;;
|
||||
list)
|
||||
grep "REJECT" $DATABASE 2>/dev/null ||
|
||||
echo "Everyone is allowed to $2 mails."
|
||||
service postfix reload >/dev/null
|
||||
fi
|
||||
|
||||
echo -e "${USER} \t\t REJECT" >>"${DATABASE}"
|
||||
;;
|
||||
|
||||
del)
|
||||
sed -ie "/^$(escape "${USER}")/d" "${DATABASE}" 2>/dev/null || errex "User \"${USER}\" not found."
|
||||
;;
|
||||
|
||||
list)
|
||||
grep "REJECT" "${DATABASE}" 2>/dev/null || echo "Everyone is allowed to ${2} mails."
|
||||
;;
|
||||
*)
|
||||
usage; raise "missing mode. Specify \"add\", \"del\" or \"list\"";
|
||||
;;
|
||||
esac
|
||||
*)
|
||||
usage
|
||||
errex "missing mode. Specify \"add\", \"del\" or \"list\""
|
||||
;;
|
||||
|
||||
esac
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue