追記:dovecot 2.Xではtcp_wrapper経由ではPOP3とPOP3Sを区別してアクセス制限することはできないみたい
やりたいこと。
- 研究室内からはPOP3(110)でアクセス
- 研究室外からはPOP3S(995)でアクセス
以前、QPopperを使っていたときはTCPWrapperを使って実現していたので今回もそうしようとしたら結構はまった。理由は、Wheezyのdovecot-coreはTCPWrapperを使えるようにコンパイルされていなかったため。
wheezy-backportsを使えるように設定
揮発性のメモ:backportsを使うのとおりに設定。
Wheezy-Backportsのdovecot-coreをインストール
aptitudeだとバックポート使えないみたいなのでapt-getを使う。
% sudo apt-get install dovecot-core/wheezy-backports dovecot-pop3d/wheezy-backports
/etc/dovecot/conf.d/10-tcpwrapper.conf をコメントアウト
login_access_sockets = tcpwrap service tcpwrap { unix_listener login/tcpwrap { group = $default_login_user mode = 0600 user = $default_login_user } }
グループ dovenull の作成
% sudu groupadd dovenull
dovecotの再起動
% sudo /etc/init.d/dovecot stop % sudo /etc/init.d/dovecot start
アクセス制限の設定
/etc/hosts.deny ですべてのアクセスを拒否。
ALL: ALL
/etc/hosts.allow で特定のサービスへのアクセスを許す。サービス名をどう書くかはdovecot and tcpwrappersによると pop3, pop3s, imap, imaps でよいみたい。
ALL: LOCAL pop3: 192.168.11.0/255.255.255.0 # 研究室内ネットワーク(192.168.11.XXX)からはPOP3へアクセス許可 pop3s: ALL # POP3Sへはどこからでもアクセス許可
追記:上記のpop3sの設定はdovecot 2.Xでは無視される。
設定を確認する。hosts.allowとhosts.denyがちゃんと記述されているかどうか。
% tcpdchk
研究室外のIPからPOP3にアクセスしてちゃんと禁止されているかをチェック。研究室内ならどうかもチェック
% tcpdmatch pop3 192.168.12.13 client: address 192.168.12.13 server: process pop3 access: denied % tcpdmatch pop3 192.168.11.13 client: address 192.168.11.13 server: process pop3 access: granted