qmail+vpopmail

  メールサーバの種類には、SMTP(Simple Mail Transfer Protocol)、POP(Post Office Protocol)、IMAP(Internet Message Access Protocol)、APOP(Authenticated Post Office Protocol)のようなプロトコルがある。現在最も一般的に使われているのがSMTP(メール送信サーバ)とPOP3(メール受信サーバ)で、今回はこの2つのメールサーバを構築する。  有名なSMTPサーバではSendMail, Postfix, Qmailなどが挙げられる。SendMailは最も標準的に使われているが、セキュリティホールがよく見つかることでも有名である。このセキュリティホールを改善し、SendMailと互換性のあるものがPostfix。Qmailは動作が高速でセキュリティにも優れているが、他のアプリケーションと比べてインストールが難しい点がある。それぞれのアプリケーションに長所短所があるが、今回はQmailのインストール方法を紹介する。  POPサーバは、Qmailを使った場合は通常CHECKPASSWORDというツールで、Unixのログイン名とパスワードを利用してメールを受信するのが一般的であるが、今回はVpopmailというサーバを使用する。これはバーチャルホストでメールが扱える優れたサーバである。ユーザの追加もUnixのログインユーザとは別に作られるため、CHECKPASSWORDよりもはるかに自由度が大きい。  なお、メールサーバをインストールするにはDNSが正しく動作していなくてはいけないため、先にDNSを構築する必要がある。

Qmail : http://www.qmail.org/
Vpopmail: http://inter7.com/vpopmail/
DefaultPort : 25 (smtp) / 110 (pop3)

Qmail

1)インストールを行う前に、sendmailがすでに動いていないか確認をし、動いていれば停止させる。

# service sendmail stop
# chkconfig --del sendmail

2)qmailの実行に必要なユーザ・グループを作成する。

# groupadd -g 80 nofiles
# groupadd -g 84 qmail
# mkdir /var/qmail
# useradd -u 80 -g nofiles -d /var/qmail/alias -s /sbin/nologin alias
# useradd -u 81 -g nofiles -d /var/qmail -s /sbin/nologin qmaild
# useradd -u 82 -g nofiles -d /var/qmail -s /sbin/nologin qmaill
# useradd -u 83 -g nofiles -d /var/qmail -s /sbin/nologin qmailp
# useradd -u 84 -g qmail -d /var/qmail -s /sbin/nologin qmailq
# useradd -u 85 -g qmail -d /var/qmail -s /sbin/nologin qmailr
# useradd -u 86 -g qmail -d /var/qmail -s /sbin/nologin qmails

3)qmailのアーカイブを展開し、時刻をローカルタイム(JST)に合わせるためのパッチを当てる。

# cd /usr/local/src/
# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03/
# gunzip qmail-date-localtime.patch.gz
# patch -p1 < qmail-date-localtime.patch

4)MXレコードの入っているDNSサーバが正常に動いていることを確認し、インストールを行う。

# make setup
# make check
# ./config

DNSの関係でもしconfigスクリプトでエラーが出た場合、以下のようにドメイン名を指定してconfigすることもできる。ここではドメイン名を「mydomain.ne.jp」としている。

# ./config-fast mydomain.ne.jp

5)qmailの設定ファイルを書き換える。設定ファイルは「/var/qmail/control/」以下に格納されている。以下に設定ファイルの説明を記す。

defaultdomain

toヘッダ等にドメインが省略された場合、補完させるドメイン名。通常ドメイン名(mydomain.ne.jp)を入れる。

locals

qmail-sendが利用する。メールを受信するホスト名/ドメイン名。「localhost」やメールサーバ名、ドメイン名などを入れる。

rcpthosts

qmail-smtpdが利用する。メールを受信するホスト名/ドメイン名。通常はlocalsと同じものを入れておく。

me

自サーバのFQDN。メールサーバ名(mail.mydomain.ne.jp)を入れる。

plusdomain

メールアドレスのドメイン部が+で終わっている場合に付加される名前。ドメイン名を入れておけばよい。

6)転送先メールアドレスの設定を行う。postmaster, root, mailer-daemon宛てのメールは、すべて/var/qmail/alias以下に格納されるようにする。

# cd /var/qmail/alias/
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*

7)元からインストールされているsendmailプログラムをqmail用のプログラムに置き換える。

# mv /usr/sbin/sendmail /usr/sbin/sendmail.org
# chmod a-x /usr/sbin/sendmail.org
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.org
# chmod a-x /usr/lib/sendmail.org
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

8)Qmailの起動スクリプトを編集する。Qmailのメールファイルはデフォルトで複数のメールを1つのファイルとして保存する(Mailbox形式)が、これを1メール1ファイルとして保存させる(Maildir形式)ように変更する。

# cp /var/qmail/boot/home /var/qmail/rc
# vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail

9)メール格納用ディレクトリを作成する。メールを扱うすべてのUnixユーザのホームディレクトリ内に作成する必要がある。また今後新たにユーザを作成したとき、ホームディレクトリ内に自動的に作成されるよう、「/etc/skel」内にも作成しておく。

# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias:nofiles ~alias/Maildir/
# echo ./Maildir/ > ~alias/.qmail
# chown alias:nofiles ~alias/.qmail
# /var/qmail/bin/maildirmake ~user/Maildir(ユーザ名user/グループ名group)
# chown -R user:group ~user/Maildir/
# echo ./Maildir/ > ~user/.qmail
# chown user:group ~user/.qmail
# /var/qmail/bin/maildirmake /etc/skel/Maildir
# echo ./Maildir/ > /etc/skel/.qmail

