Exim não quer fazer corretamente a assinatura do DKIM

6

Estou usando o exim 4.82 no sid do Debian. Eu segui vários tutoriais sobre como configurar o exim para assinar e-mails de saída, mas parece que algo não está se comportando como deveria ser.

Meu diagnóstico é de que $sender_address_domain está sempre configurado para o nome do host do servidor ( /etc/hostname ), independentemente do campo From: na mensagem de e-mail.

Eu defini as seguintes macros em /etc/exim4/conf.d/transport/00_exim4-config_header :

DKIM_CANON = relaxed
DKIM_DOMAIN = ${sender_address_domain}
DKIM_SELECTOR = dkim
DKIM_PRIVATE_KEY = /etc/exim4/dkim.private.key

Esta configuração atual sinaliza emails de saída, mas o domínio na assinatura DKIM é sempre definido como euvps.rolisoft.net , independentemente do campo From: . Meu melhor palpite é que $sender_address_domain esteja definido como euvps.rolisoft.net , quando deveria ser definido para o domínio do endereço de e-mail no campo From: .

Por causa disso, a verificação falha com a mensagem bad version :

DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    d=euvps.rolisoft.net; s=dkim;  // <- d= should be set to whatever is in From
    h=Date:Message-Id:From:Subject:To; bh=...; b=...;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of [email protected] designates 188.226.159.108 as permitted sender) [email protected];
       dkim=neutral (bad version) [email protected];
       dmarc=fail (p=NONE dis=NONE) header.from=seriesinfos.com

Definir DKIM_DOMAIN manualmente para um nome de domínio para o qual vou enviar uma mensagem de resolve isso, e a assinatura DKIM se torna válida. No entanto, estou usando vários nomes de domínio, por isso seria melhor se o DKIM_DOMAIN fosse definido automaticamente para qualquer email do qual estou enviando a mensagem.

Eu não configurei roteadores e transportes personalizados, como sugerem alguns tutoriais. (Eu fiz isso em algum momento, mas teve os mesmos resultados, então eu os removi.)

A definição de DKIM_DOMAIN para ${lookup{$sender_address}lsearch*@{/etc/exim4/dkim_senders}} (com dkim_senders configurado corretamente) simplesmente não irá assinar as mensagens, mas dkim_senders não tem euvps.rolisoft.net , por isso estou supondo que $sender_address também está definido como euvps.rolisoft.net , e é por isso que a falta de assinatura.

Não sei exatamente como depurar o que $sender_address_domain está definido.

    
por RoliSoft 24.04.2014 / 16:56

1 resposta

4

Embora ainda não tenha certeza do motivo pelo qual o $sender_address foi preenchido corretamente, encontrei uma solução alternativa para o problema usando outra variável:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}

Isso define o nome do domínio corretamente na assinatura DKIM.

Para deixar de assinar domínios para os quais não tenho chave, configurei duas outras macros:

DKIM_FILE = /etc/exim4/keys/${lc:${domain:$h_from:}}.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

Essencialmente, eles procuram apenas uma chave privada em /etc/exim4/keys/*domain*.pem e não assinarão se ela não existir.

    
por 24.04.2014 / 17:40