SMTPサーバ機能だけではメールクライアントを使うことができない。今回はメールクライアントからアクセスできるようにするため、POP3、APOP、IMAP4サーバを構築する。また、不正中継対策としてPOP Before SMTPおよびIMAP Before SMTP機能を組み込もう。
さて、サーバ(MTA)のメールボックスを直接読み書きしていたという時代ならいざ知らず、いまやUNIXをデスクトップマシンとして使っている方でさえ、POP3やIMAP4でメールを取り込むことが多くなってきていると思います。今回は、POP3やIMAP4でクライアントにメールを取り込めるようにしましょう。
SMTPはメール送信プロトコルの実質的な標準であるのに対し、メールボックスからメールを取り出す仕組みは、MTA(サーバ)とMUA(各端末)のローカルな取り決めで済むため、用途に応じて複数の手段が用意されています。
サーバに受信機能を組み込む際には、クライアントの対応が問題になります。どんなメールソフトがどのプロトコルに対応しているか、確認してからサーバを構築しましょう(注)。
滝澤 隆史著「MUAs for Windows - Windows のメイラーの評価 -」http://www.emaillab.org/win-mailer/table-otherspec.html
最近では、SPAMの温床にされないように、送信時にもユーザー確認などの防御策を講じる必要が出てきました。しかしながら、すべてのメールクライアントで「送信時の認証」が実装されているわけではないため、この方法はクライアントソフトを限定できる場合に限られます。そこで、多く用いられる手段としてPOP Before SMTPがあります。送信の前にPOPで認証を行い、それからSMTPリレーを許可するというものです。今回は受信サーバの構築とともにこちらの組み込み方法も紹介します(同様にIMAP Before SMTPについても取り上げます)。
これから構築作業に入るわけですが、以後の作業はMaildir形式でqmailが起動されていることを前提にしています。コマンドプロンプトの「#」はroot、「$」は一般ユーザーでの作業であることを示しています(「su -」は省略しています)。
また、最近のLinuxディストリビューションは標準でPOP3やIMAP4が組み込まれているため、競合を起こさないようにサービスを停止しておく必要があります。/etc/inetd.confファイルを編集し、下記のようにPOP3、IMAP4に関する行の先頭に「#」を付けてコメントアウトします(xinetdを使用している環境では/etc/xinetd.dにある各サービスを定義しているファイル、または/etc/xinetd.confの該当セクションの中でdisable = yesとします)。
#pop3 stream tcp nowait root /usr/sbin/ipop3d ipop3d #imap4 stream tcp nowait root /usr/sbin/imapd imapd
次に、inetdデーモンプロセスにHUP信号を送って再起動します(xinetdの場合はxinetdに置き換えてください)。
# ps -aef | grep inetd root プロセス番号 1 0 09:41 ? 00:00:00 inetd -wW # kill -HUP プロセス番号
また、下記のようにtelnetで、
# telnet localhost 110 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused
となることを確認し、POP3が使用するサービスポート110番がフリーになっていることを確認します。同様にIMAP4が使用する143番もフリーになっていることを確認しておきます。
# telnet localhost 143 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused
以降の作業では、たびたびqmail起動スクリプト(前回紹介した/etc/rc.d/init.d/qmailスクリプト)の修正を行います。修正を有効にするには、下記のようにサービスの再起動が必要になります。
# /etc/rc.d/init.d/qmail stop # /etc/rc.d/init.d/qmail start
Copyright © ITmedia, Inc. All Rights Reserved.