Postfixから送信するメールにDKIMを設定する
はじめに
LINUXサーバで可動しているPostfixから送信しているメールが迷惑メールにはいるということで、DKIM(DomainKeys Identified Mail)を設定しました。
手順
MTAはpostfixです
# alternatives --display mta mta - ステータスは手動です。 リンクは現在 /usr/sbin/sendmail.postfix を指しています。 /usr/sbin/sendmail.postfix - priority 30opendkimをインストールします
yum install -y epel-release yum install -y opendkim公開鍵(パブリックキー)と秘密鍵(プライベートキー)を作成します
opendkim-genkey -D /etc/opendkim/keys -b 2048 -d e2info.co.jp -s 20190124KeyTableを編集します
vi /etc/opendkim/KeyTable # 以下を追加 20190124._domainkey.e2info.co.jp e2info.co.jp:20190124:/etc/opendkim/keys/20190124.private作成した秘密鍵と公開鍵の所有者を変更します
chown opendkim:opendkim /etc/opendkim/keys/*opendkimの設定ファイルを変更します
# コメントが邪魔なので削除 cp -pr /etc/opendkim.conf /etc/opendkim.conf.original rm /etc/opendkim.conf grep -v -e '^\s*#' -e '^\s*$' /etc/opendkim.conf.original > /etc/opendkim.conf設定ファイルを修正しましょう
vi /etc/opendkim.conf # 以下をコメントアウト #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
PostfixとOpenDKIMを連携させる
vi /etc/postfix/main.cf smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = 127.0.0.1:8891 milter_default_action = accept
サービスの再起動
systemctl start opendkim
systemctl restart postfix
自動起動設定
systemctl enable opendkim
メールを送信して確認します
echo "DKIMテスト" | mail -s "DKIMテスト" kaneko@e2info.comメールヘッダにDKIM-Signatureが追加されました。
DKIM-Filter: OpenDKIM Filter v2.11.0 e2info.co.jp E1771D1238F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=e2info.co.jp; s=20190124; t=1548341602; bh=XkB31K8eM7uWt+cAMbzKm77651MNsVDSPyioSbk1awk=; h=Date:To:Subject:From:From; b=hovrGbu0SUFhVOXZv+tE2eJc1z9lHBKt5rWYgPx6FD6D04dYMjH7/SLMa7k4jpMUBy0iDM+zYnqv9ECdZfGcizdWMVlsWd7nUMrxGxTrEfWUndbBMmZF8N(略)==ただし、DNSレコードを登録していないのでまだtemperrorになります。
dkim=temperror (no key for signature)
DNSに以下のレコードを登録します
20190124._domainkey.e2info.co.jp. IN TXT "v=DKIM1; k=rsa; p=[公開鍵]"ADSPレコードも登録
_adsp._domainkey.e2info.co.jp. IN TXT "dkim=unknown"dkim=の値は、all, unknown, discardableの値を指定できます。
>unknownhttp://www.dkim.org/specs/draft-ietf-dkim-ssp-04.html より
>The domain might sign some or all email.
>all
> All mail from the domain is signed with an Author Signature.
> discardable
> All mail from the domain is signed with an Author Signature. Furthermore, if a message arrives without a valid Author Signature due to modification in transit, submission via a path without access to a signing key, or other reason, the domain encourages the recipient(s) to discard it.
うまく動作しない場合は、/var/log/maillogのログを確認すると、エラーが出力されていたりします。
Jan 24 22:10:22 nice_web01 opendkim[19303]: BD907D1238E: signing table references unknown key '20190124._domainkey.e2info.co.jp' Jan 24 22:10:22 nice_web01 postfix/cleanup[19517]: BD907D1238E: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 4.7.1 Service unavailable - try again later; from=to=