概要
「CentOS 8にメールサーバー構築(Courier-MTA)」の手順にて「userdb」に設定したユーザーデータをMySQLで管理できるようになります。
▼Courier-MTA公式WEBのREADME
構築環境
- CentOS Linux release 8.2.2004 (Core)
- courier-1.0.14
- courier-authlib-0.71.0
- courier-unicode-2.1
▼MySQLのインストール方法は下記で解説しています
userdbのMySQL化
▼認証情報データ参照先のMySQLの情報を設定
command # vi /etc/authlib/authmysqlrc
authmysqlrc
▼ホスト名とログインユーザー、パスワードの入力
MYSQL_SERVER mysql.example.com
MYSQL_USERNAME admin
MYSQL_PASSWORD admin
▼MySQLの接続ポート番号を入力
MYSQL_PORT 3306
▼接続データベース名を入力
MYSQL_DATABASE courier_userdb
MySQLのデータベースとテーブルを作成
command ▼MySQLへログイン # mysql -u root -p Enter password:
▼データベースの作成
command mysql> CREATE DATABASE courier_userdb; Query OK, 1 row affected (0.01 sec)
▼作成したデータベースへ移動
command mysql> USE courier_userdb; Database changed
▼移動したデータベース内にテーブルの作成
下記をまるっとターミナルにコピペしてSQLコマンドを実行してください。
command mysql> CREATE TABLE passwd ( -> id char(128) DEFAULT '' NOT NULL, -> crypt char(128) DEFAULT '' NOT NULL, -> clear char(128) DEFAULT '' NOT NULL, -> name char(128) DEFAULT '' NOT NULL, -> uid int(10) unsigned DEFAULT '65534' NOT NULL, -> gid int(10) unsigned DEFAULT '65534' NOT NULL, -> home char(255) DEFAULT '' NOT NULL, -> maildir char(255) DEFAULT '' NOT NULL, -> defaultdelivery char(255) DEFAULT '' NOT NULL, -> quota char(255) DEFAULT '' NOT NULL, -> options char(255) DEFAULT '' NOT NULL, -> KEY id (id(128)) -> ); Query OK, 0 rows affected, 2 warnings (0.06 sec)
▼テーブル作成後の状態確認 command
mysql> SHOW tables;
+--------------------------+
| Tables_in_courier_userdb |
+--------------------------+
| passwd |
+--------------------------+
mysql> DESC passwd;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| id | char(128) | NO | MUL | | |
| crypt | char(128) | NO | | | |
| clear | char(128) | NO | | | |
| name | char(128) | NO | | | |
| uid | int unsigned | NO | | 65534 | |
| gid | int unsigned | NO | | 65534 | |
| home | char(255) | NO | | | |
| maildir | char(255) | NO | | | |
| defaultdelivery | char(255) | NO | | | |
| quota | char(255) | NO | | | |
| options | char(255) | NO | | | |
+-----------------+--------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
MySQL WorkbenchでDBへデータの投入
データの投入は先ほどテーブルを作成したようにターミナル上でSQLコマンドを実行することで作成が可能ですが、普段追加する際のオペレーションが面倒なので、MySQL公式のOracle社より提供されている「MySQL Workbench」を利用して更新をしていきます。
▼MySQL Workbenchについて
https://dev.mysql.com/downloads/workbench/
Oracle社から提供されているDBをコントロールできる公式のGUIツールです。
これらGUIツールを使ってデータを投入していくと、楽にuserdataが作成できます。
▼MySQLへの接続アカウントを設定
「+」ボタンを押して追加
▼設定情報を入力
1 | Connection Name: | 任意に分かり易い名前を入力。 |
2 | Connection Method: | 「Standard TCP/IP over SSH』を選択。 直接MySQLに外部から接続できるようにするとセキュリティが低下するため、一度踏み台であるLinuxサーバーにSSHでログインした後、MySQLに接続されるようにします。 |
3 | SSH Hostname: | 踏み台ホストのIPアドレスを入力。 SSHのポート番号を変更している場合は、コロン「:」の後にポート番号を入力。 192.168.0.77:1812 |
4 | SSH Password: | SSHでリモートログインする際のパスワードを入力。 |
5 | MySQL Hostname | 踏み台サーバ=からMySQLへ接続するためのホストネームを入力。 踏み台と同一サーバーの場合はローカルホストのIPを入力。 127.0.0.1 |
6 | root | 踏み台サーバーからMySQLにログインするときのユーザーを入力。 |
7 | Password: | 踏み台サーバーからMySQLにログインするときのパスワードを入力。 |
入力が完了したら「OK」ボタン押下で保存してください。
▼MySQL WorkbenchでMySQLに接続
「MySQL Workbench」→「SSH:踏み台サーバー」→「MySQL」
先ほど設定したカードが追加されているので、ダブルクリックでMySQLまで接続されます。
▼SELECT文でテーブルの内容表示
左の小窓のテーブルよりテーブルの内容表示を実行するか、右上の大きいウィンドでSELECT文を入力して雷アイコンをクリックすることでSQLが実行できます。または「Ctrl+Enter」で入力したSQLを実行可能です。
command SELECT * FROM courier_userdb.passwd: 「雷アイコン」or 「Ctrl+Enter」
下ウィンドの『NULL』の空欄セルに設定を直接入力可能です。
基本的に userdb ファイルに記述される内容と同様の値を入力しますが、パスワードは暗号化される前の平文を入力します。
id | username userother@example.com |
メーラーに設定するログインユーザーになります。 メールサーバーのホストと同一ドメインの場合はユーザー名のみを入力。違うドメインのメールアドレスの場合はユーザー名@ドメインを入力。 |
clear | UserPassword | メーラーに設定するログインユーザーのパスワードです。 |
uid | 1009 | CentOS内の該当ユーザーの UID です。 |
gid | 1009 | CentOS内の該当ユーザーの GID です。 |
home | /home/username | Maildirディレクトリがある /home/username のPATHを入力。 ここの Maildir にメールのデータが格納されます。 |
入力が完了したら、画面右下の「Apply」を押下で password テーブルに書き込みがされます。
userdbの優先順位を変更
「CentOS 8にメールサーバー構築(Courier-MTA)」の手順にて準備した「userdb」のファイルと、本手順で準備したMySQLのユーザーデータを、どの優先順位で参照するか、下記のコンフィグで設定が可能です。
重複情報による管理の煩雑化とデータ不一致の動作不具合を防ぐため、本手順ではMySQLのみを有効とします。
command vi /etc/authlib/authdaemonrc
authdaemonrc
▼下記の行を「#」でコメントアウト
#authmodulelist="authuserdb authpam authpgsql authldap authmysql authsqlite authcustom authpipe"
▼下記の行を追記
authmodulelist="authmysql"
▼authlibを再起動でコンフィグを反映
command # systemctl restart courier-authlib
接続テスト
userdbで接続していた時と同様にメーラからログイン、メール送受信が可能か確かめてください。
メーラーでエラーになる場合はデバッグモードでログを出力して /var/log/maillog のログを確認してください。
デバッグログの設定方法下記の手順を確認してください。
メーラーでアカウントを設定してログイン確認
└ ▼デバッグモードにしてmaillogを確認