RHEL9で作る自宅サーバ:mailサーバの構築 その3 Rspamdで、なりすましメール対策

mailサーバRHEL9パソコン自宅サーバ

送信ドメイン認証(SPF/DKIM/DMARC)を行って、送信元メールアドレスを騙ったなりすましメール対策をします。

以下のページがなりすまし対策について詳しいですね。

とりあえずDMARCレポートを送信したりARCヘッダをつけるところまで、Rspamdを使って行いたいと思います。

ここで使ったRspamdのバージョンは3.8.4です。更新が速いので設定した書式など変わることもあります。

Rspamdのインストール

公式サイトに従って、Rspamdをインストールします。

Redisデータベースのインストール

クイックスタートでは、まず前提となるプログラムの設定など書かれています。

PostfixやDovecotは設定が済んでいますが、さらにRedisが必要なので、これをインストールします。

[root@ace ~]# dnf install redis
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:52:56 前の 2024年02月29日 11時27分12秒 に実施 しました。
依存関係が解決しました。
================================================================================
 パッケージ
          Arch      バージョン        リポジトリー                        サイズ
================================================================================
インストール:
 redis    x86_64    6.2.7-1.el9       rhel-9-for-x86_64-appstream-rpms    1.3 M

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 1.3 M
インストール後のサイズ: 4.7 M
これでよろしいですか? [y/N]: y
:
省略
:
インストール済み:
  redis-6.2.7-1.el9.x86_64

完了しました!
[root@ace ~]#

さらに以下の設定を行います。

[root@ace ~]# cp -p /etc/redis/redis.conf /etc/redis/redis.conf.orig
[root@ace ~]# vi /etc/redis/redis.conf
[root@ace ~]# diff /etc/redis/redis.conf /etc/redis/redis.conf.orig
63d62
< bind 127.0.0.1
996d994
< maxmemory 500mb
1026d1023
< maxmemory-policy volatile-ttl
[root@ace ~]#

bindでローカルホストのIPv4しか聞かないようにしておきます。あとは、クイックスタートに書かれている通りの設定です。

[root@ace ~]# systemctl enable redis
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
[root@ace ~]# systemctl start redis
[root@ace ~]# systemctl status redis
● redis.service - Redis persistent key-value database
     Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; preset: di>
    Drop-In: /etc/systemd/system/redis.service.d
             mqlimit.conf
     Active: active (running) since Wed 2024-03-06 16:12:47 JST; 5min ago
   Main PID: 84816 (redis-server)
     Status: "Ready to accept connections"
      Tasks: 5 (limit: 23114)
     Memory: 6.6M
        CPU: 275ms
     CGroup: /system.slice/redis.service
             mq84816 "/usr/bin/redis-server 127.0.0.1:6379"

 3月 06 16:12:47 ace.zeke.ne.jp systemd[1]: Starting Redis persistent key-value>
 3月 06 16:12:47 ace.zeke.ne.jp systemd[1]: Started Redis persistent key-value >
[root@ace ~]#

設定が終わったら、自動起動の有効化、起動をしておきます。

Rspamdのインストール

[root@ace ~]# source /etc/os-release
[root@ace ~]# export EL_VERSION=`echo -n $PLATFORM_ID | sed "s/.*el//"`
[root@ace ~]# curl https://rspamd.com/rpm-stable/centos-${EL_VERSION}/rspamd.repo > /etc/yum.repos.d/rspamd.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0     73      0  0:00:02  0:00:02 --:--:--    73
[root@ace ~]# yum install rspamd
サブスクリプション管理リポジトリーを更新しています。
Rspamd stable repository                        233  B/s | 833  B     00:03
Rspamd stable repository                        2.2 kB/s | 3.9 kB     00:01
GPG 鍵 0xBF21E25E をインポート中:
 Userid     : "Vsevolod Stakhov (Rspamd packages key) <vsevolod@rspamd.com>"
 Fingerprint: 3FA3 47D5 E599 BE45 95CA 2576 FFA2 32ED BF21 E25E
 From       : http://rspamd.com/rpm/gpg.key
これでよろしいですか? [y/N]: y
Rspamd stable repository                        2.9 kB/s |  16 kB     00:05
メタデータの期限切れの最終確認: 0:00:01 前の 2024年02月29日 13時57分57秒 に実施 しました。
依存関係が解決しました。
================================================================================
 パッケージ      Arch   バージョン       リポジトリー                     サイズ
================================================================================
インストール:
 rspamd          x86_64 3.8.4-1.el9      rspamd                           4.5 M
依存関係のインストール:
 hyperscan       x86_64 5.4.1-2.el9      epel                             2.3 M
 jemalloc        x86_64 5.2.1-2.el9      epel                             203 k
 libgfortran     x86_64 11.4.1-2.1.el9   rhel-9-for-x86_64-baseos-rpms    807 k
 libquadmath     x86_64 11.4.1-2.1.el9   rhel-9-for-x86_64-baseos-rpms    200 k
 libsodium       x86_64 1.0.18-8.el9     epel                             161 k
 openblas        x86_64 0.3.21-2.el9     rhel-9-for-x86_64-appstream-rpms  38 k
 openblas-serial x86_64 0.3.21-2.el9     rhel-9-for-x86_64-appstream-rpms 4.6 M

トランザクションの概要
================================================================================
インストール  8 パッケージ

ダウンロードサイズの合計: 13 M
インストール後のサイズ: 67 M
これでよろしいですか? [y/N]: y
:
省略
:
インストール済み:
  hyperscan-5.4.1-2.el9.x86_64            jemalloc-5.2.1-2.el9.x86_64
  libgfortran-11.4.1-2.1.el9.x86_64       libquadmath-11.4.1-2.1.el9.x86_64
  libsodium-1.0.18-8.el9.x86_64           openblas-0.3.21-2.el9.x86_64
  openblas-serial-0.3.21-2.el9.x86_64     rspamd-3.8.4-1.el9.x86_64

完了しました!
[root@ace ~]#

途中でkeyを使うところで「これでよろしいですか?」と聞いてきますが、すべてYesで継続します。

ツールを使って設定を行います。ここでは

  • Webインターフェース用のパスワード
  • Redisサーバとのインターフェース
  • DKIM用秘密鍵、公開鍵の作成

を行います。

