|
||
|
インターネットへ向けて送信しない閉じたメールサーバ他のパターンはPostfixでメールサーバを構築する(解説)も参照してください。LAN内でシステムのSMTP/POPの動作試験を行うときに使います。 手順としては、けっこう大がかりになってしまいます。 条件 自身が持つメールドメイン宛のメールを受け付けます。 POP3によりメール取得を受け付けます。 外部へは転送しません。 ・Postfixをインストールする ・Postfixを設定する ・送信宛のメールアカウントを作成する ・TelnetでSMTPの動作を確かめる ・Qpopperを構築する前に ・Qpopperをインストールする ・Qpopperを設定する ・POPアカウントを設定する Postfixをインストールするpostfixがインストールされているか確かめ、見つからなければPostfixをインストールします。#rpm -q postfix (Postfixとバージョン番号が表示されるか?) 表示されなければ #yum install postfix としてインストールします。リポジトリへ接続できることが条件です。 インストールしても、Postfixは起動しません。一見起動したように見えますが、statusを見ると起動してません。 これはデフォルトでSendmailが起動しているので、すでに25番ポートが使用されているからです。 sendmailを止めてPostfixを起動させます。 #service sendmail stop (Sendmailを止めます) #chkconfig sendmain off (自動起動を止めます) #service postfix start (Postfixを起動させます) #chkconfig postfix on (自動起動を有効にします) #service postfix status (動作を確認します) 「telnet localhost 25」などとして25番ポートのPostfixへアクセスできるか確認します。 ファイアウォールも確認しておきましょう。 Postfixを設定する次にPostfixの設定ファイルを編集します。/etc/postfix/main.cfを次のように編集します。 設定するのはとりあえず3つ。 mydestination 特に重要なパラメータです。ここで指定したドメインと同じドメインのメールが到着すると自分宛のメールと認識され、ローカルディスクへ保存されます。 mydestination = $myhostname, localhost.$mydomain, example.local(追加) inet_interface どのIPアドレスへサービスをバインドするかです。 デフォルトはlocalhostへバインドされていますので、メールサーバ自身しかPostfixへアクセスできません。 とりあえず全てのIPアドレスへサービスを提供しましょう。 inet_interface = all mynetworks これは設定しなくても動作します。 ただしこの状態では全てのLAN内のクライアントから、全てのメールアドレスへ中継する状態となっています。 今回の仕組みでは中継しないので、中継メールの送信元を制限します。 mynetworks = localhost localhostを許可することで、localhost以外からのメールを他へ中継しないようにします。 ちなみに中継元をlocalhostに制限しても、example.local宛のメールは全てのアドレスから受信します。 ここまで設定したら、Postfixにコンフィグを読み込ませます。 #service postfix restart 送信宛のメールアカウントを作成するメールサーバでメールを受け付けるためには、宛先となるメールアカウントが必要です。メールアカウントとは、CentOS上のユーザアカウントが必要です。 しかしメールを受信するためだけでログイン権限を与えるのは危険なので、ログインできない制限アカウントを作ります。 #useradd user1 -s /sbin/nologin ここまでで大体オーケーです。パスワードは後で設定します。 外部からexample.local宛のメールを受け付け、ローカルディスクへ保存されることを確認しましょう。 この状態で挙動を確かめてみたいのですが、多くのメールソフトはPOPの設定がされていないと動作しません。 なのでスキルがある人はtelnetで直接SMTPコマンドを叩いてみましょう。 そうでない人は、POP3サーバの構築に進みます。 TelnetでSMTPの動作を確かめるtelnetでSMTPの挙動を確認するのは、メールサーバで不具合に対処するための大事なスキルです。身に着けておきましょう。 メールサーバ上でデフォルトのメールボックスを監視します。 #tail -f /var/mail/user1 別のクライアントから、「telnet SMTPサーバアドレス 25」として直接SMTPサービスにログインし、SMTPコマンドを実行します。 太字部分が入力内容です。 220 localhost.localdomain ESMTP Postfix helo localhost 250 localhost.localdomain mail from: user1@example.local 250 2.1.0 Ok rcpt to: user1@example.local 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> helo postfix . 250 2.0.0 Ok: queued as 0625633CC90 quit 221 2.0.0 Bye tailで監視している/var/mail/user1ファイルの内容が更新されれば、成功してます。 ※/var/mailは/var/spool/mailのシンボリックリンクなので、どちらも同じ内容です。 SMTPを構築しただけでは、ローカルホストではメールが見られますが、他の端末からは読めないので、着信しているメールを取り出せるように別途POPサービスを導入します。 Qpopperを構築する前にQpopperはMailBox形式のメールを取り出すPOPサーバです。CentOSのPostfixはデフォルトではMailBox形式で動作します。 一部のディストリビューションでパッケージされるPostfixはデフォルトで、qmailなどと同じMailDir形式で設定されているものがあるらしいです。 この場合、Qpopperとは相性が悪いので調整が必要です。 まずはQpopper向けに、Postfixを設定します。 PostfixがMialDirとして動作していないことを確認しておきます。 MailDirの場合は、各ユーザのホームディレクトリの下にMaildirディレクトリが作成されます。 設定も「home_mailbox = MailDir/」となっています。コメントアウトするか「home_mailbox = MailBox」としましょう。 Postfixのメールボックス形式はいずれかを採用します。 1.メールボックスをメールスプールディレクトリへ配置する 利点 一か所に集めるので容量の把握ができ、メンテが容易です。 欠点 ユーザアカウントの削除のとき、ゴミが残っていく恐れがあります。 2.メールボックスを各ユーザ別のホームディレクトリへ配置する 利点 ユーザアカウントの削除とともにプロファイルごとメールボックスが削除されます。メンテが簡単です。 欠点 各ディレクトリにメールボックスが散っているので、全体把握は面倒です。 どちらも長所短所があります。 検証環境でならデフォルトの1が良いでしょう。 1.メールボックスをメールスプールディレクトリへ配置する mail_spool_directory = /var/spool/mail/ と記述し(末尾にスラッシュをつけることで、ユーザごとのMailDir形式で保存されます) home_mailbox = Mailbox をコメントアウトします。 メールが/var/spool/mailに溜まります。 2.メールボックスを各ユーザ別のホームディレクトリへ配置する home_mailbox = MailBox と記述し #mail_spool_directory = /var/spool/mail をコメントアウトします。 メールが各ユーザのホームディレクトリに溜まります。 QpopperをインストールするQpopperはyumでインストール出来ないので、ソースコードをダウンロードしてインストールします。Eudora社のサイトへ行き、Qpopperをダウンロードします。 http://www.eudora.com/products/unsupported/qpopper/index.html もしくはブラウザでFTPサイトを開いてみましょう。 ftp://ftp.qualcomm.com/eudora/servers/unix/popper/ ここでは4.0.18を採用します。 URLが分かればwgetででもダウンロードできます。 #cd ~ #wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/ ダウンロードしたソースファイルをコンパイルします。 しかしデフォルトのCentOSの環境では開発環境が含まれていないので、そのままではコンパイルできません。 GUIの「ソフトウェアの追加と削除」から開発ツールをインストールして、準備しておきます。 開発ツールインストール後、ソースファイルを展開してコンパイルします。 注意点はconfigureのオプションです。 configureの時点で「--enable-specialauth」を付けてください。 #tar xzvf qpopper4.0.18.tar.gz #cd qpopper4.0.18 #./configure --enable-specialauth #maike #make install と実行します。 Qpopperはデフォルトで認証にpasswdファイルを使用します。 が、いまどきpasswordファイルで認証してるLinuxもないでしょう。 なのでQpopperもシャドウパスワードを使用するように設定する必要があります。 詳しくは「configure --help」で確認してください。 Qpopperを設定するインストールするとどこにpopperの実行ファイルが配置されるか、ということですがメッセージを読むとInstalled popper as /usr/local/sbin/popper と表示されてますので、どうやらそこにコピーされた模様。 動作させるには、Qpopperは随所で「xinetd経由で動作させましょう」と紹介されています。 検証目的ならデーモン起動、あるいはQpopper自体を実行したままにしておいても問題ないのでしょうが、 ここでは主流の精神にのっとりxinetdに登録します。 /etc/xinetd.dディレクトリの下にpopperというファイルを作成し、以下のスクリプトを記述します。 service pop3 { disable = no socket_type =stream wait = no user = root server = /usr/local/sbin/popper server_args = -s } ポイントは二つ。 一つは「pop3」はservicesファイルに記述されているサービス名と一致させておく必要があります。 CentOS5.5ではpop3となっています。(pop-3も別名で登録されています) もう一つは「=」の前にスペースが入れることです。 「disable=no」と続けて書くとサービスがうまく起動しません。 登録後、xinetdを再起動します。netstatで110(pop3)ポートが開いているかを確認します。 #service xinetd restart #netstat -ant POPアカウントを設定するメールを取り出すPOPアカウントは、SMTP同様CentOSのローカルユーザアカウントになります。 なので先ほどPostfixで用意しておいたユーザアカウントへパスワードを設定します。 #passwd user1 パスワードを設定したら、さっそくTelnetもしくはメールクライアントで送受信を確認してみましょう。 メールクライアントに以下の設定を与えます。 SMTP/POPサーバ CentOSのアドレス メール送信者 user1@example.local 宛先 user1@example.local 本文やタイトルは適当 user1@example.localへ向かって正常にメールが送信でき、そして受信出来たでしょうか。 もし何度やってもパスワードが認証されない場合は、少し戻って「./configure --enable-specialauth」でオプションを忘れているかもしれません。もう一度configureしてコンパイルしましょう。 インターネットで使う場合、実際の複雑なシステムで用いる場合はさらにPostfixを補強する設定がいります。 mydomainやmyhostnameなど、ネームサービスの影響などを踏まえて設定が必要になってきます。 しかしLAN内の検証用のメールサーバとしては、これで十分でしょう。 |
|