DKIM 확인 시 거짓음성을 Exim합니다.

DKIM 확인 시 거짓음성을 Exim합니다.

exim4를 사용하는 내 메일 서버에는 DKIM 서명을 확인하는 ACL이 있습니다. 모든 것을 받아들이지만 실패를 기록하고 결과가 포함된 헤더를 작성합니다.

DKIM 서명을 올바르게 추가하고 있다고 생각되는 다른 서버에서 메일을 보내고 있습니다. (예를 들어 Gmail과 Outlook 주소로 메일을 보냈고 헤더를 검사했으며 두 시스템 모두 DKIM에 패스를 제공했습니다.) 하지만 내 메일 서버는 bodyhash_mismatch.

내 메일 서버가 항상 DKIM이 실패했다고 말하는 것은 아닙니다.

여기 이메일이 있습니다. 도메인을 변경했습니다.

  • example.org이는 주요 조직의 도메인입니다. 그것은에서 사용됩니다에서:헤더이며 서명자 도메인입니다. 공개 키는 DNS에 게시됩니다.
  • sender.example.org이는 이메일을 보내고 DKIM 헤더를 생성하는 서버입니다. 그건복귀 경로머리글.
  • Receiver.example.org이것은 DKIM이 확인되는 내 메일 서버의 도메인입니다. 여기에 X-dkim-check헤더가 추가되고 다음 텍스트는 domain=다음에서 가져옵니다.$dkim_cur_signer
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mail.receiver.example.org
    by mail.receiver.example.org with LMTP
    id t8rHGepc52SOVA8ADCPZSA
    (envelope-from <[email protected]>)
    for <[email protected]>; Thu, 24 Aug 2023 14:36:42 +0100
Received: from sender-rdns.example.org ([1.2.3.4] helo=sender.example.org)
    by mail.receiver.example.org with esmtps  (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    (Exim 4.94.2)
    (envelope-from <[email protected]>)
    id 1qZAVv-004DMU-00
    for [email protected]; Thu, 24 Aug 2023 14:36:42 +0100
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    d=example.org; s=220151210; h=Sender:Message-Id:Subject:From:To:Date:
    Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
    Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
    :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
    List-Subscribe:List-Post:List-Owner:List-Archive;
    bh=ecGWgWCJeWxJFeM0urOVWP+KOlqqvsQYKOpYUP8nk7I=; b=GTY2HZVje81tRJ0/xKFNUk5d7/
    9wE7CGtwmz2APM5VTDKY6q+qIbwhCRNzc6IWZ4j0Y9FOtnuVBeNR1I5xbOuqPaf62MYQZJFjLQ3/J
    PNpOpS3i1Yd3NCZUs1iB/Q8N+ii73FrvD5k1AA8F5yzJhVeaposgbkvU5vv1s/KgqTIA=;
Received: from localhost ([127.0.0.1] helo=sender.example.org)
    by sender.example.org with esmtp (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1qZAVt-001EhO-2k
    for [email protected];
    Thu, 24 Aug 2023 14:36:41 +0100
Date: Thu, 24 Aug 2023 14:36:41 +0100
To: [email protected]
From: [email protected]
Subject: test Thu, 24 Aug 2023 14:36:41 +0100
Message-Id: <[email protected]>
X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
Sender: [email protected]
X-dkim-check: DKIM test failed: (domain=example.org), signature is bad.

This is a test mailing

receiver.example.orgexim on에서 서명이 잘못되었다고 생각하는 이유를 디버깅하려면 어떻게 해야 합니까 ?

(DKIM 서명에는 존재하지 않는 헤더가 많이 포함되어 있습니다. 그게 이유일까요?)

편집: 세부정보 추가:

  • exim 서명: 4.96-15+deb12u1.
  • Exim 수신: 4.94.2-7~bpo10+1

답변1

"불량" 메시지가 서명을 확인할 수 없는 특별한 이유를 나타내는 것은 아니라고 생각합니다. 적절한 인증-결과 헤더 구성: 해당 릴레이exex가 당신에게 말하는 모든 것을 통해 $dkim_verify_reason.

정확히 지적해 보세요어느메시지가 실패하면 특정 메시지 또는 메시지 부분 크기(블록 정렬, <=16KiB, >=16MiB.. 테스트 메시지가 작아 보입니다) 또는 줄 길이(테스트 메시지가 깔끔하게 보입니다. 비정상적으로 접혀 있지만).

또한 전송된 메시지 소스를 비교하십시오(이상적으로는 Sent메일함에 별도로 업로드되었으므로). 수신 시 폐기되는 일부 구문 문제가 있을 수 있지만 서명에는 중요했습니다.

아이디어:

  • 서명에 후행 세미콜론이 있고 마지막 b= 태그 앞에 접힌 부분이 없습니다. 이는 다소 드문 일입니다. 덜 테스트되었으며 서명되었을 때 메시지가 어떻게 보였는지 아닐 수도 있습니다.
  • 또한 고대 exim 버전과 함께 사용되는 최신 TLS 버전도 있습니다("Exim의 모든 버전버전 4.96 이전은 이제 더 이상 사용되지 않습니다.."). 이미 업스트림에 적용된 관련 수정 사항이 누락된 배포자 빌드를 사용하고 있는지 궁금합니다.

나는 후자가 문제를 일으키는 것으로 의심합니다.이번 패치데비안에서는 적용되지 않습니다오래된 안정지금까지. 그렇다면 TLS를 통해 BDAT를 통해 전송되는 작은 메시지에 주로 영향을 미칩니다.

  1. exim의 최신 릴리스로 업데이트 - 이미 백포트에 있으므로 데비안 업그레이드가 필요할 수 있음 -또는
  2. 데비안 버그 보고서 읽기 또는 제출, 누락된 수정 사항(링크는4.94.2에 적용할 수 있는 선별된 버전) 여기에서 실제로 잘못이 있는 경우 잘못이 끌어당길 가치가 있다고 판단될 수 있다고 생각합니다.또는
  3. 사용 사례에 적합한 경우 청킹 지원(RFC 3030)을 모두 비활성화합니다.비어 있는 chunking_advertise_hosts =누구에게도 BDAT 가용성을 알리지 않으므로 큰 메시지의 경우 상당한 성능 비용이 발생할 수 있습니다.

관련 정보