[root@ace ~]# rspamadm configwizard
  ____                                     _
 |  _ \  ___  _ __    __ _  _ __ ___    __| |
 | |_) |/ __|| '_ \  / _` || '_ ` _ \  / _` |
 |  _ < \__ \| |_) || (_| || | | | | || (_| |
 |_| \_\|___/| .__/  \__,_||_| |_| |_| \__,_|
             |_|

Welcome to the configuration tool
We use /etc/rspamd/rspamd.conf configuration file, writing results to /etc/rspamd
Modules enabled: mime_types, dkim, trie, force_actions, forged_recipients, chartable, whitelist, maillist, spf, emails, mid, dkim_signing, phishing, bayes_expiry, arc, fuzzy_check, milter_headers, elastic, once_received, dmarc, asn, multimap, settings, regexp, hfilter, metadata_exporter, rbl
Modules disabled (explicitly): bimi, http_headers, known_senders, mx_check, external_relay, aws_s3, dcc, p0f, rspamd_update, spamtrap
Modules disabled (unconfigured): dynamic_conf, ip_score, external_services, reputation, spamassassin, maps_stats, fuzzy_collect, antivirus, clickhouse, metric_exporter, clustering
Modules disabled (no Redis): history_redis, ratelimit, neural, greylist, url_redirector, replies
Modules disabled (experimental):
Modules disabled (failed):
Do you wish to continue?[Y/n]: y
Setup WebUI and controller worker:
Controller password is not set, do you want to set one?[Y/n]: y
Enter passphrase:
Set encrypted password to: $2$…秘密情報…
Redis servers are not set:
The following modules will be enabled if you add Redis servers:
        * history_redis
        * ratelimit
        * neural
        * greylist
        * url_redirector
        * replies
Do you wish to set Redis servers?[Y/n]: y
Input read only servers separated by `,` [default: localhost]: 127.0.0.1:6379
Input write only servers separated by `,` [default: 127.0.0.1:6379]:
Do you have any username set for your Redis (ACL SETUSER and Redis 6.0+)[y/N]: n
Do you have any password set for your Redis?[y/N]: n
Do you have any specific database for your Redis?[y/N]: n
Do you want to setup dkim signing feature?[y/N]: y
How would you like to set up DKIM signing?
1. Use domain from mime from header for sign
2. Use domain from SMTP envelope from for sign
3. Use domain from authenticated user for sign
4. Sign all mail from specific networks

Enter your choice (1, 2, 3, 4) [default: 1]: 1
Do you want to sign mail from authenticated users? [Y/n]: y
Allow data mismatch, e.g. if mime from domain is not equal to authenticated user domain? [Y/n]: y
Do you want to use effective domain (e.g. example.com instead of foo.example.com)? [Y/n]: n
Enter output directory for the keys [default: /var/lib/rspamd/dkim/]:
Enter domain to sign: mail.zeke.ne.jp
Enter selector [default: dkim]: default
Do you want to create privkey /var/lib/rspamd/dkim/mail.zeke.ne.jp.default.key[Y/n]: y
You need to chown private key file to rspamd user!!
To make dkim signing working, to place the following record in your DNS zone:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtHV1bqjwLIFJTBde0dKb0R/kLxHTJ3LgIf2wSKwYwraH02ZxGQ+D0ZgtUYXe9EQzdQz21pn9NG+APreydGK0pHhr46KucZKkU4Nu12XWsD0ylTKI+2xbnmQ/o6iKWFohliXdlgoqMZpqE0UdfMD2V6Rv5n9Qh72rECoK9Od84OqtDRgcKSVjfILrrnu4fXVEBDRnCiKmk3kDX4GzUYJBwRtk+io2bArEQr9HDw0gX6bwupHmRgv7VqzlF823vq3/fk2OxruJiLx6xlRGxfgQ1qi3JJjDOrMbRkpefPmJpeKRaGjrwSnHDj2Ouw+o8sS5GlUCmyh7xMMDxs+vPvfznwIDAQAB

Do you wish to add another DKIM domain?[y/N]: y
Enter domain to sign: zeke.ne.jp
Enter selector [default: dkim]: default
Do you want to create privkey /var/lib/rspamd/dkim/zeke.ne.jp.default.key[Y/n]: y
You need to chown private key file to rspamd user!!
To make dkim signing working, to place the following record in your DNS zone:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtKECPCGBjqZk10rwhk9awKdUZzkBTvs7IJ6vYYrM4I3pH4gRH1NHdkhu/csPy2djVLqpBnlE75Gdm+CxZSGxmmFxXGCPcs5DGl0WXrTjrtCYHgRGOX/0oo8KEUFIHvVfgzCTJfiSwCKeGiBtNjfzNVYT5IrDDgt1klU4AiF32bGHI5kSUfLp2ezg+OoFbe9qETq1OhlPrPvD6a+FJA/fylQlHyD+9gx4r3iLHJb2nT7RUG+sJIpjfS8RfQwDbD6OapnU53x+DP2ZEPp4jppdp6cDiEStickPH7jbeYeRffkVcmgYuwhHC9yWjIlrQk+ijtJqCmzsPMymVOV9TVKnZQIDAQAB

Do you wish to add another DKIM domain?[y/N]: n
File: /etc/rspamd/local.d/worker-controller.inc, changes list:
password => $2$…秘密情報…

File: /etc/rspamd/local.d/redis.conf, changes list:
read_servers => 127.0.0.1:6379
write_servers => 127.0.0.1:6379

File: /etc/rspamd/local.d/dkim_signing.conf, changes list:
use_domain => header
allow_hdrfrom_mismatch => true
allow_hdrfrom_mismatch_sign_networks => true
allow_username_mismatch => true
domain => {[zeke.ne.jp] = {[selector] = default, [path] = /var/lib/rspamd/dkim/zeke.ne.jp.default.key}, [mail.zeke.ne.jp] = {[selector] = default, [path] = /var/lib/rspamd/dkim/mail.zeke.ne.jp.default.key}}
sign_authenticated => true
use_esld => true

Apply changes?[Y/n]: y
Create file /etc/rspamd/local.d/worker-controller.inc
Create file /etc/rspamd/local.d/redis.conf
Create file /etc/rspamd/local.d/dkim_signing.conf
3 changes applied, the wizard is finished now
*** Please reload the Rspamd configuration ***
[root@ace ~]#

赤字が入力した部分です。設定ファイルは

[root@ace ~]# ls -al /etc/rspamd/local.d/
合計 16
drwxr-xr-x 2 root root 78 2月 29 14:33 .
drwxr-xr-x 7 root root 4096 2月 29 13:59 ..
-rw-r--r-- 1 root root 426 2月 29 14:33 dkim_signing.conf
-rw-r--r-- 1 root root 67 2月 29 14:33 redis.conf
-rw-r--r-- 1 root root 103 2月 29 14:33 worker-controller.inc
[root@ace ~]#
[root@ace ~]# cat /etc/rspamd/local.d/dkim_signing.conf
use_domain = "header";
allow_hdrfrom_mismatch = true;
allow_hdrfrom_mismatch_sign_networks = true;
allow_username_mismatch = true;
domain {
    zeke.ne.jp {
        selector = "default";
        path = "/var/lib/rspamd/dkim/zeke.ne.jp.default.key";
    }
    mail.zeke.ne.jp {
        selector = "default";
        path = "/var/lib/rspamd/dkim/mail.zeke.ne.jp.default.key";
    }
}
sign_authenticated = true;
use_esld = false;
[root@ace ~]# cat /etc/rspamd/local.d/redis.conf
read_servers = "127.0.0.1:6379";
write_servers = "127.0.0.1:6379";
[root@ace ~]# cat /etc/rspamd/local.d/worker-controller.inc
password = "$2$…秘密情報…";
[root@ace ~]#

こちらに作成されました。Rspamdのお作法として、設定ファイルの変更は元の設定ファイルと同じ名前で差分を/etc/rspamd/local.d/に格納することになっています。

送信ドメイン認証の設定

DKIMの残りの設定

[root@ace ~]# ls -al /var/lib/rspamd/dkim/
合計 8
drwxr-xr-x 2 root    root      71  2月 29 14:32 .
drwxr-xr-x 3 _rspamd _rspamd   95  2月 29 14:31 ..
-rw------- 1 root    root    1675  2月 29 14:32 mail.zeke.ne.jp.default.key
-rw------- 1 root    root    1675  2月 29 14:32 zeke.ne.jp.default.key
[root@ace ~]#

DKIMの秘密鍵は/var/lib/rspamd/dkim/に作成されているので、ツールに言われた通り

[root@ace ~]# chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
[root@ace ~]# ls -al /var/lib/rspamd/dkim/
合計 8
drwxr-xr-x 2 _rspamd _rspamd   71  2月 29 14:32 .
drwxr-xr-x 3 _rspamd _rspamd   95  2月 29 14:31 ..
-rw------- 1 _rspamd _rspamd 1675  2月 29 14:32 mail.zeke.ne.jp.default.key
-rw------- 1 _rspamd _rspamd 1675  2月 29 14:32 zeke.ne.jp.default.key
[root@ace ~]#

と、所有者を_rspamdに変更しておきます。また、内容を現行で使っているものに直しておきます。

DMARCの設定

[root@ace ~]# vi /etc/rspamd/local.d/dmarc.conf
[root@ace ~]# cat /etc/rspamd/local.d/dmarc.conf
reporting {
        enabled = true;
        email = "postmaster@mail.zeke.ne.jp";
        domain = "zeke.ne.jp";
        org_name = "zeke.ne.jp";
        bcc_addrs = ["postmaster@mail.zeke.ne.jp"];
        helo = 'localhost';
        from_name = 'DMARC Aggregate Report';
        msgid_from = 'mail.zeke.ne.jp';
}
[root@ace ~]#

DMARCによるチェック機能は有効になっているのですが、レポート機能はデフォルトで無効になっているので有効にします。その他、送信元メールアドレスやドメインなど設定します。

ちなみにDMARCのレポートは失敗レポート(なりすましメールが届いたら即時ドメイン管理者に詳細レポートを送る)と集計レポート(1日ごとに届いたメールを正常メール、なりすましメールともに集計してドメイン管理者に送る)がありますが、RspamdのDMARCレポート機能は集計レポートしか対応していないようです。

しかし、失敗レポートはなしすましが多いとその分だけメールを送ることになるし、受信者のメールアドレスも向こうのドメイン管理者にわかってしまいます。扱いが難しいので、レポート機能があったとしても使っていないでしょう。

集計レポートを出すコマンドはrspamadm dmarc_reportなのでこれをcronに入れます。

[root@ace ~]# vi /etc/cron.daily/rspamadm_dmarc_report
[root@ace ~]# cat /etc/cron.daily/rspamadm_dmarc_report
#!/bin/sh
/usr/bin/rspamadm dmarc_report > /dev/null 2>&1

[root@ace ~]#
[root@ace ~]# chmod ugo+x /etc/cron.daily/rspamadm_dmarc_report
[root@ace ~]# ls -l /etc/cron.daily/rspamadm_dmarc_report
-rwxr-xr-x 1 root root 59  2月 29 17:08 /etc/cron.daily/rspamadm_dmarc_report
[root@ace ~]#

ARCの設定

[root@ace ~]# vi /etc/rspamd/local.d/arc.conf
[root@ace ~]# cat /etc/rspamd/local.d/arc.conf
use_esld = false;

domain {
    zeke.ne.jp {
        path = "/var/lib/rspamd/dkim/zeke.ne.jp.default.key";
        selector = "default";
    }
    mail.zeke.ne.jp {
        path = "/var/lib/rspamd/dkim/mail.zeke.ne.jp.default.key";
        selector = "default";
    }
}

[root@ace ~]#

メールを転送したときに参照されるARCを設定します。
sign_local = trueでローカルのホストから転送されたときもARCで署名するようにします。
use_esld = falseでサブドメインでも署名できるようにします。(trueだとサブドメインの分もドメイン(zeke.ne.jp)で署名します。)DKIMの設定と同様です。
秘密鍵、公開鍵はDKIMと同じものを使用します。

DNSの設定

送信ドメイン認証(SPF/DKIM/DMARC)はメールサーバだけではなくDNSサーバの設定が必要になります。

MXレコードの設定

まずは「このドメインやホストのメールサーバはこれです!」と周知させるためのDNSのMXレコードが必要ですね。

[root@ace ~]# cat /var/named/external/zeke.ne.jp.zone
$TTL    3600
@       IN      SOA     ns.zeke.ne.jp. root.mail.zeke.ne.jp. (
                        2024022901      ; Serial
                        3600            ; Refresh after 1 hour
                        600             ; Retry after 10 minute
                        1209600         ; Expire after 2 weeks
                        3600    )       ; Minimum TTL of 1 hour
;
        86400   IN      NS      ns.zeke.ne.jp.
        86400   IN      NS      joeker.zeke.ne.jp.
;
        IN      A       203.152.220.46
        IN      AAAA    2001:2c0:cd03:ca00::ace
        IN      CAA     0 issue "letsencrypt.org"
        IN      CAA     0 iodef "mailto:zeke@mail.zeke.ne.jp"
        IN      MX      10      mail.zeke.ne.jp.
:
省略
:
mail    IN      A       203.152.220.46
        IN      MX      10      mail.zeke.ne.jp.
:
省略
:
[root@ace ~]#

ここでは、メールサーバをmail.zeke.ne.jpに集約しています。
ちなみにメールが送られてこないはずのホスト(サブドメイン)に対しては

        IN      MX      0       .

と、メールを受け取らないことを明記しています。

今回、DNSサーバでは外部用(external view)と内部用(internal view)に分けていますが、メールサーバ自身も参照するので、外部用(external view)と内部用(internal view)の両方同じ定義をしないといけません。(これはMXレコードも同じですけど、つい忘れてしまうので)
そうしないと、自分宛に自分のドメインのなりすましメールが来たとき、Rejectできないんですよね。
以下の説明ではexternal viewを例示しますが、internal viewにも同じ設定を入れてください。

SPFの設定

これは簡単ですね。DNSサーバにメールを送信するサーバを列挙するだけです。

DNSサーバのゾーンファイルを以下のように変えました。

[root@ace ~]# cat /var/named/external/zeke.ne.jp.zone
$TTL    3600
@       IN      SOA     ns.zeke.ne.jp. root.mail.zeke.ne.jp. (
                        2024022901      ; Serial
                        3600            ; Refresh after 1 hour
                        600             ; Retry after 10 minute
                        1209600         ; Expire after 2 weeks
                        3600    )       ; Minimum TTL of 1 hour
;
        86400   IN      NS      ns.zeke.ne.jp.
        86400   IN      NS      joeker.zeke.ne.jp.
;
        IN      A       203.152.220.46
        IN      AAAA    2001:2c0:cd03:ca00::ace
        IN      CAA     0 issue "letsencrypt.org"
        IN      CAA     0 iodef "mailto:zeke@mail.zeke.ne.jp"
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
:
省略
:
mail    IN      A       203.152.220.46
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
:
省略
:
[root@ace ~]#

「 IN TXT “v=spf1 +mx -all”」が追記したところです。MXレコードで指定したメールサーバ以外からメールを送信しない指定です。

DKIMの設定

こちらはちょっと複雑になりますね。DNSサーバのゾーンファイルに公開鍵を設定し、メールを秘密鍵で署名したものをメールのヘッダに書くようにします。

[root@ace ~]# cat /var/named/external/zeke.ne.jp.zone
$TTL    3600
@       IN      SOA     ns.zeke.ne.jp. root.mail.zeke.ne.jp. (
                        2024022901      ; Serial
                        3600            ; Refresh after 1 hour
                        600             ; Retry after 10 minute
                        1209600         ; Expire after 2 weeks
                        3600    )       ; Minimum TTL of 1 hour
;
        86400   IN      NS      ns.zeke.ne.jp.
        86400   IN      NS      joeker.zeke.ne.jp.
;
        IN      AAAA    2001:2c0:cd03:ca00::ace
        IN      A       203.152.220.46
        IN      CAA     0 issue "letsencrypt.org"
        IN      CAA     0 iodef "mailto:zeke@mail.zeke.ne.jp"
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
        "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmy0a6tJ/PGRfVWlsnFzRhujKXQ9yPqT/YiRjue2tVrcUEwmTs4J0c7wy+WmmqUbrBLK/OgLECZYfaCGMI3nYNu2/VCTMVQMNdbPwSp9uSneXGiTL4c5rsL3njAqVuAL19PB6p/6VzUaVdJNO6AxbRmVFrf7sqHm5jf3l+zln+zQIDAQAB" )
:
省略
:
mail    IN      A       203.152.220.46
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
default._domainkey.mail IN      TXT     ( "v=DKIM1; k=rsa; "
        "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtNVK5fzrqmijxlKKxP8XaeRvxVdqceWG+q5637XYip6ToguvNdG8o1qG8Df8yiQQojisaGgG10mgTPgrZ+432Fpsaa0IuCBCKbeUDSVV6XnTCavV1dPgi9FMkq+h4gspYwE8kGFmkF19NEDOnZVi40CNIgJNSFWmg/N5ux+oUvQIDAQAB" )
:
省略
:
[root@ace ~]#

DKIMの書式は「セレクタ名._domainkey.ドメイン名 IN TXT “v=DKIM1; k=鍵方式名; p=公開鍵”」になります。実際には公開鍵が長いので2行に分けています。

ちなみにDKIMのカギを切り替えるときには、以前出したメールが転送されDKIMが参照されることを考えて、古い公開鍵も残しておかなくてはなりません。
そのため、新しい鍵はセレクタ名を変えて、同じドメイン別セレクタで共存させる必要があります。
だからセレクタ名は作成日付とか連番とかをつけておいた方が良かったかなと後悔しています。

DMARCの設定

DMACのレコードも追加します。

[root@ace ~]# cat /var/named/external/zeke.ne.jp.zone
$TTL    3600
@       IN      SOA     ns.zeke.ne.jp. root.mail.zeke.ne.jp. (
                        2024030201      ; Serial
                        3600            ; Refresh after 1 hour
                        600             ; Retry after 10 minute
                        1209600         ; Expire after 2 weeks
                        3600    )       ; Minimum TTL of 1 hour
;
        86400   IN      NS      ns.zeke.ne.jp.
        86400   IN      NS      joeker.zeke.ne.jp.
;
        IN      AAAA    2001:2c0:cd03:ca00::ace
        IN      A       203.152.220.46
        IN      CAA     0 issue "letsencrypt.org"
        IN      CAA     0 iodef "mailto:zeke@mail.zeke.ne.jp"
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
        "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmy0a6tJ/PGRfVWlsnFzRhujKXQ9yPqT/YiRjue2tVrcUEwmTs4J0c7wy+WmmqUbrBLK/OgLECZYfaCGMI3nYNu2/VCTMVQMNdbPwSp9uSneXGiTL4c5rsL3njAqVuAL19PB6p/6VzUaVdJNO6AxbRmVFrf7sqHm5jf3l+zln+zQIDAQAB"  ; DKIM key default for zeke.ne.jp )