10)Qmailを実行する。その後Maildirを作成したユーザ宛てにメールを送信し、「~user/Maildir/new/」にファイルができていることを確認する。

# /var/qmail/rc &
# chmod 700 /var/qmail/rc
# echo to:user | /var/qmail/bin/qmail-inject
# ls ~user/Maildir/new/

TCPSERVER

1)解凍してインストールする。

# cd /usr/local/src/
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88/
# make setup check

2)cdbの設定を行う。以下は「192.168.0.*」および「127.*.*.*」からのメール送信は環境変数RELAYCLIENT=""を設定する。この環境変数が設定されているホストでは「/var/qmail/control/rcpthosts」の設定は無効化される。

# cd /var/qmail/control/
# vi tcp.smtp
   192.168.0.:allow,RELAYCLIENT=""
   127.:allow,RELAYCLIENT=""
   :allow
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

3)QmailをTCPSERVER経由で起動する。

# tcpserver -u qmaild -g nofiles -x /var/qmail/control/tcp.smtp.cdb 0 25 \
/var/qmail/bin/qmail-smtpd &

※遅い場合は、-RHをつけることで速くなる場合があるので試してみるとよい。

CHECKPASSWORD

1)checkpasswordをインストール。これを利用することで、Unixログイン時のパスワードをメール受信時のパスワードとして設定することができる。ここでは実行ファイルのインストール先を「/usr/local/bin/checkpassword」としているが、「/bin/checkpassword」でよい場合は「conf-home」を書き換える必要はない。

# cd /usr/local/src/
# tar zxvf checkpassword-0.90.tar.gz
# cd checkpassword-0.90/
# vi conf-home/usr/local
# make
# make setup check

2)SPAMの踏み台にされないように、POPbeforeSMTPをインストールする。

# cd ..
# tar zxvf pbs4q-0.0.4.tar.gz
# cd pbs4q/
# make
# make install
# chown qmaild:nofiles /var/pbs4q/ip/

3)POPサーバをtcpserverで起動する。その後テストメールを送信した後、telnetでPOPサーバに接続し、ユーザ名とパスワードを指定して「OK」と出ることを確認し、メールが受信できることを確認する。

# tcpserver 0 110 /var/qmail/bin/qmail-popup mail.mydomain.ne.jp \
/usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
# telnet localhost 110
   USER user (ユーザ名「user」)
   PASS pass (パスワード「pass」)
   STAT (メール数、バイト数を表示)
   LIST (メールサイズを得る)
   RETR 1 (1番目のメッセージを読む)
   DELE 1 (1番目のメッセージを削除)
   QUIT (切断)

※オプション-RHをつけると速くなる場合がある。

VPOPMAIL

1)vpopmailのインストール前に、vpopmailを使うのに必要なユーザとグループを追加する。また110番ポートが起動している場合は終了させる。

# groupadd -g 89 vchkpw
# useradd -u 89 -g vchkpw -d /home/vpopmail -s /bin/bash vpopmail
# kill (プロセス番号)

2)vpopmailのインストール。アーカイブを解凍し、コンパイルする。

# cd ../
# tar zxvf vpopmail-5.2.1.tar.gz
# cd vpopmail-5.2.1/
# ./configure --enable-roaming-users=y
# make
# make install-strip

3)tcpserverで110番ポートを起動する。上のcheckpasswordの部分をvchkpwに変えて実行する。

# tcpserver 0 110 /var/qmail/bin/qmail-popup mail.mydomain.ne.jp \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

※サーバまでの接続が遅ければ、-RHをつけてみる。

4)正常に起動したら、ドメインとユーザを作成する。ドメインを作成すると自動的にそのドメインのユーザpostmasterが作成される。作成時にはPOP認証で利用するパスワードを2回入力する。以下の例では「postmaster@mydomain.ne.jp」と「user@mydomain.ne.jp」というユーザが作成される。

# /home/vpopmail/bin/vadddomain mydomain.ne.jp
# /home/vpopmail/bin/vadduser user@mydomain.ne.jp

5)作成したユーザのメールディレクトリは「/home/vpopmail/domains/ドメイン名/ユーザ名/Maildir/」にあるので、テストメールを送信して正しく送受信できることを確認する。ユーザ名は「user@mydomain.ne.jp」または「user%mydomain.ne.jp」となるので注意する。

# echo to:user@mydomain.ne.jp | /var/qmail/bin/qmail-inject
# telnet localhost 110
   USER user@mydomain.ne.jp
   PASS pass
   STAT
   LIST
   RETR 1
   DELE 1
   QUIT

※サーバまでの接続が遅ければ、-RHをつけてみる。

4)正常に起動したら、ドメインとユーザを作成する。ドメインを作成すると自動的にそのドメインのユーザpostmasterが作成される。作成時にはPOP認証で利用するパスワードを2回入力する。以下の例では「postmaster@mydomain.ne.jp」と「user@mydomain.ne.jp」というユーザが作成される。

6)必要に応じて自動起動の設定を行う。起動させるべきコマンドは3つ。まずコピーしたスクリプトを実行、その後tcpservでSMTPとPOPサーバを起動させる。(自動起動スクリプト

TOP OF PAGE