imapext-2007

view README.qmailapop @ 15:d012b9a282d9

READMEs changed
author HIROSE Yuuji <yuuji@gentei.org>
date Sun, 07 May 2023 13:13:36 +0900
parents
children d741b3ecc917
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

UW-IMAP'd extensions by yuuji