CentOS 8 Linux MAIL (Courier-MTA)

Courier-MTAのログイン認証情報をMySQLに移行

概要

「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を確認

 

 

簡単にサーバーを用意したい人はこちら

アクセス数が多く個人運営では厳しくなってきたら、レンタルサーバーも選択肢の一つですね。
もっと簡単にサーバーを準備して、WordPress等が動かせるレンタルサーバーをいくつか紹介します!

 

▼WordPress特化型レンタルサーバー


 

 

▼国内最大級の『ロリポップ!』の新プラン
面倒なインストールやセットアップ作業を行う必要なく、PHP、WordPress、Ruby on Rails、 Node.jsのアプリケーション実行環境を簡単に構築することができます。

 

 

▼国内最速!初期費用無料の高性能レンタルサーバー【ConoHa WING】

 

 

▼Just-Size.Networks レンタルサーバー
安価であっても決して妥協を許さない、こだわりのレンタルサーバー!




 

 

▼カラフルボックス
マルチドメイン・データベース・メールアドレス、すべて無制限。
最新のスペックと技術でWordPressをより高速・安全に表示!
ドメイン取得可能!
初期費用無料(*1)で月額480円から利用可能な、高速・高機能・高コストパフォーマンスのクラウド型レンタル サーバーです。


 

当ブログのドメインや、ウチが管理しているドメインは、全てムームードメインで取得しています。
管理画面が使いやすくて、料金もかなり安めなので、オススメです!

 

-CentOS 8 Linux, MAIL (Courier-MTA)

© 2022 Studio ilia - スタジオ イリア