
第1回 qmailによるSMTPサーバの構築
鶴長 鎮一
2001/9/4
tcpserverによる起動の設定
これまでに紹介していた起動方法は、qmailの動作を確認するための便宜上のものです。実際のメールサーバ運用でinetdを使うのは、サービスに求められる堅牢さとセキュリティを考えるとお勧めできません。TCP_Wrapperを併用したり、xinetdを使うのも1つの方法ですが、ここではqmailの作者であるD. J. Bernstein氏が提供しているtcpserverを使う方法を紹介します。
■tcpserverとは
tcpserverはucspi-tcpパッケージの一部として提供されているもので、qmailの特徴を紹介する際にはtcpserverが提供する機能を含めていることがほとんどです。そうした点からも、qmailをtcpserverと切り離して動作させることは極めてまれと考えた方がいいでしょう。tcpserverには、inetdなどの従来のサービス起動プロセスと比べて次のようなメリットがあります。
- DoS攻撃にも対応できるように、同時接続に対する制限がかけられる
- ユーザー名・IPアドレス・ドメイン名を基に接続制限がかけられる
- qmailが動作しているホストに複数のIPアドレスを割り振っている場合(複数のLANインターフェイスを持っているなど)、特定のIPアドレスでのみサービスを受け付けるように設定できる。「アドレスAはSMTP用、アドレスBはPOPサーバ用」などの使い分けが可能
- 上記の要求を制御する設定ファイルはハッシュを用いた独自のデータベースファイル(cdb)を使用しているため、設定がきめ細かくなったり、数百行に及んでも高速な処理が可能。また設定の変更にサービスの再起動は必要ない
■tcpserverのインストールとcdbの作成
tcpserverのインストールは、qmail同様極めて簡単です。
ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
をダウンロードして、
# tar xvfz ../ucspi-tcp-0.88.tar.gz |
を実行すれば/usr/local/binにtcpserverをはじめとするucspi-tcpパッケージがインストールされます。
次に設定ですが、まずcdbの基になるファイルを準備します。ここでは/etcディレクトリにtcp.smtpファイルとして作成します。
# vi /etc/tcp.smtp |
tcpserverは、動作に必要なホスト名やIPアドレスなどの情報を環境変数から取り出します。例えば、1行目の設定は「192.168.0.*からの接続は環境変数RELAYCLIENTに設定し、接続を許可する」となります。大きなサブネットで許可したくないという場合は、
192.168.0.0-31:allow,RELAYCLIENT="" |
などのようにしてアドレスの範囲を指定します。これで192.168.0.0から192.168.0.31までが対象になります。逆に、接続を拒否したい場合は次のようになります。
192.168.0.:deny |
では、cdbファイルを作成します。cdbファイルは以下のコマンドを実行することで作成できます。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb
/etc/tcp.smtp.tmp < /etc/tcp.smtp |
■tcpserverによるqmailの起動
準備が整ったところで、tcpserver経由でqmailを起動します。前半で記述したinetd.confの記述を削除するかコメントアウトし、inetdを再起動します。
次に下記のコマンドを実行します(qmaildのUIDやnofilesのGIDはid qmaildコマンドで確認できます)。
# tcpserver -v -u[qmaildのUID] -g[nofilesのGID]-x
/etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 |
/var/qmail/bin/splogger smtpd 3 & |
tcpserverの代表的なオプションには次のようなものがあります。
| -v | すべてのメッセージを出す |
| -u uid | ユーザーIDをuidに切り替える |
| -g gid | グループIDをgidに切り替える |
| -H | 逆引きをしない(リモートホスト名を調べない) |
| -R | ident(接続したサーバのユーザー情報について、付加的な情報を返す)しない |
| -x /etc/tcp.cdb | cdbデータベース(/etc/tcp.cdb)で制御する |
| -c limit | 最大同時接続数をlimitに設定する(デフォルトは40) |
| -P | 逆引き、正引きで相手の正当性を調査する |
これで完了です。前半で行った送信テストに加えて、tcp.smtpで加えた接続が許可されているクライアントからも送信のテストを行ってみましょう(メールクライアントの設定でsmtpサーバの項目があれば、今回インストールしたqmailサーバに変更します)。
サーバ起動のたびに上記のコマンドを打ち込むのは面倒なので、起動スクリプトを用意します。下記の内容で/etc/rc.d/init.dディレクトリに「qmail」として保存します。また、ダウンロード用のファイルも用意しました。
#!/bin/sh |
それぞれのランレベルで起動されるように、起動スクリプトとリンクを張ります。
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail |
以上でqmailをメールサーバとして動作させることが可能となりました。実際の運用に移るためには、まだまだ種々の制限やユーザーが使いやすいような拡張を施す必要があります。先立ってはPOPの実装が最低限必要だと思います。シェルでメールの読み書きをしているというユーザーはいまや少なくなり、UNIXをデスクトップマシンとして使っている方でさえ、POP3やIMAPでメールを取り込むことが多くなってきていると思います。次回はPOP3をはじめ、POP before SMTPやAPOP、IMAPなどのメール受信機能の実装を紹介します。
|
3/3
|
|
|
||||||
|
||||||
| 連載 実用qmailサーバ運用・管理術 |
| Linux Squareフォーラム サーバ構築・運用関連記事 |
| 連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
|
| 特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
|
| 連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
|
| 連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
|
| 連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
|
| 特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
