Created
April 12, 2022 22:57
-
-
Save richardevcom/a79e8ca313c2b6f34f9ea8c02959165c to your computer and use it in GitHub Desktop.
Revisions
-
richardevcom created this gist
Apr 12, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,110 @@ #!/bin/bash # Which domain? get_domain(){ printf "\n" read -p "Domain: " DOMAIN } # Is domain set? domain_is_set(){ if [ -z "$DOMAIN" ]; then return 1 fi } # Is domain valid? domain_is_valid(){ if echo $DOMAIN | grep -P '(?=^.{4,253}$)(^(?:[a-zA-Z0-9](?:(?:[a-zA-Z0-9\-]){0,61}[a-zA-Z0-9])?\.)+([a-zA-Z]{2,}|xn--[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])$)' >/dev/null 2>&1; then return 0 else return 1 fi } # Prompt try again try_again() { printf "\n" read -p "Try again? (Y|N)" -n 1 if [[ $REPLY =~ ^[Yy]$ ]] then return 0 else return 1 fi } # Sign DKIM in table dkim_add_signing_table() { DKIM_SIGN_STRING="*@$DOMAIN\t\tdefault._domainkey.$DOMAIN" if grep -Fxq "$DOMAIN" /etc/opendkim/signing.table; then echo "DKIM already signed in /etc/opendkim/signing.table" else echo -e $DKIM_SIGN_STRING >> /etc/opendkim/signing.table echo "Added $DKIM_SIGN_STRING to /etc/opendkim/signing.table" fi } # Add key to table dkim_add_key_table(){ DKIM_KEY_STRING="default._domainkey.$DOMAIN\t$DOMAIN:default:/etc/opendkim/keys/$DOMAIN/default.private" if grep -Fxq "$DOMAIN" /etc/opendkim/key.table; then echo "DKIM key already in /etc/opendkim/key.table" else echo -e $DKIM_KEY_STRING >> /etc/opendkim/key.table echo "Added $DKIM_KEY_STRING to /etc/opendkim/key.table" fi } # Add domain to trusted hosts add_trusted_host(){ TRUSTED_HOST_STRING="*.$DOMAIN" if grep -Fxq "$DOMAIN" /etc/opendkim/trusted.hosts; then echo "Domain already in /etc/opendkim/trusted.hosts" else echo -e $TRUSTED_HOST_STRING >> /etc/opendkim/trusted.hosts echo "Added $TRUSTED_HOST_STRING to /etc/opendkim/trusted.hosts" fi } mkdirs(){ mkdir /etc/opendkim/keys/$DOMAIN } mkkeys(){ opendkim-genkey -b 2048 -d $DOMAIN -D /etc/opendkim/keys/$DOMAIN -s default -v } own(){ chown opendkim:opendkim /etc/opendkim/keys/$DOMAIN/default.private chmod 600 /etc/opendkim/keys/$DOMAIN/default.private } while true; do get_domain if ! domain_is_set || ! domain_is_valid; then echo -ne "Please provide valid domain name (ex. domain.com)." if ! try_again; then break fi else dkim_add_signing_table dkim_add_key_table add_trusted_host mkdirs mkkeys own printf "\n" echo "You can now add these DNS records as follows:" echo "---------------------------------------------" echo " TXT @ v=spf1 mx ~all" # Print DKIM cat /etc/opendkim/keys/$DOMAIN/default.txt break fi done exit 0 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,6 @@ #!/bin/bash printf "\n" read -p "Domain: " DOMAIN opendkim-testkey -d $DOMAIN -s default -vvv