Support a test run for script 'sent_userinfo_postfix.sh'.
This commit is contained in:
parent
2d7897986b
commit
71a9aeb113
@ -5,7 +5,7 @@ conf_dir="${script_dir}/conf"
|
||||
conf_file="${conf_dir}/sent_userinfo_postfix.conf"
|
||||
|
||||
tmp_dir="$(mktemp -d)"
|
||||
logfile="${script_dir}/sent_userinfo_postfix.$(date +%Y-%m-%d-%H%M).log"
|
||||
logfile="${script_dir}/log/sent_userinfo_postfix.$(date +%Y-%m-%d-%H%M).log"
|
||||
|
||||
#---------------------------------------
|
||||
#-----------------------------
|
||||
@ -40,6 +40,12 @@ echononl(){
|
||||
rm /tmp/shprompt$$
|
||||
}
|
||||
|
||||
warn (){
|
||||
echo ""
|
||||
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||
echo ""
|
||||
}
|
||||
|
||||
fatal(){
|
||||
echo ""
|
||||
echo -e "[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||
@ -96,6 +102,57 @@ if [[ ! -f $user_info_file ]];then
|
||||
fi
|
||||
|
||||
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Is this a tset-run, sending the user info to only one given address?"
|
||||
echo ""
|
||||
echo ""
|
||||
_TEST_RUN=
|
||||
while [ "$_TEST_RUN" != "yes" -o "$_TEST_RUN" != "no" ] ; do
|
||||
echononl "\033[1mTest run? [yes/no]:\033[m "
|
||||
read _TEST_RUN
|
||||
## - To lower case
|
||||
_TEST_RUN=${_TEST_RUN,,}
|
||||
if [ "X$_TEST_RUN" = "X" ]; then
|
||||
echo -e "\n\t\033[33m\033[1mAn entry is required! Type 'yes' or 'no'\033[m.\n"
|
||||
_TEST_RUN=""
|
||||
continue
|
||||
fi
|
||||
if [ "$_TEST_RUN" = "yes" -o "$_TEST_RUN" = "no" ] ; then
|
||||
break
|
||||
fi
|
||||
echo -e "\n\t\033[33m\033[1mWrong entry! Type 'yes' or 'no'.\033[m\n"
|
||||
done
|
||||
if [[ "$_TEST_RUN" = "yes" ]]; then
|
||||
TEST_RUN=true
|
||||
else
|
||||
TEST_RUN=false
|
||||
fi
|
||||
|
||||
|
||||
if $TEST_RUN ; then
|
||||
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Give the recipient address for the test run."
|
||||
echo ""
|
||||
echo ""
|
||||
test_email=""
|
||||
while [[ "X$test_email" = "X" ]] ; do
|
||||
echononl "\033[1mRecipient address for test run:\033[m "
|
||||
read test_email
|
||||
if [[ "X$test_email" = "X" ]] ; then
|
||||
echo -e "\n\t\033[33m\033[1mAn entry is required!\033[m"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32mSettings for script \033[37m\033[1msent_userinfo_postfix.sh\033[m"
|
||||
@ -107,6 +164,16 @@ echo " Mail Sender Organisation..........: $email_from_org"
|
||||
echo ""
|
||||
echo " Mail User.........................: $mail_user"
|
||||
echo " Mail Group........................: $mail_group"
|
||||
echo ""
|
||||
echo " Test Run..........................: $TEST_RUN"
|
||||
if $TEST_RUN ; then
|
||||
echo " Recipient address for test run....: $test_email"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
if ! $TEST_RUN ; then
|
||||
warn "This is \033[1mNOT\033[m a test run. All local mailboxes will receive the user info e-mail."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
OK=
|
||||
@ -127,7 +194,18 @@ while [ "$OK" != "yes" -o "$OK" != "no" ] ; do
|
||||
done
|
||||
[[ $OK = "yes" ]] || fatal "Repeat execution with different parameters."
|
||||
|
||||
|
||||
echo ""
|
||||
echononl " Create log directory '$(dirname "$logfile")'.."
|
||||
if [[ ! -d "$(dirname "$logfile")" ]] ; then
|
||||
mkdir "$(dirname "$logfile")"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
fi
|
||||
else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
> $logfile
|
||||
|
||||
@ -151,7 +229,14 @@ echo -e "\n\t --- Sending userinfo into all local virtual mailboxes --\n" | tee
|
||||
|
||||
## - list of local virtual domains
|
||||
## -
|
||||
domains=`su postgres -c"psql -At -F ' ' postfix -c\"SELECT domain FROM domain WHERE domain != 'ALL' ORDER BY domain\""`
|
||||
if $TEST_RUN ; then
|
||||
if [[ ! "${test_email}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]] ; then
|
||||
fatal "The given recipient address (${test_email}) for test run does not look like a correct e-mail address!"
|
||||
fi
|
||||
domains="${test_email##*@}"
|
||||
else
|
||||
domains=`su postgres -c"psql -At -F ' ' postfix -c\"SELECT domain FROM domain WHERE domain != 'ALL' ORDER BY domain\""`
|
||||
fi
|
||||
|
||||
declare -i num_dom=0;
|
||||
declare -i num_mbox_failed=0;
|
||||
@ -163,7 +248,11 @@ email_from_regex="$(echo ${email_from//\@/\\@})"
|
||||
|
||||
for domain in $domains ;do
|
||||
echo -e "\nDOMAIN: $domain\n" | tee -a $logfile
|
||||
local_parts=`su postgres -c"psql -At -F ' ' postfix -c\"SELECT local_part FROM mailbox WHERE domain = '$domain'\""`
|
||||
if $TEST_RUN ; then
|
||||
local_parts="${test_email%%@*}"
|
||||
else
|
||||
local_parts=`su postgres -c"psql -At -F ' ' postfix -c\"SELECT local_part FROM mailbox WHERE domain = '$domain'\""`
|
||||
fi
|
||||
for local_part in $local_parts ; do
|
||||
cp "$user_info_file" "$tmp_dir"
|
||||
perl -i -n -p -e "s/%email_to%/$local_part\@$domain/" "${tmp_dir}/$(basename $user_info_file)"
|
||||
@ -183,6 +272,10 @@ for domain in $domains ;do
|
||||
num_dom=num_dom+1
|
||||
done
|
||||
|
||||
if ! $TEST_RUN ; then
|
||||
mv "$user_info_file" "${user_info_file}.SENT.$(date +%Y-%m-%d)"
|
||||
fi
|
||||
|
||||
echo -e "\n\n----- Statistics -----\n\n\tSent mail to $num_mbox mailboxe(s) of $num_dom domain(s)" | tee -a $logfile
|
||||
|
||||
if [ $num_mbox_failed -gt 0 ];then
|
||||
|
Loading…
Reference in New Issue
Block a user