この疑問に回答します。
メールを送信する際に、迷惑メール防止の設定を組み込まないと相手に届く前に振るい落されます。しっかりと迷惑メール防止対策を実施する必要があります。
迷惑メール対策 SPFとDKIM
迷惑メール対策は色々なものがあります。その中から最も利用度が高い、SPF(エスピーエフ)とDKIM(ディーキム)について解説します。SPF,DKIMともメールを送信する側が対応するものです。
SPF(Sender Policy Framework)とDKIM(Domainkeys Identified Mail)は、どちらも送信ドメイン認証の仕組みです。IETFによってSPFはRFC4408、DKIMはRFC4871およびRFC5672にて仕様が定められています。
SPFはDNSのSPFレコードを利用し送信ドメインを認証します。SPFに対応しているメール受信サーバーは、メール受信時に送信元ドメインのDNSサーバーからSPFレコードを参照し値を検証します。この検証によりなりすまし等を防ぐことができます。
DKIMは電子署名を利用し送信ドメインを認証します。SPFと同様にDNSを利用します。DKIMはDNSサーバーに送信元ドメインの公開鍵を登録します。メールサーバーは秘密鍵で暗号化した電子署名を付加してメールを送信します。DKIMに対応しているメール受信サーバーはメールヘッダーから送信元ドメインのDNSサーバーから公開鍵を取得し、電子署名を検証します。この検証によりなりすまし等を防ぐことが可能となります。
DKIMに対応した環境を構築する
私の利用している環境はOSが最小パッケージなので必要なものを追加しています。
epelレポジトリのインストール
DKIMを利用するためのソフトウェアはEPELレポジトリに含まれています。インストールの手順を紹介します。
# yum install -y epel-release CentOS-8 - AppStream 5.9 kB/s | 4.3 kB 00:00 CentOS-8 - Base 7.9 kB/s | 3.9 kB 00:00 CentOS-8 - Extras 3.2 kB/s | 1.5 kB 00:00 Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: epel-release noarch 8-8.el8 extras 23 k Transaction Summary ================================================================================ Install 1 Package Total download size: 23 k Installed size: 32 k Downloading Packages: epel-release-8-8.el8.noarch.rpm 512 kB/s | 23 kB 00:00 -------------------------------------------------------------------------------- Total 69 kB/s | 23 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : epel-release-8-8.el8.noarch 1/1 Running scriptlet: epel-release-8-8.el8.noarch 1/1 Verifying : epel-release-8-8.el8.noarch 1/1 Installed: epel-release-8-8.el8.noarch Complete!
特に問題は出ずにインストールが完了できると思います。
OpenDKIMのインストール
DKIMを利用するためにはopendkimのインストールが必要になります。opendkimのインストールについて説明します。
# yum -y install opendkim Last metadata expiration check: 0:02:22 ago on Mon 18 May 2020 01:37:04 PM JST. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: opendkim x86_64 2.11.0-0.9.el8 epel 236 k Installing dependencies: libmemcached-libs x86_64 1.0.18-15.el8 AppStream 137 k sendmail-milter x86_64 8.15.2-32.el8 AppStream 82 k perl-Carp noarch 1.42-396.el8 BaseOS 30 k perl-Errno x86_64 1.28-416.el8 BaseOS 76 k perl-Exporter noarch 5.72-396.el8 BaseOS 34 k perl-File-Path noarch 2.15-2.el8 BaseOS 38 k perl-IO x86_64 1.38-416.el8 BaseOS 141 k perl-PathTools x86_64 3.74-1.el8 BaseOS 90 k perl-Scalar-List-Utils x86_64 3:1.49-2.el8 BaseOS 68 k perl-Socket x86_64 4:2.027-3.el8 BaseOS 59 k perl-Text-Tabs+Wrap noarch 2013.0523-395.el8 BaseOS 24 k perl-Unicode-Normalize x86_64 1.25-396.el8 BaseOS 82 k perl-constant noarch 1.33-396.el8 BaseOS 25 k perl-interpreter x86_64 4:5.26.3-416.el8 BaseOS 6.3 M perl-libs x86_64 4:5.26.3-416.el8 BaseOS 1.6 M perl-macros x86_64 4:5.26.3-416.el8 BaseOS 72 k perl-parent noarch 1:0.237-1.el8 BaseOS 20 k perl-threads x86_64 1:2.21-2.el8 BaseOS 61 k perl-threads-shared x86_64 1.58-2.el8 BaseOS 48 k libbsd x86_64 0.9.1-4.el8 epel 106 k libopendkim x86_64 2.11.0-0.9.el8 epel 80 k opendbx x86_64 1.4.6-21.el8 epel 56 k Transaction Summary ================================================================================ Install 23 Packages Total download size: 9.4 M Installed size: 23 M Downloading Packages: (1/23): perl-Carp-1.42-396.el8.noarch.rpm 861 kB/s | 30 kB 00:00 (2/23): perl-Errno-1.28-416.el8.x86_64.rpm 8.0 MB/s | 76 kB 00:00 (3/23): perl-Exporter-5.72-396.el8.noarch.rpm 6.8 MB/s | 34 kB 00:00 (4/23): perl-File-Path-2.15-2.el8.noarch.rpm 7.8 MB/s | 38 kB 00:00 (5/23): libmemcached-libs-1.0.18-15.el8.x86_64. 2.2 MB/s | 137 kB 00:00 (6/23): perl-IO-1.38-416.el8.x86_64.rpm 15 MB/s | 141 kB 00:00 (7/23): perl-Scalar-List-Utils-1.49-2.el8.x86_6 12 MB/s | 68 kB 00:00 (8/23): sendmail-milter-8.15.2-32.el8.x86_64.rp 1.1 MB/s | 82 kB 00:00 (9/23): perl-Socket-2.027-3.el8.x86_64.rpm 8.2 MB/s | 59 kB 00:00 (10/23): perl-PathTools-3.74-1.el8.x86_64.rpm 4.3 MB/s | 90 kB 00:00 (11/23): perl-Unicode-Normalize-1.25-396.el8.x8 14 MB/s | 82 kB 00:00 (12/23): perl-constant-1.33-396.el8.noarch.rpm 5.4 MB/s | 25 kB 00:00 (13/23): perl-Text-Tabs+Wrap-2013.0523-395.el8. 1.8 MB/s | 24 kB 00:00 (14/23): perl-macros-5.26.3-416.el8.x86_64.rpm 4.8 MB/s | 72 kB 00:00 (15/23): perl-parent-0.237-1.el8.noarch.rpm 2.6 MB/s | 20 kB 00:00 (16/23): perl-threads-2.21-2.el8.x86_64.rpm 4.3 MB/s | 61 kB 00:00 (17/23): perl-threads-shared-1.58-2.el8.x86_64. 4.6 MB/s | 48 kB 00:00 (18/23): perl-libs-5.26.3-416.el8.x86_64.rpm 9.8 MB/s | 1.6 MB 00:00 (19/23): libopendkim-2.11.0-0.9.el8.x86_64.rpm 1.4 MB/s | 80 kB 00:00 (20/23): opendbx-1.4.6-21.el8.x86_64.rpm 1.0 MB/s | 56 kB 00:00 (21/23): perl-interpreter-5.26.3-416.el8.x86_64 16 MB/s | 6.3 MB 00:00 (22/23): opendkim-2.11.0-0.9.el8.x86_64.rpm 705 kB/s | 236 kB 00:00 (23/23): libbsd-0.9.1-4.el8.x86_64.rpm 88 kB/s | 106 kB 00:01 -------------------------------------------------------------------------------- Total 3.5 MB/s | 9.4 MB 00:02 warning: /var/cache/dnf/epel-6519ee669354a484/packages/libbsd-0.9.1-4.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY Extra Packages for Enterprise Linux 8 - x86_64 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0x2F86D6A1: Userid : "Fedora EPEL (8) <[email protected]>" Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : perl-Exporter-5.72-396.el8.noarch 1/23 Installing : perl-libs-4:5.26.3-416.el8.x86_64 2/23 Installing : perl-Carp-1.42-396.el8.noarch 3/23 Installing : perl-Scalar-List-Utils-3:1.49-2.el8.x86_64 4/23 Installing : libbsd-0.9.1-4.el8.x86_64 5/23 Installing : libopendkim-2.11.0-0.9.el8.x86_64 6/23 Installing : perl-macros-4:5.26.3-416.el8.x86_64 7/23 Installing : perl-parent-1:0.237-1.el8.noarch 8/23 Installing : perl-Errno-1.28-416.el8.x86_64 9/23 Installing : perl-Socket-4:2.027-3.el8.x86_64 10/23 Installing : perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch 11/23 Installing : perl-Unicode-Normalize-1.25-396.el8.x86_64 12/23 Installing : perl-File-Path-2.15-2.el8.noarch 13/23 Installing : perl-IO-1.38-416.el8.x86_64 14/23 Installing : perl-PathTools-3.74-1.el8.x86_64 15/23 Installing : perl-constant-1.33-396.el8.noarch 16/23 Installing : perl-threads-1:2.21-2.el8.x86_64 17/23 Installing : perl-threads-shared-1.58-2.el8.x86_64 18/23 Installing : perl-interpreter-4:5.26.3-416.el8.x86_64 19/23 Installing : opendbx-1.4.6-21.el8.x86_64 20/23 Installing : sendmail-milter-8.15.2-32.el8.x86_64 21/23 Running scriptlet: sendmail-milter-8.15.2-32.el8.x86_64 21/23 Installing : libmemcached-libs-1.0.18-15.el8.x86_64 22/23 Running scriptlet: opendkim-2.11.0-0.9.el8.x86_64 23/23 Installing : opendkim-2.11.0-0.9.el8.x86_64 23/23 Running scriptlet: opendkim-2.11.0-0.9.el8.x86_64 23/23 Verifying : libmemcached-libs-1.0.18-15.el8.x86_64 1/23 Verifying : sendmail-milter-8.15.2-32.el8.x86_64 2/23 Verifying : perl-Carp-1.42-396.el8.noarch 3/23 Verifying : perl-Errno-1.28-416.el8.x86_64 4/23 Verifying : perl-Exporter-5.72-396.el8.noarch 5/23 Verifying : perl-File-Path-2.15-2.el8.noarch 6/23 Verifying : perl-IO-1.38-416.el8.x86_64 7/23 Verifying : perl-PathTools-3.74-1.el8.x86_64 8/23 Verifying : perl-Scalar-List-Utils-3:1.49-2.el8.x86_64 9/23 Verifying : perl-Socket-4:2.027-3.el8.x86_64 10/23 Verifying : perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch 11/23 Verifying : perl-Unicode-Normalize-1.25-396.el8.x86_64 12/23 Verifying : perl-constant-1.33-396.el8.noarch 13/23 Verifying : perl-interpreter-4:5.26.3-416.el8.x86_64 14/23 Verifying : perl-libs-4:5.26.3-416.el8.x86_64 15/23 Verifying : perl-macros-4:5.26.3-416.el8.x86_64 16/23 Verifying : perl-parent-1:0.237-1.el8.noarch 17/23 Verifying : perl-threads-1:2.21-2.el8.x86_64 18/23 Verifying : perl-threads-shared-1.58-2.el8.x86_64 19/23 Verifying : libbsd-0.9.1-4.el8.x86_64 20/23 Verifying : libopendkim-2.11.0-0.9.el8.x86_64 21/23 Verifying : opendbx-1.4.6-21.el8.x86_64 22/23 Verifying : opendkim-2.11.0-0.9.el8.x86_64 23/23 Installed: opendkim-2.11.0-0.9.el8.x86_64 libmemcached-libs-1.0.18-15.el8.x86_64 sendmail-milter-8.15.2-32.el8.x86_64 perl-Carp-1.42-396.el8.noarch perl-Errno-1.28-416.el8.x86_64 perl-Exporter-5.72-396.el8.noarch perl-File-Path-2.15-2.el8.noarch perl-IO-1.38-416.el8.x86_64 perl-PathTools-3.74-1.el8.x86_64 perl-Scalar-List-Utils-3:1.49-2.el8.x86_64 perl-Socket-4:2.027-3.el8.x86_64 perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch perl-Unicode-Normalize-1.25-396.el8.x86_64 perl-constant-1.33-396.el8.noarch perl-interpreter-4:5.26.3-416.el8.x86_64 perl-libs-4:5.26.3-416.el8.x86_64 perl-macros-4:5.26.3-416.el8.x86_64 perl-parent-1:0.237-1.el8.noarch perl-threads-1:2.21-2.el8.x86_64 perl-threads-shared-1.58-2.el8.x86_64 libbsd-0.9.1-4.el8.x86_64 libopendkim-2.11.0-0.9.el8.x86_64 opendbx-1.4.6-21.el8.x86_64 Complete!
特に問題は出ずにインストールが完了できると思います。
libmilter.so が無い場合は、依存関係のエラーが出力されます。
Last metadata expiration check: 0:38:41 ago on Tue 16 Apr 2024 03:11:24 PM JST.
Error:
Problem: conflicting requests
– nothing provides libmilter.so.1.0()(64bit) needed by opendkim-2.11.0-0.36.el9.x86_64 from epel
– nothing provides libmemcached.so.11()(64bit) needed by opendkim-2.11.0-0.36.el9.x86_64 from epel
(try to add ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages)
rocky.repoを修正しcrbを有効化させます。依存関係モジュールがインストールされエラーは解消されます。
/etc/yum.repos.d/rocky.repo
[crb]
name=Rocky Linux $releasever - CRB
gpgcheck=1
enabled=1
countme=1
Perl Getopt::Long モジュールのインストール
opendkimでキーペア(秘密鍵/公開鍵)を作成する際にPerl Getopt::Long モジュールが必要になります。Perl Getopt::Long モジュールのインストールについて説明します。
yum -y install perl-Getopt-Long.noarch Last metadata expiration check: 0:14:30 ago on Mon 18 May 2020 01:37:04 PM JST. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: perl-Getopt-Long noarch 1:2.50-4.el8 BaseOS 63 k Installing dependencies: perl-Digest noarch 1.17-395.el8 AppStream 27 k perl-Digest-MD5 x86_64 2.55-396.el8 AppStream 37 k perl-Net-SSLeay x86_64 1.88-1.el8 AppStream 379 k perl-URI noarch 1.73-3.el8 AppStream 116 k perl-libnet noarch 3.11-3.el8 AppStream 121 k perl-Data-Dumper x86_64 2.167-399.el8 BaseOS 58 k perl-Encode x86_64 4:2.97-3.el8 BaseOS 1.5 M perl-File-Temp noarch 0.230.600-1.el8 BaseOS 63 k perl-HTTP-Tiny noarch 0.074-1.el8 BaseOS 58 k perl-MIME-Base64 x86_64 3.15-396.el8 BaseOS 31 k perl-Pod-Escapes noarch 1:1.07-395.el8 BaseOS 20 k perl-Pod-Perldoc noarch 3.28-396.el8 BaseOS 86 k perl-Pod-Simple noarch 1:3.35-395.el8 BaseOS 213 k perl-Pod-Usage noarch 4:1.69-395.el8 BaseOS 34 k perl-Storable x86_64 1:3.11-3.el8 BaseOS 98 k perl-Term-ANSIColor noarch 4.06-396.el8 BaseOS 46 k perl-Term-Cap noarch 1.17-395.el8 BaseOS 23 k perl-Text-ParseWords noarch 3.30-395.el8 BaseOS 18 k perl-Time-Local noarch 1:1.280-1.el8 BaseOS 34 k perl-podlators noarch 4.11-1.el8 BaseOS 118 k Installing weak dependencies: perl-IO-Socket-IP noarch 0.39-5.el8 AppStream 47 k perl-IO-Socket-SSL noarch 2.066-3.el8 AppStream 297 k perl-Mozilla-CA noarch 20160104-7.el8 AppStream 15 k Transaction Summary ================================================================================ Install 24 Packages Total download size: 3.4 M Installed size: 14 M Downloading Packages: (1/24): perl-Digest-1.17-395.el8.noarch.rpm 453 kB/s | 27 kB 00:00 (2/24): perl-Digest-MD5-2.55-396.el8.x86_64.rpm 595 kB/s | 37 kB 00:00 (3/24): perl-IO-Socket-IP-0.39-5.el8.noarch.rpm 582 kB/s | 47 kB 00:00 (4/24): perl-Mozilla-CA-20160104-7.el8.noarch.r 290 kB/s | 15 kB 00:00 (5/24): perl-Net-SSLeay-1.88-1.el8.x86_64.rpm 7.4 MB/s | 379 kB 00:00 (6/24): perl-IO-Socket-SSL-2.066-3.el8.noarch.r 3.6 MB/s | 297 kB 00:00 (7/24): perl-Data-Dumper-2.167-399.el8.x86_64.r 6.6 MB/s | 58 kB 00:00 (8/24): perl-URI-1.73-3.el8.noarch.rpm 2.3 MB/s | 116 kB 00:00 (9/24): perl-File-Temp-0.230.600-1.el8.noarch.r 8.5 MB/s | 63 kB 00:00 (10/24): perl-Getopt-Long-2.50-4.el8.noarch.rpm 12 MB/s | 63 kB 00:00 (11/24): perl-HTTP-Tiny-0.074-1.el8.noarch.rpm 5.5 MB/s | 58 kB 00:00 (12/24): perl-libnet-3.11-3.el8.noarch.rpm 1.8 MB/s | 121 kB 00:00 (13/24): perl-MIME-Base64-3.15-396.el8.x86_64.r 3.5 MB/s | 31 kB 00:00 (14/24): perl-Pod-Escapes-1.07-395.el8.noarch.r 3.1 MB/s | 20 kB 00:00 (15/24): perl-Pod-Perldoc-3.28-396.el8.noarch.r 8.1 MB/s | 86 kB 00:00 (16/24): perl-Pod-Usage-1.69-395.el8.noarch.rpm 3.4 MB/s | 34 kB 00:00 (17/24): perl-Pod-Simple-3.35-395.el8.noarch.rp 7.6 MB/s | 213 kB 00:00 (18/24): perl-Storable-3.11-3.el8.x86_64.rpm 5.8 MB/s | 98 kB 00:00 (19/24): perl-Term-ANSIColor-4.06-396.el8.noarc 4.6 MB/s | 46 kB 00:00 (20/24): perl-Term-Cap-1.17-395.el8.noarch.rpm 3.0 MB/s | 23 kB 00:00 (21/24): perl-Text-ParseWords-3.30-395.el8.noar 3.8 MB/s | 18 kB 00:00 (22/24): perl-Time-Local-1.280-1.el8.noarch.rpm 4.3 MB/s | 34 kB 00:00 (23/24): perl-podlators-4.11-1.el8.noarch.rpm 7.4 MB/s | 118 kB 00:00 (24/24): perl-Encode-2.97-3.el8.x86_64.rpm 12 MB/s | 1.5 MB 00:00 -------------------------------------------------------------------------------- Total 3.6 MB/s | 3.4 MB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : perl-MIME-Base64-3.15-396.el8.x86_64 1/24 Installing : perl-IO-Socket-IP-0.39-5.el8.noarch 2/24 Installing : perl-Time-Local-1:1.280-1.el8.noarch 3/24 Installing : perl-Text-ParseWords-3.30-395.el8.noarch 4/24 Installing : perl-Digest-1.17-395.el8.noarch 5/24 Installing : perl-Digest-MD5-2.55-396.el8.x86_64 6/24 Installing : perl-Net-SSLeay-1.88-1.el8.x86_64 7/24 Installing : perl-Term-Cap-1.17-395.el8.noarch 8/24 Installing : perl-Term-ANSIColor-4.06-396.el8.noarch 9/24 Installing : perl-Storable-1:3.11-3.el8.x86_64 10/24 Installing : perl-Pod-Escapes-1:1.07-395.el8.noarch 11/24 Installing : perl-File-Temp-0.230.600-1.el8.noarch 12/24 Installing : perl-Data-Dumper-2.167-399.el8.x86_64 13/24 Installing : perl-Mozilla-CA-20160104-7.el8.noarch 14/24 Installing : perl-Encode-4:2.97-3.el8.x86_64 15/24 Installing : perl-Pod-Simple-1:3.35-395.el8.noarch 16/24 Installing : perl-Getopt-Long-1:2.50-4.el8.noarch 17/24 Installing : perl-podlators-4.11-1.el8.noarch 18/24 Installing : perl-Pod-Usage-4:1.69-395.el8.noarch 19/24 Installing : perl-Pod-Perldoc-3.28-396.el8.noarch 20/24 Installing : perl-HTTP-Tiny-0.074-1.el8.noarch 21/24 Installing : perl-IO-Socket-SSL-2.066-3.el8.noarch 22/24 Installing : perl-libnet-3.11-3.el8.noarch 23/24 Installing : perl-URI-1.73-3.el8.noarch 24/24 Running scriptlet: perl-URI-1.73-3.el8.noarch 24/24 Verifying : perl-Digest-1.17-395.el8.noarch 1/24 Verifying : perl-Digest-MD5-2.55-396.el8.x86_64 2/24 Verifying : perl-IO-Socket-IP-0.39-5.el8.noarch 3/24 Verifying : perl-IO-Socket-SSL-2.066-3.el8.noarch 4/24 Verifying : perl-Mozilla-CA-20160104-7.el8.noarch 5/24 Verifying : perl-Net-SSLeay-1.88-1.el8.x86_64 6/24 Verifying : perl-URI-1.73-3.el8.noarch 7/24 Verifying : perl-libnet-3.11-3.el8.noarch 8/24 Verifying : perl-Data-Dumper-2.167-399.el8.x86_64 9/24 Verifying : perl-Encode-4:2.97-3.el8.x86_64 10/24 Verifying : perl-File-Temp-0.230.600-1.el8.noarch 11/24 Verifying : perl-Getopt-Long-1:2.50-4.el8.noarch 12/24 Verifying : perl-HTTP-Tiny-0.074-1.el8.noarch 13/24 Verifying : perl-MIME-Base64-3.15-396.el8.x86_64 14/24 Verifying : perl-Pod-Escapes-1:1.07-395.el8.noarch 15/24 Verifying : perl-Pod-Perldoc-3.28-396.el8.noarch 16/24 Verifying : perl-Pod-Simple-1:3.35-395.el8.noarch 17/24 Verifying : perl-Pod-Usage-4:1.69-395.el8.noarch 18/24 Verifying : perl-Storable-1:3.11-3.el8.x86_64 19/24 Verifying : perl-Term-ANSIColor-4.06-396.el8.noarch 20/24 Verifying : perl-Term-Cap-1.17-395.el8.noarch 21/24 Verifying : perl-Text-ParseWords-3.30-395.el8.noarch 22/24 Verifying : perl-Time-Local-1:1.280-1.el8.noarch 23/24 Verifying : perl-podlators-4.11-1.el8.noarch 24/24 Installed: perl-Getopt-Long-1:2.50-4.el8.noarch perl-IO-Socket-IP-0.39-5.el8.noarch perl-IO-Socket-SSL-2.066-3.el8.noarch perl-Mozilla-CA-20160104-7.el8.noarch perl-Digest-1.17-395.el8.noarch perl-Digest-MD5-2.55-396.el8.x86_64 perl-Net-SSLeay-1.88-1.el8.x86_64 perl-URI-1.73-3.el8.noarch perl-libnet-3.11-3.el8.noarch perl-Data-Dumper-2.167-399.el8.x86_64 perl-Encode-4:2.97-3.el8.x86_64 perl-File-Temp-0.230.600-1.el8.noarch perl-HTTP-Tiny-0.074-1.el8.noarch perl-MIME-Base64-3.15-396.el8.x86_64 perl-Pod-Escapes-1:1.07-395.el8.noarch perl-Pod-Perldoc-3.28-396.el8.noarch perl-Pod-Simple-1:3.35-395.el8.noarch perl-Pod-Usage-4:1.69-395.el8.noarch perl-Storable-1:3.11-3.el8.x86_64 perl-Term-ANSIColor-4.06-396.el8.noarch perl-Term-Cap-1.17-395.el8.noarch perl-Text-ParseWords-3.30-395.el8.noarch perl-Time-Local-1:1.280-1.el8.noarch perl-podlators-4.11-1.el8.noarch Complete!
特に問題は出ずにインストールが完了できると思います。
opendkimでキーペア(秘密鍵/公開鍵)を作成する
opendkimは /etc/opendkim/keys にキーペア(秘密鍵/公開鍵)の情報ファイルを作成します。複数ドメイン(マルチドメイン)で利用する場合は専用のディレクトリを作るほうが間違いを起こしません。
# mkdir /etc/opendkim/keys/[任意]
opendkim-genkey コマンドを利用して電子署名用のキーペアを作成します。
opendkim-genkey -D [ファイルの保存パス] -d [ドメイン名] -s [セレクタ名]
-D : 鍵の作成されるディレクトリ
-d : ドメイン名
-s : セレクタ名(任意の名称)
“-s”のセレクタ名は、電子署名ヘッダーに表示されるラベルになります。任意のものを指定します。セレクタ名はファイルの作成日を利用するパターンと、defaultとするパターンのどちらかが多いです。
私の場合は日付を指定します。
# opendkim-genkey -D /etc/opendkim/keys/mydomain/ -d mydomain.com -s 20200518
ディレクトリを参照すると公開鍵と秘密鍵が作成されています。
# ls /etc/opendkim/keys/mydomain/ 20200519.private 20200519.txt
[セレクタ名].private・・・秘密鍵
[セレクタ名].txt・・・公開鍵
ファイルの所有権を設定します。
# chown -R opendkim:opendkim /etc/opendkim/keys/
これでにキーペア(秘密鍵/公開鍵)の作業は完了です。
DNSにDKIMレコードを登録する
先ほど作成した公開鍵を使ってDNSにDKIMレコードを登録します。公開鍵は生成されたファイルの中に記載されています。
# cat /etc/opendkim/keys/mydomain/20200518.txt 20200519._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=******************************************" ) ; ----- DKIM key 20200518 for mydomain.com
DNSに登録する部分は(”v=DKIM1; ~~ p=***”)の部分です。
対象部分に入っている「””」(行頭、中間、行末)は不要なので消去してください。
この情報を元にDNSへのレコード設定を追加します。
公開鍵ファイルに含まれる情報の詳細は以下の通りです。
v=DKIM1 | keyレコードのバージョン番号(指定する場合はDKIM1) |
---|---|
k=rsa | 電子署名の作成に利用できる鍵の形式、DKIMではRSAのみサポート |
p=**** | 公開鍵データ |
DNSサーバーにDKIMで利用する2つのレコードを登録します。
DKIM(公開鍵)レコード | キーペアの公開鍵を登録 |
---|---|
DKIMポリシー用レコード | ADSP(Author Domain Signing Practice) DKIM署名が有効ではないメールの扱いを設定 |
DKIM(公開鍵)レコードの登録
DNSにDKIMレコードを登録します。DKIMレコードの書式は下記の通りです。
[セレクタ名]._domainkey.[ドメイン名]. IN TXT "v=DKIM1; k=rsa; p=公開鍵データ"
公開鍵データの””を消去し、1行で登録してください。
DKIM(ADSP)レコードの登録
ADSPレコードの書式は次の通りです。
_adsp._domainkey.[ドメイン名]. IN TXT "dkim=レコード値"
ADSPレコードの値は次のように指定します。一般的には dkim=unkown を指定します。
ADSPレコード値 | 意味 |
---|---|
dkim=unknown | DKIM署名していないメールも送信する。 |
dkim=all | 送信するメールはすべてDKIM署名を行う。 |
dkim=discardable | DKIM署名がされていないメールはすべて削除してよい |
dkim=discardableやdkim=allにすると、署名して送信したメールが配送経路において再署名されるケース(メーリングリストへの投稿等)、第三者にメールの送信を委託する場合などで、受信側で削除される可能性があります。discardableやallの公開については注意が必要です。
DKIMレコードの確認
DKIM レコードを確認してくれるサイトがありますので利用します。
利用方法はドメイン名とセレクタ名を指定するだけで簡単です。画面の上部に入力すると、画面下部にレコード情報が表示されます。


このように表示されたら正しくDNSに登録がされています。
OpenDKIMの設定
opendkim.confの設定
OpenDKIMの設定ファイルを変更します。
# cp /etc/opendkim.conf /etc/opendkim.conf.org # vi /etc/opendkim.conf
OpenDKIMの設定ファイルの修正箇所です。
# モードの変更 s:送信時に署名する v:受信時に確認する Mode sv # OpenDKIMのソフトウェアバージョン秘匿 SoftwareHeader no #KeyfileではなくKeyTableを利用する。 #KeyFile /etc/opendkim/keys/default.private ← コメントアウト KeyTable refile:/etc/opendkim/KeyTable ← #を外して有効化 # 署名するドメインの指定 SigningTable refile:/etc/opendkim/SigningTable ← #を外して有効化 # 外部ホストの特定 # 署名を付けるかの判断 ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ← #を外して有効化 #内部ホストの特定 # 署名を付けるかの判断 InternalHosts refile:/etc/opendkim/TrustedHosts ← #を外して有効化
Modeパラメーター(動作モード)
動作モードを指定する設定です。
Modeパラメータのデフォルト設定は、メール受信時の確認のみの”v”になっています。今回はメール送信時の署名を行うために ”s” を追加します。
SoftwareHeaderパラメーター(ソフトウェアバージョンなどの情報)
ソフトウェアバージョンなどの情報提示を制御する設定です。デフォルト”yes”だとメールヘッダーにバージョン情報が記載されます。
バージョン情報を表示するとセキュリティリスクになるので非表示 “no” にします。


マルチドメイン対応:KeyFile , KeyTableパラメーター(秘密鍵を指定)
メールのドメインと秘密鍵ファイルの情報をマッピングするための設定です。
マルチドメイン(複数ドメイン)で利用できるようにKeyFileパラメーターを無効化してKeyTableパラメーターを有効化させます。秘密鍵ファイルとドメインの紐づけを実施します。
KeyTableの書式は次の通りです。
[セレクタ名]._domainkey.[ドメイン名] [ドメイン名]:[セレクタ名]:/etc/opendkim/keys/[任意]/[セレクタ名].private
KeyTableを修正します。
# vi /etc/opendkim/KeyTable
20200518._domainkey.mydomain.com mydomain.com:20200518:/etc/opendkim/keys/mydomain/20200518.private # 各ドメイン毎に違うキーペアを使う場合の設定 20200518._domainkey.sub1.mydomain.com sub1.mydomain.com:20200518:/etc/opendkim/keys/sub1.mydomain/20200518.private 20200518._domainkey.sub2.mydomain.com sub2.mydomain.com:20200518:/etc/opendkim/keys/sub2.mydomain/20200518.private # 各ドメインに共通のキーペアを使う場合の設定 20200518._domainkey.sub3.mydomain.com sub3.mydomain.com:20200518:/etc/opendkim/keys/mydomain/20200518.private 20200518._domainkey.sub4.mydomain.com sub4.mydomain.com:20200518:/etc/opendkim/keys/mydomain/20200518.private
マルチドメイン(複数ドメイン)で利用している場合は、対象ドメインの数だけKeyTableに記述します。今回はサブドメインの場合、個別のキーペアを利用していますが、メインドメインのものを共通で利用しても構いません。
マルチドメイン対応:SigningTableパラメータ(署名ドメインを指定)
署名をするメールのドメインと公開鍵ファイルの情報をマッピングするための設定です。
SigningTablの書式は次の通りです。
*@[ドメイン名] [セレクタ名]._domainkey.[ドメイン名]
SigningTablを修正します。
# vi /etc/opendkim/SigningTable
*@mydomain.com mydomain._domainkey.mydomain.com *@sub1.mydomain.com sub1.mydomain._domainkey.sub1.mydomain.com *@sub2.mydomain.com sub2.mydomain._domainkey.sub2.mydomain.com
マルチドメイン(複数ドメイン)で利用している場合は、対象ドメインの数だけSigningTableに記述します。
リレーサーバ対応:ExternalIgnoreList, InternalHostsパラメータ(署名するホストを指定)
ExternalIgnoreList,InternalHostsパラメータには署名するサーバーを指定します。
メールを中継するメールリレーサバーが署名を付ける場合には、サーバーを指定します。
一般的なメールサーバーを構築する際は、設定変更は必要ありません。デフォルトでサーバー自身のループバックIPである127.0.0.1が記述されています。
TrustedHostsの書式は次の通りです。
127.0.0.1 ::1
TrustedHostsを修正します。
# vi /etc/opendkim/TrustedHosts
# サーバー自身 127.0.0.1 # メールリレーで署名をつける場合 # 内部(ローカルIP)からメール受信するIP 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 # 外部(グローバルIP)から中継する 8.8.8.8 など
OpenDKIMの起動
OpenDKIMサービスの起動と、自動起動の設定を行います。
# systemctl start opendkim # systemctl enable opendkim
これでOpenDKIMの設定は完了です。残りはPostFixと連携です。
PostfixとOpenDKIMを連携させる
main.cfの設定
SMTP接続時にDKIMと連携するパラメーター設定を追記します。設定ファイルの最下行に以下を追記します。
# vi /etc/postfix/main.cf
# DKIM連携の設定 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 milter_default_action = accept
設定ファイルにエラーが無いか確認します。
# postfix check
PostFixの起動
変更した設定を反映するためにPostfixを再起動します。
# systemctl restart postfix
引数をrestart (再起動)にしていますが、reload(再読み込み)でも構いません。
後は送受信チェックを行うのみです。
正常に動作すればメールヘッダーにDKIM認証の結果と、公開鍵が付加されます。


上のブルーが認証の可否を示した箇所です。「dkim=pass」となっており認証が成功しています。下のブルーが電子署名の部分です。
以上、「CentOS Postfix 迷惑メール判定されないDKIM設定(複数ドメイン)」という記事でした。
コメント
コメント失礼します。
DKIM(公開鍵)レコードの登録
[セレクタ名]._domainkey.[ドメイン名]. IN TXT “v=DKIM1; k=rsa; p=公開鍵データ”
これはどこの設定ファイルに記述でしょうか?
DNSサーバーにDKIMの必要情報(公開鍵、ADSP)をTXTレコードとして登録し公開します。
動きを説明すると、
送信元(サーバーA)は、秘密鍵で暗号化した署名を、メールに付与し送信先(サーバーB)に送ります。
送信先(サーバーB)は、DNSに登録されている公開鍵を利用し復号化、署名内容を判断します。