Skip to content

Instantly share code, notes, and snippets.

@rbewley4
Last active February 21, 2021 00:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbewley4/7777257 to your computer and use it in GitHub Desktop.
Save rbewley4/7777257 to your computer and use it in GitHub Desktop.
Install DKIM for Postfix on CentOS 6.3 using dkim-milter.
#!/bin/bash
# Prerequisite: (EPEL repository)[http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x]
#
# Usage: postfix_dkim.sh domain selector
#
#
# After the script runs, you will need to create TXT DNS records for the domain key:
# <selector>._domainkey.<domain> IN TXT "copy and paste the content of /etc/mail/dkim-milter/keys/<domain>/<selector>.txt here"
# _domainkey.<domain> IN TXT "o=~"
domain="$1"
selector="$2"
# install dkim-milter
yum --nogpgcheck -y install dkim-milter
# generate a key for your domain
cd /etc/mail/dkim-milter/keys
mkdir $domain
cd $domain
dkim-genkey -r -d $domain -s $selector
cd ..
chown -R dkim-milter:dkim-milter $domain
chmod -R 600 ${domain}/*
# configure dkim-milter's keylist
echo "*:${domain}:/etc/mail/dkim-milter/keys/${domain}/${selector}" >> /etc/mail/dkim-milter/keys/keylist
# configure dkim-milter's logging and network settings
# and disable original socket rule
sed -i "s/Socket/#Socket/g" /etc/mail/dkim-milter/dkim-filter.conf
echo "Syslog yes" >> /etc/mail/dkim-milter/dkim-filter.conf
echo "SyslogFacility mail" >> /etc/mail/dkim-milter/dkim-filter.conf
echo "Socket inet:8891@localhost" >> /etc/mail/dkim-milter/dkim-filter.conf
# configure dkim-milter InternalHosts
echo “127.0.0.1” > /etc/mail/dkim-milter/hosts
echo “InternalHosts /etc/mail/dkim-milter/hosts” >> /etc/mail/dkim-milter/dkim-filter.conf
# configure postfix to use dkim-milter
echo "milter_default_action = accept" >> /etc/postfix/main.cf
echo "milter_protocol = 2" >> /etc/postfix/main.cf
echo "smtpd_milters = inet:localhost:8891" >> /etc/postfix/main.cf
echo "non_smtpd_milters = inet:localhost:8891" >> /etc/postfix/main.cf
# restart services
service dkim-milter restart
service postfix restart
# print out DNS info
echo "Use the following information to your DNS records:"
cat /etc/mail/dkim-milter/keys/${domain}/${selector}.txt
@gbasilveira
Copy link

Line 24: if ${domain} is clean changes system's permission. It must be changes to: chmod -R 600 ${domain} [EOL]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment