Welcome! 『 P・C・P・M Papa-Net パソコン“だめ”乳(おやじ) 』  Presennt by Papa
PC関係 ≫ 自宅サーバー ≫ Linux Server ≫ Alma Linux 9 ≫ Mail サーバー (postfix + dovecot)★
◆前提条件

・サーバー OS は AlmaLinux 9.5
・固定グローバルIPアドレス
・自宅サーバー
・ホスト名 :mail.paa-net.com
・ドメイン名 :paa-net.com

各種ソフトをインストールするため dnf リポジトリの追加をしておきます 「dnf 用リポジトリの追加」参照
SSL 通信を行いますので Let's Encrypt より認証証明書を取得しておきます 「SSL サーバー(Let's Encrypt)」参照

また、そもそも自サーバーへの名前解決が出来ていなければどうにもならないので確認します
◆ メールサーバー構成

送信サーバー(postfix)、受信サーバー(dovecot)に Let's Encrypt より取得した認証証明書を利用して SSL 通信(暗号化通信)を行います
また、SMTP 認証の設定を行い Mail サーバーを構築します

ここまで終わった時点でテストメールを自分の送れる範囲で送ってみたところ殆んどは送受信できました(スマホ含む)が gmail クライアント宛てのメールに対してエラーメールが返ってきました

内容の問題部分を抜粋すると ” Gmail requires all senders to authenticate with either SPF or DKIM. ” 、”KIM = did not pass ” 、” SPF [papa-net.com] with ip:[123.456.789.012] = did not pass ” となっていました
翻訳すると ” Gmailは、すべての送信者にSPFまたはDKIMによる認証を要求します ” 、”認証結果:DKIM = 通過しませんでした ” 、”SPF [papa-net.com] IPアドレス:[123.456.789.012] = 通過しませんでした ” となります

つまり、gmail はセキュリティーが強いため基本的な設定では送信ができないようです

そこで、エラーメールにあるように送信ドメイン認証(SPF/DKIM)と、なりすましメール対策(DMARC)の設定を行い、迷惑メール等の踏み台対策を行います

※なお、設定や確認に出て来る papa-net.com は当サイトのドメインですのでご自身のドメインに替えてお読み下さい
◆ postfix のインストール
◆ main.cf の設定
※ main.cf の詳しいパラメータ設定は postfix 日本語公式 HPを御覧ください
◆ master.cf の設定
◆ postfixの設定確認
◆ メールソフト

OS をフルインストールした時等に他の SMTP サーバー(sendmail 等) がインストールされている場合がありますので確認と設定をします
◆ cyrus-sasl のインストール

SMTP認証に必要な cyrus-sasl をインストールします
◆ dovecot のインストール
◆ dovecot の設定
◆メールユーザーアカウントの設定
◆仮想(マルチ)ドメインの設定※ドメインを複数持っている方 or 同じドメインで複数のユーザー登録のある方限定
◆メールサーバーの起動
◆基本的な設定終了
基本的な設定はここまでです

最初の方で書きましたがこの時点では多くのメールクライアント宛ての送受信は可能でしたが一部のメールクライアント( gmail )宛ての送信はできませんでした

gmail クライアント宛ての送信メールに対してエラーメールが返ってきました

内容の問題部分を抜粋すると ” Gmail requires all senders to authenticate with either SPF or DKIM. ” 、”KIM = did not pass ” 、” SPF [papa-net.com] with ip:[123.456.789.012] = did not pass ” となっていました
翻訳すると ” Gmailは、すべての送信者にSPFまたはDKIMによる認証を要求します ” 、”認証結果:DKIM = 通過しませんでした ” 、”SPF [papa-net.com] IPアドレス:[123.456.789.012] = 通過しませんでした ” となります

つまり、gmail はセキュリティーが強いため基本的な設定では送信ができないようです

そこで、以下で送信ドメイン認証(SPF/DKIM)と、なりすましメール対策(DMARC)の設定を行います
◆SPF の設定

・SPFレコードの登録

まず初めにSPFレコードの登録を行います

SPF(センダー・ポリシー・フレームワーク)は、送信元のメールアドレスの正当性を検証するものです

利用しているDNSサーバー(プロバイダーやドメインレジストラのDNSサーバー、自宅サーバーのDNSサーバー)にSPFレコードを登録します

登録方法はDNS設定ページ(画面)で

IN TXT "v=spf1 +ip4:<メールサーバーのIPアドレス> -all"

を記述します

これは「一般社団法人 日本データ通信協会 迷惑メール相談センター」で案内している設定ですがプロバイダーやドメインレジストラ等によっては多少違う場合があるので確認が必要です

最後の「-all」(ハイフンall)は指定したメールサーバ以外からのメールを「 絶対拒否」、これを「~all」(チルダall)とすると指定したメールサーバ以外からのメールを「 なるべく 拒否」となります

詳しくは、上記法人のホームページを参照して下さい(ページの中頃にあるダウンロードリンクをクリックすれば設定マニュアルがダウンロードできます)

以前は「独立行政法人 情報処理推進機構」のホームページにも同じような記事があったのですが現在は見当たりません

上記設定は一般的な設定でプロバイダーやドメインレジストラによってはDNSの設定方法が違いますので確認が必要です
◆登録確認
◆pypolicyd-spf のインストール

迷惑メール対策のため受信側のSPF検証モジュールである pypolicyd-spf をインストールします

pypolicyd-spf は標準のレポジトリには入っていないので epel レポジトリをインストールしてない場合はインストールしておいてください
◆SPF の postfix との連携
追記する位置は必ず行の最後に追記してください
そうでないと オープンリレーサーバー(スパムメール等の迷惑メールの送信サーバーとして利用されてしまう)になってしまいますので注意して下さい
◆DKIM
インストールが完了すると『/etc』内に『/opendkim/keys』というディレクトリが出来ています

出来た /opendkim/keys ディレクトリに秘密鍵と公開鍵を作成保存するディレクトリを作成します
ディレクトリ名は何でも良いのですがここではわかりやすく papa-net.com とします
また、秘密鍵と公開鍵を作成します
秘密鍵と公開鍵の作成時のオプションは下記の通りです

・-D秘密鍵と公開鍵の作成・保存先ディレクトリ
・-dドメイン名を指定
・-b暗号化キーのサイズを指定
・-sセレクタ名を指定
任意の名前、定期的に新しく作成する事が推奨されているため作成日をセレクタ名とするのが望ましいです

/etc/opendkim/keys/papa-net.com の中を確認します
秘密鍵と公開鍵の所有権とアクセス権を変更します
◆公開鍵レコードの登録

まず初めに公開鍵レコードの登録を行います

登録する内容は公開鍵を開き、その内容をコピーします
利用しているDNSサーバー(プロバイダーやドメインレジストラーのDNSサーバー、自宅サーバーのDNSサーバー)に公開鍵レコードを登録します

登録方法はDNS設定ページ(画面)で

20250401._domainkey. PAPA-NET.COM. IN TXT "v=DKIM1; k=rsa; p=*************************************************"

を記述します

上記ではバランスの関係で短くしていますが実際は数百文字にも及ぶ長い文字列になります

なお、上記設定は一般的な設定でプロバイダーやドメインレジストラによってはDNSの設定方法が違いますので確認が必要です

◆ ADSP レコードの登録

ADSP レコードの登録を行います

ADSP レコードは、DKIM 署名をしたドメインのポリシーを、受け取り側に示すレコードです
利用している DNS サーバー(プロバイダーやドメインレジストラのDNSサーバー、自宅サーバーのDNSサーバー)に ADSP レコードを登録します

登録方法はDNS設定ページ(画面)で

_adsp._domainkey.vm-system.net. IN TXT "dkim=unknown"

を記述します

各オプションは以下の通りです
・Unknown送信されるメールの一部もしくは全部にDKIM署名する
・all送信される全てのメールにDKIM署名する
・discardable送信される全てのメールにDKIM署名する
DKIM署名が与えられない場合は受信者はそのメールを破棄する

なお、上記設定は一般的な設定でプロバイダーやドメインレジストラによってはDNSの設定方法が違いますので確認が必要です

◆DNS 設定の確認
◆ADSP レコードの確認
◆OpenDKIM の設定
◆KeyTable SigningTable TrustedHosts の設定
◆OpenDKIM の postfix との連携
◆メールサーバーの起動及び再起動
◆認証ソケットファイルの作成確認
◆DMARC

DMARCはSPFやDKIMの送信ドメイン認証を補完し、なりすましメールかどうかを判断することができる送信認証です

◆DMARC レコードの登録

DMARCレコードの登録を行います

DMARCとは「Domain-based Message Authentication Reporting and Conformance」の略で、SPFやDKIMの送信ドメイン認証を補完し、なりすましメールかどうかを判断することができる送信認証です。 利用しているDNSサーバー(プロバイダーやドメインレジストラのDNSサーバー、自宅サーバーのDNSサーバー)にDMARCレコードを登録します

登録方法はDNS設定ページ(画面)で

_dmarc.<ドメイン名> IN TXT “v=DMARC1 ; P= ; rua=mailto:<メールアドレス> ; ruf=mailto:<メールアドレス>”

を記述します

各オプションは以下の通りです

・vDMARCレコードのバージョン番号
・pDMARCポリシー受信拒否 = reject隔離 = quarantin受信 = none
・rua,rufレポートメールを受信するアドレス

なお、上記設定は一般的な設定でプロバイダーやドメインレジストラによってはDNSの設定方法が違いますので確認が必要です

◆OpenDMARC のインストールと設定
◆サーバーの起動
◆ポートの開放確認

IMAP受信用143番ポート、IMAP受信用993番ポート、POP3受信用995番ポート、SMTP送信用587番ポート、opendkim用8891番ポート、opendmarc用8893番ポートを使用するのでポート開放確認をします

◆メール不正中継拒否テスト

メールサーバーに設定、起動は完了しましたが念のためメールの不正中継を拒否できているかテストをします

Open Relay Test」にアクセスし「Mail Server」に自宅サーバーのホスト名(例:papa-net.com)を入力して「Check for Open Relay」ボタンをクリックします

以下のように18回のテスト行います
すべてのテストで Relay NOT Accepted となれば OK

--------------------------------------------------------------------------------
R: 220 mail.papa-net.com ESMTP
S: HELO appriver.com
R: 250 mail.papa-net.com

Test #1
S: RSET
R: 250 2.0.0 Ok
S: MAIL FROM:
R: 250 2.1.0 Ok
S: RCPT TO:
R: 450 4.7.25 Client host rejected: cannot find your hostname, [40.114.25.37]
Relay NOT Accepted※ここが Relay NOT Accepted となっていれば OK



---------------------------------------------------------------------------------

◆Thunderbird で確認

下図ように gmail master 宛てのメールは DKIM 及び SPF もパスして無事届きました