DKIM은 모든 도메인에서 보내는 메일에 서명합니다 (Postfix 및 Ubuntu 사용)


40

메일 서버 (postfix 및 ubuntu)에 DKIM을 설정하여 발신 전자 메일에 서명합니다. 다음 지침을 사용했습니다 : https://help.ubuntu.com/community/Postfix/DKIM

그러나 나는 내 도메인뿐만 아니라 모든 도메인 (보낸 사람 주소)의 이메일에 서명해야합니다. 저는 이메일 뉴스 레터 서비스를 구축하고 있으며 클라이언트는 서버를 통해 자신의 이메일을 보낼 것입니다.

먼저 /etc/dkim-filter.conf에서 "Domain *"을 설정했습니다. 도메인에 관계없이 모든 발신 전자 메일에 DKIM 헤더를 포함시킬 수있었습니다.

그러나 확인 검사는 내 도메인 (및 DNS 레코드)이 아닌 보낸 사람 주소의 도메인을 확인하기 때문에 gmail에서 실패합니다. 누구든지 이것을하는 방법을 알고 있습니까?

답변:


41

Ok 나는 이것을 스스로 알아낼 수 있었지만, 이것에 대한 문서가 없었기 때문에 (후에 찾을 수있는) 문서가 거의 없었기 때문에 후손을위한 단계를 게시하고 싶었습니다. 실제로 추측하고 확인했습니다.

위에서 설명한대로 "도메인 *"을 설정하면 다음과 같이 서명합니다.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
    s=main; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

"d = clientdomain.com"을 확인하십시오. 전자 메일의 보낸 사람 주소를 기반으로이 주소를 생성했습니다. 보낸 사람 주소는 "contact@clientdomain.com"과 같습니다. 분명히 클라이언트의 도메인을 확인했지만 DNS TXT 레코드가 없으면 확인하지 못했습니다.

어쨌든 나는이 문서에서 KeyList 매개 변수를 설정할 수 있음을 알았습니다. http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html

그것은 내가하고 싶은 것을 실제로 묘사하지는 않았지만, 나는 그것을 가지고 놀 것이라고 생각했다. KeyFile을 주석 처리하고 KeyList를 "/etc/mail/dkim_domains.key"로 설정했습니다.이 파일은 임의의 파일 이름입니다. 그런 다음 해당 파일을 작성하여 "* : feedmailpro.com : /etc/mail/dkim.key"에 넣습니다. 클라이언트 도메인에 대해 알려주고 내 도메인 (feedmailpro.com)에 서명 한 다음 dkim.key 파일을 사용하십시오.

DKIM 및 postfix 재시작

sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart

이제 이것은 테스트 이메일을 보낼 때 생성 된 키입니다.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=dkim.key; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

개선 사항에 따르면 d =이 내 도메인으로 설정되어 있습니다 (이메일의 발신 주소가 내 도메인이 아니더라도). 그러나 dkim-filter.conf에서 선택한 선택기 대신 s =가 "dkim.key"로 변경되었습니다. 원래 설정 지침 에서 선택기를 "mail"로 설정했습니다. 이상 하긴했지만 그것이 내 키의 파일 이름 dkim.key로 바뀌는 것을 알았습니다.

그래서 나는 "/etc/mail/dkim.key"를 "/ etc / mail / mail"로 바꾸었다. 또한 "/etc/mail/dkim_domains.key"에서 참조를 업데이트했습니다.

위와 동일하게 dkim-filter를 다시 시작하고 postfix를 다시 시작하면 작동하기 시작합니다. 다음은 오른쪽 선택기를 사용하여 올바르게 서명하는 마지막 헤더입니다 (키의 파일 이름을 기반으로 함).

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=mail; t=1250006218;
    bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
     MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
     FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=

이제 s = mail이 옳고 d = feedmailpro.com이 옳습니다. 효과가있다!

전반적으로 이것은 내가 예상했던 것보다 훨씬 어려웠 으며이 작업을 수행하는 방법 (모든 발신 도메인에 서명)에 대한 문서가없는 것처럼 보였지만 불만을 제기 할 수없는 오픈 소스 소프트웨어 인 것 같습니다.

마지막으로 TXT DNS 레코드가 올바르게 설정되었는지 확인하기 위해 도메인과 같은 명령을 수행 할 수 있습니다

dig mail._domainkey.feedmailpro.com TXT

발굴을 설치해야 할 수도 있습니다 (sudo apt-get install dig). Slicehost 관리자를 사용하여 DNS 항목을 추가하는 경우 TXT 레코드를 다음과 같이 입력하십시오.

Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400

