imapext-2007

view README.qmailapop @ 4:d741b3ecc917

imapext-2007f
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 30 Oct 2014 00:03:05 +0900
parents 28a55bc1110c
children
line source
1 //
2 // qmail+maildir+apop+virtualdomain+POPbeforeSMTP extensions to uw-imapd
3 // Japanese Document below
4 //
6 [Comentary]
7 This patch kit enables uw-imapd to handle;
8 * maildir
9 * qmail's extended mail addresses of user (~/.qmail-ext)
10 * Postfix's extended mail addresses of user (~/.forward+ext)
11 * Accesses to extended mail addresses (authenticated with ~/.apop-ext)
12 * Virtual domain user switching
14 Because this package is produced those who want to avail all features above,
15 we recommend you to turn on all switches for every extension.
16 Please let me recommend you not to use plain POP3 with this package.
17 If you want to cling onto POP3, please use qmail-pop3d which comes with
18 qmail distribution.
20 [Configuration]
21 You can select these compilation switches.
23 Where: ./Makefile
24 Switch: QMAIL
25 What: Support maildir and user's address extension.
26 This switch is requisite.
28 Where: ./Makefile
29 Switch: INET6
30 What: Support IPv6 address
31 WORKS fine only via ucspi-tcp+ipv6patch
32 If you are using tcpserver-ipv6, set this.
34 Where: ./Makefile
35 Switch: POSTFIX
36 What: Defaults user address file to ~/.forward and
37 extension delimiter to "+".
38 Setting this flag on is equavalent to declare
39 -DQMAIL -DDOTQMAIL=".forward" -DXADDR_DELIM="+"
40 in ./Makefile.
42 Where: ./Makefile
43 Switch: RESTRICT_POP
44 What: Restrict POP3 access from unsafe network. Allow
45 normal pop3 access only when environment variable
46 INTRANET is set. This can be controled by tcpd with
47 /etc/hosts.allow.
49 Where: ./src/osdep/unix/Makefile
50 Switch: DEFAULTMAILDIR (quoted string)
51 What: Default users' maildir directory when a user does not
52 have ~/.qmail file.
53 The default value is null. If null, the default value in
54 osdep/unix/maildir.c("Maildir") will be taken.
56 Where: ./src/osdep/unix/Makefile
57 Switch: QMAILCONTROL (quoted string)
58 What: Default qmail/control directory.
59 The default value is "/var/qmail/control"
61 Where: ./src/osdep/unix/Makefile
62 Switch: USERAPOPFILE (string)
63 What: User's APOP password file relative to their home dir.
64 ".apop" is set by default.
65 One of recommended values is "Mail/.apop".
66 NOTE THAT USERAPOPFILE should NOT be readable by others.
67 Do chmod 600 USERAPOPFILE.
69 Where: ./src/osdep/unix/Makefile
70 Switch: APOPOPEN (string)
71 What: Command name to decode APOP password from USERAPOPFILE
72 "/usr/local/sbin/deapop" is set by default.
73 NOTE THAT you should install deapop command too.
74 If you don't want to think about this,
75 install the following shell script into /usr/local/sbin/deapop
77 #!/bin/sh
78 cat "$@"
80 Where: ./src/osdep/unix/Makefile
81 Switch: POPBEFORESMTP
82 What: Turn on `POP before SMTP' feature.
83 The next variable POP3RECORDER takes effect when
84 this variable is defined.
86 Where: ./src/osdep/unix/Makefile
87 Switch: POP3RECORDER (string)
88 What: Command name to achieve `POP before SMTP'.
89 "/usr/local/etc/pop3-record" is set by default.
90 This recorder program should take one argument of
91 fully qualified hostname (or IP address) where the POP
92 authentication is passed to.
94 [NO WARRANTY]
96 This package comes from absolutely NO WARRANTY. The author of
97 this package is not responsible for any result caused by using
98 this software. The copyright of the extension part is held by
99 HIROSE, Yuuji [yuuji@gentei.org].
101 [COPYING]
103 You can re-distribute this package without any cost except some
104 practical cost(magnetical media or so). Although this package
105 basically obeys the license terms in a file CPYRIGHT in this
106 directory, there is one exception; when you modify the code
107 against the extensional part (over uw-imapd) and that
108 modification is a kind of bug-fix, modification should be telled
109 to the author of extensional part if you are thinking of
110 re-distribute your modification to the public. This limitation
111 is to aim to make this extensional package reasonably safe
112 always in any time. Please feel free to hack and distribute it!
115 -- Japanese document follows...
117 【qmail+maildir+APOP用POPサーバ】
119 このimapパッケージは、qmailとIMAPを組み合わせて使うこと *ではな
120 く* qmail+maildir+APOPを柔軟に利用しようということを目的として作
121 られましたのでIMAPでのテストは十分に行なわれていません。このパッ
122 ケージは以下のような方を満足させるでしょう。
124 * qmailを利用している
125 * mail spool には安全性の高い Maildir 形式を利用し(させ)ている
126 * ~/.qmail-ext ファイルによるqmailの拡張アドレスをよく利用している
127 * virtual domain を活用しまくっている
129 上記のようなことができるqmailですが、この機能を使いこなすために
130 はUNIXマシンにログインしてローカルファイルを見に行くメイルリーダ
131 を使うという方法しかありませんでした。これでは不便なので、上記の
132 使い分けを認識するPOPサーバを作ろうということで作成したのがこの
133 パッケージです。またPOPのみのサーバ利用が多い昨今、リモートから
134 の認証にログインパスワードを使わずにメイル専用パスワードを利用さ
135 せる変更も行なっています。これによりPOPもAPOP(POPのパスワード認
136 証の暗号化版)も共通のパスワードを利用できるようにしました。また、
137 POP の場合は既存ユーザのパスワード管理を考えて、認証時にUNIXパス
138 ワードも参照するようにしています。
140 もう一点、POPはパスワードをプレインテキストで流すため、外部ネッ
141 トワークからの利用は危険です。そこでPOPの利用を一部のネットワー
142 クに限定する機能もつけました(tcp_wrappersやtcpserverが必要)。
144 【インストール】
146 デフォルト設定では
148 * POP3は拒否する
149 * ユーザのパスワード設定ファイルは ~/.apop
150 * ~/.apop のデコードプログラムは /usr/local/sbin/deapop
152 となっています。APOP認証はサーバ側で必ず元のパスワードを知る必要
153 があります。これまでのAPOPサーバは全てのユーザ毎に管理者権限でパ
154 スワードを設定する必要がありました。一見安全そうですが、じつはユー
155 ザがパスワードを変更する頻度を限りなくゼロに近づけているだけです。
156 そもそもAPOPはサーバ側で元パスワードを取得する必要があるので必ず
157 復元可能な形で保存されなければなりません。ということはどんなに凝っ
158 た方法で保存しても結局は復号できるのですから、複雑な方法で暗号化
159 &格納をすることは手間を増やすだけです。いずれにしてもroot権限さ
160 えあれば元のパスワードは簡単に読めるわけですから、最初からユーザ
161 自身にパスワード管理をさせてしまっても何ら問題は無く、むしろその
162 方がパスワードをこまめに変えてくれる可能性が(ちょりっと)上がりま
163 す。ただし、誰にでもパスワードが読めては困るので、パスワードファ
164 イルを chmod 600 しておかないとメイルの取り込みが出来ないように
165 なっています。またどうしても平文でファイルに保存するのだけはいや
166 だーという場合のために、APOPパスワードファイルは
167 /usr/local/sbin/deapop というコマンドを経由して読み込むようになっ
168 ています。これにデコードする処理を書いておきます。もし、とくにエ
169 ンコードしなくてもいいという場合は
171 #!/bin/sh
172 cat "$@"
174 というシェルスクリプトでも入れておいてください。このパスワードは
175 ログインパスワードとは独立しているのでこれで大きな問題は起こらな
176 いでしょう(責任は持ちませんが:-)。
178 コンパイル時の変数は上記英文解説の場所を読んでください。
180 【ユーザから見た使い方】
182 まず、~/.qmail に正しくmaildirが設定されていることを確認します。
183 maildirをまだ作っていない場合は、
185 % /var/qmail/bin/maildirmake ~/maildir
187 とし、~/.qmail に
189 ./maildir/
191 と書きます。またメイル専用パスワードを ~/.apop に記録します。
192 これは apoppasswd コマンドで行ないます。
194 % apoppasswd
196 これで完了です。apoppasswdコマンドは APOPtools/apoppasswd にある
197 ので管理者がサイトの環境に手直しした上で一般ユーザのPATHの通る場
198 所にインストールして使って下さい。
200 さて、拡張アドレスを使いましょう。ログイン名を login とします。
201 login-isogi@hogehoge.co.jp のようなアドレスは ~/.qmail-isogi とい
202 うファイルで作成できます。login-isogi 用のmaildirを作ります。
204 % /var/qmail/bin/maildirmake ~/isogidir
206 これを ~/.qmail-isogi に登録します。
208 ./isogidir/
210 最後に login-isogi 用のパスワードを設定します。
212 % apoppasswd -e isogi -c
213 Enter APOP Password:
215 とすると、maildirの作成とパスワードの設定が同時に行えます。
216 maildirとパスワードの作成が完了したら、利用してるメイルリーダの
217 APOP アカウントの「アカウント名」をlogin-isogi にして接続します。
219 【POP before SMTPについて】
221 まず tcp_wrappers を利用している場合について説明します。
222 tcpserverを利用する場合も原理は同じなので仕組みだけ理解してくだ
223 さい。
225 tcp_wrapperとtcp-envを組み合わせてSMTPサーバを中継用に使うドメイ
226 ンを限定して使っていると思います。これの発展形でPOP接続して来た
227 ドメインだけにSMTPサーバを使わせる手法のことを "POP before SMTP"
228 と呼びます。このパッケージでも APOP 接続をしたドメインに対して
229 SMTPの中継許可を与えることが出来ます。本パッケージの ./APOPtools
230 ディレクトリにある pop3-* を /usr/local/etc にインストールします。
231 3つのファイルの実体は同じです。さらに以下の作業をします。
233 * 原本となる /etc/hosts.allow を /etc/hosts.allow.src にコピー
234 * crontab で10分毎に /usr/local/etc/pop3-age を起動させる
236 後者は、大抵のOSの場合 root の crontab に
238 */10 * * * * root /usr/local/etc/pop3-age
240 などと書けば設定できます。pop3-* スクリプトは自身の環境に合わせ
241 て適宜修正して下さい。この段階で、tcp_wrapper の定義ファイルは
242 /etc/hosts.allow.src が大元で、/etc/hosts.allow はcronによって自
243 動生成されるものとなります。hosts.allowをいじっても自動的に上書
244 きされてしまうので、設定を変えるときは *必ず hosts.allow.src を
245 編集する* ことに注意して下さい。
247 さらにipop3dを起動するときに接続してきたホストが環境変数
248 RELAYCLIENT に入るようにしておきます。/etc/inetd.conf でipop3dを
249 起動するときに tcp_wrapper 経由となることを確認します。
251 [/etc/inetd.conf]
252 pop3 stream tcp nowait root /usr/libexec/tcpd /usr/libexec/ipop3d
254 1999年頃以降のPC-UNIXではinetdにデフォルトでtcpdが組み込まれてい
255 ることが多いので、inetd.confにtcpdははさまなくて良いこともありま
256 す。続いて /etc/hosts.allow.src で環境変数の設定が起きるようにし
257 ます。
259 [/etc/hosts.allow.src]
260 ipop3d : all : setenv RELAYCLIENT %h
262 これで POPサービスを利用しに来たクライアントのアドレスが環境変数
263 に入ります。
265 tcpserverの場合は、付属の pop3-record スクリプトの後半に例がある
266 のでそれを利用してください。
268 なお、tcp_wrappers 用の pop3-age スクリプトは負荷の高いマシンで
269 は hosts.allow ファイルが空になる可能性があります。lockすれば多
270 少ましになるでしょうが完ぺきではありません。もし、hosts.allowの
271 書き換えに失敗するような負荷の高い環境で使う場合は tcp_wrappers
272 ではなく、tcpserverでのアクセス制御をすることを強く勧めます。こ
273 ちらはロックの必要もなく、安全にアクセス制御ファイルの更新ができ
274 ます。
276 【POPアクセス制御について】
278 POP3とAPOPは同じポートを使うので「外部からはAPOPだけ許す」などの
279 制御はルータやtcp_wrappersなどだけではできません。このipop3dでは、
280 生のPOP3は環境変数INTRANETが定義されているときだけに利用を制限す
281 ることができます。tcp_wrappers の例を示します。
283 ipop3d : localhost .localnet.hoge.jp \
284 : setenv INTRANET : setenv RELAYCLIENT %h
285 ipop3d : all : setenv RELAYCLIENT %h
287 としておけば、ローカルネットワーク内だけで生POP3を使うことができ
288 ます。
290 【virtualdomain機能について】
292 qmailでは /var/qmail/control/virtualdomains を使うことで、ユーザ
293 が任意のメイルドメインを持つことができます。これを解釈するように
294 しました。/var/qmail/control/virtualdomain ファイルで
296 virtual.hoge.co.jp:user1
297 dokan.hoge.co.jp:user2-dokan
299 としておくと、XX@virtual.hoge.co.jp は ~user1/.qmail-XX に配送さ
300 れ、YY@dokan.hoge.co.jp は ~user2/.qmail-dokan-YY に配送されます。
301 それがMaildirスプールを含む場合、本パッケージのIMAP/POPで取り込
302 むことができます。デフォルトではこのためのパスワードはそれぞれ
304 ~user1/.apop-XX
305 ~user2/.apop-dokan-YY
307 ファイルに保存しておかなければなりません。
309 【Postfixの拡張アドレス対応について】
311 Postfixによる ~/.forward+ext で発生する拡張アドレスは、その配送
312 先がMaildirであれば本パッケージでも利用できます。Postfix のデフォ
313 ルト設定の
314 forward_path = $home/.forward$recipient_delimiter$extension,
315 $home/.forward
316 recipient_delimiter = +
318 のまま Postfix を動かしている場合はトップレベルのMakefileの
319 EXTRACFLAGS に -DPOSTFIX を追加して下さい(-DQMAILも必要です)。こ
320 れにより、拡張アドレスを決めるファイルが ".forward" に、拡張部分
321 を区切る文字列が "+" になります。いずれかを変更している場合はた
322 とえば、
324 -DDOTQMAIL=".postfix" -DXADDR_DELIM="-"
326 のように変更できます。もし、Postfix の .forward+ext を利用する場
327 合は周辺ツールの APOPtools/apoppasswd, APOPtools/apopcall.c の対
328 応する変数も変更する必要があることに注意して下さい。また、パスワー
329 ドファイルも ~/.apop-ext ではなく~ /.apop+ext となることに注意が
330 必要です。これらが面倒な場合は、Postfix の設定の方で .qmail-ext
331 を見るようにしてしまうのも手です。この場合は
333 recipient_delimiter = -
334 forward_path = $home/.forward$recipient_delimiter$extension,
335 $home/.qmail$recipient_delimiter$extension,
336 $home/.forward
338 とすると ~/.qmail-ext も参照するようになり、デフォルト状態の本パッ
339 ケージのまま利用することができるでしょう。
341 【Postfixの POP before SMTPについて】
343 main.cf で たとえば次のようにします。
345 smtpd_recipient_restrictions =
346 permit_mynetworks
347 check_client_access hash:/etc/postfix/client_access
349 ここで /etc/postfix/client_access は POP before SMTP の許可ホス
350 トリストを保持するためのファイル名で、既に使われてはいないものに
351 します。配布ディレクトリの APOPtools/pop3-record.postfix は
352 /etc/postfix/client_access ファイルをリレー許可判定に使うことを
353 前提とした Postfix 用のスクリプトです。
355 【謝辞】
357 安井卓さん(tach@debian.or.jp)にはsyslog関係のパッチを頂きました。
358 ここに感謝の意を表します。
360 【免責】
362 IMAPパッケージに本ドキュメントで説明した拡張機能を追加する部分の
363 著作権は広瀬雄二[yuuji@gentei.org]が保持します。このプログラムを
364 用いて生じた如何なる結果に対しても著作権者は責任を負いません。
366 2009/9/14 yuuji@gentei.org
367 //
368 // qmail+maildir+apop+virtualdomain+POPbeforeSMTP extensions to uw-imapd
369 // Japanese Document below
370 //
372 [Comentary]
373 This patch kit enables uw-imapd to handle;
374 * maildir
375 * qmail's extended mail addresses of user (~/.qmail-ext)
376 * Postfix's extended mail addresses of user (~/.forward+ext)
377 * Accesses to extended mail addresses (authenticated with ~/.apop-ext)
378 * Virtual domain user switching
380 Because this package is produced those who want to avail all features above,
381 we recommend you to turn on all switches for every extension.
382 Please let me recommend you not to use plain POP3 with this package.
383 If you want to cling onto POP3, please use qmail-pop3d which comes with
384 qmail distribution.
386 [Configuration]
387 You can select these compilation switches.
389 Where: ./Makefile
390 Switch: QMAIL
391 What: Support maildir and user's address extension.
392 This switch is requisite.
394 Where: ./Makefile
395 Switch: INET6
396 What: Support IPv6 address
397 WORKS fine only via ucspi-tcp+ipv6patch
398 If you are using tcpserver-ipv6, set this.
400 Where: ./Makefile
401 Switch: POSTFIX
402 What: Defaults user address file to ~/.forward and
403 extension delimiter to "+".
404 Setting this flag on is equavalent to declare
405 -DQMAIL -DDOTQMAIL=".forward" -DXADDR_DELIM="+"
406 in ./Makefile.
408 Where: ./Makefile
409 Switch: RESTRICT_POP
410 What: Restrict POP3 access from unsafe network. Allow
411 normal pop3 access only when environment variable
412 INTRANET is set. This can be controled by tcpd with
413 /etc/hosts.allow.
415 Where: ./src/osdep/unix/Makefile
416 Switch: DEFAULTMAILDIR (quoted string)
417 What: Default users' maildir directory when a user does not
418 have ~/.qmail file.
419 The default value is null. If null, the default value in
420 osdep/unix/maildir.c("Maildir") will be taken.
422 Where: ./src/osdep/unix/Makefile
423 Switch: QMAILCONTROL (quoted string)
424 What: Default qmail/control directory.
425 The default value is "/var/qmail/control"
427 Where: ./src/osdep/unix/Makefile
428 Switch: USERAPOPFILE (string)
429 What: User's APOP password file relative to their home dir.
430 ".apop" is set by default.
431 One of recommended values is "Mail/.apop".
432 NOTE THAT USERAPOPFILE should NOT be readable by others.
433 Do chmod 600 USERAPOPFILE.
435 Where: ./src/osdep/unix/Makefile
436 Switch: APOPOPEN (string)
437 What: Command name to decode APOP password from USERAPOPFILE
438 "/usr/local/sbin/deapop" is set by default.
439 NOTE THAT you should install deapop command too.
440 If you don't want to think about this,
441 install the following shell script into /usr/local/sbin/deapop
443 #!/bin/sh
444 cat "$@"
446 Where: ./src/osdep/unix/Makefile
447 Switch: POPBEFORESMTP
448 What: Turn on `POP before SMTP' feature.
449 The next variable POP3RECORDER takes effect when
450 this variable is defined.
452 Where: ./src/osdep/unix/Makefile
453 Switch: POP3RECORDER (string)
454 What: Command name to achieve `POP before SMTP'.
455 "/usr/local/etc/pop3-record" is set by default.
456 This recorder program should take one argument of
457 fully qualified hostname (or IP address) where the POP
458 authentication is passed to.
460 [NO WARRANTY]
462 This package comes from absolutely NO WARRANTY. The author of
463 this package is not responsible for any result caused by using
464 this software. The copyright of the extension part is held by
465 HIROSE, Yuuji [yuuji@gentei.org].
467 [COPYING]
469 You can re-distribute this package without any cost except some
470 practical cost(magnetical media or so). Although this package
471 basically obeys the license terms in a file CPYRIGHT in this
472 directory, there is one exception; when you modify the code
473 against the extensional part (over uw-imapd) and that
474 modification is a kind of bug-fix, modification should be telled
475 to the author of extensional part if you are thinking of
476 re-distribute your modification to the public. This limitation
477 is to aim to make this extensional package reasonably safe
478 always in any time. Please feel free to hack and distribute it!
481 -- Japanese document follows...
483 【qmail+maildir+APOP用POPサーバ】
485 このimapパッケージは、qmailとIMAPを組み合わせて使うこと *ではな
486 く* qmail+maildir+APOPを柔軟に利用しようということを目的として作
487 られましたのでIMAPでのテストは十分に行なわれていません。このパッ
488 ケージは以下のような方を満足させるでしょう。
490 * qmailを利用している
491 * mail spool には安全性の高い Maildir 形式を利用し(させ)ている
492 * ~/.qmail-ext ファイルによるqmailの拡張アドレスをよく利用している
493 * virtual domain を活用しまくっている
495 上記のようなことができるqmailですが、この機能を使いこなすために
496 はUNIXマシンにログインしてローカルファイルを見に行くメイルリーダ
497 を使うという方法しかありませんでした。これでは不便なので、上記の
498 使い分けを認識するPOPサーバを作ろうということで作成したのがこの
499 パッケージです。またPOPのみのサーバ利用が多い昨今、リモートから
500 の認証にログインパスワードを使わずにメイル専用パスワードを利用さ
501 せる変更も行なっています。これによりPOPもAPOP(POPのパスワード認
502 証の暗号化版)も共通のパスワードを利用できるようにしました。また、
503 POP の場合は既存ユーザのパスワード管理を考えて、認証時にUNIXパス
504 ワードも参照するようにしています。
506 もう一点、POPはパスワードをプレインテキストで流すため、外部ネッ
507 トワークからの利用は危険です。そこでPOPの利用を一部のネットワー
508 クに限定する機能もつけました(tcp_wrappersやtcpserverが必要)。
510 【インストール】
512 デフォルト設定では
514 * POP3は拒否する
515 * ユーザのパスワード設定ファイルは ~/.apop
516 * ~/.apop のデコードプログラムは /usr/local/sbin/deapop
518 となっています。APOP認証はサーバ側で必ず元のパスワードを知る必要
519 があります。これまでのAPOPサーバは全てのユーザ毎に管理者権限でパ
520 スワードを設定する必要がありました。一見安全そうですが、じつはユー
521 ザがパスワードを変更する頻度を限りなくゼロに近づけているだけです。
522 そもそもAPOPはサーバ側で元パスワードを取得する必要があるので必ず
523 復元可能な形で保存されなければなりません。ということはどんなに凝っ
524 た方法で保存しても結局は復号できるのですから、複雑な方法で暗号化
525 &格納をすることは手間を増やすだけです。いずれにしてもroot権限さ
526 えあれば元のパスワードは簡単に読めるわけですから、最初からユーザ
527 自身にパスワード管理をさせてしまっても何ら問題は無く、むしろその
528 方がパスワードをこまめに変えてくれる可能性が(ちょりっと)上がりま
529 す。ただし、誰にでもパスワードが読めては困るので、パスワードファ
530 イルを chmod 600 しておかないとメイルの取り込みが出来ないように
531 なっています。またどうしても平文でファイルに保存するのだけはいや
532 だーという場合のために、APOPパスワードファイルは
533 /usr/local/sbin/deapop というコマンドを経由して読み込むようになっ
534 ています。これにデコードする処理を書いておきます。もし、とくにエ
535 ンコードしなくてもいいという場合は
537 #!/bin/sh
538 cat "$@"
540 というシェルスクリプトでも入れておいてください。このパスワードは
541 ログインパスワードとは独立しているのでこれで大きな問題は起こらな
542 いでしょう(責任は持ちませんが:-)。
544 コンパイル時の変数は上記英文解説の場所を読んでください。
546 【ユーザから見た使い方】
548 まず、~/.qmail に正しくmaildirが設定されていることを確認します。
549 maildirをまだ作っていない場合は、
551 % /var/qmail/bin/maildirmake ~/maildir
553 とし、~/.qmail に
555 ./maildir/
557 と書きます。またメイル専用パスワードを ~/.apop に記録します。
558 これは apoppasswd コマンドで行ないます。
560 % apoppasswd
562 これで完了です。apoppasswdコマンドは APOPtools/apoppasswd にある
563 ので管理者がサイトの環境に手直しした上で一般ユーザのPATHの通る場
564 所にインストールして使って下さい。
566 さて、拡張アドレスを使いましょう。ログイン名を login とします。
567 login-isogi@hogehoge.co.jp のようなアドレスは ~/.qmail-isogi とい
568 うファイルで作成できます。login-isogi 用のmaildirを作ります。
570 % /var/qmail/bin/maildirmake ~/isogidir
572 これを ~/.qmail-isogi に登録します。
574 ./isogidir/
576 最後に login-isogi 用のパスワードを設定します。
578 % apoppasswd -e isogi -c
579 Enter APOP Password:
581 とすると、maildirの作成とパスワードの設定が同時に行えます。
582 maildirとパスワードの作成が完了したら、利用してるメイルリーダの
583 APOP アカウントの「アカウント名」をlogin-isogi にして接続します。
585 【POP before SMTPについて】
587 まず tcp_wrappers を利用している場合について説明します。
588 tcpserverを利用する場合も原理は同じなので仕組みだけ理解してくだ
589 さい。
591 tcp_wrapperとtcp-envを組み合わせてSMTPサーバを中継用に使うドメイ
592 ンを限定して使っていると思います。これの発展形でPOP接続して来た
593 ドメインだけにSMTPサーバを使わせる手法のことを "POP before SMTP"
594 と呼びます。このパッケージでも APOP 接続をしたドメインに対して
595 SMTPの中継許可を与えることが出来ます。本パッケージの ./APOPtools
596 ディレクトリにある pop3-* を /usr/local/etc にインストールします。
597 3つのファイルの実体は同じです。さらに以下の作業をします。
599 * 原本となる /etc/hosts.allow を /etc/hosts.allow.src にコピー
600 * crontab で10分毎に /usr/local/etc/pop3-age を起動させる
602 後者は、大抵のOSの場合 root の crontab に
604 */10 * * * * root /usr/local/etc/pop3-age
606 などと書けば設定できます。pop3-* スクリプトは自身の環境に合わせ
607 て適宜修正して下さい。この段階で、tcp_wrapper の定義ファイルは
608 /etc/hosts.allow.src が大元で、/etc/hosts.allow はcronによって自
609 動生成されるものとなります。hosts.allowをいじっても自動的に上書
610 きされてしまうので、設定を変えるときは *必ず hosts.allow.src を
611 編集する* ことに注意して下さい。
613 さらにipop3dを起動するときに接続してきたホストが環境変数
614 RELAYCLIENT に入るようにしておきます。/etc/inetd.conf でipop3dを
615 起動するときに tcp_wrapper 経由となることを確認します。
617 [/etc/inetd.conf]
618 pop3 stream tcp nowait root /usr/libexec/tcpd /usr/libexec/ipop3d
620 1999年頃以降のPC-UNIXではinetdにデフォルトでtcpdが組み込まれてい
621 ることが多いので、inetd.confにtcpdははさまなくて良いこともありま
622 す。続いて /etc/hosts.allow.src で環境変数の設定が起きるようにし
623 ます。
625 [/etc/hosts.allow.src]
626 ipop3d : all : setenv RELAYCLIENT %h
628 これで POPサービスを利用しに来たクライアントのアドレスが環境変数
629 に入ります。
631 tcpserverの場合は、付属の pop3-record スクリプトの後半に例がある
632 のでそれを利用してください。
634 なお、tcp_wrappers 用の pop3-age スクリプトは負荷の高いマシンで
635 は hosts.allow ファイルが空になる可能性があります。lockすれば多
636 少ましになるでしょうが完ぺきではありません。もし、hosts.allowの
637 書き換えに失敗するような負荷の高い環境で使う場合は tcp_wrappers
638 ではなく、tcpserverでのアクセス制御をすることを強く勧めます。こ
639 ちらはロックの必要もなく、安全にアクセス制御ファイルの更新ができ
640 ます。
642 【POPアクセス制御について】
644 POP3とAPOPは同じポートを使うので「外部からはAPOPだけ許す」などの
645 制御はルータやtcp_wrappersなどだけではできません。このipop3dでは、
646 生のPOP3は環境変数INTRANETが定義されているときだけに利用を制限す
647 ることができます。tcp_wrappers の例を示します。
649 ipop3d : localhost .localnet.hoge.jp \
650 : setenv INTRANET : setenv RELAYCLIENT %h
651 ipop3d : all : setenv RELAYCLIENT %h
653 としておけば、ローカルネットワーク内だけで生POP3を使うことができ
654 ます。
656 【virtualdomain機能について】
658 qmailでは /var/qmail/control/virtualdomains を使うことで、ユーザ
659 が任意のメイルドメインを持つことができます。これを解釈するように
660 しました。/var/qmail/control/virtualdomain ファイルで
662 virtual.hoge.co.jp:user1
663 dokan.hoge.co.jp:user2-dokan
665 としておくと、XX@virtual.hoge.co.jp は ~user1/.qmail-XX に配送さ
666 れ、YY@dokan.hoge.co.jp は ~user2/.qmail-dokan-YY に配送されます。
667 それがMaildirスプールを含む場合、本パッケージのIMAP/POPで取り込
668 むことができます。デフォルトではこのためのパスワードはそれぞれ
670 ~user1/.apop-XX
671 ~user2/.apop-dokan-YY
673 ファイルに保存しておかなければなりません。
675 【Postfixの拡張アドレス対応について】
677 Postfixによる ~/.forward+ext で発生する拡張アドレスは、その配送
678 先がMaildirであれば本パッケージでも利用できます。Postfix のデフォ
679 ルト設定の
680 forward_path = $home/.forward$recipient_delimiter$extension,
681 $home/.forward
682 recipient_delimiter = +
684 のまま Postfix を動かしている場合はトップレベルのMakefileの
685 EXTRACFLAGS に -DPOSTFIX を追加して下さい(-DQMAILも必要です)。こ
686 れにより、拡張アドレスを決めるファイルが ".forward" に、拡張部分
687 を区切る文字列が "+" になります。いずれかを変更している場合はた
688 とえば、
690 -DDOTQMAIL=".postfix" -DXADDR_DELIM="-"
692 のように変更できます。もし、Postfix の .forward+ext を利用する場
693 合は周辺ツールの APOPtools/apoppasswd, APOPtools/apopcall.c の対
694 応する変数も変更する必要があることに注意して下さい。また、パスワー
695 ドファイルも ~/.apop-ext ではなく~ /.apop+ext となることに注意が
696 必要です。これらが面倒な場合は、Postfix の設定の方で .qmail-ext
697 を見るようにしてしまうのも手です。この場合は
699 recipient_delimiter = -
700 forward_path = $home/.forward$recipient_delimiter$extension,
701 $home/.qmail$recipient_delimiter$extension,
702 $home/.forward
704 とすると ~/.qmail-ext も参照するようになり、デフォルト状態の本パッ
705 ケージのまま利用することができるでしょう。
707 【Postfixの POP before SMTPについて】
709 main.cf で たとえば次のようにします。
711 smtpd_recipient_restrictions =
712 permit_mynetworks
713 check_client_access hash:/etc/postfix/client_access
715 ここで /etc/postfix/client_access は POP before SMTP の許可ホス
716 トリストを保持するためのファイル名で、既に使われてはいないものに
717 します。配布ディレクトリの APOPtools/pop3-record.postfix は
718 /etc/postfix/client_access ファイルをリレー許可判定に使うことを
719 前提とした Postfix 用のスクリプトです。
721 【謝辞】
723 安井卓さん(tach@debian.or.jp)にはsyslog関係のパッチを頂きました。
724 ここに感謝の意を表します。
726 【免責】
728 IMAPパッケージに本ドキュメントで説明した拡張機能を追加する部分の
729 著作権は広瀬雄二[yuuji@gentei.org]が保持します。このプログラムを
730 用いて生じた如何なる結果に対しても著作権者は責任を負いません。
732 2009/9/14 yuuji@gentei.org

UW-IMAP'd extensions by yuuji