wiz.code

メールサーバーのセットアップ

インストールされているパッケージの確認

FTPサーバーを探した時と同じように、パッケージの一覧から「mail」を含むパッケージを探します。

mailパッケージを検索
# yum list installed | grep mail
(※ 端末はsuコマンドでroot化しています。)

はい、4つ見つかりました。 もう手慣れたものですよ。

「libreport-plugin-mailx」はプラグインだから違いますね。

「mailcap.noarch」でもなさそうです。 "noarch"は、「No Architecture」の略かな? 本来なら、x86_64みたいにプログラムのビット数が入るところなので。

「mailx」と「procmail」はどちらもそれっぽいなぁ…。 manコマンドでマニュアルを表示してみたらどうだろうか。

mailxのマニュアル
# man mailx

mailx - send and receive Internet mail

「インターネットメールの送信と受信」 ぱっと見、メールサーバーっぽいけど、コマンドライン引数を見る限り、メールの送信を受信を実行するコマンドっぽい。 sendmail見たいなものかな。 そういえば、sendmailはパッケージに出てこなかったなぁ。

procmailのマニュアル
# man procmail

procmail - 自立型メールプロセッサ

説明が日本語になっているのはありがたいが、いまいち理解できない…。

どちらかといと、mailprocのほうがメールサーバーっぽいけど。 はい、ちゃんと調べます。

いくつかの記事を見る限り、mailxはメールの送信や受信に使うもののようです。 一方、procmailは、メールを振り分けるためのもので、いわゆるメールフィルタのような使い方もできる、とか。

ん…? ってことは、メールサーバーはインストールされてない? ちょっと、インストール時の設定を確認。

CentOSをインストールしたときに選択したメールサーバーの説明には「システムが SMTP または IMAP 電子メールサーバーとして機能できるようにします。」とあります。 おやおや? POP3が入ってないゾ。

IMAPが使えるから、受信メールを貯めることはできるだろうけど、ちょっと違うんだよなぁ…。 んじゃ、ここはWindows Serverで使ってるXmail Serverを導入しようかな。

XMail Serverの導入

wiz.としては、XMailは使いやすいと思うんですよね。 Windows上で動かせるメールサーバーが少ないっていうのもありますが、10年くらい稼働させていてトラブルが発生した記憶がありません。 まぁ、他のメールサーバーを知らないだけかもしれませんが。

いずれにせよ、マイナーなメールサーバーです。 情報(特に日本語の解説)が絶望的に少ない。 yumパッケージもないようです。 なので、ソースからビルドしなければなりません。 これも勉強なので、挑戦してみます。

XMailのソースをダウンロード

まず、ソースの入手。

これは、FireFoxがあるので簡単。 http://xmailserver.org/にアクセスして、XMail Sourceをダウンロードします。

ダウンロードしたファイルを開く

「ダウンロード」にファイルが届いたので、ダブルクリックで開きます。

圧縮ファイルを展開

圧縮ファイルを展開します。

圧縮ファイルの展開先を指定

「ダウンロード」ディレクトリは名前に全角文字が含まれてしまうので、念のためホーム(/home/wiz/)に展開します。

展開されたディレクトリ

展開されました。

端末のディレクトリを移動

端末もこのディレクトリにcdコマンドで移動しておきます。

# cd xmail-1.27

これで準備OK。

ソースのビルド

問題はここから。 プログラムソースをビルドして実行ファイルを作らなければなりません。

ソースファイルをビルドするときには、その手順が記された「Makefile」ファイルがあります。 展開したXMailのソースディレクトリを見ると、プラットフォームごとにMakefileが用意されています。 ここでは「Makefile.lnx」を使えばよいようです。 これを端末から実行するために、「make」コマンドを使用します。

先にmakeコマンドのコマンドラインオプションを調べます。 makefileを使うときは「-f <makefile>」をコマンドラインで指定すればよさそうです。

Makefile 失敗
# make -f Makefile.lnx

さっそくエラー。 「g++ コマンドが見つかりません。」

g++ はコンパイラだそうです。 一番重要なプログラムが入ってないとか…。 まぁ、パッケージがあるでしょう。

g++パッケージ 見つからず
# yum info g++

パッケージ名が合っているかわからないので、infoオプションでパッケージがあるかどうか調べます。

見つかりませんでした♪ いい加減、ちゃんと調べてからコマンドを実行しろ、とLinuxユーザーの先輩方からおしかりを受けそうですが…。

gccパッケージの情報

パッケージ名は「gcc」だそうです。

# yum info gcc

今度はちゃんと見つかりました。 インストールします。

gccのインストール完了
# yum install gcc

インストール完了しました。 途中の応答部分のスクリーンショットは省略しています。

まだmakeできず

もう一度makeコマンドを実行します。

# make -f Makefile.lnx

あれ? やっぱりg++コマンドがない、と言われます。

gcc-c++をインストール

CentOSでは、「gcc」ではなく「gcc-c++」を選択せよ、という指摘を見つけました。 こちらで試してみます。

# yum install gcc-c++
Makefile 再三の失敗

インストール完了。 三度、makeコマンド実行。

# make -f Makefile.lnx

ダメか…。 いや、エラーメッセージが違う。

SSLとCRYPTOのライブラリ? いずれにしても、暗号化に関するプログラムが足りていないようです。

/use/bin/ld に関するエラーの場合、そのあとの「-l」を除いた名前が「lib***」というライブラリだそうです。 んで、libssl、libcryptoの両方を調べると、いずれもOpenSSLにたどり着きました。

ならば、OpenSSLをインストールすればふたつのライブラリも一緒にインストールされるのではないか、と推測。 opensslはパッケージにあると思うので、探してしてみます。

OpenSSLのインストール状況
# yum info openssl

ん~…、インストール済みになってますねぇ…。 yumでライブラリからパッケージ情報を検索する方法がありました。

libsslを検索
# yum search libssl

一致するのがありません。と言われた。 やはりインストールされていない、というかライブラリが見つからないようです。 今日の時点で、OpenSSLのバージョンは、1.1.0c。 ちょっと新しくなってます。 パッケージでは、1.0.1eなので、最新バージョンをインストールします。

OpenSSLのインストール

OpenSSLを入手

www.openssl.orgからソースファイルを入手。

入手したファイルを開く

圧縮ファイルを開いて…

圧縮ファイルを展開

ホームに展開します。

端末のディレクトリも移動しておきます。

# cd ../openssl-1.1.0c
./configを実行

続いてビルドします。 opensslの場合は、初めに「./config」を実行してから「make」コマンドを実行すればよいようです。

# ./config

linux-x86_64として設定されたようです。

Makefile生成

Makefileが作られました。 なるほど。 ./configを実行することで、実行環境に合わせたMakefileが作られるんですね。 続くmakeコマンドの引数がないのは、このファイルを使うからでしょう。

OpenSSLのMake成功
# make

どうやらエラーもなく終了したようです。 次に、インストールしますが、その前にMakefileで正しくビルドされたかテストします。

OpenSSLのテスト
# make test

む。 テスト失敗。 なんだか、根本的に間違っているっぽいぞ…。

古いバージョンのOpenSSLがある場合は削除する必要があるみたい。 競合してるのかな…。 状況によっては残すほうが良い、ともあるけど、今のところOpenSSLは使ってないから一旦削除してみようか。

絶望
# yum remove openssl

!!?

な…何がおこった?
えっっ、OpenSSL消しちゃダメだった!???

アカン…。 フリーズしてる。

電源オフします…。

CUIのログイン画面

恐る恐る起動…。

あちゃ~…。 GUIログインできなくなってる…。 これは相当まずいことになったんじゃないのか…?

まさか、Linuxサーバーの構築はここで終わってしまうのかっ!??

この章のまとめ