"mail._domainkey.feedmailpro.com"과 같이 이름이 마침표없이 또는 도메인없이 왜 "mail._domainkey"로 설정되어 있는지 이해가되지 않습니다. 그러나 어쨌든 그것은 효과가있어서 행복합니다.

이것을 복제하려고하면 다음과 같이 시작한 지침이 있습니다. https://help.ubuntu.com/community/Postfix/DKIM


2
이것을 여기에 올려 주셔서 감사합니다, 그것은 (나 같은) 다른 사람들을 돕고 있습니다 :)
thomasrutter

환영합니다 토마스!
Brian Armstrong

와우, 이것은 많은 도움이되었습니다. 나는 당신의 게시물을 발견 할 때까지 "s = dkim.key"때문에 머리를 두드리고있었습니다!
3molo

ubuntu.com의 가이드에서 언급하지 못한 한 가지는 TXT 레코드에서 t = y를 t = n으로 변경하여 테스트가 아님을 나타냅니다.
3molo

SigningTable 등을 사용하기위한 몇 가지 유용한 자료가 있습니다. 예를 들어 blog.tjitjing.com/index.php/2012/03/… (매우 우수함) 및 opendkim readme, opendkim.org/opendkim-README
rfay

15

dkim-filter에 대한 Brian Armstrong의 답변에서 영감을 얻은 것은 OpenDKIM에 대해 어떻게 수행 했는지 입니다.

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

SigningTable은 파일을 다시 정의합니다. 정의에서 파일에 정규식이 포함되도록 지정합니다. 우리의 경우에는 * 와일드 카드.

/ etc / mail / dkim_key_table

keyname  example.com:selector:/etc/mail/selector.key

여기서 keyname 은이 파일과 dkim_signing_table 파일 사이의 키를 일치시키는 데 사용됩니다. 내 실제 파일에서 나는 이것을 선택기와 동일하게 명명했다.

서명의 d =s =에 각각 사용하려는 도메인 및 선택기를 example.com선택기 로 교체해야합니다 .

/ etc / mail / dkim_signing_table

*   keyname

이 파일은 From : 헤더에있는 주소를 dkim_key_table의 키에 간단히 매핑합니다 . 이 경우이 서버를 통해 전송 된 모든 이메일이 동일한 키로 서명되기를 원하므로 * 와일드 카드가 사용됩니다.


"OpenDKIM에서 서명 테이블이 일치하지 않는 사용자" serverfault.com/q/569823/115907
kommradHomer

누구 든지이 답변에 도달하면 (큰 대답, btw! 내가 필요한 것을 가르쳐주었습니다) 키가 다른 두 개의 다른 도메인에서 보내려고하면 다음과 같이 할 수 있습니다. KeyTable 파일 : "tagone._domainkey.firstdomain.com firstdomain .com : tagone : /etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo:/etc/opendkim/keys/seconddomain.com/tagtwo "서명 표 :"* @ firstdomain. com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "각 파일은 2 줄입니다 (의견은 여기서 줄 바꿈을 저장하지 않습니다)
Sean Colombo

또는 : SigningTable csl : * = keyname KeyTable csl : keyname = example.com : selector : /etc/mail/selector.key
danblack

3

오래된 스레드이지만 다른 사람이 이것을 발견하면 opendkim의 2.x 버전이 KeyList 대신 KeyTable과 작동한다는 것을 알 수 있습니다.

opendkim-convert-keylist 도구 ( http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html )를 사용하여 KeyList 파일을 변환 할 수 있습니다.

opendkim 매뉴얼 페이지에서 KeyTable 구현에 대한 자세한 내용을 읽을 수 있습니다. ( http://www.opendkim.org/opendkim.conf.5.html )


관련 코드 세그먼트 또는 구성 블록을 인용하여 링크 한 기사를 요약하십시오. 앞으로 사이트가 변경되거나 여러 가지 이유로로드되지 않을 수 있습니다.
89c3b1b8-b1ae-11e6-b842-48d705

2

왜 마침표없이 이름이 "mail._domainkey"로 설정되어 있는지 이해가되지 않습니다.

DKIM 필터에 대한 설명서는 일반적으로 세 가지 UNIX 형식으로 설치됩니다. 구글 만 그것을 알고 있습니다 :-) 나도 문제가있었습니다.

man dkim-filter.conf
man dkim-filter
man dkim-genkey

man dkim-stats
man dkim-testkey
man dkim-testssp

데비안에서 시도했습니다. 그것이 실제로 당신의 distibution에 있지 않다면, 당신은 소스 tarball과 쉬운 읽기 문서를 다운로드 할 수 있습니다.

man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5

기타

-

왜 마침표없이 이름이 "mail._domainkey"로 설정되어 있는지 이해가되지 않습니다.

서로 다른 도메인의 두 DNS 레코드에서 정확하게 동일하게 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.