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이 포함되어 있습니다.
- 이제 다음 줄을 추가하십시오: *.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 확인
- 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/
'Linux > CentOS Stream 9' 카테고리의 다른 글
| CentOS stream 9 - 인터넷공유가 안되고 오류 (Packet filtered) (1) | 2023.03.10 |
|---|---|
| 이메일 postfix(smtp) + dovecot(imap/pop3) 에 SSL 보안 적용하기 (0) | 2023.03.04 |
| 메일 서버에서 gmail 로 메일 발송 문제 해결 SPF, DMARC, DKIM (0) | 2023.02.28 |
| Roundcube 웹메일의 다양한 플러그인들 소개 (0) | 2023.02.27 |
| Roundcube 웹메일 - 스팸 편지함 만드는 방법 (+보관 편지함) (0) | 2023.02.27 |