You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
#!/bin/sh |
|
## |
|
## milter-dkim-genkey.sh -- DKIM key generation |
|
## |
|
|
|
# command line parsing |
|
if [ $# -eq 0 ]; then |
|
echo "USAGE: milter-dkim-genkey <selector> [<domain> [<keyfile> [<keysize>]]]" 1>&2 |
|
exit 1 |
|
fi |
|
selector="$1" |
|
domain="$2" |
|
keyfile="$3" |
|
keysize="$4" |
|
case "$selector" in |
|
*.* ) |
|
domain=`echo "$selector" | sed -e 's;^[^.]*\.;;'` |
|
selector=`echo "$selector" | sed -e 's;^\([^.]*\)\..*$;\1;'` |
|
;; |
|
esac |
|
if [ ".$domain" = . ]; then |
|
domain="`@l_prefix@/lib/openpkg/shtool echo -e '%d' | sed -e 's;^\.;;'`" |
|
fi |
|
if [ ".$keyfile" = . ]; then |
|
keyfile="@l_prefix@/etc/milter-dkim/$selector.$domain.pem" |
|
fi |
|
if [ ".$keysize" = . ]; then |
|
keysize="1024" |
|
fi |
|
|
|
# key generation |
|
echo "++ generating $keysize bit RSA key $keyfile" |
|
if [ ! -f $keyfile ]; then |
|
(umask 027; @l_prefix@/bin/openssl genrsa -out $keyfile $keysize) |
|
chown @l_rusr@:@l_musr@ $keyfile; chmod 640 $keyfile |
|
else |
|
echo "** FILE ALREADY EXISTS, NOT OVERRIDDEN, KEPT AS IS" |
|
fi |
|
echo "" |
|
|
|
# DNS zone record generation |
|
echo "++ corresponding DNS record (public key part)" |
|
echo "-- [manually place into your DNS zonefile]" |
|
txt=`@l_prefix@/bin/openssl rsa -in $keyfile -pubout -outform PEM |\ |
|
perl -e '$_ = join("", <STDIN>); s/^-----.+?$//mg; s/\n+//sg; printf("t=y; k=rsa; p=%s\n", $_);'` |
|
echo "$selector._domainkey.$domain IN TXT \"$txt\"" |
|
echo "_policy._domainkey.$domain IN TXT \"t=y; o=~\"" |
|
echo "" |
|
|
|
# OpenPKG run-command configuration generation |
|
echo "++ corresponding OpenPKG milter-dkim configuration" |
|
echo "-- [manually place into @l_prefix@/etc/rc.conf]" |
|
echo "milter_dkim_selector=\"$selector\"" |
|
echo "milter_dkim_domain=\"$domain\"" |
|
echo "milter_dkim_keyfile=\"$keyfile\"" |
|
echo "" |
|
|
|
|