SMTPリレーサーバー導入:メールサーバー 554 FCrDNS check failed 対策 (2)

Internet

 前回の記事では、mail.exiv.netから外部へ直接メール送信した場合に、送信先メールサーバー側のFCrDNSチェックで拒否される事象と、その対策としてConoHa VPS上にSMTPリレーサーバーを構築する方針を整理しました。
 前提として認証サーバーおよび送信元サーバーは構築済みです。今回は、現在運用中のmail.exiv.netを利用します。PostfixAdminの構築については、linuxbabe.comの以下の記事を参考にしました。

PostfixAdmin – Create Virtual Mailboxes on Rocky Linux 9/Alma Linux 9 Mail Server
If you are going to set up a mail server for a company or organization, it’s always better to have an easy way to create…

認証サーバーの準備

今回構築するリレーサーバーは、送信専用SMTPリレーとして利用します。リレーサーバーではSMTP認証を必須にしますが、認証情報そのものはリレーサーバー上に個別管理しません。
リレーサーバー上のDovecotが、既存の認証サーバーで稼働しているPostfixAdmin/MariaDBを参照してSMTP認証を判定する構成とします。連携に必要な準備として、最初に認証サーバー側で以下の設定を行います。

  • リレーサーバーから認証サーバーのデータベースへ接続するためのデータベース参照用アカウント
    - リレーサーバー上のDovecotが認証サーバーのMariaDBを参照するために使用
  • SMTP認証で利用するリレー送信用SMTPアカウント
    - 送信元サーバーからリレーサーバーへメールを中継するときの送信認証(SMTP AUTH)に使用
  • 認証サーバー側ファイアウォール設定
    - リレーサーバーから認証サーバーのデータベースへ問い合わせるために必要な通信のみ許可

「データベース参照用アカウント」と「SMTP認証用アカウント」は、役割も設定箇所も異なるため、設定時には注意が必要です。 

データベース参照用アカウントを作成する

ここからは、認証サーバーのコンソールで設定を行います。
MariaDBに、リレーサーバーから参照するためのDBアカウントを作成します。
このアカウントは、リレーサーバー上のDovecotが、認証サーバー上のPostfixAdmin/MariaDBを参照するために使用します。

認証サーバー側で、MariaDBにログインします。

[root@exiv dovecot]# mysql -u root -p
Enter password:(パスワード入力)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 791
Server version: 10.5.29-MariaDB MariaDB Server

データベースを確認します。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| postfix            |
+--------------------+
6 rows in set (0.001 sec)

今回の環境では、PostfixAdmin用のデータベース名はpostfixです。続いて、テーブル一覧を確認します。

MariaDB [(none)]> use postfix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [postfix]> show tables;
+-----------------------+
| Tables_in_postfix     |
+-----------------------+
| admin                 |
| alias                 |
| alias_domain          |
|  ;                    |
| mailbox               |
|  ;
+-----------------------+
1x rows in set (0.007 sec)

MariaDB [postfix]>

SMTP認証に使用するアカウント情報は、postfixデータベースのmailboxテーブルに格納されています。
リレーサーバー上のDovecotは、このmailboxテーブルを参照してSMTP認証を判定します。
DovecotからMariaDBへ接続するため、データベース参照用アカウントを作成し、mailboxテーブルの参照権限を付与します。

MariaDB [postfix]> create user 'dovecot_relay'@'[リレーサーバーのIPアドレス]'
identified by '任意のパスワード';
Query OK, 0 rows affected (0.037 sec)

MariaDB [postfix]> grant select on postfix.mailbox to 'dovecot_relay'@'[リレーサーバーのIPアドレス]';

作成したデータベース参照用アカウントの権限設定を確認します。

MariaDB [postfix]> show grants for 'dovecot_relay'@'[リレーサーバーのIPアドレス]';
+-----------------------------------------------------------------------------------------------------+
| Grants for dovecot_relay@[リレーサーバーのIPアドレス]                                               
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dovecot_relay`@`[リレーサーバーのIPアドレス]` IDENTIFIED BY PASSWORD '<masked>' 
| GRANT SELECT ON `postfix`.`mailbox` TO `dovecot_relay`@`[リレーサーバーのIPアドレス]`                 
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

アカウント作成後の接続確認は、後ほどリレーサーバー側から行います。

リレー送信用SMTPアカウントを作成する

 PostfixAdminで、リレー送信用SMTPアカウントを作成します。今回は、SMTPリレー管理用のサブドメインにメールアカウントを作成しました。このアカウントは、送信元サーバーからリレーサーバーへメールを中継するときの送信認証(SMTP AUTH)に使用します。

認証サーバー側ファイアウォール設定

リレーサーバーから認証サーバー上のデータベース(MariaDB)を参照できるように、認証サーバー側のファイアウォール設定を変更します。

まず、現在のfirewalldの状態を確認します。

[root@exiv ~]# firewall-cmd --state
running

[root@exiv ~]# firewall-cmd --get-default-zone
public

[root@exiv ~]# firewall-cmd --get-active-zones
drop
  sources: ipset:cn.zone.ipv6 ipset:cn.zone.ipv4
public
  interfaces: eth0

外部向けインターフェースeth0は、publicゾーンに割り当てられています。
リレーサーバーから認証サーバーのデータベース(MariaDB)へ接続するためのアクセス許可ルール(TCP:3306を許可)は、publicゾーンに追加します。

[root@exiv ~]# firewall-cmd --permanent --zone=public \
  --add-rich-rule='rule family="ipv4" source address="[リレーサーバーのIPアドレス]/32"  \
  port port="3306" protocol="tcp" accept'

[root@exiv ~]# firewall-cmd --reload

[root@exiv ~]# firewall-cmd --list-rich-rules
     rule family="ipv4" source address="[リレーサーバーのIP]/32" port port="3306" protocol="tcp" accept
     rule family="ipv4" source address="[管理用IP]/32" port port="9090" protocol="tcp" accept
     rule family="ipv4" source address="[管理用IP]/32" port port="22" protocol="tcp" accept

クラウド側ファイアウォール設定(WebARENA Indigo)

クラウド側ファイアウォールにおいても同様の設定追加が必要です。リレーサーバーのIPアドレスから3306/tcpへの接続のみ許可するインバウンドルールを追加します。

同様にリレーサーバーからのみ3306/tcpを許可する構成になりました。

リレーサーバーから認証サーバーへの疎通を確認する

この確認は、リレーサーバーのコンソールから行います。
リレーサーバーから、認証サーバー上のデータベース(MariaDB)へ接続できることを確認します。
認証サーバーのMariaDBへ接続するため、リレーサーバー側にMariaDBクライアントをインストールします。

root@relay:~# apt update
root@relay:~# apt install -y mariadb-client

認証サーバーのホスト名を名前解決できることを確認します。
(IPアドレスは公開情報ですが、自動収集等を防ぐため、伏字としています)

root@relay:~# getent hosts mail.exiv.net
xxx.xxx.xxx.xxx    mail.exiv.net

作成したデータベース参照用アカウントで、認証サーバーのデータベース(MariaDB)へ接続します。

root@relay:~# mysql -h mail.exiv.net -u dovecot_relay -p postfix
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1494
Server version: 10.5.29-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [postfix]>

MariaDBのプロンプトが表示されれば、リレーサーバーから認証サーバー上のMariaDBへ接続できています。
mailboxテーブルを参照できることを確認します。

MariaDB [postfix]> SELECT username, active FROM mailbox LIMIT 1;
+-----------------+--------+
| username        | active |
+-----------------+--------+
| [email protected]  |      1 |
+-----------------+--------+
1 row in set (0.018 sec)

1件のレコードが表示され、データベース参照用アカウントでmailboxテーブルを参照できることを確認できました。

認証サーバー側の準備完了

リレーサーバーから認証サーバー上のPostfixAdmin/MariaDBを参照するための準備が整いました。
次回は、リレーサーバー側の設定について投稿予定です。

(つづく)

SMTPリレーサーバー導入:メールサーバー 554 FCrDNS check failed 対策 (3)
前回は、認証サーバー側でデータベース参照用アカウント、リレー送信用SMTPアカウント、ファイアウォール設定を準備しました。SMTPリレーサーバー側では、PostfixがSMTP AUTHを受け付け、認証判定にはDovecot SASLを利用…


コメント

タイトルとURLをコピーしました