Mercurial > hgrepos > hgweb.cgi > imapext
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 |