さて、続いての問題は・・・メールボックスが読めません!test@zonch.net宛にメールを送ると、エラーメールも返ってきませんし、/usr/local/virtual/test@zonch.net/newを見ると、ちゃんとメールが届いています。なのに、メールを読みに行ってもメールがないって言われます。なんですか~、これ?
メール受信はDovecotのお仕事だから、そちらの設定の問題ですかね。参照したのは、
こちら。
設定したときに気になったのは、基本的な設定のところで
default_mail_env = maildir:~/Maildir
としておいて、バーチャルドメイン対応の設定のところで、
default_mail_env = maildir:/usr/local/virtual/%u
と設定しているところ。どう見ても・・・同じ変数ですよねぇ・・・どっちか、というかバーチャルドメイン対応の方だけじゃダメなん?
でもまぁ、そう書いてあるんだから両方入れておくかぁ・・・まぁ、後から書いた方で上書きされるんじゃないのかなと勝手に思い、入れておくことに。ただ、どこに書いていいのやらわからなかったんで、バーチャルドメイン対応の方はファイルの最後に付け足したのでした。今思えばこれが敗因・・・。
default_mail_envっていうのは、要するにメールデータがおいてある場所を指す。ただし、defaultって付いてるんで、特に明示的に指定されなければここを読むよ、ってこと。メールは正しく届いているはずなのにメールソフトで読みに行ったらないと言われる → Dovecotが全然違うメールフォルダを読みに行っている、と考えればつじつまが合う。
まぁ、今は結論わかってから書いてるからわかったような口ぶりだけど(笑)、全く見当が付かないときは、それはそれはどうしようかと頭抱えてましたよ。コンピュータといえども、専門外や知らないことになるとそんなもんです。
でまぁ、いろいろ試してようやく得た結論から書きますと・・・default_mail_envを書く位置がダメでした。default_mail_envの書く位置として用意されているところに書かないとダメなんですね。その位置には
default_mail_env = maildir:~/Maildir
を書いたんで、並べて2つ書くのもアホらしいかと最後の方に
default_mail_env = maildir:/usr/local/virtual/%u
を足したら、上書きどころか反映されなかったというわけでした。結局その設定ではどこを読みに行ってしまうかというと、
user_query = SELECT concat('/usr/local/virtual/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
でhomeを/usr/local/virtual/test@zonch.netと指定してるので、
default_mail_env = maildir:~/Maildir
が効いた状態だと/usr/local/virtual/test@zonch.net/Maildirを読みに行ってしまいます。メールが見つからないわけです。
で、結局どういう設定が有効かというと、私が試した範囲では、
1,default_mail_envを書く位置として用意されているところに、default_mail_env = maildir:/usr/local/virtual/%uのみ書く。同じ位置にdefault_mail_env = maildir:~/Maildirを並べて書いてもOKですが、意味なさそうなので。
2,あえてdefault_mail_envを指定しないってのでも読めました。homeをMySQLのクエリーで
user_query = SELECT concat('/usr/local/virtual/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
と指定してるんで、それは
default_mail_env = maildir:/usr/local/virtual/%u
とすることと同等ということだと思います。
3,homeをMySQLのクエリーで指定してるので、
default_mail_env = maildir:%h
なんてしても読めます。default_mail_envなしでもOKなら意味のある設定ではないかも知れませんが、試行錯誤してうまくいった設定の中にはこんなものもあったということで。
まぁ、どれがどの動作にどう影響してるかがわかると、設定のパターンは色々あるってことですね。大事なのはどれが正解かではなくて、こうして何かを変えることで変化を見る → その様子からソフトウェアがどういう仕組みになってるのかわかってくるということだと思います。
何かを修得しようと思ったら、もがかないとダメじゃないですかね。もがけば一つの問題からでも実にたくさんのことが学べると思います。「うまく行かない」のは苦しいことかも知れませんが、「(理解を深める)チャンス」じゃないですかね。私にはそう思えます。