1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/bash
- set -euo pipefail
- MAIL="$(cat -)"
- MAILGROUP=cropswap@shandan.one
- declare -A SUBSCRIBED
- declare -a actions
- update(){
- da="${actions[$1-1]:0:1}"
- db="${2:0:1}"
- alias="${actions[$1-1]#?}"
- email="${2#?}"
- [ "$da" == "$db" ] || exit 1
- if [ "$da" == "+" ]; then
- SUBSCRIBED["$email"]="$alias"
- else
- SUBSCRIBED["$email"]=""
- fi
- }
- exec 4<> "${SLIST}.txt"
- flock 4
- mapfile -t -c 2 -C update -u 4 actions
- for email in "${!SUBSCRIBED[@]}"; do
- if [ -z "${SUBSCRIBED["$email"]}" ]; then
- continue
- fi
- echo "+${SUBSCRIBED["$email"]}"
- echo "+$email"
- done > "${SLIST}".txt
- flock -u 4
- for email in "${!SUBSCRIBED[@]}"; do
- if [ -z "${SUBSCRIBED["$email"]}" ] || [ "${email,,}" == "${NOFORWARD,,}" ]; then
- continue
- fi
- echo "Forwarding mail to: ${SUBSCRIBED["$email"]} <${email}>"
- formail -kb \
- -X "MIME-Version:" \
- -X "Content-Type:" \
- -X "Subject:" \
- -X "Date:" \
- <<<"${MAIL}" | /usr/sbin/sendmail \
- -F "${FROM}" \
- -f "${MAILGROUP}" "${SUBSCRIBED["$email"]} <${email}>"
- done
|