서버 설정 · 3 min read · Oct 14, 2025
Postfix와 함께 CentOS에서 OpenDKIM을 사용하여 DKIM(도메인키 확인 메일) 설정하기
Postfix와 함께 CentOS에서 OpenDKIM을 사용하여 DKIM(도메인키 확인 메일) 설정하기
버전 1.0
저자: Eladio Martinez < [email protected] >
http://twitter.com/mafecsllc
이 튜토리얼에서는 OpenDKIM을 사용하여 Postfix가 실행되는 CentOS 박스에서 DKIM을 작동시키는 방법을 보여줍니다. 또한 OpenDKIM 설치의 향후 업그레이드에 대한 간단한 문제 해결 팁과 조언도 다룰 것입니다.
1 요구 사항
이 튜토리얼은 다음 서비스를 실행하는 완전한 기능의 CentOS 설치가 있다고 가정합니다:
- 현재 작동 중인 Postfix 2.3.3 이상.
- Sendmail이 꺼져 있습니다.
2 사전 참고 사항
이 튜토리얼의 모든 단계를 루트 권한으로 실행하고 있으며, 현재 OpenDKIM 버전 2.4.2가 설치된 CentOS 6.3을 실행하고 있습니다. 이 튜토리얼의 기본 도메인으로 example.com을 사용할 것입니다.
3 OpenDKIM 다운로드 및 설치
OpenDKIM을 작동시키기 위해 필요한 일부 “라이브러리”가 포함되어 있으므로 OpenSSL 및 Sendmail 개발 패키지를 설치해야 합니다.
yum install sendmail-devel openssl-devel
OpenDKIM을 /usr/local/src 디렉토리에 다운로드합니다:
cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz
OpenDKIM을 추출, 구성, 컴파일 및 설치합니다:
tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure –sysconfdir=/etc –prefix=/usr/local –localstatedir=/var
make
make install
./configure 명령은 구성 명령이 실행될 때 생성되는 시작 스크립트에 전달될 몇 가지 매우 중요한 플래그를 포함합니다. 첫 번째는 OpenDKIM의 conf 파일이 위치할 곳을 시스템에 알려주고, 두 번째는 다른 중요한 파일 위치에 대한 기본 접두사를 설정하며, 마지막은 OpenDKIM의 PID 파일이 저장될 디렉토리를 제어합니다.
4 새 사용자 생성
opendkim이라는 DKIM용 새 사용자를 다음 옵션으로 추가합니다:
useradd -r -U -s /sbin/nologin opendkim
이 명령은 opendkim이라는 새 시스템 계정(-r)과 그룹(-g)을 생성하고 이 사용자에게 셸 접근을 허용하지 않습니다(-s).
5 작업 디렉토리 생성
OpenDKIM을 위한 새 디렉토리를 만들고 적절한 소유권과 권한을 부여합니다:
mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys
6 시작 스크립트를 /etc/init.d/로 복사
OpenDKIM의 소스 패키지에는 Fedora 및 CentOS를 포함한 모든 RedHat 호환 시스템에서 사용할 수 있는 사용자 정의 init 스크립트를 포함하는 contrib 디렉토리가 있습니다. 이를 /etc/init.d/ 디렉토리에 복사하여 OpenDKIM을 시작, 중지, 재시작 및 다시 로드하는 작업을 쉽게 할 수 있습니다:
cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/
이제 init 스크립트에 대한 올바른 권한을 설정합니다:
chmod 755 /etc/init.d/opendkim7 서명을 위한 키 생성
메일에 서명하려는 각 도메인에 대해 개인 키와 공개 키를 생성해야 합니다. 개인 키는 서버에 저장되고, 공개 키는 수신 메일 서버가 DKIM 서명된 메일을 검증할 수 있도록 도메인의 DNS 레코드에 게시됩니다.
이제 선택기의 이름을 결정해야 합니다. 선택기는 두 키(공개 및 개인)와 연결된 고유한 키워드로, 모든 서명에 포함되고 DNS 레코드에 게시됩니다. 간단하게 하기 위해, 기본 선택기로 default라는 단어를 사용합니다. 다른 것을 선택해도 되지만, 그렇게 하면 설정 전반에 걸쳐 일관되게 사용해야 합니다. 또한, 이는 말할 필요도 없지만, 다음 단계에서는 example.com 대신 자신의 메일 도메인을 사용해야 합니다.
키를 생성합니다:
mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default
이 예제에서는 -D(디렉토리) 옵션, -d(도메인) 옵션 및 -s(선택기) 옵션을 사용했습니다. 이게 시작하는 데 필요한 모든 것입니다.
8 구성 파일 편집
다음 네 개의 파일을 생성하거나 편집해야 합니다:
- 1 /etc/opendkim.conf –- OpenDKIM의 주요 구성 파일
- 2 /etc/opendkim/KeyTable –- 서명에 사용할 수 있는 키 목록
- 3 /etc/opendkim/SigningTable – 서명할 수 있는 도메인 및 계정 목록
- 4 /etc/opendkim/TrustedHosts –- 서명 또는 검증 시 “신뢰”할 서버 목록
/etc/opendkim.conf 파일을 생성합니다:
vi /etc/opendkim.conf
파일이 다음과 같이 보이도록 합니다:
##
## opendkim.conf -- OpenDKIM 필터를 위한 구성 파일
##
AutoRestart Yes
AutoRestartRate 10/1h
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@localhost
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkim/etc/opendkim/KeyTable 파일을 생성합니다:
vi /etc/opendkim/KeyTable
파일이 다음과 같이 보이도록 합니다:
default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/defaultKeyTable 파일은 OpenDKIM이 키를 찾는 위치를 알려줍니다. KeyTable 파일의 각 항목은 각 키 위치에 대한 단일 행입니다(예: 위의 모든 텍스트는 파일의 단일 행에 있어야 합니다). 여러 키를 사용할 경우(서로 다른 키로 가상 도메인에 메일 서명), 각 도메인에 대해 KeyTable 파일에 별도의 행을 생성해야 합니다.
/etc/opendkim/SigningTable 파일을 생성합니다:
vi /etc/opendkim/SigningTable
파일이 다음과 같이 보이도록 합니다:
*@example.com default._domainkey.example.comSigningTable 파일은 OpenDKIM이 키를 사용하는 방법을 알려줍니다. 즉, 어떤 발신자가 서명에 어떤 선택기를 사용해야 하는지를 지정합니다. 위의 예에서는 “example.com” 서버에서 메일을 보내는 모든 사람()이 “default”라는 선택기를 사용해야 한다고 말하고 있습니다. 와일드카드 기호는 SigningTable 옵션이 파일 이름 앞에 refile: 접두사를 사용할 때만 작동한다는 점에 유의해야 합니다.
/etc/opendkim/TrustedHosts 파일을 생성합니다:
vi /etc/opendkim/TrustedHosts
파일이 다음과 같이 보이도록 합니다:
127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.comTrustedHosts 파일은 OpenDKIM이 키를 사용할 수 있도록 허용할 대상을 알려줍니다. 이 파일은 conf 파일의 ExternalIgnoreList 지시문에 의해 참조되므로 OpenDKIM은 수신 메일을 검증할 때 이 호스트 목록을 무시하고, InternalHosts 지시문에 의해 참조되므로 이 호스트 목록은 “내부“로 간주되어 OpenDKIM은 그들의 발신 메일에 서명합니다.
중요: TrustedHosts 파일에 로컬호스트(127.0.0.1)의 IP 주소를 반드시 나열해야 합니다. 그렇지 않으면 OpenDKIM은 이 서버에서 전송된 메일에 서명하지 않습니다. 이 서버를 통해 메일을 릴레이하는 동일 네트워크의 여러 서버가 있고 그들의 메일에도 서명하려면 TrustedHosts 파일에 나열해야 합니다. 각 항목은 별도의 행에 두어야 합니다. 항목은 호스트 이름, 도메인 이름(예: “example.com”), IP 주소, IPv6 주소(IPv4 매핑 주소 포함) 또는 CIDR 스타일 IP 사양(예: “192.168.1.0/24”)일 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.