2000/11/07 制作途中 メールサーバーの設置 << qmail でのメール運用 >> 従来メールサーバーには sendmail が多くのサーバーで使用されてきた。 sendmail はデファクトスタンダードであり、多くの素晴らしい機能が盛り込まれている。 そのため、sendmail は巨大で複雑でありまた、セキュリティホールも必然と多くなる。。 sendmail について多くの書籍があるがそのどれもが分厚く、読みごたえのあるものとな っている。(当然、薄い書籍もあるが運用/管理に必要なだけの情報が書かれているかわ 分からない。) qmail は 1996年に公開された sendmail に代わるメールサーバー(MTA)である。 sendmail が一つの巨大なバイナリで動作するのに対し qmail は複数の小さなバイナリ (モジュール群)によって sendmail 以上の機能を実現している。 qmail の最新版は 1998年にリリースされた qmail-1.03(2000年11月現在)でセキュリティ 上の問題はまだ見つかっていない。 qmail についての日本語の解説書は出版されているが qmail の日本語版Webサイト (http://www.jp.qmail.org/QA/information.html)ではWebページで十分であると言ってい る。(日本語版の作者はかなりの自信家とみた) qmail の作者のWebサイト http://www.qmail.org/ 日本語版のWebサイト http://www.jp.qmail.org/ かなりシンプルというか初心者/素人お断りという感じ DJB's software maniacs (qmail 関連情報) http://www.emaillab.org/djb/ qmailを運用する為の情報やパッチ関連の情報があります。 インストール 前準備 qmail をメールサーバーとして運用するには以下のものを準備する。 qmail-1.03.tar.gz (ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz) --> qmailの本体(2000年11月現在での最新版) ucspi-tcp-0.88.tar.gz (http://pobox.com/~djb/ucspi-tcp.html) --> tcpserver (tcp-wapper(inetd) の代わりに使用) daemontools-0.76.tar.gz (http://www.unixuser.org/~euske/doc/daemontools/) --> syslog の代わりに使う(その他 多機能) checkpassword-0.81.tar.gz (http://cr.yp.to/checkpwd.html) --> pop3サーバーの運用に必要 checkpw-1.00.tar.gz (http://checkpw.sourceforge.net/checkpw/) --> pop3サーバー(pop/apop)の運用に必要 最近はこっちを使うみたい これを利用する場合は checkpw-1.00.tar.gz に付属の パッチ(qmail-popup-auth.patch)を充てる必要がある vpopmail-5.2.tar.gz (http://www.inter7.com/vpopmail/) --> pop3サーバー(pop/apop)の運用 *その他の関連パッケージは http://www.jp.qmail.org/djb/package.html から 取得できる。 上の三つのパッケージがあれば通常のメールサーバーの運用を行える。 (ucspi-tcp-0.88.tar.gz は tcp-wapper(inetd)の代わりに使用するので無くても可) 関連のパッチ ** Recieved: フィールドでの時刻を GMT ではなくローカルタイムで表示するパッチ qmail-date-localtime.patch ftp://ftp.nlc.net.au/pub/unix/mail/qmail/ にあります。 ** qmail-smtpdが\nで終了する行を受け付けるパッチ qmail-smtpd-newline.patch ftp://ftp.nlc.net.au/pub/unix/mail/qmail/ にあります。 その他、各種パッチがありますので ftp://ftp.nlc.net.au/pub/unix/mail/qmail/ から必要なものをダウンロードします。 qmail はセキュリティー上の問題からバイナリーでの配布は制限されているので 基本的にはソースからのインストールとなる。 (ソースからのインストールと言ってもそれほど難しくないから大丈夫) インストールを始める前に qmailの日本語版のWebページ(http://www.jp.qmail.org/) を一通り読んでおくと楽である。 通常、グローバルなネットワーク(いわゆるインターネット)に接続されるホストは セキュリティーを考慮すると必要最低限の機能にしぼるの定石である。 つまり、外部に公開する Webサーバーやメールサーバーを運用するホストに開発環境や X Window System は不要である。そんなものはとっとと削除してしまうのがいい。 ディストリビューションによってはインストール時の選択により最初からこれらの環境 をインストールしないことも可能である。 が、qmail はソースからのインストールが基本である。その為、開発環境がなければイ ンストールができない。 開発環境がインストールされていないホストへのインストール方法は以下の二つである。 1.ローカルのクライアントでインストール用のコンパイル済パッケージを作成して ホストにインストールする。("コンパイルずみ var-qmail パッケージ"というらしい) "コンパイルずみ var-qmail パッケージ"の作り方 --> http://www.jp.qmail.org/qmail/var-qmail.html 2.素直に開発環境をインストールし qmail をインストール後に開発環境を削除する。 (これが楽といえば楽) Turbolinux Server 6.1 の場合は 以下のパッケージをインストールする qmail インストール後は忘れずに削除しましょう。 (rpm系は似たようなもん?) make-3.79-1 gcc-2.95.2-3 glibc-devel-2.1.3-8 *qmailのmake時にエラーが発生するようであれば必要なパッケージをインストールする Slackware系は??? さて、準備ができたところではじめましょう。 インストールの詳細は "インストール(qmail-1.03)"(http://www.jp.qmail.org/q103/jinstall/) をよく読みましょう。 インストールは root で作業を行います。 手順としては 0.ソースの展開 ↓ 1.インストールディレクトリの作成 ↓ 2.qmai ユーザー/グループの作成 ↓ 3.ソースの make ↓ 4.コントロールファイルの作成 ↓ 5.aliasファイルの作成 ↓ 6.Mailboxへの移行(既に他のMTAを運用の場合) ↓ 7.Maildirへの移行(クライアントからのpop接続) ↓ 8.qmailサーバーの起動スクリプトの作成(コピーするだけ) ↓ 9.qmailサーバー群の起動 ↓ 10.メール配送のテスト ↓ 11.sendmailからの置き換え(sendmailがインストールされていなくても!!) ↓ 12.他smtpサーバーとの接続 ↓ 13.クライアントからメール送信(smtp接続) ↓ 14.クライアントからのメール受信(pop接続) 15.クライアントからのメール受信(apop接続) 16.daemontoolsでログをとる 17.apop利用 vpopmailの場合 0.ソースの展開とパッチ qmailのソースを展開します。 (ここは通常ユーザーで行います。) $ cd ~/src $ tar zxfv ~/down/qmail-1.03.tar.gz $ tar zxfv ~/down/ucspi-tcp-0.88.tar.gz $ tar zxfv ~/down/checkpassword-0.81.tar.gz $ tar zxfv ~/down/checkpw-1.00.tar.gz <-- apopを利用する場合 $ cd qmail-1.03 $ patch -s -p1 < ~/patch/qmail-date-localtime.patch $ patch -s -p0 < ~/patch/qmail-smtpd-newline.patch <-- apopを利用する場合 $ patch -p1 < ../checkpw-1.00/qmail-popup-auth.patch $ su <--以降の作業は root で行います。 1.インストールディレクトリの作成 qmailをインストールするディレクトリを作成します。 通常は /var/qmail です。 # mkdir /var/qmail 2.qmai ユーザー/グループの作成 qmail用のユーザー/グループを作成します。 # groupadd nofiles # groupadd qmail # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails 3.ソースの make qmailの実行ファイルの作成とインストールを行います。 # cd ソースを展開したディレクトリ/qmail-1.03 # make setup check 4.コントロールファイルの作成 # ./config-fast your.full.host.name exp.) ホストが mail.hogehoge.co.jp ならば # ./config-fast mail.hogehoge.co.jp 5.aliasファイルの作成 alias ユーザーに対し、各種 .qmail ファイルを作成します。 qmail は ユーザーとして登録されていない宛先のメールに対しては ユーザー"alias"で処理されます。 基本的には以下の分を最低限設定します。 # cd ~alias / または cd /var/qmail/alias # touch .qmail-postmaster <-- postmaster です # touch .qmail-mailer-daemon <-- デーモンです # touch .qmail-root <-- root は特別 # chmod 644 .qmail* 6.Mailboxへの移行(既に他のMTAを運用の場合) 7.Maildirへの移行(クライアントからのpop接続) メール受け取り用のディレクトリー"Maildir"を作成します。 "Maildir"を作成しない場合メールは "Mailbox"に配送されます。 $ cd $ /var/qmail/bin/maildirmake Maildir $ echo ./Maildir/ > .qmail $ chmod 644 .qmail 送られてきたメールは "~/Maildir/new" に作成されます。 * "Maildir" は自動で作成されません。 ユーザーを追加する際に自動で "Maildir" を作成する場合は "/etc/skel" に "Maildir" / .qmail を作成して置きます。 ( linux の場合 ) # cd /etc/skel # /var/qmail/bin/maildirmake Maildir # echo ./Maildir/ > .qmail # chmod 644 .qmail 8.qmailサーバーの起動スクリプトの作成(コピーするだけ) # cp /var/qmail/boot/home /var/qmail/rc "/var/qmail/rc"が qmail の起動スクリプトとなります。 9.qmailサーバー群の起動 qmail は sendmail の様に 一つのプログラムではありません。 以下のコマンドで必要なサーバーが起動します。 # csh -cf '/var/qmail/rc &' 10.メール配送のテスト 11.sendmailからの置き換え(sendmailがインストールされていなくても!!) /etc/rc.d/rc.local に qmail 起動の設定を書きます。 csh -cf '/var/qmail/rc &' sendmail 前提のプログラムの為に "sendmail" wrapper を設定します。 # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail qmail-smtpd(smtpサーバー)を tcpserver で利用します。 12.他smtpサーバーとの接続 13.クライアントからメール送信(smtp接続) 14.クライアントからのメール受信(pop接続) 15.クライアントからのメール受信(apop接続) 16.daemontoolsでログをとる a. インストール 通常設定では qmail のログは syslog で処理されます。 daemontools を利用すると syslog を利用せずにログをとることが出来ます。 ログの記録には "multilog" を利用します。 (daemontoolsのバージョンでインストールの仕方が異なります。) $ tar zxfv daemontools-0.76.tar.gz $ cd daemontools-0.76 とりあえずログがとれればよいのでちょっとインストールは以下の 方法で行います。 $ package/compile $ su # cp command/* /usr/local/bin/. これで必要なコマンドが /usr/local/bin に入ります。 daemontools は名前から分かる様に デーモン用のツール群です。 daemontools を利用する事により 各種デーモンの 起動・終了などの管理が 行えます。 デーモン管理を行う場合は $ su # package/install で make から install まで 行えます。 ただし、これを行うと コマンド群は /command にインストールされますが その中身は ソースを展開したディレクトリーの command ディレクトリー内 にあるファイルのシンボリックリンクとなります。 ソースの展開先は良く考えましょう。 また、インストール後に ソースディレクトリーを削除してはいけません。 詳細は daemontools 付属のドキュメントを見てください。 b. ログをとる ログ用のディレクトリーを準備します。 # mkdir /var/log/qmail # mkdir /var/log/qmail/qmail # mkdir /var/log/qmail/pop # mkdir /var/log/qmail/smtp # chown -R qmaill /var/log/qmail # chmod 2700 /var/log/qmail/* qmail/pop/smtp それぞれで "multilog" を利用出来るようにします。 multilog オプション log-dir オプション t : タイムスタンプを TAI64N 形式にする ログを見るとき "tai64nlocal"コマンドでタイムスタンプを 変換する。 s数値 : ログのサイズ デフォルト 99999 n数値 : ログファイルの数 デフォルト 10 出力されるログファイルは 指定のディレクトリーに "current" という名前で作成されます。 exp.) /var/qmail/rc exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Mailbox splogger qmail ↓ exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Mailbox /usr/local/bin/multilog t s2000000 n20 /var/log/qmail/qmail 17.apop利用 vpopmailの場合 参考サイト Vpopmail FAQ http://qmail.visionmakers.net/vpopmail/faq.html apopの利用 ヴァーチャルドメインを使い易い(らしい) a. vpopmail用 ユーザーの作成 $ su # groupadd vchkpw # useradd -g vchkpw -d /usr/local/vpopmail -s /bin/false vpopmail b. ソースの展開 $ tar zxfv vpopmail-x.x.tar.gz $ cd vpopmail-x.x $ su <-- configure は root でなければ実行出来ないみたい # ./configure --enable-logging=p \ --enable-relay-clear-minutes=15 \ <-- POP Before SMTPでの時間(分) --enable-roaming-users=y \ <-- POP Before SMTP --enable-tcpserver-file=/etc/tcpserver/tcp.smtp \ <-- *1 tcpserver用のルールファイル --enable-default-domain=hogefuge.com \ <-- デフォルトのドメイン # make # make install-strip *1 tcpserver用のルールファイル ルールファイルは .cdb の元ファイルを指定