_dmarc  IN      TXT     ( "v=DMARC1; p=reject;"
        "rua=mailto:postmaster@mail.zeke.ne.jp,mailto:ipm3u6i@ar.glockapps.com,mailto:c0ynbw35@ag.jp.dmarcian.com;" )
:
省略
:
mail    IN      A       203.152.220.46
        IN      MX      10      mail.zeke.ne.jp.
        IN      TXT     "v=spf1 +mx -all"
default._domainkey.mail IN      TXT     "v=DKIM1; k=rsa; "
        "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtNVK5fzrqmijxlKKxP8XaeRvxVdqceWG+q5637XYip6ToguvNdG8o1qG8Df8yiQQojisaGgG10mgTPgrZ+432Fpsaa0IuCBCKbeUDSVV6XnTCavV1dPgi9FMkq+h4gspYwE8kGFmkF19NEDOnZVi40CNIgJNSFWmg/N5ux+oUvQIDAQAB"  ; DKIM key default for mail.zeke.ne.jp
_dmarc.mail     IN      TXT     ( "v=DMARC1; p=reject;"
        "rua=mailto:postmaster@mail.zeke.ne.jp,mailto:ipm3u6i@ar.glockapps.com,mailto:c0ynbw35@ag.jp.dmarcian.com;" )
*._report._dmarc.mail IN TXT "v=DMARC1"
:
省略
:
[root@ace ~]#

書式は「_dmarc.ドメイン名 IN TXT “v=DMARC1; p=DMARCポリシー; rua=mailto:DMARCレポート送信先メールアドレス;”」となります。

DMARCポリシーは最初は「none」でドメイン名がなりすましされていても無視、でもDMARCレポートは送るの設定が良いと思います。その後、後述するDMARCレポートの分析を行って自分でなりすましメールを出していないことを確認できたらポリシーを「Reject」に変更するのが良いと思います。

DMARCレポートには、1日一回送られてくる集計レポートとDMARCが失敗するたびに送られてくる失敗レポートの2種類あります。
失敗レポートはメールの送信者と受信者のメールアドレスが入っていて詳細に調査できるようにはなっていますが、自分のところのメールアドレスを教えてしまうこと、失敗するたびに送るのでDDOSに加担する可能性があることから使われていないようです。
こちらも、集計レポートのあて先だけ書いています。

さらにmail.zeke.ne.jpには、「*._report._dmarc.mail IN TXT “v=DMARC1″」を追加しています。
これは、別ドメインからDMARCレポートを受け入れるとき必要になります。
例えば、zeke.ne.jpのDMARCレポートの宛先は「postmaster@mail.zeke.ne.jp」になっていますが、これを受け入れるためにmail.zeke.ne.jpのドメイン側に「zeke.ne.jp._report._dmarc.mail.zeke.ne.jp.」のレコードが必要になります。実際にはmail.zeke.ne.jpはzeke.ne.jpに含まれているから無条件でDMARCレポートを送ってくれるみたいですけどね。
ここでは先頭のドメイン名を*にして、「すべてのドメインのDMARCレポートをmail.zeke.ne.jpドメインで受け入れる」と設定しています。

ARCの設定

ARCについては、公開鍵をDKIMと共用しているので、DNSサーバの設定はありません。

もし、DKIMと共用しない場合は、公開鍵をセレクタ名を変えてDNSサーバに登録すればよいと思います。

メールを出さないドメインのDNS設定

送信ドメイン認証の設定とはちょっとずれますが、メールを出さないドメインがあったら以下のようにDNSで設定します。

        IN      A       xxx.xxx.xxx.xxx
        IN      MX      0       .
        IN      TXT     "v=spf1 -all"
_dmarc  IN      TXT     "v=DMARC1; p=reject; rua=mailto:postmaster@mail.zeke.ne.jp;"

メールを送受信しないドメインですが、Webサーバ用などにAレコードがあるとします。
MXレコードは最高の優先順位でホスト名は存在しない意味の「.」と設定します。
SPFの設定では該当ドメインで送信するホストは存在しない設定にします。
DMARCのポリシーは「Reject」万が一なりすましメールを出されたときの集計レポートの提出先を設定しておきます。

Webインターフェースの設定

RspamdにはWebのGUIで状況を見たり設定を変更したりする機能があります。

