comparison README.qmailapop @ 4:d741b3ecc917 draft

imapext-2007f
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 30 Oct 2014 00:03:05 +0900
parents 28a55bc1110c
children
comparison
equal deleted inserted replaced
3:2366b362676d 4:d741b3ecc917
362 IMAPパッケージに本ドキュメントで説明した拡張機能を追加する部分の 362 IMAPパッケージに本ドキュメントで説明した拡張機能を追加する部分の
363 著作権は広瀬雄二[yuuji@gentei.org]が保持します。このプログラムを 363 著作権は広瀬雄二[yuuji@gentei.org]が保持します。このプログラムを
364 用いて生じた如何なる結果に対しても著作権者は責任を負いません。 364 用いて生じた如何なる結果に対しても著作権者は責任を負いません。
365 365
366 2009/9/14 yuuji@gentei.org 366 2009/9/14 yuuji@gentei.org
367 //
368 // qmail+maildir+apop+virtualdomain+POPbeforeSMTP extensions to uw-imapd
369 // Japanese Document below
370 //
371
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
379
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.
385
386 [Configuration]
387 You can select these compilation switches.
388
389 Where: ./Makefile
390 Switch: QMAIL
391 What: Support maildir and user's address extension.
392 This switch is requisite.
393
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.
399
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.
407
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.
414
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.
421
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"
426
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.
434
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
442
443 #!/bin/sh
444 cat "$@"
445
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.
451
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.
459
460 [NO WARRANTY]
461
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].
466
467 [COPYING]
468
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!
479
480
481 -- Japanese document follows...
482
483 【qmail+maildir+APOP用POPサーバ】
484
485 このimapパッケージは、qmailとIMAPを組み合わせて使うこと *ではな
486 く* qmail+maildir+APOPを柔軟に利用しようということを目的として作
487 られましたのでIMAPでのテストは十分に行なわれていません。このパッ
488 ケージは以下のような方を満足させるでしょう。
489
490 * qmailを利用している
491 * mail spool には安全性の高い Maildir 形式を利用し(させ)ている
492 * ~/.qmail-ext ファイルによるqmailの拡張アドレスをよく利用している
493 * virtual domain を活用しまくっている
494
495 上記のようなことができるqmailですが、この機能を使いこなすために
496 はUNIXマシンにログインしてローカルファイルを見に行くメイルリーダ
497 を使うという方法しかありませんでした。これでは不便なので、上記の
498 使い分けを認識するPOPサーバを作ろうということで作成したのがこの
499 パッケージです。またPOPのみのサーバ利用が多い昨今、リモートから
500 の認証にログインパスワードを使わずにメイル専用パスワードを利用さ
501 せる変更も行なっています。これによりPOPもAPOP(POPのパスワード認
502 証の暗号化版)も共通のパスワードを利用できるようにしました。また、
503 POP の場合は既存ユーザのパスワード管理を考えて、認証時にUNIXパス
504 ワードも参照するようにしています。
505
506 もう一点、POPはパスワードをプレインテキストで流すため、外部ネッ
507 トワークからの利用は危険です。そこでPOPの利用を一部のネットワー
508 クに限定する機能もつけました(tcp_wrappersやtcpserverが必要)。
509
510 【インストール】
511
512 デフォルト設定では
513
514 * POP3は拒否する
515 * ユーザのパスワード設定ファイルは ~/.apop
516 * ~/.apop のデコードプログラムは /usr/local/sbin/deapop
517
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 ンコードしなくてもいいという場合は
536
537 #!/bin/sh
538 cat "$@"
539
540 というシェルスクリプトでも入れておいてください。このパスワードは
541 ログインパスワードとは独立しているのでこれで大きな問題は起こらな
542 いでしょう(責任は持ちませんが:-)。
543
544 コンパイル時の変数は上記英文解説の場所を読んでください。
545
546 【ユーザから見た使い方】
547
548 まず、~/.qmail に正しくmaildirが設定されていることを確認します。
549 maildirをまだ作っていない場合は、
550
551 % /var/qmail/bin/maildirmake ~/maildir
552
553 とし、~/.qmail に
554
555 ./maildir/
556
557 と書きます。またメイル専用パスワードを ~/.apop に記録します。
558 これは apoppasswd コマンドで行ないます。
559
560 % apoppasswd
561
562 これで完了です。apoppasswdコマンドは APOPtools/apoppasswd にある
563 ので管理者がサイトの環境に手直しした上で一般ユーザのPATHの通る場
564 所にインストールして使って下さい。
565
566 さて、拡張アドレスを使いましょう。ログイン名を login とします。
567 login-isogi@hogehoge.co.jp のようなアドレスは ~/.qmail-isogi とい
568 うファイルで作成できます。login-isogi 用のmaildirを作ります。
569
570 % /var/qmail/bin/maildirmake ~/isogidir
571
572 これを ~/.qmail-isogi に登録します。
573
574 ./isogidir/
575
576 最後に login-isogi 用のパスワードを設定します。
577
578 % apoppasswd -e isogi -c
579 Enter APOP Password:
580
581 とすると、maildirの作成とパスワードの設定が同時に行えます。
582 maildirとパスワードの作成が完了したら、利用してるメイルリーダの
583 APOP アカウントの「アカウント名」をlogin-isogi にして接続します。
584
585 【POP before SMTPについて】
586
587 まず tcp_wrappers を利用している場合について説明します。
588 tcpserverを利用する場合も原理は同じなので仕組みだけ理解してくだ
589 さい。
590
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つのファイルの実体は同じです。さらに以下の作業をします。
598
599 * 原本となる /etc/hosts.allow を /etc/hosts.allow.src にコピー
600 * crontab で10分毎に /usr/local/etc/pop3-age を起動させる
601
602 後者は、大抵のOSの場合 root の crontab に
603
604 */10 * * * * root /usr/local/etc/pop3-age
605
606 などと書けば設定できます。pop3-* スクリプトは自身の環境に合わせ
607 て適宜修正して下さい。この段階で、tcp_wrapper の定義ファイルは
608 /etc/hosts.allow.src が大元で、/etc/hosts.allow はcronによって自
609 動生成されるものとなります。hosts.allowをいじっても自動的に上書
610 きされてしまうので、設定を変えるときは *必ず hosts.allow.src を
611 編集する* ことに注意して下さい。
612
613 さらにipop3dを起動するときに接続してきたホストが環境変数
614 RELAYCLIENT に入るようにしておきます。/etc/inetd.conf でipop3dを
615 起動するときに tcp_wrapper 経由となることを確認します。
616
617 [/etc/inetd.conf]
618 pop3 stream tcp nowait root /usr/libexec/tcpd /usr/libexec/ipop3d
619
620 1999年頃以降のPC-UNIXではinetdにデフォルトでtcpdが組み込まれてい
621 ることが多いので、inetd.confにtcpdははさまなくて良いこともありま
622 す。続いて /etc/hosts.allow.src で環境変数の設定が起きるようにし
623 ます。
624
625 [/etc/hosts.allow.src]
626 ipop3d : all : setenv RELAYCLIENT %h
627
628 これで POPサービスを利用しに来たクライアントのアドレスが環境変数
629 に入ります。
630
631 tcpserverの場合は、付属の pop3-record スクリプトの後半に例がある
632 のでそれを利用してください。
633
634 なお、tcp_wrappers 用の pop3-age スクリプトは負荷の高いマシンで
635 は hosts.allow ファイルが空になる可能性があります。lockすれば多
636 少ましになるでしょうが完ぺきではありません。もし、hosts.allowの
637 書き換えに失敗するような負荷の高い環境で使う場合は tcp_wrappers
638 ではなく、tcpserverでのアクセス制御をすることを強く勧めます。こ
639 ちらはロックの必要もなく、安全にアクセス制御ファイルの更新ができ
640 ます。
641
642 【POPアクセス制御について】
643
644 POP3とAPOPは同じポートを使うので「外部からはAPOPだけ許す」などの
645 制御はルータやtcp_wrappersなどだけではできません。このipop3dでは、
646 生のPOP3は環境変数INTRANETが定義されているときだけに利用を制限す
647 ることができます。tcp_wrappers の例を示します。
648
649 ipop3d : localhost .localnet.hoge.jp \
650 : setenv INTRANET : setenv RELAYCLIENT %h
651 ipop3d : all : setenv RELAYCLIENT %h
652
653 としておけば、ローカルネットワーク内だけで生POP3を使うことができ
654 ます。
655
656 【virtualdomain機能について】
657
658 qmailでは /var/qmail/control/virtualdomains を使うことで、ユーザ
659 が任意のメイルドメインを持つことができます。これを解釈するように
660 しました。/var/qmail/control/virtualdomain ファイルで
661
662 virtual.hoge.co.jp:user1
663 dokan.hoge.co.jp:user2-dokan
664
665 としておくと、XX@virtual.hoge.co.jp は ~user1/.qmail-XX に配送さ
666 れ、YY@dokan.hoge.co.jp は ~user2/.qmail-dokan-YY に配送されます。
667 それがMaildirスプールを含む場合、本パッケージのIMAP/POPで取り込
668 むことができます。デフォルトではこのためのパスワードはそれぞれ
669
670 ~user1/.apop-XX
671 ~user2/.apop-dokan-YY
672
673 ファイルに保存しておかなければなりません。
674
675 【Postfixの拡張アドレス対応について】
676
677 Postfixによる ~/.forward+ext で発生する拡張アドレスは、その配送
678 先がMaildirであれば本パッケージでも利用できます。Postfix のデフォ
679 ルト設定の
680 forward_path = $home/.forward$recipient_delimiter$extension,
681 $home/.forward
682 recipient_delimiter = +
683
684 のまま Postfix を動かしている場合はトップレベルのMakefileの
685 EXTRACFLAGS に -DPOSTFIX を追加して下さい(-DQMAILも必要です)。こ
686 れにより、拡張アドレスを決めるファイルが ".forward" に、拡張部分
687 を区切る文字列が "+" になります。いずれかを変更している場合はた
688 とえば、
689
690 -DDOTQMAIL=".postfix" -DXADDR_DELIM="-"
691
692 のように変更できます。もし、Postfix の .forward+ext を利用する場
693 合は周辺ツールの APOPtools/apoppasswd, APOPtools/apopcall.c の対
694 応する変数も変更する必要があることに注意して下さい。また、パスワー
695 ドファイルも ~/.apop-ext ではなく~ /.apop+ext となることに注意が
696 必要です。これらが面倒な場合は、Postfix の設定の方で .qmail-ext
697 を見るようにしてしまうのも手です。この場合は
698
699 recipient_delimiter = -
700 forward_path = $home/.forward$recipient_delimiter$extension,
701 $home/.qmail$recipient_delimiter$extension,
702 $home/.forward
703
704 とすると ~/.qmail-ext も参照するようになり、デフォルト状態の本パッ
705 ケージのまま利用することができるでしょう。
706
707 【Postfixの POP before SMTPについて】
708
709 main.cf で たとえば次のようにします。
710
711 smtpd_recipient_restrictions =
712 permit_mynetworks
713 check_client_access hash:/etc/postfix/client_access
714
715 ここで /etc/postfix/client_access は POP before SMTP の許可ホス
716 トリストを保持するためのファイル名で、既に使われてはいないものに
717 します。配布ディレクトリの APOPtools/pop3-record.postfix は
718 /etc/postfix/client_access ファイルをリレー許可判定に使うことを
719 前提とした Postfix 用のスクリプトです。
720
721 【謝辞】
722
723 安井卓さん(tach@debian.or.jp)にはsyslog関係のパッチを頂きました。
724 ここに感謝の意を表します。
725
726 【免責】
727
728 IMAPパッケージに本ドキュメントで説明した拡張機能を追加する部分の
729 著作権は広瀬雄二[yuuji@gentei.org]が保持します。このプログラムを
730 用いて生じた如何なる結果に対しても著作権者は責任を負いません。
731
732 2009/9/14 yuuji@gentei.org

yatex.org