Exim4 não adiciona assinatura DKIM

5

Passou 2 dias tentando informar ao Exim para adicionar assinaturas DKIM no meu servidor Debian8. Sem sucesso. Li muitos how-tos, fóruns, mas nenhuma das soluções possíveis funciona no meu servidor.

Geraram as chaves:

cd /etc/exim4/

openssl genrsa -out example.com-private.pem 1024 -outform PEM
openssl rsa -in example.com-private.pem -out example.com.pem -pubout -outform PEM

Ter criado um arquivo

00_local_macros 

em

/etc/exim4/conf.d/main/ 

com o seguinte conteúdo:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}

Publicou um registro DNS de texto:

20160604._domainkey.example.com

conteúdo com chave pública:

k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRpHpC2q1ycmaqdnYlf5WI5g7ZyiXybd6EFdOqk35Sl7ZNfSeZelbyxqgLN+BzHpbp4Z4JDtKLSgBwugCePhl2xVDtQvO9XfqwQLMO5PAOONCLTwoGYrViwf5ki2zIqS2uN5MpuRTKW/IiK3CtRId+w5gjdACAvkwZWBstKEDrQQIDAQAB

# update-exim4.conf
# service exim4 restart

até reinicializou o servidor.

Todos os e-mails ainda chegam sem a assinatura DKIM.

Tentou adicionar linhas:

dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
dkim_sign_headers = true

para o arquivo /etc/exim4/conf.d./transport/30_exim4-config_remote_smtp como sugerido em algum fórum. Sem sucesso. Ainda não há assinatura DKIM.

exim4 -bV

Exim version 4.84_2 #2 built 13-Mar-2016 17:47:19
Copyright (c) University of Cambridge, 1995 - 2014
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014
Berkeley DB: Berkeley DB 5.3.28: (September  9, 2013)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM PRDR OCSP
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

Atualizar

Quase todos os tutoriais estão errados. Com a configuração Exim de arquivo único, as configurações do DKIM devem residir no arquivo exim4.conf.template. Funciona! Mas apenas um domínio dessa configuração:

DKIM_CANON = relaxed
DKIM_DOMAIN = example.com
DKIM_PRIVATE_KEY = /etc/exim4/dkim/example.com-private.pem
DKIM_SELECTOR = 20160604
#DKIM_STRICT = true

Vários domínios ainda não funcionam. Tentei várias configurações, mas ainda sem sucesso. Todos os três abaixo não funcionam:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${sender_address_domain}
DKIM_FILE = /etc/exim4/dkim/{DKIM_DOMAIN}-private.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}


DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem} {/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem}}

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
    
por aigffmss 05.06.2016 / 11:29

3 respostas

3

Verifique se você está usando o remote_smtp transport. Isso deve ser listado após T= em /var/log/exim4/mainlog nas linhas que contêm => . A verificação do DKIM no e-mail entregue localmente não funcionará, pois esse transporte não é usado. Use um serviço de verificação para verificar se seu e-mail está assinado.

Verifique as permissões na sua chave privada. Ele deve ser legível pelo uso do Exim como o Debian-exim para as instalações Debian e Ubuntu. Se o seu transporte for para dkim_strict , ele recolocará as mensagens se não puder assinar a mensagem. Ele registrará as causas de falha para o mainlog e o paniclog . Pode ser mais fácil encontrar a mensagem no paniclog .

Estas são as configurações necessárias para o funcionamento do DKIM. Você parece estar perdendo alguns. (Assino vários domínios com a mesma chave. Tente assinar com uma única chave antes de tentar usar a fantasia e use chaves separadas para domínios diferentes.) Essa configuração deve evitar que emails não assinados sejam enviados pelo remote_smtp transport.

DKIM_CANON = relaxed
DKIM_DOMAIN = ${sender_address_domain}
DKIM_PRIVATE_KEY = CONFDIR/dkim.private.20160604
DKIM_SELECTOR = ${extract{-1}{.}{DKIM_PRIVATE_KEY}}
DKIM_STRICT = true # optional - causes signing failures to defer (requeue)
#DKIM_SIGN_HEADERS = # Use default

Depois de assinar com uma chave estática funcionando. Você poderia tentar essas mudanças

DKIM_PRIVATE_KEY = CONFDIR/${sender_address_domain}.private.201604
DKIM_SELECTOR = 20160604
DKIM_STRICT = false # optional - pass if no key available

Você pode querer revisar:

por 05.06.2016 / 14:58
3

Isso funciona para mim:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/dkim/${dkim_domain}-private.pem} {/etc/exim4/dkim/${dkim_domain}-private.pem}}

Essas configurações devem ser colocadas no arquivo exim4.conf.template se você usar configuração Exim de arquivo único e não em 00_local_macros ou outros arquivos conforme explicado em muitos howtos.

Definir assinaturas DKIM no Exim é um problema (passei 3 dias) e os desenvolvedores do Exim devem corrigi-lo.

    
por 06.06.2016 / 00:32
0

Exim version 4.84_2 #2 built 25-Jul-2016 18:59:44

Veja o que funcionou para mim, eu estava na situação exata, o exim4 não estava adicionando a assinatura dkim.

Eu editei o arquivo /etc/exim4/update-exim4.conf.conf e descobri que mesmo quando eu estava usando a configuração split, o arquivo de configuração estava errado, então eu tive que mudar essa linha:

dc_use_split_config='true'

Em seguida, editei o arquivo 10_exim4-config_transport-macros e adicionei as seguintes linhas no final:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/dkim/${lc:${domain:$h_from:}}.private.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
DKIM_SELECTOR = exim

O trabalho anterior foi gerar o arquivo de chave privada e adicionar o registro DNS TXT, etc.

    
por 01.11.2016 / 01:35