[root@ace ~]# vi /etc/rspamd/local.d/worker-controller.inc
[root@ace ~]# cat /etc/rspamd/local.d/worker-controller.inc
bind_socket = "*:11334";
password = "…秘密情報…";
[root@ace ~]#

上記のファイルに「bind_socket = “*:11334”;」を追加すればLAN内のパソコンからつばげることができます。

Webサーバに組み込んでhttpsポートを使う設定が紹介されていますが、自分はLAN内からしか操作しないため、「http://IPアドレス:11334」でつなげて使っています。外部からアクセスできないポートを使えばセキュリティとか気にしなくてよいですからね!

Rspamdの起動

[root@ace ~]# systemctl enable rspamd
Created symlink /etc/systemd/system/multi-user.target.wants/rspamd.service → /usr/lib/systemd/system/rspamd.service.
[root@ace ~]# systemctl start rspamd
[root@ace ~]# systemctl status rspamd
● rspamd.service - rapid spam filtering system
     Loaded: loaded (/usr/lib/systemd/system/rspamd.service; enabled; preset: e>
     Active: active (running) since Wed 2024-03-06 16:26:35 JST; 9s ago
       Docs: https://rspamd.com/doc/
   Main PID: 85024 (rspamd)
      Tasks: 5 (limit: 23114)
     Memory: 63.3M
        CPU: 578ms
     CGroup: /system.slice/rspamd.service
             tq85024 "rspamd: main process"
             tq85025 "rspamd: rspamd_proxy process (localhost:11332)"
             tq85026 "rspamd: controller process (*:11334)"
             tq85027 "rspamd: normal process (localhost:11333)"
             mq85028 "rspamd: hs_helper process"

 3月 06 16:26:35 ace.zeke.ne.jp systemd[1]: Started rapid spam filtering system.
 3月 06 16:26:35 ace.zeke.ne.jp rspamd[85024]: 2024-03-06 16:26:35 #85024(main)>
[root@ace ~]#

Rspamdの自動起動の有効化と起動を行います。

送信ドメイン認証の動作確認

送信ドメイン認証が正しく動作しているか、みんな大好きGoogle様のGmailを使って確認します!

動作確認は設定を全く同じにした現行のメールサーバで行います。

SPF,DKIM,DMARCの確認

[root@myhome zeke]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.zeke.ne.jp ESMTP Postfix
EHLO mail.zeke.ne.jp
250-mail.zeke.ne.jp
250-PIPELINING
250-SIZE 10485760
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: zeke@mail.zeke.ne.jp
250 2.1.0 Ok
RCPT TO: **ユーザ名**@gmail.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: zeke@mail.zeke.ne.jp
Subject: Test Mail
This is Test
.
250 2.0.0 Ok: queued as 5A932206EC4B
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
[root@myhome zeke]#

赤字が入力した文字列です。メールアプリ使うと本名とか隠すのが面倒なので、telnetを使ってGmail宛に出してみました。

Delivered-To: **ユーザ名**@gmail.com
Received: by 2002:a2e:9c8e:0:b0:2d0:e331:629c with SMTP id x14csp1227195lji;
        Fri, 1 Mar 2024 21:45:47 -0800 (PST)
X-Forwarded-Encrypted: i=2; AJvYcCWlsj5igDWnKRn2/OdCH6lVOsutShCC6yfHNcJMwZwUZbPmGtcxLtc7+bKRGIscINdtp1AYtHsR8/zfVWGYWpkynegX
X-Google-Smtp-Source: AGHT+IGWHrzYA0ug5Px3YD4v5WR11OX00bh0SUAGfYXA7YeB71Yf2dPGYw8zYuZSvyITjLs8V4b5
X-Received: by 2002:a05:6808:3a0c:b0:3c1:adf5:88d with SMTP id gr12-20020a0568083a0c00b003c1adf5088dmr5203275oib.43.1709358347150;
        Fri, 01 Mar 2024 21:45:47 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1709358347; cv=none;
        d=google.com; s=arc-20160816;
        b=CJm8pB4oCG2jRipP5rsWjEQVYnwS9r9xW/KK94HrIa1G85ejJJmnM89uPj8ml3zK8q
         7r/Ch114jWQQ+/O0YqNYELYtY3Hy01pASuAbqIEjHPkV+/04gYjBMOHAlmGae8WnVp1a
         8WY7SmJmY7QB3ukappyLGuabfoHT1wyMMnO4d8+geEb0DodUHeSPTwvofzjqgHtSZQJf
         qtoGmPgPcRfitSj3XneKptVsz8BOgpXxEBsSbulN0kuuRjYag7apOZg0f/qa2tvbnuZL
         am7HE4PCLqQNoQhK9a3RPZF/wDhQhmkss00DETDKjwQJnzX8yP/lrnf1Rs6EwIGArbld
         KDOQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=date:message-id:subject:from:dkim-signature;
        bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
        fh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
        b=ghAc6liR5Op9B8kacprGzAaVj1TRinDrwp50hnxAydJplxvBBhwMChXRygmmStWYn6
         fX3+so2pBI46beFKALEHD1LIZSwwE2B8QOedhT6KXw0PmPVPlYNZr89ZVxxG0IiXr1iZ
         Ru3yEhjYf11DgCSy3TtJyxlqopzbF0Rh6eMbqdbQpwute/dhCsgFHGofQx+u1UMmMSnA
         yQ93J2/f4V3eSABsKhmr9/e9QBJmMLdKjICsrAduSYPQ769q0nFlc+DF04ApWLFvyjNR
         h8Ctt1G4lFzfqOJBnsnoM7N4CVJf9uL3ypTdeWtKttyggS0sgB0IuUOIp2WIYInQqOST
         KIkA==;
        dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@mail.zeke.ne.jp header.s=default header.b=ElHxH+Wp;
       spf=pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) smtp.mailfrom=zeke@mail.zeke.ne.jp;
       dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=mail.zeke.ne.jp
Return-Path: <zeke@mail.zeke.ne.jp>
Received: from mail.zeke.ne.jp (myhome.zeke.ne.jp. [203.152.220.46])
        by mx.google.com with ESMTPS id v3-20020a170902d68300b001dc84ab0941si4643988ply.436.2024.03.01.21.45.46
        for <**ユーザ名**@gmail.com>
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 01 Mar 2024 21:45:47 -0800 (PST)
Received-SPF: pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) client-ip=203.152.220.46;
Authentication-Results: mx.google.com;
       dkim=pass header.i=@mail.zeke.ne.jp header.s=default header.b=ElHxH+Wp;
       spf=pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) smtp.mailfrom=zeke@mail.zeke.ne.jp;
       dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=mail.zeke.ne.jp
