[[Postfix]]
#contents

*やりたいこと [#s6b07915]
-接続されたローカルのIPにより認証時のドメインを省略したい

*設定例 [#r5962607]
**要求仕様 [#q15ec329]
-サーバは10.0.0.1〜10の10個のIPを持っている
-サーバは10.0.0.1〜10の10個のIPを持っているとする
-10.0.0.2に接続されたときは user1 を user1@example.jp として認証をする
-10.0.0.3に接続されたときは user1 を user1@example.com として認証をする
-上記以外のIPで接続されたときは常にドメイン部まで含めたIDを要求する
**設定 [#zceaa30c]
-まずIP毎に設定を変えられるよう設定を変更する
--/usr/lib/courier-imap/etc/pop3d, /usr/lib/courier-imap/etc/imapd の TCPDOPTS を変更
 -TCPDOPTS="-nodnslookup -noidentlookup"
 +TCPDOPTS="-nodnslookup -noidentlookup -access=/usr/lib/courier-imap/etc/access.db -accesslocal"
-accessファイルを以下の内容で作成
--/usr/lib/courier-imap/etc/access
 ## 参考: man couriertcpd の ACCESS FILE の項
 ## 更新コマンド:
 ## cd /usr/lib/courier-imap/etc/ && ../libexec/makedatprog access access.tmp access.db && /etc/init.d/courier-imap restart
 
 10.0.0.2	allow,DOMAINSEP=@,DEFDOMAIN=@example.jp
 10.0.0.3	allow,DOMAINSEP=@,DEFDOMAIN=@example.com
 *	allow,DEFDOMAIN=
 
 ## 最終行にピリオドのみの行を必ず付けておき、これを消さないこと
 ## これが終端記号になっているので、無いとmakedatprogしてもdbが更新されません
 .
※IPとアクションの間の区切り文字はスペースではなくTABで無ければいけない。
-accessファイルからaccess.dbを作成する
 cd /usr/lib/courier-imap/etc/
 ../libexec/makedatprog access access.tmp access.db
-設定を反映する為に courier-imap を再起動
 /etc/init.d/courier-imap restart
(再起動しないとaccess.dbの変更が反映されない。もしかしたら一定時間キャッシュをしているだけで時間がたてば再起動しなくてもよいのかもしれないが未検証。再起動するのが確実。)


*メモ [#ca8f6782]

**DOMAINSEPって何? [#u35ffbfe]
上述の設定では action に DEFDOMAIN 以外 に DOMAINSEP=@ という設定もあるが、
これには与えられたIDがDEFDOMAINを省略したものかどうかを、IDにDOMAINSEPが含まれるかどうかで明示的に判断するというがある。
と言っても良く分からないので以下に例を挙げる。

-DOMAINSEP=@,DEFDOMAIN=example.jp の場合
--user1 で認証を要求されると、
+++user1 は @ を含まないのでドメインが省略されていると判断され、user1@exmaple.jp で認証が行われる。
+++認証に失敗したら認証エラーを返す。
--user1@example.com で認証を要求されると、
+++user1 は @ を含むのでドメインは省略されていない判断され、そのまま user1@exmaple.com で認証が行われる。
+++認証に失敗したら認証エラーを返す。
-DOMAINSEP=,DEFDOMAIN=example.jp の場合
--user1 で認証を要求されると、
+++まず user1 で認証が行われる。
+++認証に失敗した場合は更に user1@example.jp で認証が行われる。
+++認証に失敗したら認証エラーを返す。
--user1@example.com で認証を要求されると、
+++まず user1@example.com で認証が行われる。
+++認証に失敗した場合は更に user1@example.com@example.jp で認証が行われる。
+++認証に失敗したら認証エラーを返す。

**DEFDOMAINはちょっと変わった設定も出来る [#cd35a320]
-DEFDOMAINには '''@ドメイン''' という形以外のものも設定可能
-例えば
--DEFDOMAIN=.example.jp という設定をすると以下のようなIDの扱いになる。
 user1@foo → user1@foo.example.jp
 user1@bar → user1@bar.example.jp
--DEFDOMAIN=-kimoi@exmapl.jp をしたら user1 が user1-kimoi@example.jp として扱われるというキモイ設定も可能のようだ(^^;


**変数の設定変更以外にdenyを使ったアクセス拒否も出来る [#n0bea041]
accessファイルで以下のように書けば 10.0.0.4 での接続は全て拒否するようになる。
 10.0.0.4	deny
※ここで指定しているIPは接続元のIPでは無く自分のサーバについているIPです。


**IP単位以外にポート毎やIPv6の表記も可能 [#wbec0254]
-10.0.0.2 だと 10.0.0.2 のIP全てにマッチするが
-10.0.0.2.110 だと 110 番ポート(POP3)だけに適用されてIMAPには適用されない
-*.110 や * 等の表記も可能
-IPv6の表記も可能
 # フルIPで書く場合
 :hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh	deny
 # ::e240/32 の表現
 :0000:0000:0000:e240	deny

これらは全て man に載っているので確実なところはそっちを参照すべし。

 man couriertcpd



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS