OpenDKIM + Postfix = just





2011年の終わりに、dkim-milterプロジェクトの開発者はサポートと開発を停止しました 。 幸いなことに、OpenDKIMはdkim-milter プロジェクトを置き換えるようになりました。これにより、電子メールにDKIM署名を簡単に追加できます。



tl; dr:最近では、DKIM署名なし
DKIM署名は、送信者サーバーによってメッセージヘッダーに追加されるデジタル署名です。これにより、受信者サーバーは、メッセージの送信者がメッセージヘッダーのFromフィールドと一致することを確認できます。 受信者のサーバーがこの署名を検証すると、検証結果に基づいて、サーバーはレターの処理方法を決定できます。承認、スパムフォルダーへの送信、追加検証のための送信、または受信の拒否。 DKIM署名は、YandexやMail.ruを含むすべての主要な電子メールサービスによって検証および使用されます。 後者では、DKIMを使用して署名する必要があります。






PostfixおよびOpenDKIMの構成手順



これを行うには、Postfix自体とOpenDKIMパッケージが必要です。 パッケージマネージャーを使用して、必要なすべてのコンポーネントをインストールします。



aptitude install opendkim opendkim-tools
      
      





次に、文字の署名に使用するキーを取得する必要があります。



署名用のキー



サーバードメインとセレクターのキーを取得します。これは、ドメインのないサーバーの名前に等しいため、何も思いつかないようにします。



 mkdir /etc/opendkim/ opendkim-genkey -D /etc/opendkim/ -d $(hostname -d) -s $(hostname)
      
      





これがmail.example.com



サーバーで発生した場合、最後のコマンドは、それぞれ秘密鍵と公開鍵を使用して/etc/opendkim/mail.txt



/etc/opendkim/mail.txt



を作成し/etc/opendkim/mail.txt



。 公開キー 、ドメインの対応するTXTレコードに追加する必要があります。



キーファイルには、OpenDKIMが機能するグループの読み取りアクセス権を付与する必要があります。また、ソケットを介してOpenDKIMデーモンに接続するときに文字に署名できるように、 postfix



自体を同じグループに追加する必要があります。



 chgrp opendkim /etc/opendkim/* chmod g+r /etc/opendkim/* gpasswd -a postfix opendkim
      
      







キーを探す場所は?



/etc/opendkim.conf



、設定を追加し/etc/opendkim.conf







 tee -a /etc/opendkim.conf <<EOF Canonicalization relaxed/relaxed SyslogSuccess yes KeyTable file:/etc/opendkim/keytable SigningTable file:/etc/opendkim/signingtable X-Header yes #      : LogWhy yes #       : #ExternalIgnoreList file:/etc/opendkim/trusted #   ,    : #InternalHosts file:/etc/opendkim/internal EOF
      
      





すべてのディレクティブの詳細な説明については 、ドキュメントを参照してください。



署名するキー



ファイル/etc/opendkim/keytable



に使用可能なキーを「 ::///



」の形式でリストします。 上記のコマンドでキーを作成した場合、次のようにこのファイルにサーバーのFQDNに従ってキーを登録できます。



 echo $(hostname -f | sed s/\\./._domainkey./) $(hostname -d):$(hostname):$(ls /etc/opendkim/*.private) | tee -a /etc/opendkim/keytable
      
      





mail.example.com



場合、ファイルには次の行が含まれます。



 mail._domainkey.example.com example.com:mail:/etc/opendkim/mail.private
      
      





このファイルのキーは、任意の数のドメインに対して任意の数にすることができます。 キーはデータベースに保存することもできます-詳細はドキュメントにあります。



署名するメールは誰ですか?



ここで、 /etc/opendkim/signingtable



に、「 -



」の形式で、 /etc/opendkim/signingtable



に署名するキーを含むドメインメールを説明します。



 echo $(hostname -d) $(hostname -f | sed s/\\./._domainkey./) | tee -a /etc/opendkim/signingtable
      
      





ホストmail.example.com



場合、ファイルはexample.com mail._domainkey.example.com



なりexample.com mail._domainkey.example.com



。 すべての送信メールに署名する場合は、ドメインの代わりに*



を指定できます。



ExternalIgnoreList



およびInternalHosts



ディレクティブで指定された他のファイルには、ホストおよび/またはIPアドレスのリストがそれぞれ新しい行に含まれているだけで、文字の署名は無視または追加されます。 唯一のサーバーがメールを担当している場合は、サーバーで何もする必要はありません。



Postfixを構成する



最後に、Postfixにすべての署名を送信するよう依頼します。



 postconf -e milter_default_action=accept postconf -e milter_protocol=2 postconf -e smtpd_milters=unix:/var/run/opendkim/opendkim.sock postconf -e non_smtpd_milters=unix:/var/run/opendkim/opendkim.sock
      
      







chrootにPostfixがある場合...



chrootなしでPostfixを使用する場合、設定するために何もする必要はありません。 それ以外の場合は、ほとんどの場合、ソケットを作成し、すべてに適切な権限を付与する場所をOpenDKIMに説明する必要があります。



 echo 'SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"' | tee -a /etc/default/opendkim mkdir -p /var/spool/postfix/var/run/opendkim chown opendkim:opendkim /var/spool/postfix/var/run/opendkim
      
      







できた!



PostfixとOpenDKIMを通常の方法で再起動し、テストレターをYandexに送信し、署名検証の成功結果を楽しみます:







TXTレコード追加し、それが所定の位置にあることを確認することを忘れないでください。



 dig txt mail._domainkey.example.com
      
      







署名を検証する別の方法は、 check-auth@verifier.port25.com



電子メールを送信することcheck-auth@verifier.port25.com







署名のない手紙を拒否する



検証が成功した場合、 ADSPエントリを追加して、他のサーバーがあなたのドメインの手紙を受け入れることを正式に禁止する価値がありますが、署名はありません:



 _adsp._domainkey IN TXT "dkim=all"
      
      







終わり



最後まで読んでください、しかしもっと欲しいですか? 1つのドメインと正しく構成されたホスト名でOpenDKIMを構成する方法に関するはるかに短い指示



All Articles