概要
「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の情報を設定
1 |
# vi /etc/authlib/authmysqlrc |
1 2 3 4 5 6 7 8 9 10 11 12 |
▼ホスト名とログインユーザー、パスワードの入力 MYSQL_SERVER mysql.example.com MYSQL_USERNAME admin MYSQL_PASSWORD admin ▼MySQLの接続ポート番号を入力 MYSQL_PORT 3306 ▼接続データベース名を入力 MYSQL_DATABASE courier_userdb |
MySQLのデータベースとテーブルを作成
▼MySQLへログイン
1 2 |
# mysql -u root -p Enter password: |
▼データベースの作成
1 2 |
mysql> CREATE DATABASE courier_userdb; Query OK, 1 row affected (0.01 sec) |
▼作成したデータベースへ移動
1 2 |
mysql> USE courier_userdb; Database changed |
▼移動したデータベース内にテーブルの作成
下記をまるっとターミナルにコピペしてSQLコマンドを実行してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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) |
▼テーブル作成後の状態確認
1 2 3 4 5 6 |
mysql> SHOW tables; +--------------------------+ | Tables_in_courier_userdb | +--------------------------+ | passwd | +--------------------------+ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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について
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を実行可能です。
1 |
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のみを有効とします。
1 |
vi /etc/authlib/authdaemonrc |
1 2 3 4 5 6 7 8 |
▼下記の行を「#」でコメントアウト #authmodulelist="authuserdb authpam authpgsql authldap authmysql authsqlite authcustom authpipe" ▼下記の行を追記 authmodulelist="authmysql" |
▼authlibを再起動でコンフィグを反映
1 |
# systemctl restart courier-authlib |
接続テスト
userdbで接続していた時と同様にメーラからログイン、メール送受信が可能か確かめてください。
メーラーでエラーになる場合はデバッグモードでログを出力して /var/log/maillog のログを確認してください。
デバッグログの設定方法下記の手順を確認してください。
メーラーでアカウントを設定してログイン確認
└ デバッグモードにしてmaillogを確認