imapext-2007

annotate README.qmailapop @ 4:d741b3ecc917

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

UW-IMAP'd extensions by yuuji