Received: from mail.zeke.ne.jp (unknown [127.0.0.1])
	by mail.zeke.ne.jp (Postfix) with ESMTP id 5A932206EC4B
	for <**ユーザ名**@gmail.com>; Sat,  2 Mar 2024 14:45:10 +0900 (JST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.zeke.ne.jp;
	s=default; t=1709358345;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to:
	 cc; bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
	b=ElHxH+Wp76Uv+YV7q4akn9gWHd2+7RnA7BdghuOzmGapNbjNjt8lBcNrEfF2hbop80e5Jj
	M0eLHN8OBLfp9qygH1zBeGX3sFK+5pTwVFtUr1P2yLKda26neMUDfntxcoRQK8nHjTJB9T
	ebtfC6Cl85G0RSqrZcHXXtj6GQpO61s=
From: zeke@mail.zeke.ne.jp
Subject: Test Mail
Message-Id: <20240302054514.5A932206EC4B@mail.zeke.ne.jp>
Date: Sat,  2 Mar 2024 14:45:10 +0900 (JST)

This is Test

Gmailに到着したヘッダを含めたメールです。

チェックするのは「DKIM-Signature:」と「Authentication-Results:」のヘッダですね。

「DKIM-Signature:」ではmail.zeke.ne.jpのドメインとdefaultのセレクタで署名がされているのが確認できます。

また、「Authentication-Results:」ではGoogle様がspfとdkimのチェックに合格したとおっしゃっています。また、dmacも合格し、失敗したときの設定(p=Reject)も認識されています。

問題なさそうですね。

ARCの確認

ARCはメールの転送を行うときに関係するので、テストはちょっと難しいです。

  1. yahoo.co.jpからmail.zeke.ne.jpの転送用メールアドレス宛にメールを送信。
  2. 転送用メールアドレス宛に届いたmail.zeke.ne.jpはエンベローブFromをzeke@mail.zeke.ne.jpに書き換えてgmail.comに転送。
  3. 転送先Gmailアドレスの設定に従い、メールをzeke@mail.zeke.ne.jpに転送。

チェックポイントは②の転送でmail.zeke.ne.jpがARCヘッダを正しくつけることができるか、と③の転送でgmailのARCヘッダをmail.zeke.ne.jpが正しく解釈できるかになります。

Return-Path: <**ユーザ名**+caf_=zeke=mail.zeke.ne.jp@gmail.com>
X-Original-To: zeke@mail.zeke.ne.jp
Delivered-To: zeke@mail.zeke.ne.jp
Received: from mail-lj1-f179.google.com (unknown [209.85.208.179])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by mail.zeke.ne.jp (Postfix) with ESMTPS id 16EEA206EC4B
	for <zeke@mail.zeke.ne.jp>; Sat,  2 Mar 2024 15:09:16 +0900 (JST)
ARC-Message-Signature: i=4; a=rsa-sha256; c=relaxed/relaxed; d=mail.zeke.ne.jp;
	s=default; t=1709359756;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 references:references:dkim-signature;
	bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
	b=f7qKlDhiY914EmyQGa2ahKIg/cERB/zcD/gVi9ksvUgY1aZA6iOQ9rOutwN+Gpwbs7b2TH
	j7VzN6MKBK3xnctxlMsqjITKBRjuUUxzfrBAaCOfQFVMMM3zykrkLSS/fNRYA53C3F9DYx
	1OVHJsQ7/RGzgH+IbI2fynnbhidHtLY=
ARC-Seal: i=4; s=default; d=mail.zeke.ne.jp; t=1709359756; a=rsa-sha256;
	cv=pass;
	b=eu5TFjlnr9zMEtPR+CSNORdWxvAolwHJvar6lPK4wdEQlzI0go5tdRAU6dYX/B2C94378r
	/Yk1W41KCWFSG378o2kgNMUTGCTyFrTqbhWa/cCa39yDZqLiyx8jVkSfU2MQ8Nl4NPdXc2
	7m5DFf5YTe/9+DgiGuYpCBDQVqv94bI=
ARC-Authentication-Results: i=4;
	mail.zeke.ne.jp;
	dkim=pass header.d=yahoo.co.jp header.s=yj20110701 header.b=E2kWGmeH;
	arc=pass ("google.com:s=arc-20160816:i=3");
	spf=pass (mail.zeke.ne.jp: domain of "**ユーザ名**+caf_=zeke=mail.zeke.ne.jp@gmail.com" designates 209.85.208.179 as permitted sender) smtp.mailfrom="**ユーザ名**+caf_=zeke=mail.zeke.ne.jp@gmail.com";
	dmarc=pass (policy=quarantine) header.from=yahoo.co.jp
Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-2d220e39907so38375931fa.1
        for <zeke@mail.zeke.ne.jp>; Fri, 01 Mar 2024 22:09:15 -0800 (PST)
ARC-Seal: i=3; a=rsa-sha256; t=1709359754; cv=pass;
        d=google.com; s=arc-20160816;
        b=lWa2yAM8Lnj7iOFafJXDnVQvfJ5yBrRNxWBiPcawbX2cz/fK4467X5RVOt7GDwFWrv
         Cp/6VjLdMgyESrYUQo8Gv1ncJz1AZMYN+tmmg5kzwt9c8n7d9D0jJM63cPai+24vIts2
         206WAkZHKdmmGaqfEstktfw//UA90ZR47uZA39OIptk/Lz7MgWJZpVRRJ3MGCjtg4WZy
         jrbrqIuYurkkLdSFTpt9RFor7YaaivLhC/v0PqxncXDI2a7bL0ZpQUS0d1e1vJcjBsT3
         rxl/qNyV9nmRFtq+4ElYw3YR5Lxi0/JNe2AmNV5Bf95+Cis2ZfGtpO+KD4tCCEoataT7
         sIhw==
ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=references:content-transfer-encoding:mime-version:subject
         :message-id:to:reply-to:from:date:domainkey-signature:dkim-signature
         :delivered-to:delivered-to;
        bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
        fh=uMRcTHcFooKlPeOTkA3T7Uta4bdfXHPHuUsWD+Even8=;
        b=u/WxVplBeDlgdixSN560rgKgjVNtUJ/W3VhJH8Ui5EY8Jm7N+iPkXic62oiqfJIBQd
         xRAp+WeDFx+pHGveefTv/LJWRsFJyOWYiPWOA6/AY0BS4FTzYzEoFTQVGUKMbFCgo7+7
         cFBqkHSqFbKVt2FyK/YtdG0zU0rOdaGaeyL4JzD3iOUNwHCILPs1eqkb7F5mgvp4iItR
         /pFCnGwW6uw6EaB7L5r4MvytA4O2zpuFFs3+DXkm4eopEeFhlfQjfQFS+1ea7GKiglMg
         RJhLYNh5biZuomW+JX1H73pfFHoS01YmLS/HegRqmp6jBFS487vDQpOww1frMJ931wBM
         cKOg==;
        darn=mail.zeke.ne.jp
ARC-Authentication-Results: i=3; mx.google.com;
       dkim=pass header.i=@yahoo.co.jp header.s=yj20110701 header.b=E2kWGmeH;
       arc=pass (i=1 spf=pass spfdomain=yahoo.co.jp dkim=pass dkdomain=yahoo.co.jp dmarc=pass fromdomain=yahoo.co.jp);
       spf=pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) smtp.mailfrom=zeke@mail.zeke.ne.jp;
       dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=yahoo.co.jp
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1709359753; x=1709964553;
        h=references:content-transfer-encoding:mime-version:subject
         :message-id:to:reply-to:from:date:domainkey-signature:dkim-signature
         :delivered-to:delivered-to:x-forwarded-for:x-forwarded-to
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
        b=jFxvidvTumO7phZFrww/HSUlksQZVHoh/Re0HTHpykrOvNLKwOidL2T8sf2gQONDcz
         W4Oe9pCfMNGLBJq5jjh+OGKQ6+x1xNqjopXvmoY8JjzCTZ2ChPtK3vTxBH/FkNqspgXe
         p6nl0efPe1R5y6Qk//28hfJRvpMADCzidRu/YXaPgkdme03MWzc3G1mHhDsFjfsR8Dir
         91iM+j7fE3epI6+2pkYYMC3yosqoWynI/03LlwRupLQFxb7jbh9VdOyHLJ1K8q3Xkzq3
         GKY+TuhEtZVa3ejRJhWgjJ3R8F/At59gZV1sh1H45ebbTlIejDlCyC0+K5YGGcLv7bYv
         RWkw==
