vine-users ML アーカイブ



[vine-users:077563] (長文 ) Re: Cyrus-IMAPの設定

  • From: Shinichiro HIDA <shinichiro@xxxxxxxxxxxxx>
  • Subject: [vine-users:077563] (長文 ) Re: Cyrus-IMAPの設定
  • Date: Sat, 01 Sep 2007 21:16:13 +0900
飛田です。

;; すんません。長文となります。_o_

>>>>> In [vine-users : No.077562] 
>>>>>	"miyao" <miyao@xxxxxxxxxxx> wrote:

[...]

> [vine-users:077548] Cyrus-IMAPの設定 から引用

> > admins に指定する管理者は実際にメールを受信するユーザを指定してはい
> > けません。管理専用ユーザ(おそらくデフォルトでは cyrus あるいは
> > cyrus-admin)で行ないます。パッケージの作りにもよりますが、
> > /etc/passwd | grep cyrus して見て下さい。自動的に cyrus とか
> > cyrus-admin とか追加されてませんか?

> [root@wing-server root]# /etc/passwd | grep cyrus
> -bash: /etc/passwd: 許可がありません
> なので
> [root@wing-server root]# cat /etc/passwd (抜粋)

ぁあ、すみません。cat が抜けてましたね。

> cyrus:x:76:12:Cyrus IMAP Server:/var/lib/imap:/bin/bash
> となっていたので下記の様に変更しました
> [root@wing-server root]# cat /etc/imapd.conf (抜粋)
> admins: cyrus
> 以前、miyao と設定したのは、cyrus のアカウントでログイン
> する方法が思い付かなかったので、「実際に私が使っている
> アカウントで管理した方がやりやすいのかな?」と思い変更しました。

> > cyrus-sasl ライブラリは非常に柔軟でいくつもの認証方法バックエンドが
> > 利用可能です。で、sasldb はその一つで、マシンにユーザアカウントを必
> > 要とせず、そのマシンにログイン出来ないユーザにメールアカウントを発
> > 行したい場合に有効です。しかし、これ、sasldb と指定するのは古いよう
> > に思います。vine のパッケージでは有効なのでしょうか? ちなみに
> > cyrus-imapd のヴァージョンはいくつですか?

> sasldb 認証は古いのですか!!

cyrus 側での指定方法が最近のバージョンでは変化しているのです。マニュア
ル読みましたか? 話はそれからです。

1つマニュアルを引いたら関連するマニュアル(SEE ALSO とか書いてあるもの)
にまず目を通して下さい。

> インターネットで解りやすく書いてある所を頼りに設定を行っているので、
> 古いとか新しいとか解りませんでした。

インターネット上の情報からバージョン違いによる差を吸収するにはかなりの
知識が必要です。でないと混乱するばかりでぐちゃぐちゃになりますよ。

利用するなら本家かバージョンを明示している情報を慎重に選択しましょう。
もっとも手元にあるパッケージ付属のドキュメントを _まず_ 最初に参照すべ
きです。

> どの様な認証だったらセキュアで管理が容易なんでしょう?私のサーバには
> MySQL はインストールされておらず、PostgreSQL で有ればインストール済み
> なのですが・・・・

セットアップしたい環境によります。大規模になると kerberos, ldap との連
係や *sql バックエンドになるでしょう。

セキュア、というのも環境依存ですのでどのレベルを求めるのかで色々、ケー
スバイケース、利便性と安全性のバランスだと思います。

cyrus の特徴である sealed-server でいくと、メールサーバ上にユーザのログ
インアカウントは無い方が安全でしょう。万一、悪意を持った人間にメールア
カウントを破られた所で、そのメールアカウントを潰せば良いだけでサーバに
はなんら問題ない(はず)ですから。

> 実際に存在しないユーザのアカウントも今後作っていきたいしバーチャル
> ドメインのメールアドレスも使いたいと思い、今回 cyrus-imap を
> インストールする事にしました。

