2016-11-02 12 views
2

의 Gmail뿐만 아니라 로컬 ISP가 수출입 이메일에 대한 DKIM을 전달하지만,이 헤더에서 언급 한 실패와 마이크로 소프트가,하지 않는 :수출입의 DKIM 서명은 * Microsoft 서버 (전망, 핫메일)에서 확인하지 *을

인증 결과 : spf = pass (보낸 사람 IP는 [올바른 IP]) smtp.mailfrom = [올바른 도메인] .co.uk; outlook.com; dkim = fail (서명이 이 아닌 경우) header.d = [올바른 도메인]; outlook.com; dmarc = bestguesspass action = none header.from = [올바른 도메인];

내가 시도하는 것 : 내가 (다른 DNS TXT 레코드 즉, 다른 공개 키를 다른 DKIM 선택기를 사용하여) Google 애플리케이션 (G 스위트) 이메일을 통해 동일한 도메인에서 전망으로 이메일을 보내

메시지 소스를 비교하려면 - Google의 메시지가 DKIM을 통과했습니다.

  1. 는 구글이 "H"태그에 훨씬 적은 헤더를 포함, 그래서 나는 수출입도 정확하게 이것들을 사용하지만, 아무 소용에 재구성 :

    나는 두 가지를 발견했습니다.

  2. Google은 Exim의 구성에서 소문자로 입력 했어도 Exim은 그렇지 않지만 "h"태그에는 소문자로 헤더 이름을 포함 시켰습니다. 그 헤더 이름은 헤더 서명 해시 해시를 생성 할 때 헤더 이름을 더 낮게해야하지만 텍스트는 "h"태그 (http://dkimcore.org/specification.html 섹션 3.2)의 헤더 이름에 동일하게 적용된다고 표시하지 않지만 Google이하는 것처럼 보입니다. 이. 나는 Exim에서 이것을 무시하는 것이 아주 어려울 것이라고 생각합니까?

는 I는 "H"의 차이 외에, DKIM 서명 헤더 구조가 정확히 동일한 것을 발견 모두 약간 공백 차이합니다 (수출입 하나 판매용 세미콜론 분리 후 구역 및 새로운 라인의 바 , 그래서 그것은 괜찮아 보인다, 그냥 다르게 깨진). 처음 엔 Exim이 필수 태그를 설정하지 않았을 수도 있지만, 그런 경우에는 오류가 달라야한다고 생각했습니다.

수출입 버전 : 4.87 의 cPanel (11)에 CentOS 7.2 서버 수출입 DKIM 구성에서 실행 :

dkim_remote_smtp: 
    driver = smtp 
    interface = <; ${if exists {/etc/mailips}{${lookup{${lc:$sender_address_domain}}lsearch{/etc/maili 
ps}{$value}{${lookup{${lc:$sender_address_domain}}lsearch{/etc/mailips}{$value}{${lookup{${perl{get_ 
sender_from_uid}}}lsearch*{/etc/mailips}{$value}{}}}}}}}} 
    helo_data = ${if exists {/etc/mailhelo}{${lookup{${lc:$sender_address_domain}}lsearch{/etc/mailhel 
o}{$value}{${lookup{${lc:$sender_address_domain}}lsearch{/etc/mailhelo}{$value}{${lookup{${perl{get_ 
sender_from_uid}}}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}}}}}{$primary_hostname}} 
    dkim_domain = ${lc:$sender_address_domain} 
    dkim_selector = default 
    dkim_private_key = "/var/cpanel/domain_keys/private/${dkim_domain}" 
    dkim_canon = relaxed 
    dkim_sign_headers = to:from:subject:message-id:date:user-agent:mime-version:content-transfer-encoding 

(마지막 줄에 날에 의해 추가 된 -는 이전 작업 중 하나를하지 않았다)

로 그것은 오류가 특별히 서명 확인과 관련이있는 것으로 보입니다. 다음은 관련이 있다고 생각하지 않지만 어쨌든 포함시켜야합니다 :

Exim 이메일은 서버의 Mr nobody에 의해 보내졌지만 enve lope-from과 Return-Path 헤더는 의도 된 발신자의 정확한 이메일 주소입니다. MS에서도 SPF가 통과하기 때문에이 영역에는 아무런 문제가 없어야합니다.

구글로부터 전송 된 이메일

메시지 ID 갖지만 : < 수출입 의해 전송 [송신자 도메인]>

이메일 @ [ID] 갖는다

을 Message-ID : < [id] @ [서버 호스트 이름]>

도움/아이디어를 많이 주시면 감사하겠습니다. 언제나 MS가 인생을 어렵게 만드는 것처럼 ... 재미있는가요?

답변

2

운이 좋았다! Exim의 사용자 메일 링리스트를 게시하기 전에 절망적으로 검색했을 때 그 답을 발견했습니다. 내가 열어 준 발표 메시지 중 하나가 exim-dev에도 게시되었으므로 맨 아래에 보관 뷰어가이 메일 링리스트에 이전 메시지를 표시했습니다.이 메시지는 오래되고 해결 된 DKIM 버그에 관한 것입니다. "dkim_sign_headers에 포함 된 헤더는 메시지에없는 경우에는 서명에 포함되지 않습니다. " 그러나

이 나에게 내 수출입에 ... dkim_sign_headers에서 이메일을 생성하지 않은 헤더를 제외 할 생각을했다 그리고 그것은 (서명이 확인되었다)

DKIM = 패스 : 근무

DKIM 서명이 "h"태그에 지정된 존재하지 않는 헤더를 사용하여 계산되어 전자 메일에 나중에 추가되면 서명이 실패하게됩니다 (보안 상 일부 의미가 있음). 그래서 내 생각에 MS가 계산을 망치고 있지만, 나는 확실히 모른다.

+0

공유해 주셔서 감사합니다. – Henry

+0

안녕하세요! 해결책은 Exim 구성 파일에 다음 문자열을 추가하는 것이 었습니다. 'dkim_sign_headers = to : from : subject : message-id : date : user-agent : mime-version : content-transfer-encoding' – NetVicious