home · contact · privacy
Improve friendliness of opendkim setup script.
[config] / setup_opendkim.sh
1 #!/bin/sh
2 set -e
3 selector=$1
4 file=$2
5
6 if [ ! -n "$selector" ]; then
7     cat << EOF
8 Usage: $0 SELECTOR [KEYFILE] - set up DKIM system and configuration
9
10 If existing KEYFILE is given, set up DKIM to use SELECTOR and apply key from
11 KEYFILE.
12
13 If existing KEYFILE is not given, generate KEYFILE and DNS TXT file for
14 SELECTOR.
15 EOF
16     exit
17 fi
18
19 if [ ! "$(id -u)" -eq "0" ]; then
20     echo "Must be run as root."
21     exit 1
22 fi
23
24 set -x
25 apt-get -y install opendkim
26
27 if [ ! -n "$file" ]; then
28     apt-get -y install opendkim-tools
29     opendkim-genkey -d plomlompom.com -s $selector
30     apt-get -y --purge autoremove opendkim-tools
31     set +x
32     echo
33     echo 'Generated key file at '$selector'.private.'
34     echo 'APPLY the content of '$selector'.txt below to your DNS record.'
35     echo 'AFTER the waiting time for DNS propagation RERUN this script with' \
36           'the key file as SECOND parameter (still use selector as first one).'
37     echo
38     cat $selector.txt
39 else
40     if [ ! -f "$file" ]; then
41         set +x
42         echo
43         echo "Keyfile $file does not exist."
44         exit 1
45     fi
46     cp ~/config/systemfiles/opendkim.conf /etc/opendkim.conf
47     sed -r -i 's/^#Selector .*$/Selector '$selector'/' /etc/opendkim.conf
48     mkdir -p /etc/opendkim
49     if [ -f /etc/opendkim/dkim.key ]; then
50         cp /etc/opendkim/dkim.key /etc/opendkim/dkim.key~
51     fi
52     cp $file /etc/opendkim/dkim.key
53     cp ~/config/systemfiles/main.cf /etc/postfix/main.cf
54     cat >> /etc/postfix/main.cf << EOF
55
56 # Use opendkim at given port as mail filter.
57 non_smtpd_milters = inet:localhost:12301
58 EOF
59     service opendkim restart
60     service postfix restart
61     set +x
62     echo
63     echo 'Ensure the DKIM TXT entry in your DNS record matches!'
64 fi