バーチャルドメインを実現するにはまたそれなりの管理、検証が必要になりま
すので、たっぷり時間を取って、実際に動かすのは良く良く検証してからにし
た方がよいでしょう。でないと痛い目にあいます。

;; 出来ればしばらくパーソナルで使ってみて、ヴァージョンアップがかかった
;; 場合の検証などもしておくと良いと思います。以前にはバックエンドの
;; BerkeleyDB のバージョンと形式が変わった時に一仕事しないとうまく動か
;; なかった事がありました。

> ヴァージョンは下記の通りです。
> [root@wing-server root]# rpm -q cyrus-imapd
> cyrus-imapd-2.2.12-0vl1
> です。

> > で、最近の cyrus-imapd では sasl_pwcheck_method: auxprop というのが
> > デフォルトではないかと思います。(これで sasldb を使います) クライア
> > ントの要件にもよりますが、sasl_mech_list は複数指定出来ますので、
> > cram-md5, digest-md5 あたりは追加しておくと良いのではないかと思いま
> > す。

> 下記の様に変更しておきました。
> [root@wing-server root]# vi /etc/imapd.conf
> sasl_pwcheck_method: auxprop
> sasl_mech_list: PLAIN, cram-md5, digest-md5

;; ぅーんと.. ひょっとしてその /etc/imapd.conf の上から2行目になんか書
;; いてないですかね.. (いえ、書いてないかもしれませんが..)

繰り返します。マニュアルを読んで下さい。

具体的には man 5 imapd.conf してください。オプションの区切りが違います。
設定変えて再起動するときにはかならずログを見ながらチェックしましょう。

> > > tls_cert_file: /usr/share/ssl/certs/cyrus-imapd.pem
> > > tls_key_file: /usr/share/ssl/certs/cyrus-imapd.pem
> > > tls_ca_file: /usr/share/ssl/certs/ca-bundle.crt
> > tls_* なファイル群は確実に存在していますよね?

> 申し訳ありません。存在しません。web 情報丸写しで、コメント化
> するのを忘れていました。コメント化しておきました。

ローカル利用なら俺俺 CA,証明書を作って tls に挑戦してみると良いでしょう。
もしユーザを抱えて本格的にサービスするならちゃんとした所から証明書発行
を受けて下さい。

;; ちゃんとやってる所は意外に少ないような気もしますが、外の世界で俺俺証
;; 明書では man in the middle の危険性が避けられないのではないかと思い
;; ます。

きちんと設定できると starttls で暗号化された imap, smtp 通信 が行なえま
す。

すでに apop も破られているようですし、pop3 を利用するなら tls は必須で
しょう。imap の場合でも plain (あるいはやむを得ず login とか)を利用する
なら tls をかぶせないとまずいと思います。

これらは imapd.conf の sasl_minimum_layer にも絡んできます。

> > > [root@wing-server root]# cyradm --user miyao localhost
> > > -bash: cyradm: command not found
> > cyradm コマンドは別パッケージになってたりしませんか? Debian だと
> > cyrus-admin とかなのですが.. apt-cache search コマンドを活用して下さい。

> 解りました。多分下記のソフトですね。
> [root@wing-server root]# apt-cache search cyrus* (抜粋)
> cyrus-imapd-utils - Cyrus IMAP server administration utilities.
> インストールします

まず、そのパッケージになにが入っているのか、man やドキュメントはあるの
か確認してくださいね。

> > > [root@wing-server root]# postconf -n
> > え〜っと.. postfix の smtp-auth も一緒にやってるのですか? 別々に考えて、
> > 一つずつクリアしていかないいと、どんどん混乱してふかみにはまりますよ。