X-Forwarded-Encrypted: i=3; AJvYcCV2JXZjenbfYX6DJsbsTpLnaB0SpzSp3Os4kuPaOHky3JEmOYM6b1ac8+1Smp9e6AHNFf9lM30/CVfUGcuwGTTzUsQ75g==
X-Gm-Message-State: AOJu0YweRYF0Qr57lfAFAkIB87ZbhXbmQzEDvCuk1DdgF4JhqSvpyZpe
	Wtxd5KDt1AXxCIHO/56ae2G3aSC41j85zed8eYsF+CgkO/tt81EtjUlIgeG+we1bf3LA6igr5yd
	efxWjJgkSxI8CE0H1H2TnPqTX4+gh5s4GfkbzjNhyRtGOd4SGflVPN9551ybP
X-Received: by 2002:a2e:804a:0:b0:2d2:3c10:4b6c with SMTP id p10-20020a2e804a000000b002d23c104b6cmr2683341ljg.24.1709359753379;
        Fri, 01 Mar 2024 22:09:13 -0800 (PST)
X-Forwarded-To: zeke@mail.zeke.ne.jp
X-Forwarded-For: **ユーザ名**@gmail.com zeke@mail.zeke.ne.jp
Delivered-To: **ユーザ名**@gmail.com
Received: by 2002:a2e:9c8e:0:b0:2d0:e331:629c with SMTP id x14csp1231881lji;
        Fri, 1 Mar 2024 22:09:12 -0800 (PST)
X-Forwarded-Encrypted: i=3; AJvYcCUpc3D47Ukn4UZv5Xyqqq+17qaIXREepC8bO9W6SsJ6CO21php/tcwhqCFtr07pIOQ1HnnXIIk9Katj10++6b+FLysH
X-Google-Smtp-Source: AGHT+IGLTHAqdpEJKzFDQ7peuBbd5GRzSN5tqc0fs9mIFXuswo9kfq32JpLHZ3KqAECuxyGB2ddD
X-Received: by 2002:a05:6808:b04:b0:3c1:3a0c:c1c8 with SMTP id s4-20020a0568080b0400b003c13a0cc1c8mr3441689oij.51.1709359752132;
        Fri, 01 Mar 2024 22:09:12 -0800 (PST)
ARC-Seal: i=2; a=rsa-sha256; t=1709359752; cv=pass;
        d=google.com; s=arc-20160816;
        b=PgA3MNApjEVHMtdDqfzgTsUrHPGIZBFwYX9aV1FdF3jqJ/+qQ5vOhgqNWpF9rYz/4V
         9ntN/fc0TJgC+KVaYmCAuB2nrp+4iqiY/h9tliBVpxDPRtwh2g7yNP8NuC+7sP1RuuzA
         Ct5K+1be0a6tVqh9Kyl3u0mr/M22LXJAZXBUNxLQ+v8AIpSah597QLpflpm5ETWTOrnf
         rzHWqLkL0OrvXHk4UOkHquvobARfjy63F80psNn/gKoUpkkpSKHemuVv3mj1DtyNa6Na
         AAQqR+PSQZ0h83SwIoGyMdqgvbHW7pxIPY/phbIw1sCjN7YeMSuU+dH1r5zHoVPfBPqt
         3xjg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=references:content-transfer-encoding:mime-version:subject
         :message-id:to:reply-to:from:date:domainkey-signature:dkim-signature
         :delivered-to;
        bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
        fh=LR3o12Ebw4og0CT99CNuynLvCEOgxQzK9kAuKRmJQW4=;
        b=Svm9eZLjzaljpDX4coAHKaAtex9VA1rXMp1UwB9zP6i5kaVR2THKUjo39+6Tlo0MDG
         lM5bblNxjI+XuT4np3LKZZkgSm52kgmp5MnmrumqbkRDf61qhSe6eXik/YmG35zfWpP7
         zdE13t7KPZjtBATlRyvlYRK3EILjdyVPtLfSSVMGR3Tz26TrSYNoTxeVrSxUg3qXrFfA
         D059HhOUJ9QbfkYlgyigpDZlcbmx0QChyoUFL5SwAl8+qUevDV9wWcFSp4P9JrtkbbZa
         2dD/cnRLcdstNjJ6ij+dx2vv4djI7M/XlB77vQ4PnAmYx9orzggVepURrzzyv7pcUZow
         0NFQ==;
        dara=google.com
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@yahoo.co.jp header.s=yj20110701 header.b=E2kWGmeH;
       arc=pass (i=1 spf=pass spfdomain=yahoo.co.jp dkim=pass dkdomain=yahoo.co.jp dmarc=pass fromdomain=yahoo.co.jp);
       spf=pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) smtp.mailfrom=zeke@mail.zeke.ne.jp;
       dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=yahoo.co.jp
Received: from mail.zeke.ne.jp (myhome.zeke.ne.jp. [203.152.220.46])
        by mx.google.com with ESMTPS id w24-20020a631618000000b005dc7e8a6d6fsi5059704pgl.520.2024.03.01.22.09.11
        for <**ユーザ名**@gmail.com>
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 01 Mar 2024 22:09:11 -0800 (PST)
Received-SPF: pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) client-ip=203.152.220.46;
Authentication-Results: mx.google.com;
       dkim=pass header.i=@yahoo.co.jp header.s=yj20110701 header.b=E2kWGmeH;
       arc=pass (i=1 spf=pass spfdomain=yahoo.co.jp dkim=pass dkdomain=yahoo.co.jp dmarc=pass fromdomain=yahoo.co.jp);
       spf=pass (google.com: domain of zeke@mail.zeke.ne.jp designates 203.152.220.46 as permitted sender) smtp.mailfrom=zeke@mail.zeke.ne.jp;
       dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=yahoo.co.jp
Received: by mail.zeke.ne.jp (Postfix, from userid 99)
	id B6E1B206EC4E; Sat,  2 Mar 2024 15:09:10 +0900 (JST)
X-Original-To: **転送用**@mail.zeke.ne.jp
Delivered-To: **転送用**@mail.zeke.ne.jp
Received: from omggw0022.mail.otm.yahoo.co.jp (unknown [182.22.18.42])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by mail.zeke.ne.jp (Postfix) with ESMTPS id 8B59D206EC4B
	for <**転送用**@mail.zeke.ne.jp>; Sat,  2 Mar 2024 15:09:07 +0900 (JST)
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.zeke.ne.jp;
	s=default; t=1709359748;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 references:references:dkim-signature;
	bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
	b=RqcgDlsi7nLuB0x/qMglg+gUnA9E/kkMVsNX5xIUbDyYQ97i6ddZlsBzMXnv+rHcAXm9Es
	cjRq9hxY+N1qHkecRWvEmuLS7r2Y2nvgUV2N0EWxRFWrVBBieeBCqcjYAWeTvZvvhGTCsf
	jXdADaUryJwEccqJQEPxFdq4ApA7YWQ=
