新しいメール送信者のガイドライン
2024 年 2 月 1 日以降、Gmail アカウントにメールを送信するすべての送信者は、このセクションに示す要件を満たしている必要があります。
重要: Gmail アカウントに 1 日あたり 5,000 件を超えるメールを送信する場合は、1 日あたり 5,000 件以上のメールを送信する場合の要件を満たす必要があります。
送信元ドメインに SPF または DKIM メール認証を設定します。
送信元のドメインまたは IP に、有効なフォワードおよびリバース DNS レコード(PTR レコードとも呼ばれます)があることを確認します。詳細
メールの送信に TLS 接続を使用します。Google Workspace で TLS を設定する手順については、メールのセキュアな接続を必須にする手順についてのヘルプ記事をご覧ください。
Postmaster Tools で報告される迷惑メール率を 0.3% 未満に維持します。詳しくは、迷惑メール率の詳細をご覧ください。
Internet Message Format 標準(RFC 5322)に準拠する形式でメールを作成します。
Gmail の From: ヘッダーのなりすましはしないでください。Gmail では、DMARC の quarantine(検疫)適用ポリシーの使用が開始されます。Gmail の From: ヘッダーのなりすましをした場合、メール配信に影響する可能性があります。
メーリング リストや受信ゲートウェイなどの転送サービスを管理する場合は、送信メールに ARC ヘッダーを追加します。ARC ヘッダーによって、メールが転送されたことが示され、送信者が転送者と見なされます。メーリング リストの送信者は、メーリング リストを指定する List-id: ヘッダーも送信メールに追加する必要があります。
Step1: 現在の環境の確認
既にPostfixを使ったメールサーバが構築されていることを前提に進めます。メールサーバはローカルドメインや仮想ドメインのどちらでも構いません。
この手順は、CentOS6やUbuntuでもほとんど変わりません。
Step2: 必要なソフトのインストール
yum リポジトリの追加
まず、EPELリポジトリをインストールします。
sudo yum install -y epel-release
OpenDKIM のインストール
EPELリポジトリを利用してOpenDKIMをインストールします。
sudo yum install -y --enablerepo=epel opendkim
Step3: 秘密鍵と公開鍵の作成
鍵の保存ディレクトリの作成
複数のドメインを運用している場合、ドメイン毎にディレクトリを作成することをお勧めします。
sudo mkdir /etc/opendkim/keys/hogehoge.net
sudo mkdir /etc/opendkim/keys/fugafuga.net
鍵の作成
opendkim-genkeyコマンドを使って鍵を作成します。
sudo opendkim-genkey -D /etc/opendkim/keys/hogehoge.net -b 2048 -d hogehoge.net -s 20241011
sudo opendkim-genkey -D /etc/opendkim/keys/fugafuga.net -b 2048 -d fugafuga.net -s 20241011
オプション説明
- -b オプション: 鍵の長さを指定します。2048ビットを推奨します。
- -d オプション: メールアドレスのドメイン部分を指定します。
- -s オプション: 鍵のセレクタを指定します。任意の管理しやすい文字列を使用します。
鍵のパーミッションの設定
生成した鍵のパーミッションを設定します。
sudo chmod 700 /etc/opendkim/keys/*
sudo chmod 600 /etc/opendkim/keys/*/*
また、所有者をopendkimユーザーに変更します。
sudo chown opendkim. -R /etc/opendkim/keys/*
Step4: OpenDKIM の設定
設定ファイルの編集
OpenDKIMの設定ファイルを編集します。
sudo vi /etc/opendkim.conf
送信時の署名を有効にするために、Mode
をs
またはsv
に変更します。
Mode sv
使用する鍵の設定
キーテーブルと署名テーブルを指定します。
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
キーテーブルを作成し、鍵の情報を追加します。
sudo vi /etc/opendkim/KeyTable
20241011._domainkey.hogehoge.net hogehoge.net:20241011:/etc/opendkim/keys/hogehoge.net/20241011.private
20241011._domainkey.fugafuga.net fugafuga.net:20241011:/etc/opendkim/keys/fugafuga.net/20241011.private
署名テーブルも編集します。
sudo vi /etc/opendkim/SigningTable
*@hogehoge.net 20241011._domainkey.hogehoge.net
*@fugafuga.net 20241011._domainkey.fugafuga.net
OpenDKIM の起動
設定が完了したら、OpenDKIMを起動し、自動起動を有効にします。
sudo systemctl start opendkim
sudo systemctl enable opendkim
Step5: Postfix の設定
PostfixにOpenDKIMを関連付けます。Postfixの設定ファイル/etc/postfix/main.cf
を編集し、以下の設定を追加します。
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
設定後、Postfixをリロードします。
Step6: DNS レコードの設定
DKIM 公開鍵レコードの設定
公開鍵をDNSに設定します。以下のコマンドで生成された公開鍵を確認し、DNSのTXTレコードとして登録します。
sudo cat /etc/opendkim/keys/*/*.txt
公開鍵ファイルには次のような内容が含まれています。
20241011._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCdz4AEc0L7y+8pGcnUeX3aF/O5ZvcgtmUs2245D+VLCdn6wr/EA5zvWzSZHf1Pr9c/62EbtY0qangUP5GE+jfwFZLbVOm3r04leyzapQ0h04R+qKT3mgoGgDlQHWi2id3uDqhvVpmWTcLMtyYSmmM1cj954MpeWBCYFYRthVk+3wIDAQAB" ) ; ----- DKIM key 20241011 for hogehoge.net
この公開鍵をDNSにTXTレコードとして登録します。TXTレコードの形式は以下の通りです。
- セレクタ名:
20241011._domainkey
- ドメイン名:
hogehoge.net
- 公開鍵の内容:
v=DKIM1; k=rsa; p=公開鍵データ
公開鍵データが長い場合、255文字以下に分割して登録する必要があります。
また、DNSサービスプロバイダによっては、適切に自動で分割してくれることもあります。
ADSP レコードの設定
ADSPレコードも設定し、メールの署名ポリシーをDNSに登録します。
_adsp._domainkey.hogehoge.net. IN TXT "dkim=unknown"
_adsp._domainkey.fugafuga.net. IN TXT "dkim=unknown"
DNS 設定の確認
設定が反映されたことを確認します。
dig 20241011._domainkey.hogehoge.net txt
dig 20241011._domainkey.fugafuga.net txt
Step7: 追加の設定
署名が二重にされる場合
amavisd-newをインストールしている場合、DKIMの署名が二重になることがあります。この場合、Postfixのmaster.cf
に以下の設定を追加します。
-o receive_override_options=no_address_mappings,no_milters
セキュリティ設定
OpenDKIMはroot権限で実行する必要はありません。追加のセキュリティ設定を行うことをお勧めします。
参考情報
おわりに
これでCentOS7上でOpenDKIMとPostfixを使ってDKIMの実装が完了しました。この設定により、送信するメールにDKIM署名を付与し、受信側での認証が行えるようになります。メールの信頼性を向上させるため、ぜひDKIMの実装を検討してみてください。