Skip to content

Allow generating DKIM key for a virtual mailbox domain #619

@Shemeikka

Description

@Shemeikka

Currently generate-dkim-config checks if postfix-virtual.cf file exists and that there are domains in that file. This works for a basic configurations but doesn't work when using more complex configurations, e.q. using SQL database for transport maps.

Another script could be added, e.q. generate-dkim-domain(?), which would just generate DKIM key for a domain.

Example of the script

#!/bin/sh

set -e

if [ $# -ne 1 ]; then
    echo $0: "usage: ./generate-dkim.sh domain"
    exit 1
fi

DOMAIN=$1

mkdir -p /tmp/docker-mailserver/opendkim/keys/$DOMAIN

if [ ! -f "/tmp/docker-mailserver/opendkim/keys/$DOMAIN/mail.private" ]; then
	echo "Creating DKIM private key /tmp/docker-mailserver/opendkim/keys/$DOMAIN/mail.private"
	opendkim-genkey --subdomains --domain=$DOMAIN --selector=mail -D /tmp/docker-mailserver/opendkim/keys/$DOMAIN
fi

# Write to KeyTable if necessary
keytableentry="mail._domainkey.$DOMAIN $DOMAIN:mail:/etc/opendkim/keys/$DOMAIN/mail.private"
if [ ! -f "/tmp/docker-mailserver/opendkim/KeyTable" ]; then
	echo "Creating DKIM KeyTable"
	echo $keytableentry > /tmp/docker-mailserver/opendkim/KeyTable
else
	if ! grep -q "$keytableentry" "/tmp/docker-mailserver/opendkim/KeyTable" ; then
	    echo $keytableentry >> /tmp/docker-mailserver/opendkim/KeyTable
	fi
fi

# Write to SigningTable if necessary
signingtableentry="*@$DOMAIN mail._domainkey.$DOMAIN"
if [ ! -f "/tmp/docker-mailserver/opendkim/SigningTable" ]; then
	echo "Creating DKIM SigningTable"
	echo "*@$DOMAIN mail._domainkey.$DOMAIN" > /tmp/docker-mailserver/opendkim/SigningTable
else
	if ! grep -q "$signingtableentry" "/tmp/docker-mailserver/opendkim/SigningTable" ; then
  		echo $signingtableentry >> /tmp/docker-mailserver/opendkim/SigningTable
	fi
fi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions