|
|
メールサーバーの構築
|
メールサーバーについて電子メールシステムについてメールアカウントの作成POP/IMAPサーバーの設定Sendmailの設定Postfixの設定ユーザー認証によるメール送信SMTP AUTHの設定POP/IMAP before SMTP
dracによるPBS構築
|
WBEL3,CentOS3(i386)では"drac"を利用してPBSを構築POP/IMAP before SMTP を設置する場合に用いられる最もポピュラーな方法は、 "drac(Dynamic Relay Authorization Control)" と呼ばれるプログラムの利用です。 以下、その情報サイトを示します。 dracは、 MUA から POP3 や IMAP4 などで MRA へのメールの受信要求が行われ、パスワードによる認証が成立したとき、独自の データベース にその要求元の IPアドレス を登録し、一定時間を経過すると、そのIPアドレスを登録から削除するプログラムです。 メール受信の要求元が メールサーバー とは別の サブネット の場合、dracはそのサブネットの外側(通常は WAN 側)の ゲートウェイアドレス を要求元のIPアドレスとして登録します。 つまり、 NAT + IPマスカレード 環境下にある外部のサブネットからでも、結果として同じように動作するようになります。
通常、MUAから
SMTP
によるメールの送信要求を受けた
MTA
は、
Sendmail
の場合は
"/etc/mail/access.db"
dracを用いる場合は、これに加えてSendmailやPostfixに対して、 「ついでにdracの作成したデータベースを参照して、そこに登録されているIPアドレスからの送信も転送許可で受け付けなさい。」 という設定を行っておきます。 これで「任意の ノード (つまり外出先)からの自由なメールの送信。」が可能になる、というわけです。 POP/IMAP before SMTPを実現するアプリケーションは他にもいくつかありますが、dracは設定が簡単で非常に安定に動作します。 というわけですから、 ディストリビューション が標準で提供しているメールサーバーアプリケーションでdracが利用可能であれば、まず第一に選択すると良いと思われます。 ただし、この drac は既に開発が止まっているようですので、新しい ディストリビューション には将来対応される予定はないと考えてください。 WBEL3 及び CentOS3 を利用する場合でも アーキテクチャ が x86_64 の場合はdracは利用できませんから、次のパートで説明する Pop-before-smtp を利用することになります。
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
dracについて〜入手方法など |
||||||||||||||
LinuxOS
へのアプリケーションの導入の考え方については、
を参考にしてください。
|
を ダウンロード し、マニュアルを見ながら手動で インストール しても構いませんが、 の コンテンツ から RedHatLinux9 用の rpm がダウンロードできます。 |
|||||||||||||
|
|
このrpmは WBEL3 や CentOS3 でもそのまま利用できますから、今回はこれを使用します。 そのrpm "drac-1.11-1.i386.rpm" の入手方法ですが、今お使いの クライアント機 上から、 をクリックしてダウンロードし、 FTPクライアント を使って 構築中のLinuxサーバー に アップロード すればOKです。 または、 SSHクライアント で 構築中のLinuxサーバー にログインし、 wget コマンド で直接 構築中のLinuxサーバー にダウンロードする方法もあります。
また、 構築中のLinuxサーバー に予めインストールされている UW IMAP は、dracの動作とは連携していませんから、dracを利用に合わせて何らかの方法で連携させなくてはなりません。 これもUW IMAPのソースプログラムを入手し、プログラムの一部を変更してインストールしなおせば良いのですが、実は"drac-1.11-1.i386.rpm"の ディストリビューター から、既にdrac連携済みのUW IMAP "imap-2001a-18drac.i386.rpm" が配布されています。 もちろん既存のrpmを利用するほうが面倒がないので今回はこれを使用します。 こちらも"drac-1.11-1.i386.rpm"同じようにダウンロードしておきましょう。 つまり、 構築中のLinuxサーバー に予めインストールされているUW IMAPを アンインストール した後に、このdrac連携処理済みのUW IMAPをインストールすることになるわけですが、ひとつ問題があります。
実は、ここでインストールするUW IMAPのバージョンは最新のものではないので、
yum
でシステム全体を
アップデート
するときに
そこで、UW IMAPだけを自動アップデートの対象からはずしておく必要がありますから、
nanoエディタ
で
"/etc/yum.conf"
を開き
|
|||||||||||||
|
右の例では割愛していますが、既に他のrpmについて同じようにあなた自身が記述しているかもしれません。
ちなみに右はWBEL3での例です。CentOS3をお使いの場合でも同じように記述します。 |
これで、yumによるUW IMAPのアップデートは行われなくなります。
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
UW IMAPの入れ替えまず、 構築中のLinuxサーバー に インストール されている UW IMAP の rpm のパッケージ名を調べ、 rpm コマンド で アンインストール します。 |
||||||||||||||
|
以下は、
SSHクライアント
で
構築中のLinuxサーバー
に
ログイン
し、
root
アカウント
に変更して作業します。
また、前のパートで入手した "drac-1.11-1.i386.rpm" 及び "imap-2001a-18drac.i386.rpm" は、どちらも "/home/tanaka/" 以下に保存されているものとして説明します。 |
UW IMAPをアンインストールするとき、このように色々と派手な警告が出ますが、これらの警告は「既存の xinetd 管理下の起動 スクリプト を、それぞれ*.rpmsaveという名前でバックアップ保存した。」 という意味です。 |
|||||||||||||
|
|
警告というほど大げさなものではないので安心してください。 引き続き、前のパートで ダウンロード した "imap-2001a-18drac.i386.rpm" をインストールします。
これでインストールは終わりですが、先ほど一度UW IMAPをアンインストールしましたので、UW IMAP由来の デーモン プログラムの状態は元に戻っているはずです。
面倒ですが、ここでもう一度
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
dracのセットアップ以下、 drac の インストール と設定、動作確認について説明します。 dracのインストール試しに、前のパートで ダウンロード した "drac-1.11-1.i386.rpm" を rpm コマンド で インストール しようとすると、次のようなエラーが表示されるはすです。 もちろん、インストールには失敗します。
どうしたら良いかは、エラーメッセージを読むと解ります。つまり、 「依存関係による失敗。"drac-1.11-1"のインストールにはlibdb-4.0.so"が必要。"compat-db-4.0.14-5.1.i386.rpm"が解決するかもしれない。」 ということですから、"drac-1.11-1.i386.rpm"の前に"compat-db-4.0.14-5.1.i386.rpm"という rpm をインストールすれば良いことがわかります。 |
||||||||||||||
| LinuxOS に アプリケーション をインストールする場合は、できるだけ その ディストリビューション 標準のものを使うようにします。 |
こういうケースではまず、"compat-db-4.0.14-5.1.i386.rpm"なるrpmが、 WBEL3 や CentOS3 の標準のパッケージ群にあるかどうかを調べるのが定石です。 早速 yum install で調べてみましょう。 以下はWBEL3での実施例です。CentOS3では表示されるメッセージが幾分異なりますが操作は全く同じです。
すると"compat-db"は確かに見つかりましたが、更に「依存関係のある"compat-libstdc++"もインストールが必要。」と表示されますので、 "n" Enter とタイプして一旦 プロンプト に戻り、次のようにコマンドを入れなおします。 |
|||||||||||||
|
|
すると今度は依存関係の警告が出ませんので、そのままインストールを続行します。
依存関係のあるrpmのインストールが終了しましたので、再度"drac-1.11-1.i386.rpm"のインストールを行います。
これで"drac-1.11-1.i386.rpm"のインストールが完了しました。 dracを構成するファイル"drac-1.11-1.i386.rpm" から drac を インストール すると、以下のように必要なファイルが配置されます。
"drac"を構成するファイル一覧 dracの本体プログラムは"/usr/sbin/rpc.dracd"ですが、通常はこれを直接呼び出すことはないでしょう。 実際にはこの"/usr/sbin/rpc.dracd"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/dracd" を用います。 また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/dracd" でも呼び出すことができます。 例えば、 |
|||||||||||||
"/etc/rc.d/init.d/"
には
パス
が通っていません
から、パスを省略して実行することはできません。
|
"/etc/init.d/dracd start" →dracの起動 "/etc/init.d/dracd stop" →dracの停止 という使い方になります。 "/etc/mail/dracd.db" が、 MRA 、すなわち UW IMAP への受信要求の成立によって自動で作成される IPアドレス の データベース です。 このデータベースが Sendmail のインストール パス である "/etc/mail/" に導入されている理由は、もともと"drac-1.11-1.i386.rpm"が Sendmailに POP/IMAP before SMTP の仕組みを与えるものとして構成されたものだからです。 Postfix を中心に MTA の運用を考えている場合には、できれば "/etc/postfix/" 以下にデータベースを持ってきたいところですが、実用上は"/etc/mail/"以下にデータベースがあっても何ら支障はありませんので、この コンテンツ では敢えて変更はしません。 dracの設定についてdrac は単純なプログラムなので、独立した設定ファイルというものはありません。 従って、設定は起動 スクリプト である "/etc/rc.d/init.d/dracd" に直接記述して行います。 |
|||||||||||||
| 編集すべきところは一ヶ所なので、バックアップは必要ないでしょう。 |
root
アカウント
で
ログイン
した状態で、
nanoエディタ
から"/etc/rc.d/init.d/dracd"を開いてください
設定を変更する場所は 23行目 です
↓23行目に移動
nanoで"/etc/rc.d/init.d/dracd"を開く 設定すべき内容は、 1.IPアドレスのデータベース上の保持時間。 ( デフォルト は30分) 2.drac起動時のデータベースの初期化。 (デフォルトは初期化なし) の二つだけです。 |
|||||||||||||
|
|
データーベースへの保持時間が短すぎると、受信操作から直ぐに送信作業を行わなければならなくなりますので、 MUA の使い勝手は悪くなります。ただ、あまり長くしすぎると逆にセキュリティ上の問題が出てきます。 従って、短くて 5分 、長くても 30分 程度が妥当なところでしょう。 設定を変更するには、設定対象行に " -e [保持時間(分)]" を追加します。例えば15分に設定したい場合は、
と設定します。 drac起動時のデータベースの初期化については、実際に メールサーバー の運用を開始した後はあまり重要ではありません。 ただ、メールサーバーの動作テスト中は、意図的に"/etc/mail/drac.db"の内容を消去したいケースも出てきますから、「起動時にデータベースを初期化する」という設定を行っておけば、その都度dracを再起動すれば良いことになります。 しかし実際には プロンプト から、本体プログラムを使って直接、
と実行すれば、いつでもデータベースの初期化は可能ですから、強いて"/etc/rc.d/init.d/dracd"に初期化の設定を施しておく必要はないかもしれません。 設定を行うには、設定対象行に " -i" を追加します。
もちろん、先ほどの保持時間の設定と組み合わせて設定することもできます。
記述が終わったら"/etc/rc.d/init.d/dracd"を保存し、nanoエディタを閉じてください
設定を変更した場合は、dracを再起動する必要があります。 まだdracを起動していないときは、
でdracを起動してください。既に起動しているときは、
で再起動を行ってください。
dracの起動、停止、再起動などの操作については、
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
UW IMAPとdracの連携の確認MTA を drac に対応させる前に、ひとまず UW IMAP とdracの連携がうまくいくかどうかをチェックしてみましょう。
まず、動作確認に必要な
デーモン
である
"ipop3"
または
"imap"
が
xinetd
から利用可能であることを確認してください
それと、dracが稼動していることも確認してください。もし稼動していなければ前のパートの説明、または
次に、 "/etc/mail/dracd.db" に登録されている IPアドレス を調べてみましょう。 "/etc/mail/dracd.db"は バイナリ 形式の データベース ですので、 テキスト エディタなどで開くことはできません。 そこでバイナリのデータベースファイルの内容をテキストで表示する "db_dump" コマンド を使って"/etc/mail/dracd.db"の内容を確認します。
現在表示されているのは、データベースのパラメータのみで、IPアドレスの登録は何も行われていません。 |
||||||||||||||
| 実際にメールが ダウンロード されなくても構いません。認証されればそれでOKです。 |
では、
そしてもう一度"/etc/mail/dracd.db"の中を確認すると、 |
|||||||||||||
| IPアドレスの下にある桁数の多い数字は、IPアドレスが登録された時刻を示します。もちろん、コンピュータが扱う時間なので、普通の時刻表記ではありません。 |
と、受信作業を行ったホスト機のIPアドレスが登録されているはずです。 そして前のパートで設定した IPアドレスの保持時間 が経過するのを待って、もう一度"/etc/mail/dracd.db"の内容を確認してみてください。登録が消えて、空っぽの状態に戻っているはずです。 これが確認できれば、UW IMAPとdracの連携はOKということになります。
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
Sendmailとdracとの連携の設定Sendmail が "/etc/mail/dracd.db" を参照し、その中に保持されている IPアドレス の ホスト からのメールの中継許可を行うには、 "/etc/mail/sendmail.mc" の末尾に以下の設定を追記し、改めて "/etc/mail/sendmail.cf" を作成する必要があります。 |
||||||||||||||
| 要するに、「btree形式の/etc/mail/dracdという名前のデータベースを参照して云々...。」という設定を、Sendmail流に解りにくく記述しているわけですね。 |
この黒字の部分を追加すれば良いのですが、Tabの部分はスペースを使ってはいけません。必ず Tab で区切る必要があります。 以下に必要な部分だけのコピー&ペースト用の テキスト ファイルを掲載しますので、必要ならば利用してください。
実際の編集の方法、"/etc/mail/sendmail.cf"の作成方法については、
編集が終わったら、Sendmailの再起動
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
Postfixとdracとの連携の設定Postfix が "/etc/mail/dracd.db" を参照し、その中に保持されている IPアドレス の ホスト からのメールの中継許可を行うには、 "/etc/postfix/main.cf" に以下の設定を追記する必要があります。 |
||||||||||||||
| 要するに、「btree形式の/etc/mail/dracdという名前のデータベースを参照して云々...。」という設定を、Postfix流にやや解りやすく記述しているわけですね。 |
この設定は本来一行に記述すべきものを、 ",(カンマ)" で区切ったものです。 従って、"/etc/postfix/main.cf"の記述ルールに従って、2行目以降の行の先頭には必ず スペース を入れなければならない点に注意してください。 以下にコピー&ペースト用の テキスト ファイルの掲載しますので、必要に応じて利用してください。 |
|||||||||||||
|
"smtpd_recipient_ restrictions" ディレクティブの詳細についてはこちら
を参考にしてください。
|
実際の"/etc/postfix/main.cf"の編集方法については、
編集が終わったら、Postfixの再起動
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|||||||||||||
POP/IMAP befor SMTPの動作確認POP/IMAP before SMTP を含めた現在の メールサーバー の状態をまとめてみると、 A. 構築中のLinuxサーバー を含む "192.168.100.0/24" からの送信メールは、無条件で他の MTA への転送を受け付ける。 B. 構築中のLinuxサーバー 及び "192.168.100.0/24" 以外からの送信メールは、POP/IMAP before SMTPによって受信操作が成立した場合にのみ一定時間だけ他のMTAへの転送を受け付ける。 ということになります。 つまり、現在設定中のPOP/IMAP before SMTPのテストは、B.の条件にある場所、例えば外出先から "xxxx@obenri.com"以外の メールアドレス宛てに、 1.送信しても拒否されることを確認する。 2.メールの受信作業を行う。 3.送信できることを確認する。 4.設定時間経過後に、再び送信しても拒否されることを確認する。 という手順で行えば良いことがわかります。
外出するのが億劫な方は、使用している
MTA
が
Sendmail
の場合は
"/etc/mail/access"
の内容
|
||||||||||||||
"/etc/mail/access"
を編集した後は必ず
データベース
化処理
を行ってください。
|
に、
Postfix
の場合は
"/etc/postfix/main.cf"
の
"mynetworks_style"
ディレクティブ
|
|||||||||||||
"/etc/postfix/main.cf"
を修正した後は、必ずPostfixの再起動または設定の再読み込み
を行ってください。
|
に変更してください。 |
|||||||||||||
|
|
すると、それぞれのMTAは ループバックアドレス から送信されるメールのみを他のMTAに転送するように設定が変更されます。 つまり動作としては、 A'. 構築中のLinuxサーバー 自身からの送信メールは、無条件で転送を受け付ける。 B'. 構築中のLinuxサーバー 以外からの送信メールは、POP/IMAP before SMTPによって受信操作が成立した場合にのみ一定時間だけ転送を受け付ける。 という状態になりますから、POP/IMAP before SMTPのテストは前に説明した1.〜4.を自宅の LAN 内の ホスト機 から行うことができます。 もちろんこの方法では間接的にしか動作確認はできていないように思えるかもしれませんが、POP/IMAP before SMTPが正常に動作することさえ確認できれば大丈夫です。 要はPOP/IMAP before SMTPの影響範囲がWAN空間かLAN空間かの違いに過ぎませんから、設定範囲を変更してもきちんと動作するのは間違いないからです。 動作確認のテストが終わったら忘れずに設定を元に戻しておきましょう。
関連セクション・
Sendmailの設定
関連セクション・
Postfixの設定
|
|
|
POP/IMAP before SMTP
<<Previous
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |