Ⅰ. はじめに
タイトルの通り「PostfixとOpenDKIMを利用してメールサーバを構築する方法」です。
Ⅱ. やり方
1. OpenDKIMをインストールする
apt install opendkim opendkim-tools
2. OpenDKIMで利用する秘密鍵と公開鍵を生成する
mkdir /etc/dkimkeys/example.com opendkim-genkey -D /etc/dkimkeys/example.com -d example.com -s default chown -R opendkim:opendkim /etc/dkimkeys/
3. OpenDKIMの設定ファイルを編集する
※複数ドメインの対応が必要な場合はKeyFileの代わりにKeyTableとSigningTableを利用する
/etc/opendkim.conf
Syslog yes SyslogSuccess yes LogWhy yes Mode sv Domain example.com KeyFile /etc/dkimkeys/example.com/default.private #KeyTable refile:/etc/opendkim/KeyTable #SigningTable refile:/etc/opendkim/SigningTable Selector default ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts Socket inet:8892@localhost
/etc/opendkim/TrustedHosts
127.0.0.1
4. Postfixをインストールする
apt install postfix
5. Postfixの設定ファイルを編集する
/etc/postfix/main.cf
myhostname = example.com mydestination = $myhostname, localhost myorigin = /etc/mailname # メール配信を全てのIPアドレスで許可する(テスト用途) # mynetworks = 0.0.0.0/0 # OpenDKIM smtpd_milters = inet:127.0.0.1:8892 non_smtpd_milters = $smtpd_milters milter_default_action = accept
/etc/mailname
example.com
/etc/postfix/master.cf
# Postfixをポート2525で起動する 2525 inet n - y - - smtpd
6. OpenDKIM, Postfixを起動する
systemctl enable opendkim systemctl enable postfix systemctl restart opendkim systemctl restart postfix
7. DNSレコードを設定する
タイプ | 名前 | 値 | 意味 |
TXT | @ | v=spf1 ip4:1.2.3.4 -all | SPF |
TXT | default._domainkey | v=DKIM1; h=sha256; k=rsa; p=MII... | DKIM公開鍵 |
TXT | _adsp._domainkey | dkim=unknown | ADSP |
A | mail.example.com | 1.2.3.4 | MXレコード用Aレコード |
MX | @ | mail.example.com | MXレコード |
TXT | _dmarc | v=DMARC1; p=none; pct=100; adkim=r; aspf=r; | DMARC |
※DKIM公開鍵の場所
/etc/dkimkeys/example.com/default.txt
8. テストメールを送信する
echo "Test body" | mail --subject "Test subject" --append="FROM:noreply@example.com" abc@gmail.com echo "Test body" | mail --subject "Test subject" --append="FROM:TestUser <noreply@example.com>" abc@gmail.com
実行結果
- OpenDKIMによる署名が実行されたログが出力されている
$ tail -f /var/log/syslog Jul 18 02:59:17 opendkim[46116]: E65EF140128: DKIM-Signature field added (s=default, d=example.com)
- GmailでSPF, DKIM, DMARCがPASS(正しく認証出来ている状態)と表示されている
留意点
ファイアウォール設定を必ず確認する。
踏み台にならないように適切な設定を行う事。
FAQ
Q1. OpenDKIMのログに以下のメッセージが表示される。原因は?
can't determine message sender; accepting
メールクライアント側が原因である可能性が高い。
RFCに違反するような形式のメールを送信しようとした時に発生する。
https://serverfault.com/questions/412389
Q2. サブドメイン(例. mail.example.com)で運用する場合のDNSレコード設定例を知りたい
タイプ | 名前 | 値 | 意味 |
TXT | v=spf1 ip4:1.2.3.4 -all | SPF | |
TXT | default._domainkey.mail | v=DKIM1; h=sha256; k=rsa; p=MII... | DKIM公開鍵 |
TXT | _adsp._domainkey.mail | dkim=unknown | ADSP |
A | mail.example.com | 1.2.3.4 | MXレコード用Aレコード |
MX | mail.example.com | MXレコード | |
TXT | _dmarc.mail | v=DMARC1; p=none; pct=100; adkim=r; aspf=r; | DMARC |
参考
ADSPについて
- ADSPは設定する必要がない
https://eng-blog.iij.ad.jp/archives/20946