OS/Install & Modify
[Rocky Linux] opendkim 설치하기
PeamS
2025. 12. 15. 14:38
Intro
테스트 환경
- OS : Rocky Linux 8.10, Rocky Linux 9.6
- 메일발송서버는 send.creeper.kr
- 보내는 주소는 @creeper.kr
- 도메인 셀렉터는 crekey 로 가정해서 했습니다.
주의사항
sendmail.mc 파일 규칙 숙지 (역 따옴표, 작은 따옴표 규칙)
- 예 : TRUST_AUTH_MECH([역따옴표]`LOGIN PLAIN DIGEST-MD5 CRAM-MD5'[작은따옴표])dnl[마무리]
opendkim txt 레코드 값 넣을 때 개행문자, 띄어쓰기, key 누락하면 bad key 뜨니 꼭 신경써서 등록
테스트하기
테스트 하기 좋은 사이트 입니다. 수신 주소로 보내면 알아서 검사해 줍니다. https://www.appmaildev.com/ko/dkim
DKIM 테스트 - DKIM 유효성 검사기 - DKIM 확인 - DKIM Test
www.appmaildev.com
sendmail 발송 테스트는 다음과 같이..
cat <<EOF | sendmail -t
To: 받는사람
Subject: Testing
From: 보내는사람
This is a test message
EOF
설치하기(복붙)
# rocky 9 전용(안하면 dkim 설치 시 libmilter.so.1.0, libmemcached.so.11 충돌남)
dnf config-manager --set-enabled crb
# epel-release 저장소 추가 및 opendkim, sendmail 설치
dnf install -y epel-release
dnf install -y opendkim opendkim-tools sendmail sendmail-*
# opendkim 설정파일 수정
cp -apf /etc/opendkim.conf /etc/opendkim.conf_old
sed -i 's;Mode\tv;Mode\tsv;g' /etc/opendkim.conf
sed -i 's;# KeyTable\t/etc/opendkim/KeyTable;KeyTable\t/etc/opendkim/KeyTable;g' /etc/opendkim.conf
sed -i 's;# SigningTable\trefile:/etc/opendkim/SigningTable;SigningTable\trefile:/etc/opendkim/SigningTable;g' /etc/opendkim.conf
sed -i 's;# ExternalIgnoreList\trefile:/etc/opendkim/TrustedHosts;ExternalIgnoreList\trefile:/etc/opendkim/TrustedHosts;g' /etc/opendkim.conf
sed -i 's;# InternalHosts\trefile:/etc/opendkim/TrustedHosts;InternalHosts\trefile:/etc/opendkim/TrustedHosts;g' /etc/opendkim.conf
# 검증
cat /etc/opendkim.conf |grep -v "^#" |egrep -i "Mode|KeyTable|SigningTable|ExternalIgnoreList|InternalHosts"
# sendmail 수정
cp -apf /etc/mail/sendmail.mc /etc/mail/sendmail.mc_old
sed -i "58 i\TRUST_AUTH_MECH(\`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl" /etc/mail/sendmail.mc
sed -i "59 i\define(\`confAUTH_MECHANISMS', \`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl" /etc/mail/sendmail.mc
echo "INPUT_MAIL_FILTER(\`opendkim',\`S=local:/var/run/opendkim/opendkim.sock')dnl" >> /etc/mail/sendmail.mc
# 검증
cat /etc/mail/sendmail.mc |grep -v "^dnl" |egrep -i "TRUST_AUTH_MECH|confAUTH_MECHANISMS|INPUT_MAIL_FILTER"
# sendmail 설정 적용
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# default key 생성하기
## 변수지정
domainName="creeper.kr"
domainKey="crekey"
mailHost="$(hostname)"
# 키 생성 및 소유자 변경
mkdir -p /etc/opendkim/keys/${domainName}
opendkim-genkey -b 1024 -d ${domainName} -D /etc/opendkim/keys/${domainName} -s ${domainKey} -v
chown -R opendkim.opendkim /etc/opendkim/keys/${domainName}
chmod 750 /etc/opendkim/keys/${domainName}
# KeyTable 추가
echo "${domainKey}._domainkey.${domainName} ${domainName}:${domainKey}:/etc/opendkim/keys/${domainName}/${domainKey}.private" >> /etc/opendkim/KeyTable
# SigningTable 추가
echo "*@${domainName} ${domainKey}._domainkey.${domainName}" >> /etc/opendkim/SigningTable
# TrustedHosts 추가
echo "${mailHost}" >> /etc/opendkim/TrustedHosts
# 서비스 시작
systemctl enable --now opendkim
systemctl enable --now sendmail
# 레코드 추가 값
cat /etc/opendkim/keys/${domainName}/${domainKey}.txt
설치하기(수동)
저장소 추가 및 패키지 설치
rocky 9 전용 (opendkim 의존성 패키지 설치)
dnf config-manager --set-enabled crb
epel 저장소 추가
dnf install -y epel-release
opendkim, sendmail 설치
dnf install -y opendkim opendkim-tools sendmail sendmail-*
opendkim 설정파일 수정하기
/etc/opendkim.conf 파일 수정
vim /etc/opendkim.conf
Mode sv # v -> sv 수정
KeyTable /etc/opendkim/KeyTable # 주석 해제
SigningTable refile:/etc/opendkim/SigningTable # 주석 해제
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # 주석 해제
InternalHosts refile:/etc/opendkim/TrustedHosts # 주석 해제
sendmail 설정파일 수정하기
sendmail.mc 파일 수정
vim /etc/mail/sendmail.mc
## 58,59 줄에 추가
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
## 맨 하단 opendkim 설정 추가 ##
INPUT_MAIL_FILTER(`opendkim',`S=local:/var/run/opendkim/opendkim.sock')dnl
설정 적용하기
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
opendkim 키 만들기
키 폴더 생성 및 opendkim 키 생성
mkdir -p /etc/opendkim/keys/creeper.kr
# opendkim-genkey -b <키 길이> -d <도메인 이름> -D <키 저장 디렉터리> -s <도메인 셀렉터> -v
opendkim-genkey -b 1024 -d creeper.kr -D /etc/opendkim/keys/creeper.kr -s crekey -v
권한 수정
chmod 750 /etc/opendkim/keys/creeper.kr
chown -R opendkim.opendkim /etc/opendkim/keys/creeper.kr/
opendkim 키 추가하기
KeyTable 에 생성한 키 추가하기
vim /etc/opendkim/KeyTable
crekey._domainkey.creeper.kr creeper.kr:crekey:/etc/opendkim/keys/creeper.kr/crekey.private
SigningTable 추가
vim /etc/opendkim/SigningTable
*@creeper.kr crekey._domainkey.creeper.kr
TrustedHosts 추가
vim /etc/opendkim/TrustedHosts
# 보내는 서버의 정보를 넣는다.
send.creeper.kr
서비스 시작
systemctl enable --now opendkim
systemctl enable --now sendmail
마무리
아래와 같이 dig 로 txt 레코드 조회 시 다음과 같이 조회되면 등록 완료 입니다.

저는 cloudflare dns 를 쓰기 때문에 다음과 같이 넣었습니다.

감사합니다.