Add and remove forwarding emails in shell
I've update an existing script to quickly add/remove forwarding emails for a particular domain
Please edit the settings in script before adding this to your script library. If you like it or would like me to extend it to any domain and account (as arguments), please let me know.
#!/bin/sh
##############################################################
# #
# QUICK EMAIL FORWARDER #
# #
# Coded by Noah Hearle, Design Extreme #
# https://designextreme.com #
# #
# Created: 2017/01/23 #
# Modified: 2019/06/10 #
# #
# Usage: sh ./quick_email_forwarder.sh [--delete] #
# #
##############################################################
## ARGUMENTS ##
alias=$1
delete=$2
## SETTINGS ##
user=somedomain
domain=somedomain.com
list=/etc/valiases/$domain
last_line="$(tail -n 1 $list)"
delete_regex='^[-]*d(elete)?$'
email=$alias@$domain
email_account=somealias@$domain
if [ -n "$2" ] && [[ $delete =~ $delete_regex ]]; then
if [ "$(grep -c $email $list)" -eq 0 ]; then
echo -e "\e[33mWarning:\e[0m Cannot remove $email as it is not found"
exit
fi
sed -i "/$email: $email_account/d" $list
echo -e "\e[92mSuccess:\e[0m Removed email: $email"
exit
fi
if [ "$(grep -c $email $list)" -gt 0 ]; then
echo -e "\e[33mWarning:\e[0m $email already exists"
exit
fi
sed -i '$ d' $list
echo $email: $email_account >> $list
sort $list -o $list
echo $last_line >> $list
chown --from=root.root $user.mail $list
echo -e "\e[92mSuccess:\e[0m Added email: $email"
Please edit the settings in script before adding this to your script library. If you like it or would like me to extend it to any domain and account (as arguments), please let me know.
-
Hi @Nahoo Thanks for sharing this with everyone! I do want to point out for anyone viewing this that while you're more than welcome to use custom 3rd party scripts/software we do not endorse the use of them and you do so at your own risk. Thanks! 0 -
To make it a little more fool-proof, I've added an existence check for the domain... #!/bin/sh ############################################################## # # # QUICK EMAIL FORWARDER # # # # Coded by Noah Hearle, Design Extreme # # https://designextreme.com # # # # Created: 2017/01/23 # # Modified: 2019/06/11 # # # # Usage: sh ./quick_email_forwarder.sh [--delete] # # # ############################################################## ## ARGUMENTS ## alias=$1 delete=$2 ## SETTINGS ## user=somedomain domain=somedomain.com list=/etc/valiases/$domain delete_regex='^[-]*d(elete)?$' email=$alias@$domain email_account=somealias@$domain if [ ! -f "$list" ]; then echo -e "\e[38;5;202mError:\e[0m Domain name '$domain' doesn"t exist in /etc/valiases/" exit fi last_line="$(tail -n 1 $list)" if [ -n "$2" ] && [[ $delete =~ $delete_regex ]]; then if [ "$(grep -c $email $list)" -eq 0 ]; then echo -e "\e[33mWarning:\e[0m Cannot remove $email as it is not found" exit fi sed -i "/$email: $email_account/d" $list echo -e "\e[92mSuccess:\e[0m Removed email: $email" exit fi if [ "$(grep -c $email $list)" -gt 0 ]; then echo -e "\e[33mWarning:\e[0m $email already exists" exit fi sed -i '$ d' $list echo $email: $email_account >> $list sort $list -o $list echo $last_line >> $list chown --from=root.root $user.mail $list echo -e "\e[92mSuccess:\e[0m Added email: $email"
0
Please sign in to leave a comment.
Comments
2 comments