20 lines
793 B
Bash
20 lines
793 B
Bash
|
|
#!/bin/sh
|
||
|
|
set -eu
|
||
|
|
mkdir -p /etc/opendkim/keys
|
||
|
|
: > /etc/opendkim/KeyTable
|
||
|
|
: > /etc/opendkim/SigningTable
|
||
|
|
if [ -f /data/lanqin.db ]; then
|
||
|
|
sqlite3 -separator '|' /data/lanqin.db "SELECT name, dkim_selector, dkim_private_key FROM domains WHERE status='active';" | while IFS='|' read -r domain selector private_key; do
|
||
|
|
[ -n "$domain" ] || continue
|
||
|
|
dir="/etc/opendkim/keys/$domain"
|
||
|
|
mkdir -p "$dir"
|
||
|
|
keyfile="$dir/$selector.private"
|
||
|
|
printf '%s' "$private_key" | base64 -d > "$keyfile"
|
||
|
|
chmod 600 "$keyfile"
|
||
|
|
echo "$selector._domainkey.$domain $domain:$selector:$keyfile" >> /etc/opendkim/KeyTable
|
||
|
|
echo "*@${domain} ${selector}._domainkey.${domain}" >> /etc/opendkim/SigningTable
|
||
|
|
done
|
||
|
|
fi
|
||
|
|
chown -R opendkim:opendkim /etc/opendkim
|
||
|
|
exec opendkim -f -x /etc/opendkim.conf
|