ARC-Seal: i=1; s=default; d=mail.zeke.ne.jp; t=1709359748; a=rsa-sha256;
	cv=none;
	b=V5sv9ncwyJTB49BoruUC5jp3TMbm9EP2IB5BLWlb3OU+h6kx+hRVxbhF6qa4GCnw28Epny
	s0AqRtBKayOdSCh5x/IbgM0mDMSoKqe0I+A4LArfH7K+C8FdFwPmrU/DNbm3+CJ83VOP2z
	lgSdZ2qJ5NEQgm0ECCp1JpLcHfaUjJ0=
ARC-Authentication-Results: i=1;
	mail.zeke.ne.jp;
	dkim=pass header.d=yahoo.co.jp header.s=yj20110701 header.b=E2kWGmeH;
	spf=pass (mail.zeke.ne.jp: domain of **ユーザ名**@yahoo.co.jp designates 182.22.18.42 as permitted sender) smtp.mailfrom=**ユーザ名**@yahoo.co.jp;
	dmarc=pass (policy=quarantine) header.from=yahoo.co.jp
X-YMail-OSG: Shd.rHAVM1kX_3E9mpw6gEiGPolmm6oLn9UWpT6RGk3MXdvLIezMMfLkalZLjpq
 LMekZcnE28sNXF0.XyURV1YSyDnrhJuHYlGoUWI8ViloASLT6iqdWQdDEQtUfNDvUTFo_KHdsmGK
 eoMIShYn9FHXNZKAvdMZy2oef69kfH5zpYOW1HS7NzEF8E4HDaWz7Lx0N5bOOv.ibqp3YteiaxJX
 Wh_iXUYDq8TzQ.fWuuWH99tjKhquB0Eq72dCyeT7f3FIGn0_Ppm3O8lDJcTThyim9wTr_zD7hgl2
 yyCZBjtMED3NyxVSBfpYbXecuxrTRHWNbP.fsm_BizM3mKm0Nz8BEMcUZnFP8q1Xhw.YxzGMcXMB
 ZFzQ9t.DkbvH6Pj1U0rQUPCKPdHOOVIZiKULjhJrB2tBsOXQ87FrRh.b1C3T7Wh8lS5lfLBjhqIL
 MGWqg6M6A1zvU2mvVyC10du3XxU6PFNsx2Rf0zt75mSnyx5pATvzOpvXqGU.QUcI0Rle83hYMQwH
 LlTBAfCWcnyzp3rggSZ_3x1R1gArt3MblUTclPXw8T5B1kmHlGvMof4pi_AzFjGF9foXAHgk608X
 ysvViNRKix1gIelPhEE_xNPCnBJw.utVvJc2csA0qryb61Op966dPD1uQo9Owil86vhwQaeSVhvJ
 iVbdmNU1oKwMM4DMoAqQ2BqoetxwX0mB0XMIsBJ6mEJoWf7M2cwRe7765XAlZt0luTNcjN5ChH3d
 djeVHDTuJpf1vxFkn0J0b.zlEP0rWeAk5UU9cJBFDcz8vUnAsFmtrO_qq.yz0G8yF1v6fX1gWtdr
 TIP8Dkjg5AD9GYvPWXZCrCzvTvT9fh3j1p40C14TZTvaKlkiV5FekNaIfiUGtBMK0QI6x8cRxh9E
 1jkW.mI5mhQwfHdahOBGtCVCCPrrXHlmgvS74N1bkrmi_hcxxMQIk7Nn4HBtQhpaypZe3NHbnBvv
 VIRh4PevkFDMWIYGffCLJJBZyKCFd10x3ZGz06xMizqMSQqtSxofm6FrTvISBHJLsQbbDWaijiQY
 yQbftxXF.0AfV6W8eFZigyiyALSHEjMaRHpiTwmBPMjl7sa8LgGv6pVBhGCDNe22nDGeqhXFJ5Ee
 AWtS._dfb4j5IyH3AKZEJ8NA9pfVq42aH5otrgiixFxxAisjcS6OcWvqFSLicMjStQ4PuuF5YIV1
 KZABF5i._QBYMYfPX5cGRmg--
Received: from sonicgw.mail.yahoo.co.jp by sonicconh6001.mail.ssk.yahoo.co.jp with HTTP; Sat, 2 Mar 2024 06:09:07 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1709359746;
	s=yj20110701; d=yahoo.co.jp;
	h=References:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Message-ID:To:Reply-To:From:Date;
	bh=36NsGjc39RNsaut2J4L+3VuIC4XWmyB8Jmdw/DkVpwM=;
	b=E2kWGmeHtaJ7/YjGslHsJxO3Db8IXFV6g2fssRXaOYTlpaSVP2h0tV+Njdruwk7Z
	kf3nE9NhD0qBZ9KAcyXxBLpVCY9JDMNM2sdcLFJU79q7Ds6jQEjtLhKWlQnWCK3s/yJ
	pI7GaqJgd1ltcnDucXl23LQPQqeCzS1h69Ow2OxE=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=yj20110701; d=yahoo.co.jp;
	h=Date:From:Reply-To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:References;
	b=AaCxm9aBs68dmIWcqSQN6LCQ0ridxtl0CJcy8jTSDyl/OQAyjhH6AoOeyYMWz6hr
	onD4WKcyRtw8uBguyjiiR4KYYsf0205M1NL1M4KOf4SwZlB4Cb3XHkoJyzX2EZWYOlZ
	NIJMEHUIIzPJ3OgeoPbpNGsn34ktK+M4utn8gA/Y=;
Date: Sat, 2 Mar 2024 15:09:06 +0900 (JST)
From: **ユーザ名**@yahoo.co.jp
Reply-To: **ユーザ名**@yahoo.co.jp
To: **転送用**@mail.zeke.ne.jp
Message-ID: <329079440.363666.1709359746102@mail.yahoo.co.jp>
Subject: Test Mail
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
References: <329079440.363666.1709359746102.ref@mail.yahoo.co.jp>

This is Test

ARCヘッダは「ARC-Seal:」「ARC-Message-Signature:」「ARC-Authentication-Results:」の3つありますが、一番重要な「ARC-Authentication-Results:」を確認します。

「ARC-Authentication-Results: i=1」と「ARC-Authentication-Results: i=4」がmail.zeke.ne.jpがつけたヘッダになります。

Gmailがつけた「ARC-Authentication-Results: i=2;」の内容を確認するとarc=pass (i=1 spf=pass…と書かれているのでi=1のARCヘッダは正しくついているようです。

また、mail.zeke.ne.jpがつけた「ARC-Authentication-Results: i=4」内容も確認するとarc=pass (“google.com:s=arc-20160816:i=3”);とi=3のARCヘッダをチェックして問題ないと書かれています。

発信したときも受信したときも問題なさそうですね。

ARC機能のエラーメッセージ

2024-03-06 04:16:27 #18674(normal) <26133a>; lua; arc.lua:744: cannot read key from /var/lib/rspamd/arc/gmail.com.arc.key: そのようなファイルやディレクトリはありません

メールを発信するときに/var/log/rspamd/rspamd.logログに上記のようなエラーが出ますが、これは問題ありません。
ARCモジュールは受信したメール受信者のドメイン(自ドメイン)に対して、ARCヘッダに秘密鍵を使って署名を付けます。その後転送されるたときにARCヘッダが使われます。
しかし、送信するメールと区別がつかないため、とりあえず送信するメールもメール受信者のドメイン(外部のドメイン)の秘密鍵を使って署名をつけようとします。当然鍵がないのでエラーは出ますがARCヘッダは必要ないので問題ありません。

次回はDMARCレポート分析ツールと何をポイントに分析するかを紹介したいと思います。

お勧めのKindle本です!

コメント