理由はなんとなく。自身のメールアカウントでGoogleMailなど受信するとDKIMによる認証がないと言われるから。
Postfix + opendkimによる構成としますが、DKIMはPostfix内でmilterの指定をしてDKIMに署名させる、という設定をします。
大抵、ローカルのMTA配送はsendmailでやっていたり、外向けはPostfixでやっていたりすることがあります。(特にAWSで構築したEC2など)
まずは、sendmailからPostfixへ切り替えます。(既にPostfixがmtaとなっていれば)
OSの環境はCentOS6、またはAmazonLinuxを使用しています。
・MTAの指定
# alternatives --config mta
2 プログラムがあり ‘mta’ を提供します。
選択 コマンド
———————————————–
* 1 /usr/sbin/sendmail.sendmail
+ 2 /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 2
素でインストールしたCentOSなどはPostfixだけのことはありますが、AWSのEC2なんかはこうなっていることが多いです。
・OpenDkimの設定方法
主要な設定方法と、注意点を。
私の環境では、dnsとPostfixを同環境で扱っています。
opendkimをインストール
# sudo yum install opendkim
keyファイルを作成する。
# opendkim-genkey -D /etc/opendkim/keys -b 2048 -d dns.kenti.jp -s 2018_dkim
Keytableを指定する。(後にDNSレコードにも関わります。)
# vi /etc/opendkim/KeyTable
2018_dkim._domainkey.dns.kenti.jp dns.kenti.jp:2018_dkim:/etc/opendkim/keys/2018_dkim.private
メールアドレスのドメインに該当するdkimレコードを指定する。
# vi /etc/opendkim/SigningTable
dns.kenti.jp 2018_dkim._domainkey.dns.kenti.jp
mail.kenti.jp 2018_dkim._domainkey.dns.kenti.jp
※dns.kenti.jp宛、mail.kenti.jp宛のメールアドレスを扱うため、2行記載しています。
ここまでで、/etc/opendkim/keys/2018_dkim.txt というファイルができています。
これをDNSへ登録しておきましょう。
2018_dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=xxxxxxxxxxxxxxx/xxxxxxxxxxx" ) ; ----- DKIM key dkim for dns.kenti.jp
_adsp._domainkey IN TXT "dkim=unknown"
_adsp._domainkey レコードは、DKIMのポリシーを指定となります。
今回は当サイトから、「dkim署名していないメールも送信している」ということで、unknownとします。
ほかに、「ぜんぶうちはdkim署名しているよ dkim=all」「署名されていないもの、不正なものは破棄していいよ dkim=discardable」があります。当サイトの他メールサーバもあるため、今回はunknownとします。
つづけて、opendkimのconfを記述します。
[/etc/opendkim.conf]
Mode sv
KeyFile /etc/opendkim/keys/2018_dkim.private
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
※SigningTableのファイルの参照について
/etc/opendkim/SigningTable に下記のように書いている場合
*@mail.kenti.jp 2018_dkim._domainkey.dns.kenti.jp
→/etc/opendkim.conf内の記述
SigningTable refile:/etc/opendkim/SigningTable
/etc/opendkim/SigningTable に下記のように書いている場合
mail.kenti.jp 2018_dkim._domainkey.dns.kenti.jp
→/etc/opendkim.conf内の記述
SigningTable /etc/opendkim/SigningTable
refile の書き方で挙動が変わるので注意してください。
ここまで終わったら、サービスとして起動します。
# service opendkim start
# chkconfig opendkim on
・Postfixの設定
milterとして動作させるため、下記を記載。
[/etc/postfix/main.cf]
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
#postfix reload
その後、Gmailなどにテストメールなどを送ってみて、ログに表示されることとDKIM署名されたことを確認してみます。
# echo “テストメール本文です” | mail -s “件名:テストメール” *****@gmail.com
[/var/log/maillog]
opendkim[1199]: A8AAAAAAAAA: DKIM-Signature field added (s=dkim, d=dns.kenti.jp)