Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
OpenDKIMのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
OpenDKIM
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:メールサーバー]] [[en:OpenDKIM]] DomainKeys Identified Mail (DKIM) はメールの電子署名・検証技術であり、一般的なメールプロバイダによってサポートされています (Yahoo, Google, Outlook.com など)。 == 概念 == 基本的に DKIM はサーバー上の全てのメッセージに電子署名を行って、メッセージが実際にサーバーから送信されたことを確認し、スパムやフィッシングメールでないことを保証します。 *送信者のメールサーバーは秘密鍵でメールに署名を行います。 *メッセージが到着すると、受信者はドメインの DNS から公開鍵をリクエストして署名を検証します。 秘密鍵がドメインの公開鍵と一致していることでサーバーからメッセージが送信されたことが確認できます。 詳しくは [https://tools.ietf.org/html/rfc6376 RFC 6376] を見てください。 == インストール == {{Pkg|opendkim}} パッケージを[[インストール]]してください。 == 設定 == 署名サービスのメイン設定ファイルは {{ic|/etc/opendkim/opendkim.conf}} です。 * サンプル設定ファイル {{ic|/etc/opendkim/opendkim.conf.sample}} を {{ic|/etc/opendkim/opendkim.conf}} にコピーして、以下のオプションを変更してください: {{hc|/etc/opendkim/opendkim.conf| Domain example.com KeyFile /path/to/keys/server1.private Selector myselector Socket inet:8891@localhost UserID opendkim }} * 秘密の署名鍵を生成するには、メールを送信するのに使うドメインを指定して、鍵を参照するのに使うセレクタを指定する必要があります。RFC によれば何でもかまいませんが、英数字の文字列が良いでしょう: $ opendkim-genkey -r -s myselector -d example.com * ときどきメールは勝手に改変されることがあり (例えばタブが空白に置き換わるなど)、DKIM の署名が無効になってしまうことがあります。ヘッダーやボディの些細な変更によって署名が破壊されてしまわないように、フォーマットをどれくらい厳格にするか指定するポリシーである ''Canonicalization'' が存在します。全く改変が許されない ''simple'' と多少の変更は許可される ''relaxed'' が利用できます。詳しくは [http://dkim.org/specs/rfc4871-dkimbase.html#canonicalization] を見てください。ヘッダとボディでそれぞれ別個に設定できます: {{hc|/etc/opendkim/opendkim.conf| ... Canonicalization relaxed/simple ... }} 上記の場合はヘッダーの改変は許可されますがメッセージのボディは全く変更できません。OpenDKIM のデフォルト設定は ''simple/simple'' です。 * 他にも設定オプションは存在します。ドキュメントを読んでください。 * {{ic|opendkim.service}} を[[起動]]・[[有効化]]してください。詳しくは[[デーモン]]を読んでください。 == DNS レコード == セレクタと公開鍵を記述した '''DNS TXT''' レコードを追加してください。秘密鍵と同じ場所に作成される {{ic|myselector.txt}} に適切なレコードが記載されています。 例: myselector._domainkey IN TXT "v=DKIM1; k=rsa; s=email; p=...................." 他にも利用可能なスイッチは存在します ([http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text RFC4871] を参照)。例えば {{ic|<nowiki>t=y</nowiki>}} はテストモードを有効にして、署名の状態に関係なく、メールを署名済みとして扱うように受信者に通達します。 DNS レコードが正しく更新されたことを確認するには: $ host -t TXT myselector._domainkey.example.com ウェブ上の [http://dkimcore.org/tools/ DKIM キーチェッカー] を使って DKIM の DNS レコードが設定されていることを確認することもできます。 == Postfix の統合 == 以下のどちらかの行を {{ic|main.cf}} に追加してください: non_smtpd_milters=inet:127.0.0.1:8891 smtpd_milters=inet:127.0.0.1:8891 DKIM と DMARC を統合する場合は代わりに以下の行を使ってください (unix ソケットを使用): non_smtpd_milters = unix:/run/opendkim/opendkim.sock, unix:/run/opendmarc/dmarc.sock smtpd_milters = unix:/run/opendkim/opendkim.sock, unix:/run/opendmarc/dmarc.sock もしくは {{ic|master.cf}} の smtpd オプションを変更してください: smtp inet n - n - - smtpd -o smtpd_client_connection_count_limit=10 -o smtpd_milters=inet:127.0.0.1:8891 submission inet n - n - - smtpd -o smtpd_enforce_tls=no -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sasl_path=smtpd -o cyrus_sasl_config_path=/etc/sasl2 -o smtpd_milters=inet:127.0.0.1:8891 == Sendmail の統合 == {{ic|sendmail.mc}} ファイルを編集して、{{ic|FEATURE}} から始まる行の後に、以下の行を追加してください: {{hc|/etc/mail/sendmail.mc|<nowiki>INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')</nowiki>}} 次のコマンドで {{ic|sendmail.cf}} ファイルを再生成してください: # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf その後 {{ic|sendmail.service}} を再起動してください。詳しくは[[デーモン]]を参照。 == マルチドメイン == 同一サーバー上に複数の仮想ドメインを提供するメールサーバーサービスを動作させている場合、以下のように設定を編集する必要があります: {{ic|/etc/opendkim/opendkim.conf}} に以下のディレクティブを記述してください: KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts {{note|DKIM 鍵はドメインごとのフォルダに作成・移動する必要があります、例: {{ic|/etc/opendkim/keys/domain1.com/}}。そうしないと {{ic|dkim: FAILED, invalid (public key: not available)}} というエラーメッセージが表示されます。}} 以下の2つのファイルを作成して opendkim が適切なキーを認識できるようにしてください。全てのドメインで同一のキーを使うことも、ドメインごとにキーを生成することもできます。設定にあわせて変更するようにして、必要な分だけ行を追加してください: {{hc|/etc/opendkim/KeyTable| myselector._domainkey.example1.com example1.com:myselector:/etc/opendkim/myselector.private myselector._domainkey.example2.com example2.com:myselector:/etc/opendkim/myselector.private ...}} {{hc|/etc/opendkim/SigningTable| *@example1.com myselector._domainkey.example1.com *@example2.com myselector._domainkey.example2.com ...}} {{ic|/etc/opendkim/TrustedHosts}} ファイルは opendkim にキーを使用するユーザーを指定します。設定ファイルの {{ic|ExternalIgnoreList}} ディレクティブで参照されます。Opendkim はメールを検証するときにリストに含まれているホストを無視します。そして、{{ic|InternalHosts}} ディレクティブによっても参照されるため、同一リストのホストは内部のマシンだと認識され、opendkim はメールに署名を行います。例 ({{ic|<server_ip>}} はあなたのサーバーの IP に置き換えてください): {{hc|/etc/opendkim/TrustedHosts| 127.0.0.1 ::1 localhost <server_ip> hostname.example1.com example1.com hostname.example2.com example2.com ... }} ファイルの所有者を opendkim に変更してください: # chown -R opendkim:mail /etc/opendkim 各ドメインで DNS TXT レコードを追加してセレクタと公開鍵を指定してください。 その後 opendkim を[[再起動]]します。 == セキュリティ == セキュリティの観点からすると OpenDKIM デーモンのデフォルト設定はあまりよろしくありません (ただし大きな問題ではありません): * OpenDKIM デーモンは {{ic|root}} で動作させる必要が全くありません (上の設定では OpenDKIM は {{ic|root}} 権限を捨てますが、systemd を使ってさらに早く {{ic|root}} 権限を使わないようにできます)。 * メールデーモンが OpenDKIM デーモンと同一のホスト上にある場合、ローカルホストで TCP ソケットを使用する必要はなく、伝統的なユーザー・グループのアクセス制御ができる Unix ソケットが使用できます。 * OpenDKIM はデフォルトで {{ic|/tmp}} フォルダを使用しますが、別のフォルダにすることでアクセス制限をかけることができます。 {{note|以下の設定ファイルは単一ドメインでの設定です。}} 以下の設定ファイルは上記の問題をほとんど解決して systemd サービスユニットの不必要なオプションを削げ落としています (Postfix を使用していることが前提): {{hc|/etc/opendkim/opendkim.conf| BaseDirectory /var/lib/opendkim Domain example.com KeyFile /etc/opendkim/myselector.private Selector myselector Socket local:/run/opendkim/opendkim.sock Syslog Yes TemporaryDirectory /run/opendkim UMask 002 }} {{hc|/etc/systemd/system/opendkim.service|<nowiki> [Unit] Description=OpenDKIM daemon After=network.target remote-fs.target nss-lookup.target [Service] Type=forking User=opendkim Group=postfix ExecStart=/usr/bin/opendkim -x /etc/opendkim/opendkim.conf RuntimeDirectory=opendkim RuntimeDirectoryMode=0750 [Install] WantedBy=multi-user.target </nowiki>}} ソケットディレクトリを作成して所有者を設定: # mkdir /run/opendkim # chown opendkim:mail /run/opendkim {{ic|/etc/postfix/main.cf}} を編集して Postfix が Unix ソケットを listen するようにしてください: {{hc|/etc/postfix/main.cf|<nowiki> smtpd_milters = unix:/run/opendkim/opendkim.sock non_smtpd_milters = unix:/run/opendkim/opendkim.sock</nowiki> }} == トラブルシューティング == === Error: "milter-reject: END-OF-MESSAGE from localhost" === {{ic|/etc/postfix/main.cf}} において Postfix Milter プロトコルが誤って設定されている可能性が高いです: # Postfix ≥ 2.6 milter_protocol = 6 # 2.3 ≤ Postfix ≤ 2.5 milter_protocol = 2 == ノート == スパム対策を行ってサーバーの信頼性をあげたい場合、DNS レコードを追加してメールを送信するサーバーを認証する [[SPF|Sender Policy Framework]] を見てみてください。 == 参照 == * [https://dmarcian.com/dkim-inspector/ DKIM INspector] * [http://www.appmaildev.com/en/dkim DKIM signature test via email]
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
OpenDKIM
に戻る。
検索
検索
OpenDKIMのソースを表示
話題を追加