blob: 971496f65b1f2053c0e925d941a406559d62b136 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/bin/rc
# This script generates and stores DKIM keypair, using the correct user
dir = /etc/mail/dkim
user =_dkimsign_
selector = $1
privkey = $dir/$selector.priv.key
pubkey = $dir/$selector.pub.key
txt = $dir/$selector.txt
if (!~ $#* 1) {
echo 'usage: mkcert <selector>'
exit 2
}
fn die {
echo fatal error: $* >[1=2]
exit 1
}
fn mustsucceed {
if (!$*) {
echo fatal error: essential command failed >[1=2]
cleanupfailed
exit 1
}
}
fn cleanupfailed {
as rm $privkey
as rm $pubkey
as rm $txt
}
fn as {
doas -u _dkimsign $*
}
as test -e $privkey && die $privkey already exists
as test -e $pubkey && die $pubkey already exists
as test -e $txt && die $txt already exists
mustsucceed as mkdir -p $dir
mustsucceed as openssl genrsa -out $privkey
mustsucceed as openssl rsa -in $privkey -pubout | \
mustsucceed as tee $pubkey >/dev/null
mustsucceed as cat $pubkey | \
mustsucceed as sed '1s/.*/v=DKIM1;p=/;:nl;${s/-----.*//;q;};N;s/\n//g;b nl;' | \
mustsucceed as tee $txt >/dev/null
|