> えーと、見知らぬソフトが沢山出てきて、もう、足の先から首まで泥沼にはまっ
> ています。
> (-_-;)汗
> ソフトをインストールしながら、このソフトはどんな機能を司る物だと覚えて
> いっている
> 段階です。
> Samba や PostgreSQL と違って、メールサーバは postfix や CyrusIMAP と
> 色々ソフトが居るのでややこしいですね!!!

mail 環境の設定は少し間違えると外の世界を混乱させてしまったり大勢に迷惑
を掛けてしまう事がありますので、十分検証出来るまでは閉じた環境で行なう
とか何があってもバウンスさせないとかしっかり対策してから設定しましょう。

それが出来るまでは動かさないようにしましょう。

> [vine-users:077556] から引用
> > > 【ログ】
> > > Aug 30 17:42:51 wing-server pop3[2778]: unknown password verifier
> > せっかく imap 使えるのに pop3 でアクセスするのはなにか理由があるのです
> > か? で、この pop3[2778] というのは cyrus のですか? cyrus-imapd はインス
> > トールされたようですが、pop3d は何を使っておられるのですか?

> 上記のログは、cyrus の物だと思います。cyrus 以外 pop3 を提供できるソ
> フトはインストールされていません。それで、pop3 を使う理由なのですが、
> 当初 pop3 を使うために imap をインストールしないと行けないのかと、思
> いインストールしていたので、特にpop3 を使わないと行けない理由はござい
> ません。

pop3 はプロトコルの性質上、サーバの負荷が上がってしまう傾向があるようで
す(cyrus-pop3d は使ってないので実際どうなのかは知らないのですが)。なの
でメールスプール用に確保するディスクスペースの問題がクリア出来るなら
imap を使う方が良いでしょう。認証にもより安全な物(tls+plain,
tls+cram-md5, tls+digest-md5)が利用出来ますし。

;; cyrus-imapd は imapd の中ではスペースを食わない方ではないかと思いま
;; すが、それでも多くのユーザがクリアにダウンロードしてくれる事が期待で
;; きる pop3 と比較すると、おそらくかなりスペースを食います。ちなみに1
;; 桁ローカルユーザのみのうちの場合でも、
;;
;; # du -sh ./mail
;; 3.7G  ./mail
;;
;; です。
;;
;; また、spool に使うファイルシステムについても検討しておいたほうが良い
;; と思います。大量のメールを扱うとなると ext3 ではきつい場合も出てくる
;; かもしれません。

> ただ、クライアントのMicrosoft Outlook 2002 でimapを送受信する方法が上
> 手く設定した経験がないので、imap より前に pop3 の立ち上げをと思い作業
> しています。

MS Outlook 2002 とかは使った事ない(興味もない)のでパスします。

;; かすかな記憶では確か starttls とか, cram-md5, digest-md5 などのかた
;; い認証は使えなかったような.. ntlm は使えたのだったっけ.. ?? 調べたの
;; は随分前の話なのでこの辺は信用しないで御自身で調査してください。

> > また、/etc/cyrus.conf というのがあるのではないかと思いますが、その中身
> > は確認されましたでしょうか?
> cyrus.conf の設定は下記の様になっています。(抜粋)
> SERVICES {
>   imap          cmd="imapd" listen="imap" prefork=5
>   imaps         cmd="imapd -s" listen="imaps" prefork=1
>   pop3          cmd="pop3d" listen="pop3" prefork=3
>   pop3s         cmd="pop3d -s" listen="pop3s" prefork=1
>   sieve         cmd="timsieved" listen="sieve" prefork=0
>   lmtpunix      cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
> }

lmtpd は起動するようになってますね。

とりあえず、今の所関係ない物は動かさない方が良いでしょう。ssl の証明書
が用意出来るまでは imaps, pop3s は無効にしておきましょう。

sieve というのはメール振り分け用の物で、RFC3028 となっています。うまく
使えればとても便利ですのでおいおい勉強してみて下さい。これは動いていて
も影響ないと思いますのでそのままで良いでしょう。

