postfix/sent_userinfo_postfix.sh
2017-02-21 02:32:44 +01:00

103 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
user_info_file="/root/Heartbleed-Bug_userinfo.txt"
email_from="oo@oopen.de"
mail_user=vmail
mail_group=vmail
mail_basedir=/var/vmail
logfile=/tmp/user_mail.log
> $logfile
curdir=`pwd`
rc_done="\033[71G[ \033[32mdone\033[m ]"
rc_failed="\033[71G[ \033[31m\033[1mfailed\033[m ]"
## - Functions
## -
echononl(){
echo X\\c > /tmp/shprompt$$
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
echo "$*\\c" 1>&2
else
echo -e -n "$*" 1>&2
fi
rm /tmp/shprompt$$
}
fatal(){
echo ""
echo Fehler: $*
echo -e "\n\t\033[31m\033[1mSkript wird abgebrochen\033[m\033[m\n"
echo
exit 1
}
## -
## - End: Functions
if [ ! -f $user_info_file ]; then
fatal "Kann Mailtext nicht finden"
fi
pwd=`pwd`
cd /tmp
clear
echo -e "\n\t --- Sending userinfo into all local virtual mailboxes --\n" | tee -a $logfile
if [ ! -f $user_info_file ];then
echo "[FATAL]: Info-file to send does not exist !!" >> $logfile
fatal "User Info-file to send does not exist !!"
fi
## - list of local virtual domains
## -
domains=`su postgres -c"psql -At -F ' ' postfix -c\"SELECT domain FROM domain WHERE domain != 'ALL' ORDER BY domain\""`
declare -i num_dom=0;
declare -i num_mbox_failed=0;
declare -i num_mbox=0;
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'\""`
for local_part in $local_parts ; do
cp $user_info_file /tmp/
perl -i -n -p -e "s/%email_to%/$local_part\@$domain/" /tmp/`basename $user_info_file`
echononl "\tSend userinfo to $local_part@$domain.."
cat /tmp/`basename $user_info_file` | /usr/sbin/sendmail -F 'Christoph Kuchenbuch' -f $email_from -t "$local_part@$domain"
if [ "$?" = "0" ]; then
num_mbox=num_mbox+1
echo -e "$rc_done"
else
echo -e "$rc_failed"
echo " [ERROR]: Cannot sent userinfo to \"$local_part\@$domain\"!" >> $logfile
num_mbox_failed=num_mbox_failed+1
fi
done
num_dom=num_dom+1
done
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
echo -e "\n\tFailed sending mail to $num_mbox_failed mailboxe(s)" >> $logfile
echo -e "\n\t\033[31m\033[1mFailed sending mail to $num_mbox_failed mailboxe(s)\033[m\033[m"
echo -e "\n\n-- See $logfile for details\n" | tee -a $logfile
fi
echo
cd $pwd
rm /tmp/`basename $user_info_file`
exit