Linux/CentOS Stream 9

Centos Stream 9 - 메일 서버에 OpenDKIM Install 설치

Ryan's Tech Note 2023. 2. 28. 16:50

Centos Stream 9 에서 opendkim 을 기본적으로 다음과 같이 설치를 하면 오류가 발생하며 설치가 안된다. 이것 때문에 많이 삽질했는데, 일본인 블로그를 보고 해결했다. 일본인 블로거에게 감사를 드리며, 한글로 이 방법을 공유합니다.

dnf install opendkim
    Error:
     Problem: conflicting requests
      - nothing provides libmilter.so.1.0()(64bit) needed by opendkim-2.11.0-0.28.el9.x86_64
      - nothing provides libmemcached.so.11()(64bit) needed by opendkim-2.11.0-0.28.el9.x86_64

 

Centos Stream 9 에서 opendkim 은 CRB 레파지토리에서 설치할 수 있다.

dnf install opendkim --enablerepo=crb

 

CRB 레파지토리가 활성화 되어 있는지 확인

dnf config-manager --set-enabled crb


확인

less /etc/yum.repos.d/centos.repo

 

opendkim-genkey 명령은 opendkim-tools에 포함되어 있으니 설치한다.

dnf install opendkim-tools

 

opendkim 시작 명령어

systemctl start opendkim
systemctl enable opendkim
systemctl status opendkim

 

하지만, 아직 opendkim 을 실행시키면 에러가 발생하는데, 다음에서 openDKIM 과 postfix 환경설정을 해야 서비스를 시작시킬수 있다. 환경 설정을 한 후에 opendkim 을 시작시키고, postfix 를 재시작한 후에 다음과 같이 테스트 한다.

 

sendmail으로 동작 확인을 하세요.

sendmail user1@gmail.com


postfix의 전송 로그를 확인하세요.

less /var/log/maillog

 


opendkim 환경 설정

 

이하 다음의 블로그의 번역입니다.

https://easydmarc.com/blog/how-to-configure-dkim-opendkim-with-postfix/

 


 

(1) OpenDKIM의 메인 설정 파일을 편집하세요.

vi /etc/opendkim.conf

 

"Mode v" 줄을 찾아서 "Mode sv"로 변경하세요. 기본적으로 OpenDKIM은 검증 모드(v)로 설정되어 있으며, 수신하는 이메일 메시지의 DKIM 서명을 검증합니다. 모드를 "sv"로 변경하면 발신 이메일에 대한 서명 모드를 활성화할 수 있습니다.

Mode sv

 

같은 OpenDKIM 구성 파일에서 다음 줄을 찾아서 주석(#)을 제거하세요.

KeyFile /etc/opendkim/keys/default.private
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

 

이 파일의 끝에 자신의 DKIM 키를 추가하고, 다음 줄의 내용을 추가하세요.

Domain yourdomain.com
RequireSafeKeys False

 


 

(2) 다음으로, 서명 테이블 파일을 편집해야 합니다.

vi /etc/opendkim/SigningTable

 

이 파일의 끝에 다음 줄을 추가하세요. 이렇게 하면 OpenDKIM이 서버에서 발신자가 *@yourdomain.com 주소(이 예제에서는 *@easydmarc.me)를 사용하는 경우, default._domainkey.yourdomain.com(이 예제에서는 default._domainkey.easydmarc.me)로 식별된 키로 서명해야 함을 알립니다.

*@yourdomain.com yourselector._domainkey.yourdomain.com
 

참고: default는 DKIM 선택기입니다. 도메인에는 여러 DKIM 서명이 있을 수 있습니다. DKIM 선택기를 사용하여 특정 DKIM 키를 선택할 수 있습니다. 원하는 이름을 사용할 수 있지만, 동일한 선택기 이름으로 이미 구현된 DKIM 서명이 없는지 확인하세요.

 

OpenDKIM의 메인 설정 파일을 저장하고 닫으세요.

 


 

(3) 이제 KeyTable 을 수정합니다.

vi /etc/opendkim/KeyTable

 

다음 줄을 추가하십시오. 해당 줄은 DKIM 개인 키의 위치를 지정합니다.

 

default._domainkey.yourdomain.com yourdomain.com:default:/etc/opendkim/keys/yourdomain.com/default.private

 

(참고) 원래는 이런 형식이라고 합니다.

youselector._domainkey.yourdomain.com yourdomain.com:selector:/etc/opendkim/keys/yourdomain.com/default.private

 


 

(4) 다음으로 OpenDKIM Trusted 호스트 파일을 수정합니다.

vi /etc/opendkim/TrustedHosts

 

기본적으로 이 파일에는 127.0.0.0.1 및 ::1이 포함되어 있습니다.

  1. 이제 다음 줄을 추가하십시오: *.yourdomain.com

 

# OPENDKIM TRUSTED HOSTS
# To use this file, uncomment the #ExternalIgnoreList and/or the #InternalHosts
# option in /etc/opendkim.conf then restart OpenDKIM. Additional hosts
# may be added on separate lines (IP addresses, hostnames, or CIDR ranges).
# The localhost IP (127.0.0.1) should always be the first entry in this file.
127.0.0.1
::1
*.yourdomain.com ← 추가
#host.example.com
#192.168.1.0/24

 


 

(5) 당신의 도메인을 위한 새 디렉토리를 생성하세요.

mkdir /etc/opendkim/keys/yourdomain.com

 

opendkim-genkey 도구를 사용하여 키를 생성하세요.

opendkim-genkey -b 1024 -d yourdomain.com -D /etc/opendkim/keys/yourdomain.com -s yourselector -v

 

opendkim을 키 소유자로 지정하세요.

chown opendkim:opendkim /etc/opendkim/keys -R

 


 

(6) 도메인 암호 정보를 도메인 회사 홈페이지에서 DNS 설정에 추가합니다.

 

cat /etc/opendkim/keys/yourdomain.com/default.txt

default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA0GC...(생략)...AQAB" )  ; ----- DKIM key default for yourdomain.com

 

위 예제에서 v=DKIM1; 부터 AQAB 까지의 따옴표 안의 값을 복사합니다. 이 값은 사람마다 달라질 수 있습니다.

도메인 설정에 추가합니다.

 

유형

TXT

 

이름 (. 점이 있으니 빼먹지 마세요. 그냥 복사 붙여넣기 하세요)

default._domainkey

 


 

(7) 설정이 정상적으로 적용됬는지 테스트 해 봅니다.

 

https://easydmarc.com/tools/dkim-lookup

 

DKIM Record Checker - DKIM tools | EasyDMARC

DKIM record checker tool shows your domain DKIM record for a specific selector and helps identify its issues.

easydmarc.com

 

 


 

(8) Postfix를 OpenDKIM에 연결하세요.

 

이제 OpenDKIM을 구성했으므로 Postfix DKIM을 구현할 시간입니다. Postfix OpenDKIM 구성 프로세스를 따라 봅시다.

 

Postfix 메인 구성 파일을 편집하세요.

vi /etc/postfix/main.cf

 

다음 줄을 "main.cf" 파일 끝에 추가하십시오. 이를 통해 Postfix가 milter 프로토콜을 통해 OpenDKIM을 호출할 수 있습니다.

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
#milter_default_action = accept

주석 : 처음엔 milter_default_action = accept 로 했는데 /var/log/maillog 에 오류가 발생해서 이 부분을 주석처리했다. 다시, gmail 과 메일을 주고 받아 봤는데 정상적으로 되었다.


 

(9) opendkim 환경 설정을 마쳤으니 서비스를 시작합니다.

systemctl start opendkim
systemctl enable opendkim
systemctl status opendkim

 


(10) DKIM 확인

  1. Postfix DKIM이 작동하는지 확인하기 위해 서버에서 테스트 이메일을 보내십시오.
Message headers

Authentication-Results: mailin008.protonmail.ch; dkim=pass (Good 1024 bit rsa-sha256 signature) header.d=yourdomain.com header.a=rsa-sha256

Authentication-Results: mailin008.protonmail.ch; dkim=pass (1024-bit key)
 header.d=yourdomain.com header.i=@yourdomain.com header.b="S1oaBS38"

Dkim-Filter: OpenDKIM Filter v2.11.0 mail.yourdomain.com 356653C00332
Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yourdomain.com; s=default;
 t=1677570113; bh=Lw14EfMZX...(생략)...XZro0Q=;
 h=Date:From:To:Subject:From;
 b=S1oaBS3...(생략)...xRl8=

 

받는 메일 서버에서 이메일 헤더 상세보기를 하면 DKIM 이 정상적으로 적용된 것을 알 수 있다.

 

구글에서 테스트 하려면 도메인과 default 를 함께 입력하면 된다.

https://toolbox.googleapps.com/apps/checkmx

DKIM 인증 DNS 설정 V 통과 되었다.

 


도움이 되었다면 공감과 댓글한번 부탁드립니다.

 

 

 

참조1 : https://blog.dksg.jp/2023/02/centos-stream-9opendkimcrb.html

참조2 : https://blog.dksg.jp/2015/01/postfixdkim.html

참조3 : https://easydmarc.com/blog/how-to-configure-dkim-opendkim-with-postfix/