2014-10-20 20:20:24 +00:00
|
|
|
#!/bin/bash
|
2014-10-04 21:57:26 +00:00
|
|
|
# OpenDKIM
|
2014-10-13 14:00:26 +00:00
|
|
|
# --------
|
2014-10-04 21:57:26 +00:00
|
|
|
#
|
|
|
|
# OpenDKIM provides a service that puts a DKIM signature on outbound mail.
|
|
|
|
#
|
|
|
|
# The DNS configuration for DKIM is done in the management daemon.
|
2013-08-21 20:53:22 +00:00
|
|
|
|
2014-06-03 11:12:38 +00:00
|
|
|
source setup/functions.sh # load our functions
|
2014-10-20 20:33:20 +00:00
|
|
|
source /etc/mailinabox.conf # load global vars
|
2014-05-01 19:13:00 +00:00
|
|
|
|
2014-10-04 21:57:26 +00:00
|
|
|
# Install DKIM...
|
2015-02-16 23:16:09 +00:00
|
|
|
apt_install opendkim opendkim-tools opendmarc
|
2013-08-21 20:53:22 +00:00
|
|
|
|
2013-09-01 14:13:51 +00:00
|
|
|
# Make sure configuration directories exist.
|
2013-08-21 20:53:22 +00:00
|
|
|
mkdir -p /etc/opendkim;
|
|
|
|
mkdir -p $STORAGE_ROOT/mail/dkim
|
|
|
|
|
2013-09-01 14:13:51 +00:00
|
|
|
# Used in InternalHosts and ExternalIgnoreList configuration directives.
|
|
|
|
# Not quite sure why.
|
2013-08-21 20:53:22 +00:00
|
|
|
echo "127.0.0.1" > /etc/opendkim/TrustedHosts
|
|
|
|
|
|
|
|
if grep -q "ExternalIgnoreList" /etc/opendkim.conf; then
|
2014-10-04 21:57:26 +00:00
|
|
|
true # already done #NODOC
|
2013-08-21 20:53:22 +00:00
|
|
|
else
|
2014-10-04 21:57:26 +00:00
|
|
|
# Add various configuration options to the end of `opendkim.conf`.
|
2013-08-21 20:53:22 +00:00
|
|
|
cat >> /etc/opendkim.conf << EOF;
|
|
|
|
MinimumKeyBits 1024
|
|
|
|
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
|
|
|
|
InternalHosts refile:/etc/opendkim/TrustedHosts
|
|
|
|
KeyTable refile:/etc/opendkim/KeyTable
|
|
|
|
SigningTable refile:/etc/opendkim/SigningTable
|
|
|
|
Socket inet:8891@localhost
|
|
|
|
RequireSafeKeys false
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
2014-10-04 21:57:26 +00:00
|
|
|
# Create a new DKIM key. This creates
|
2013-09-01 14:13:51 +00:00
|
|
|
# mail.private and mail.txt in $STORAGE_ROOT/mail/dkim. The former
|
|
|
|
# is the actual private key and the latter is the suggested DNS TXT
|
|
|
|
# entry which we'll want to include in our DNS setup.
|
2014-06-03 21:42:33 +00:00
|
|
|
if [ ! -f "$STORAGE_ROOT/mail/dkim/mail.private" ]; then
|
2013-08-21 20:53:22 +00:00
|
|
|
# Should we specify -h rsa-sha256?
|
|
|
|
opendkim-genkey -r -s mail -D $STORAGE_ROOT/mail/dkim
|
|
|
|
fi
|
|
|
|
|
2013-09-01 14:13:51 +00:00
|
|
|
# Ensure files are owned by the opendkim user and are private otherwise.
|
2013-08-21 20:53:22 +00:00
|
|
|
chown -R opendkim:opendkim $STORAGE_ROOT/mail/dkim
|
|
|
|
chmod go-rwx $STORAGE_ROOT/mail/dkim
|
|
|
|
|
2015-02-16 23:16:09 +00:00
|
|
|
tools/editconf.py /etc/opendmarc.conf -s \
|
|
|
|
"Syslog=true" \
|
|
|
|
"Socket=inet:8893@[127.0.0.1]"
|
|
|
|
|
|
|
|
# Add OpenDKIM and OpenDMARC as milters to postfix, which is how OpenDKIM
|
|
|
|
# intercepts outgoing mail to perform the signing (by adding a mail header)
|
|
|
|
# and how they both intercept incoming mail to add Authentication-Results
|
|
|
|
# headers. The order possibly/probably matters: OpenDMARC relies on the
|
|
|
|
# OpenDKIM Authentication-Results header already being present.
|
|
|
|
#
|
|
|
|
# Be careful. If we add other milters later, this needs to be concatenated
|
|
|
|
# on the smtpd_milters line.
|
2013-08-21 20:53:22 +00:00
|
|
|
tools/editconf.py /etc/postfix/main.cf \
|
2015-02-16 23:16:09 +00:00
|
|
|
"smtpd_milters=inet:127.0.0.1:8891 inet:127.0.0.1:8893"\
|
2013-08-21 20:53:22 +00:00
|
|
|
non_smtpd_milters=\$smtpd_milters \
|
|
|
|
milter_default_action=accept
|
|
|
|
|
2013-09-01 14:13:51 +00:00
|
|
|
# Restart services.
|
2014-07-16 13:06:45 +00:00
|
|
|
restart_service opendkim
|
2015-02-16 23:16:09 +00:00
|
|
|
restart_service opendmarc
|
2014-07-16 13:06:45 +00:00
|
|
|
restart_service postfix
|
2013-08-21 20:53:22 +00:00
|
|
|
|