(初回) % hg clone https://www.gentei.org/~yuuji/software/imapext/imapext-2007/hgweb.cgi/imapext-2007 imapext-2007 (以後) % cd imapext-2007 % hg pull -u
(初回) % git clone https://www.yatex.org/gitbucket/git/yuuji/imapext.git (以後) % cd imapext % git pull
qmail(またはPostfix)+maildirで運用してて、いいPOPサーバないかなって思っ てる人。IMAPでもOK。
imap-2007(Washington大学版imap) 付属の IMAP/POP3(APOP) サーバに
を追加したものである。要するに、拡張アドレスの使えるメイルサーバの popperに必須の機能を全て盛り込んだパッケージである。
インストールの説明の前に、まず具体的にどんな嬉しいことができるように なるかを説明しておこう。
PINE4.0というパッケージにあったMaildirパッチ(by Mattias Larsson) をimap-2002で使えるようにした。ようするにメイルサーバ上で の個人スプールを安全確実な Maildir 形式にしている場合にも、 POP/IMAP取り込みができるようにした。
デフォルトのパッケージではAPOPパスワードをrootが管理する方式に なっている。これではいちいちrootが作業しなければならないし、root自 身は誰か一人のパスワードを直したりする作業によっていろんな人のメイ ルのパスワードが見えちゃったりして気分悪いし、一般ユーザの権限でパ スワード変更が出来ないし、出来るようにするために余計なsetuidプログ ラムが必要になったりする…なんてことが起きやすい。なので、このファ イル、別にroot所有にする必要ないじゃん。逆に、個人権限で持たせて自 分で管理させた方が適度なタイミングで変えてもらいやすい。ということ で、パスワードは自分のホーム(以下のどこか)に置くようにした。
qmailでは ~/.qmail-* というファイルで user-* という 拡張メイルアドレスを持つことができ、それをローカルの Maildir に入 れておけば複数のアドレスを複数のスプールで受けることができる。とこ ろが、付属のqmail-pop3dも上記の PINE用Maildir パッチも Maildir の ディレクトリ名は固定指定のもの一個しか見ることができないので、これ じゃqmail使ってる意味無し。
ということで、クライアントが指定して来たアカウント名を元に適切 な ~user/.qmail-* を調べてそこに書いてある Maildir をスプールとし て処理するようにした。これでPOPユーザも本当の意味でqmailによる任意 個数のアドレスを利用できるようになる。
また、MTAとしてPostfixを利用している場合も ~/.forward+* という ファイルで拡張メイルアドレスが持てるので、これがMaildirである場合 には取り込めるようにした。この場合、コンパイル変数 POSTFIX を定義 すれば良い(変数QMAILも同時に指定すること)。
さらにqmailでは /var/qmail/control/virtualdomains によって指定 したドメイン部を持つメイルを任意のユーザに振ることができる(詳しく はqmail-send(8)参照)。これをPOPやIMAPでも利用できるようにした。た だし、アカウント名として @ を含むものが指定できるMUAでないとうまく 行かない。PostPetやEudoraは×。mew-1.94(IM-130)は大丈夫。
MTAとしてPostfixを利用している場合も、 /var/qmail/control/virtualdomains ファイルにアドレス書き換え規則を 書いておき、それと同じ書き換えが起きるように virtual_maps を設定し ておけば virtualdomain アカウントでの取り込みが可能となる。
認証が成功したホストに対して次回のSMTPアクセスを許可するための hookを作成。詳細はパッケージ内の README.qmailapop ドキュメント参照。
パッケージを展開した最上位ディレクトリにある Makefile から利用してい
るシステムの記号を探し、makeに与える。
例:
% make bsf (FreeBSD/NetBSD) % make ln8 (Linux) % make gso (Solaris+gcc)
何も指定せずmakeした場合のデフォルト値は以下の通り。
機能 | デフォルト値 |
---|---|
生POP制限 | ON |
~/.qmailがないときのデフォルト Maildir | ~/Maildir |
ユーザのメイル専用パスワードファイル(のベース名) | ~/.apop |
パスワードファイルデコードプログラム | /usr/local/sbin/deapop |
POP before SMTPを仕掛けるコマンド (管理者が用意) |
/usr/local/etc/pop3-record |
これらのデフォルト値を変える場合は README.qmailapop を参照のこと。
APOPtools/ に POP before SMTP を動かすコマンドなどがあるので、 Makefile を確認してから make install。
以下の解説では、ユーザのデフォルトのメイルアドレスを user@dokoka.orgとし、~/.qmail には ./maildir/ と書いてある と仮定する。
まず、user-odekake@dokoka.org のアドレスを作成する。
% cd % /var/qmail/bin/maildirmake odekakedir % echo ./odekakedir/ > .qmail-odekake
実際にこのアドレスにメイルを出し、~/odekakedir/new/に メイルが配送されるかを確かめる。うまく配送されたら、このアドレス用 の取り込みパスワードを設定する。
% /usr/local/bin/apoppasswd -e odekake Enter Mail Passowrd: (9文字以上のパスワード) Again Mail Password: (もういちど同じものを入れる)
(デフォルトで)ホームディレクトリに~/.apop-odekakeとい うファイルができていたら取り込み準備は完了である。メイル取り込みに 使うメイラのアカウント名を user-odekake にして取り込んで みる。多分うまく行く。おしまい。
qmailでは1ユーザにメイルドメインをまるごと供与できる。これを利 用すると、MLをたくさん上げるとかPDA用の代表アドレスを設置するとか メイルアドレスをたくさん持ちたいときにすっきりとアドレスを管理でき て便利である。/var/qmail/control/virtualdomains に
job.dokoka.org:user-job .rec.dokoka.org:user-rec
と書いておくと
hoge@job.dokoka.org → user-job-hoge
hero@*.rec.dokoka.org → user-rec-hero
に配送されるようになる。IMAPやPOP(APOP)を使って取り込むときにも この変換が効くようになっているので、アカウント名にも @ を含む全メ イルアドレスを指定すれば良い。Mewの場合は、
% imget -s pop/APOP:hoge@job.dokka.org@popper.dokka.org
などのようにすれば良い。
これと同じ事を Postfix で行うには、virtual_maps を正規表現マッ プで指定すれば良い。上記の virtualdomains ファイルと同じ書き換えが 起こるようにするには、正規表現マップファイルに
/(.*)@.*\.rec\.dokka\.org/ user+rec+$1 /(.*)@job\.dokka\.org/ user+job+$1
のように書いておけば良い。
UW-IMAPDの開発元では Maildirをサポートする気はないらしいので、このてんこもり拡張パックは 細々とパッチ作成の形でやっていくしかないもやう。動作報告などの情報が喉 から手が出る程欲しいのでMLを作成した。
To: imapext@ml.gentei.org Subject: subscribe -- (5行以上の自己紹介)
という形式でメイルを送ると登録されるらしい。利用者からの報告がほとんどな くて困っている状況なので、もしこのパッケージを使っているのでしたら人助け だと思って入ってやって下さいなり。宜しくお願いしまする。