qmailでPOP(POP/APOP)とPOPによるバーチャルホストを 使えるようにする / fmlの受けとりをsendmailで配送をqmailで行う / あらきのtopへ
qmailでAPOP/POPを使う。ここでは vchkpwを使った場合を書く。

平成11年3月9日(火) 第1版

3/17 大原さんから USER user.virtualhost とすれば? というsuggestionをもらう

Index

  1. POPとAPOP
  2. 設定
    1. インストール
    2. POPユーザの追加
    3. パスワードの変更
    4. APOPとPOPのつかいわけ設定
バーチャルドメインをPOPで行う場合と、この実装でのバーチャルドメインの注意点:

POPとAPOP

POP

メールサーバの構築にqmailを使う、まあこれは当然として メールサーバとクライアントの通信を考えなければなりません。 IMAPも悪い選択ではありませんが、オーバースペックですし、 IMAPを積極的に使うにはサーバに相応の資源が必要です。

サーバがクライアントのメールの世話をする必要がないのなら、 POPを扱えるだけでよいでしょう。

POPには

  1. パスワード認証のPOP
  2. r認証のRPOP
  3. OTPを用いるAPOP
がありますが、RPOPに関してはr系のアプリケーションに共通の 問題があり、RFCからも削除されるなど現在ではほとんど使われません。 そのためPOPとAPOPを使えるサーバを構築する必要があります。 RFCではPOPかAPOPが扱えることがMUSTとなっています。

APOP

さて、APOPです。これはメッセージダイジェスト関数 MD5 を用いて 使い捨てパスワードを作成し認証を行います。 一方、POPは生の(平文の)パスワードで認証を行うため、 APOPがセキュリティ的に優れているといえます。

ただし利用にあたっては、当然APOPに対応しているクライアントで なければなりません。


設定

qmailとくみあわせてAPOPを使うようにする方法は多数ありますが、
  1. Maildirをつかえる
  2. POPとAPOPを共存できる
  3. メールのみのユーザ(loginできないがメールの送受信はする)がおける
  4. バーチャルホスト対応
ということになると、vchkpwを除いて他にはありません。

インストール

さて、まず vchkpw-3.1.2-dist.tar.gzを 入手しましょう。

展開したら、

# setup go
でうまくいく場合もありますが、その前に下準備をします。
Makefile
srcの下のMakefileを適当にいじります。FreeBSD(2.2.6)では コメントにあるものの他に、 以下のような設定が必要になりました。
ADMIN=-DADMIN=\"postmaster@hiroba.org\"
LIBS=-lcrypt 
LD=gcc -s $(LIBS)
setup
setup(シェルスクリプト)もおかしかったです。
grep "^$VPOPGRP\:\:[0-9]*\:" /etc/group > /dev/null 2>&1
grep "^$VPOPGRP\:\*\:[0-9]*\:" /etc/group > /dev/null 2>&1
に変更します。
userとgroup
groupがvchkpwに含まれるユーザ、"vpopmail" をつくります。 これは、useraddでもvipwでもいいのでつくっちゃいます。 この時、loginできないようなshellにしましょう。
さて、ここまでやったら、
./setup go
です。

POPユーザの追加

さて、次に実際にPOPを使えるユーザをつくりましょう。 POPユーザを追加するには、vadduserコマンドを使います。
vadduser <username>
が使用法です。 例えば、
./vadduser hoge
とすると、/home/vpopmail/users/hoge がつくられ、その下にMaildirが 作成されます。

これで追加されました。ここにメールを配送するためには、 2つのステップを踏みます。

users/assign
quessというユーザをつくっているなら
=quess:quess:2001:1003:/home/vpopmail/users/quess:::
.
のように記述します。3番目と4番目はvpopmailのUIDとvchkpwのGIDです。 変更したあと、/var/qmail/bin/qmail-newu を行うのを忘れないように。
/home/vpopmail/users/quess/.qmail
ここにはMaildirに配送されるように、
./Maildir/
とだけ記述します。

パスワードの変更

 vpasswd <username>
になります。ユーザを消去するには、そのエントリとMaildirを消すだけです。

APOPとPOPのつかいわけ設定

リアルユーザ(シェルアカウントのあるユーザ)の場合
APOPの設定は /etc/apop-secrets に書きます。
obuchi:Watashihasouri
を加えれば、ユーザ==obuchi、パスワード==Watashihasouri のAPOP設定は おしまいです。
POPユーザ
UIDを入れる位置に0,1,2の数字がはいります。 1はPOP認証、2はAPOP、0はAPOPを試して駄目ならPOPです。 何もないときは0と同じ。
chris:pinkfloyd:2:::/home/popusers/domains/home.araki.net/chris:NOLOGIN
chris:pinkfloyd:0:::/home/popusers/domains/home.araki.net/chris:NOLOGIN
chris:Th5gh36YhsvHG:1:::/home/popusers/domains/home.araki.net/chris:NOLOGIN
chris:Th5gh36YhsvHG::::/home/popusers/domains/home.araki.net/chris:NOLOGIN
ということであれば、 上から順に、APOP、両方、POP、両方で認証をします。


バーチャルドメイン

この実装でのバーチャルドメインの注意点:

POP認証時に

USER hoge@virtual.host
         ^^^^^^^^^^^^^ホスト部がはいる
のようにユーザ名@ホスト部がはいるようなpopperでなければならない。 この方法はPOP3を規定するRFCであるRFC1939では定義されておらず、 使用できる実装は限られているだろう。

さて、大原@コニカさん情報では、

USER hoge.virtual.host
という書き方を許容するとよいのでは? というsuggestionをいただきました。 実際にそういうISPがあるらしい(不勉強でした) あとで調べてみることにする。

IMで使うなら、IM/Pop.pmを

        $resp = &send_command(\*POPd, "USER $user", '');
から
        $resp = &send_command(\*POPd, "USER $user\@$host", '');
にする必要がある。

RFC1939より

 USER name

         Arguments:
             a string identifying a mailbox (required), which is of
             significance ONLY to the server

たとえば、home.araki.net宛てのメールを受けるなら
  1. control/rcpthosts に home.araki.net を加える
  2. control/virtualdomains に home.araki.net:home.araki.net を加える
とすると hoge@home.araki.netにきたメールは home.araki.net-hoge@hiroba.orgあてのメールに書きかえられる。

そこで、users/assignに次のような行を加える

+home.araki.net-:araki:2001:1003:/home/vpopmail/domains/home.araki.net:-::
.
最後の.(ピリオド)は重要なので忘れないこと。 ここまでやったら、
/var/qmail/bin/qmail-newu 
をして反映させます。

実際に /home/vpopmail/domains/home.araki.net を作成します。


ユーザの追加

POPユーザを追加するには、vadduserコマンドを使います。
vadduser <username>@<domain>
が使用法です。 例えば、
./vadduser hoge@home.araki.net

Adding POP user quess...
Enter new POP password: 
Enter new POP password again: 
    Putting entry into vpasswd...
    Creating /home/vpopmail/domains/home.araki.net/hoge...
    Creating Maildir...
Okay - added hoge@home.araki.net to POP system