![画像](https://habrastorage.org/web/524/a74/d9d/524a74d9dc834ae581c7893fc079c693.png)
![](https://habrastorage.org/webt/59/d4/8c/59d48c8926a2f359400620.png)
ZimbraでDKIMを構成する
DKIM(DomainKeys Identified Mail)は、デジタル署名認証に基づく電子メール認証方法です。 DKIMは、メールサービスが送信者を確認し、送信者のアドレスを置き換えて実行される不正なメール送信から手紙の受信者を保護するために必要です。
この方法では、送信メッセージのヘッダーをドメインの秘密キーで暗号化し、公開バージョンのキーをドメインのDNSレコードに追加して、誰でもアクセスできるようにします。 受信者サーバーMTAは、送信者のDNSサーバーに公開キーを要求して、受信メッセージヘッダーを解読し、要求されたソースからメッセージが実際に送信されているかどうかを確認します。
![画像](https://habrastorage.org/webt/59/d4/8c/59d48c8924296299248212.png)
DKIMはZimbra 8.0以降で利用可能です。 署名のセットアップは2つのステップで構成されます。
ステージ1:キーとセレクターの生成
既存のDKIM構成がまだないドメインにDKIMデータを追加します。
# su zimbra
$ /opt/zimbra/libexec/zmdkimkeyutil -a -d example.com
取得するもの:
DKIM Data added to LDAP for domain example.com with selector ECAC22D2-DCA2-11E6-BA30-B554729FE32A
Public signature to enter into DNS:
ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx"
"aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAA" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32A for example.com
ドメインのDKIMデータを更新することもできます。
$ /opt/zimbra/libexec/zmdkimkeyutil -u -d example.com
ドメインのDKIMデータを削除します。
$ /opt/zimbra/libexec/zmdkimkeyutil -r -d example.com
ドメインの保存されたDKIMデータを取得します。
$ /opt/zimbra/libexec/zmdkimkeyutil -q -d example.com
2番目のステップ:DNSレコードを更新する
公開鍵は、TXTレコードとしてドメインに追加する必要があります。
$ORIGIN example.com.
ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx"
"aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAA" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32A for example.com
DNSを更新し、コマンドの結果を確認します。
# host -t txt SELECTOR._domainkey.DOMAIN
例:
# host -t txt ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey.example.com ns1.example.com
キーが取得された場合、
/opt/zimbra/common/sbin/opendkim-testkey
を使用して、公開キーが秘密キーと一致することを確認します。
$ opendkim-testkey -d example.com -s ECAC22D2-DCA2-11E6-BA30-B554729FE32B -x /opt/zimbra/conf/opendkim.conf
エラーが発生した場合:
opendkim-testkey: /opt/zimbra/conf/opendkim.conf: configuration error at line 0
これは、ファイル/opt/zimbra/conf/opendkim.confが存在しないことを意味します。次のコマンドで作成できます。
$ zmprov ms `zmhostname` +zimbraServiceEnabled opendkim ./libexec/configrewrite opendkim
DKIM署名キーを取り消す必要がある場合は、TXTレコードに空の "p ="タグを設定します。
デフォルトでは、1024ビットキーが作成されます(ZCSのバージョンによって異なります)。-bオプションを使用してサイズを変更できます。
送信者ポリシーフレームワーク(SPF)
SPF(Sender Policy Framework)-SMTP経由で電子メールを送信するためのプロトコルの拡張。 SPFはRFC 7208で定義されています。SPFレコードはドメインの偽造を防ぎ、アドレスから送信されるスパムメールを防ぐことができます。 SPFは、エンベロープ送信元(SMTPエンベロープ)で使用されるアドレスに対して構成されます。
![](https://habrastorage.org/webt/59/d4/8c/59d48c8977fa1189958404.png)
spfレコードを使用して、ドメイン所有者は、ドメインの電子メールメッセージを送信する権限を持つサーバーのリストを指定できます。 一般的に、順序は次のとおりです。
[バージョン] [メカニズム] [-all | 〜すべて| リダイレクト]
バージョンは常にspf1で、修飾子は誰がメールを送信できるかを示します。
- a、mx-DNSレコードAまたはMXからのサーバー、それぞれ
- ip4、ip6-サーバーアドレス(サブネットを指定できます。例:ip4:1.2.3.4/24)、
- include-別のアドレスからデータを取得します
パラメータ:
- -allは、メカニズムチェックが失敗した場合にメールを受け入れないことを意味します。
- 〜検証が失敗した場合はすべて、受信者サーバーの裁量で行動します。
- リダイレクトとは、別のサーバーからルールを取得することを意味します。
以下の例を検討してください。
例1
example.com。 IN TXT "v = spf1 ip4:62.220.58.72 a mx -all"
example.comドメインの場合、IPアドレス62.220.58.72から送信された文字を受け入れ、AおよびMXレコードで指定されたサーバーからのメッセージも受け入れます。他のサーバーからのメッセージは拒否する必要があります。
例2
example.com。 IN TXT "v = spf1リダイレクト:example.org"
example.comドメインからルールを取得します。
例3
example.com。 IN TXT "v = spf1 include:_spf.google.com -all"
Googleのsmtpサーバーからのみメールを受信します。
DMARCセットアップ
ドメインベースのメッセージ認証、レポートおよび適合性、またはDMARCは、送信者アドレスを偽るスパマーと戦うために組織のグループによって作成された技術仕様です。 これは、受信者のメールサーバーに設定されたルールと機能に基づいて、送信者のメールドメインの識別に基づいています。
したがって、メールサーバーは、メッセージが良いか悪いかを判断し、DMARCレコードに従って動作します。 DMARCのセットアップにより、ドメイン所有者は認証されていないドメインから受信したメールを処理するためのルールを作成できます。
![](https://habrastorage.org/webt/59/d4/8c/59d48c898e487271860337.png)
SPFおよびDKIMレコードを作成した後、TXTレコードをDNSに追加してDMARCチェックを構成する必要があります(SPFと同様)。 パラメータは次のとおりです。
![](https://habrastorage.org/webt/59/d4/8f/59d48fa98ac6f499670216.png)
詳細については、 DMARC Tag Registryを参照してください。
ドメインのルール(spfとdkimのチェックが失敗した場合の受信者サーバーに対する処理)は、次の3つのいずれかです。
- none-レポートのメッセージを登録するだけで、メッセージ自体には何もしません。
- 隔離-メッセージをスパムのようにマークします。
- reject-SMTPレベルでメッセージの受信を拒否します。
レポートを受信する場合は、ruaタグでメールアドレスを指定することを忘れないでください。
_dmarc.example.com IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com"
DNSレコードを追加した結果
次に、example.comゾーンのdnsエントリの例を示します。
$ORIGIN .
$TTL 3600
example.com IN SOA example.com. hostmaster.example.com. (
2017011011 ; serial
3600 ; refresh [1h]
600; retry [10m]
1209600 ; expire [14d]
3600 ; min TTL [1h]
)
NS ns1.example.com.
MX 10 ns1.example.com.
A 62.220.58.71
IN TXT "v=spf1 a mx ip4:62.220.58.71 ~all"
$ORIGIN example.com.
ECAC22D2-DCA2-11E6-BA30-B554729FE32B._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5OCY0sX04ziF+sOHt/1kq3A7iAzAjBjb4JteaoFzu1q2uBOiQS0uyaFeY6CgSgRRbvPnq8cWLG/XMU0tM9gSGtgtWDmHOs6/+QgKp6zRmetfsyABA2Y2U+XJlVURUE5ai3KIA/njt7IGZ5yeFsdZIKmhOCAOPGCovq10xkZXHdjRwiqxbCYGXv2m3o74BcWtOLPfEvexD5PYx"
"aTWFbelJpGlDN7WdBCE+ObpLGkJ9co/1sVOcd3c9SHfPq3jcBAFm7oPX2ak7Fb7cslVK77lA2hBgMYqI2Sh+T64o6R33dU++Ej7CuImmv7PAqVUn5MjYr05t3LK9dwWM8Cm6aJ/QIDAQAB" ) ; ----- DKIM key ECAC22D2-DCA2-11E6-BA30-B554729FE32B for example.com
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com"
ns1 IN A 62.220.58.71
www 86400 IN CNAME example.com.
Zextras Suiteに関連するすべての質問については、katerina @ zextras.comにメールで会社の代表者「Zextras」Katerina Triandafilidiに連絡することができます。