;; procmail をより簡単に置き換えられるような感じの物で、ブラウザインター
;; フェイスで設定できる物や emacs 版、webmail インターフェイスのもあった
;; りします。

> > telnet localhost 110 とかやってみるとなんかわかりますかね?

> > ;; ちなみに手元の Debian の cyrus-imapd ではログ
> > ;; (/var/log/mail.log)にはSep 1 08:25:00 lune cyrus/imap[3445]:
> > ;; [...]  のように記録されます。

> [miyao@wing-server miyao]$ telnet localhost 110
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> +OK wing-server.com Cyrus POP3 v2.2.12-Invoca-RPM-2.2.12-0vl1 server ready

[...]

> [root@wing-server root]# cat /var/log/maillog
> Sep  1 17:21:05 wing-server ctl_cyrusdb[7885]: checkpointing cyrus
> databases

[...]

> Sep  1 17:23:31 wing-server master[3614]: process 26849 exited, status 0
> こんな感じです。

間違い無く cyrus でしたね。

> > 配送する postfix 側で気になった点を
> > > [root@wing-server root]# postconf -n
> > > mailbox_transport = cyrus
> > > fallback_transport = cyrus
> > これ、master.cf の cyrus のエントリはどうなってますか?

> [root@wing-server root]# more /etc/postfix/master.cf
> # Cyrus 2.1.5 (Amos Gouaux)
> # Also specify in main.cf: cyrus_destination_recipient_limit=1
> cyrus     unix  -       n       n       -       -       pipe
>   user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension}
> ${user}
> 上記の部分で宜しいのでしょうか?

これ、deliver やめて cyrus.conf の lmtpd 指定の行と併せて lmtp で配送さ
せるほうが良いのではないかと思います。/etc/postfix/master.cf に lmtp の
行はありますか?

cyrus-imapd のドキュメントに README.postfix.gz などというのが付属してま
せんか? まずそれを読んで下さい。

それと、受け側の imapd あるいは pop3d が lmtp 経由でちゃんと受け取って
くれる事を確認できるまでは postfix を止めておきましょう。

テストはまずローカルでテスト用のメールを流して配送を確認し、確認出来た
ら次に外のテスト用アカウントからテストメールだけを流し、順々に確認し、
しばらく様子を見て下さい。

下手に外からのメールを流すと設定によってはバウンスしてしまったり、思わ
ぬ事故を起こしてしまう事があります。十分に慎重に行なって下さい。

> > あと、smtp-auth する場合には sasldb2 のパーミッションが問題になる場合
> が
> > あります。 postfix が sasldb2 を読めるのかどうかを確認して下さい。
> [root@wing-server root]# ls -al /etc/sasldb2
> -rw-r----- 1 root postfix 12288  8月30日 17:49 /etc/sasldb2
> となっているので読めると思います。

ふむ.. postfix というグループのメンバはどうなってますか?

システム依存なので Vine でどうなっているのかよくわかってませんが、mail
などというグループは /etc/group にあったりしませんか? 

> > また、postfix が chroot されている(main.cf, master.cf を確認)ならそっ
> > ちに sasldb2 がないと読めなかったりする事もありますので注意が必要で
> > す。

> ちょっと、意味が分かりません。どういう事ですか?

postfix 付属のドキュメントはありますか? SASL_README というのがついてい
るのではないかと思うのですが。

;; オリジナルの SASL_README にはコンパイル時のオプションや、古い
;; SASL1.5 系、Dovecot 用の記述がありますが、それらは関係ないので良み飛
;; ばして、関係ある部分のみ参照してください。また、Vine 用のドキュメン
;; トが付属している場合にはそれも参照してください。

-- 
  Shinichiro HIDA  shinichiro@xxxxxxxxxxxxx
  GPG fingerprint = 5F2D 1656 FFF6 F691 A51C  5E61 E416 D398 470C 1CE9