I’m always create new forwarding emails for different websites – helps me track down if and when their email list is hacked… To save logging into cPanel or WHM, I’ve created a little script to quickly add new forwarding emails.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/bin/sh ############################################################## # # # QUICK EMAIL FORWARDER # # # # Coded by Noah Hearle, Design Extreme # # https://designextreme.com # # # # Created: 2017/01/23 # # Modified: 2019/06/11 # # # # Post your comments at: # # https://blog.noah.hearle.com/quick-email-forwarder/ # # # # Usage: sh ./quick_email_forwarder.sh <alias> [--delete] # # # ############################################################## ## ARGUMENTS ## alias=$1 delete=$2 ## SETTINGS ## user=abcdomain domain=abcdomain.com list=/etc/valiases/$domain delete_regex='^[-]*d(elete)?$' email=$alias@$domain email_account=account@$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" |
Edit the settings to fit your domain and email setup. For multiple destinations, just use “, ” to separate the email addresses.
To make your special new email address, simply call the script with the alias as the only argument with an option -d or –delete command to remove an existing forwarder.
1 | sh ./quick_email_forwarder.sh alias [--delete] |
Please let me know what you think!
Today I added functionality to allow to removal of a forwarding email address. Enjoy!