Bit de necropost, mas eu simplesmente uso uma linha:
dkim_private_key = ${if or {{!def:sender_host_address}{def:authenticated_id}}{DKIM_PRIVATE_KEY}{}}
(onde DKIM_PRIVATE_KEY é uma macro que fornece o caminho para a minha chave privada dkim).
Em seguida, se esta for uma mensagem 'originada localmente' (assim, $ sender_host_address é indefinido) ou o email vier de um usuário autenticado, dkim_private_key será definido e a mensagem será assinada.
Else (que deve significar apenas que estamos encaminhando uma mensagem, supondo que não seja um relay), dkim_private_key será a string vazia que (das especificações) significa que a mensagem não será assinada.