Created
April 12, 2022 22:57
-
-
Save richardevcom/a79e8ca313c2b6f34f9ea8c02959165c to your computer and use it in GitHub Desktop.
Create Signing Table, Key Table, Trusted Hosts File and test DKIM key.
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 characters
#!/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 characters
#!/bin/bash | |
printf "\n" | |
read -p "Domain: " DOMAIN | |
opendkim-testkey -d $DOMAIN -s default -vvv |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Shout-out to @linuxbabe - for all his effort into creating in-depth #sysadmin tutorials about everything gnu linux. 🙏