WhiteBOX設定編/(12)Webmail-2

Last-modified: 2008-06-30 (月) 15:47:25 (5798d)

WebでMail、実際に動くまでの再設定

  • 残念ながら、インストールしただけではうまく動きませんでした(^^;) 送信はできてるようですが、受信がだめでした。いろいろ調べた結果、大きな問題点が2つあることが判明しました。
  • 受信できない原因は、受信メールのファイル指定が、Postfix、IMAP、Squirrelmailの3つのソフト間でうまくリンクしてなかったためでした。複数のソフト間できちんとデータの受け渡しをさせる必要があります。これから詳しく書きますが、これがなかなかに複雑怪奇で、苦難に満ちた道のりでした。
  • 受信ファイルの設定は、ユーザ管理の仕方とも大きな関係があります。Linuxの場合は、単純にメールユーザを作ったつもりでも、サーバへのアクセス権限が与えられてしまうというセキュリティ上の問題もあり、この対策が必要だということも分かりました。

受信メールの流れと問題点

  • 受信メールの流れを各ソフトの参照ファイルとの関係で整理すると、 

 (1) MTP:Postfix 

  • 外部からで転送されてきたメールは、Postfixが受け取りますが、デフォルトで、以下のファイルにユーザ(username)毎のファイル名でスプールされます。
    /var/spool/mail/username
  • なお、受信メールの保存形式には、MailboxとMaildir の2つがあります。Mailboxは1つのファイルにどんどん追加して書き込んでいく、Maidirはディレクトリーを作って1つのメールごとにファイルを分けて保存します。サーバ管理上は、Maildir形式の方がよいといわれています。Postfixは両方に対応していますが、imap2002dがmaildir形式に対応していないという情報は確認していたので、今回は mailbox形式と考えて、Postfixの設定もしました。
  • これが、間違いといえなくもないのですが、Postfixの設定項目は、実は保存形式のことではではなくて、受信メールの転送先のことだったのです。つまり、
    /home/username/Mailbox
    というユーザ専用の受信箱用ファイルができて、ここに転送されていたのでした。 

 (2) IMAP:imap2002d(WU-IMAP) 

  • 標準でインストールされているimap2002dのデフォルト設定は、Postfixのデフォルト同様、spool配下のユーザファイルを参照しています。
  • そのこと自体は問題ありませんが、Postfixの設定では、受信メールは/home配下に転送してしまうので、IMAPから見れば、何もないところを参照していることになります。 

 (3)WebMAIL:Squirrelmail 

  • 最初の設定では、WebMAILの受信箱は空白でした。いくら外部からメールを送っても入ってこないのです。でも、送信側にはエラーは一切出ません。いったいどこに行っちゃったんだ?! というわけで切り分けが始まりました。
  • どこを参照しているのかが問題です。/home/username/Mailbox が何やら更新されているようだというわけで、ファイを開いてみたら、メール受信してるようです!
  • 当初のFolder Settings設定では、mail/ としました。これをヒントに、試しに /home/username/Mailbox を /home/username/mail/Mailbox とリンクさせてみたら、受信箱の内容が表示されることがわかりました。つまり、Postfixで指定した Mailbox と Squirrelmail 設定のmailを無理矢理結び付けたというわけです。
  • しかし、これでは美しくない(^^;) やはり、受信BOXの指定の仕方に根本的な問題があるのではないかと調査を続けました。
  • その落とし穴は意外なところに。。。。
    • Squirrelmailを起動して、サイドメニューの「受信箱」にマウスを置いてみると分かりますが、 "INBOX" というファイルにリンクしています。
    • この "INBOX" がくせものでした。どこにそんなフォルダーがあるんじゃ?! というわけです。これには、ハマリました。いろいろ調べたら、環境の違いはあれど、皆さんハマッているようで、掲示板の記事が見つかりました。
    • "INBOX" とは形式上の名前で、実保存のファイルの名前とは何の関係もなかったのです。imap2002d の場合で言えば、この "INBOX” とはLinux共有メールフォルダー、すなわち、デフォルトの スプールファイル /var/spool/mail/username ということになります。
    • したがって、Squirrelmaiはそちらを参照に行きます。一方、Postfixは設定で。 /home/username/Mailbox に受信メールを転送してるので、いくら探してもないのです。これで、受信メールが表示されなかったのです。
    • ためしに、Postfix の設定を変更し、spoolからユーザディレクトリーへのメール配信を中止したら、Squirrelmailでの受信はたちどころに OKになりました。

メールユーザのアクセス制限について

  • Linuxの場合、メールユーザといえども、基本的に Linuxサーバのユーザであり、デフォルトでユーザのホームディレクトリーが作成されます。
    /home/username/
    そして、メールは、ユーザのメールディレクトリ下に配信されます。
  • この場合、ユーザにはサーバ上の/home配下のユーザファイルが、Webmailですべて見えてしまいます。これはうっとおしいだけでなく、アクセス可能なのでセキュリティ上の問題にもなります。正規のLinuxユーザとして参加させるのなら構いませんが、メールだけでユーザ登録するのなら、何らかの対策が必要になります。

ユーザ管理とファイルの再構成

  • 見直しポイントは以下のとおり
    1. Postfix の ユーザディレクトリーへのメール配信は中止する
    2. /homeのユーザディレクトリとは別に、IMAP専用のディレクトリーを作成し、それをメール専用(共有)フォルダーとする
    3. メールユーザは、「ホームディレクトリー無し」、「シェル無効」として作成する
  • 具体的な設定手順は以下のとおりです。
    /home/k-mbox/       IMAPが参照する専用フォルダ
            +- username/    この配下にユーザディレクトリを作成
    とし、ユーザディレクトリ配下には、Squirrelmailが参照するディレクトリーを作成する
    /home/k-mbox/username/
         +-- INBOX   受信箱(--> /var/sppol/mail/username にリンク)
         +-- mail/
         +-- Sent/   送信済みメール
         +-- Draft/   下書き
         +-- Trash/   ゴミ箱
  • なお、imap2002d の設定では、受信BOXを特定のフォルダー(k-mbox)に変更するためには、新規に設定ファイルを作成する必要があることも分かりました。
    /etc/client-c.cf
    デフォルトではこの設定ファイルは作成されていないのです。必要なら自分で作れという不思議な構成なのです!

実際の設定記録

  • Postfixの設定変更
    # vi /etc/postfix/main.cf
    [main.cf の修正はここ1箇所]
     #home_mailbox = Mailbox
    該当の行頭に#を挿入(コメント化)して、設定を無効にします。
  • 関連ディレクトリーの作成
    # mkdir /home/k-mbox
    # chmod 755 /home/k-mbox
    # mkdir /home/k-mbox/ichimura
    k-mboxというメール用共有ディレクトリーと、ezm というユーザ用ディレクトリーを作ります
  • メールユーザの作成
    # useradd -M -s /bin/false ezm
    # chown ichimura /home/k-mbox/ezm
    # chgrp ichimura /home/k-mbox/ezm
    # chmod 700 /home/k-mbox/ezm
    # passwd ezm
     Changing password for user ezm.
     New password:
     Retype new password:
     passwd: all authentication tokens updated successfully.
    ユーザ ezm を作りますが、メール専用なので、「-M -s 」オプションで、ホーム無し、シェル無効とします。ユーザディレクトリのパーミッションを設定します。最後にパスワードを設定して終わりです。
  • UW-IMAP設定変更と再起動
    # touch /etc/c-client.cf
    # vi /etc/c-client.cf
    [c-client.cf の編集内容は、この2行]
    I accept the risk for IMAP toolkit 4.1.
    set black-box-directory /home/k-mbox
    新たに設定ファイルを作成します。1行目はオマジナイ(おもしろいですね ^^)。2行目が参照ディレクトリ変更の記述です。
    # chmod 600 /etc/c-client.cf
    # /etc/init.d/xinetd restart
    xinetdを停止中:                                            [  OK  ]
    xinetdを起動中:                                            [  OK  ]
    UW-IMAPを再起動して、設定を反映させます。
  • シンボリックリンク作成
    # cd /home/k-mbox/ezm/
    # ln -s /var/spool/mail/ezm INBOX
    問題のINBOXのリンクを作成して完了です。
    【コマンド書式】 ln [オプション] [オリジナルファイル(ディレクトリ)] [リンクファイル名]
    【オプション】 -s シンボリックリンクで別名をつける
    # ls -la /home/k-mbox/ezm
    合計 16
    drwx------    3 ezm    ezm   4096  2月 18 12:31 .
    drwxr-xr-x    5 root   root  4096  1月 23 13:34 ..
    -rw-r--r--    1 ezm    ezm     33  1月 23 13:35 .mailboxlist
    lrwxrwxrwx    1 root   root    24  1月 23 13:36 INBOX -> /var/spool/mail/ezm
    drwx------    2 ezm    ezm   4096  2月 18 12:31 mail
    念のため、ファイル構成を確認しておきます。
  • 注意
    • Squirrelmailで指定したフォルダー構成は .mailboxlist に自動的に登録されます
    • デフォルトでは、mail/配下に、sent/ draft/ trash/ の3つが作成されます。
    • Squirrelmailではユーザが自由にフォルダーを作ってメールの管理ができますが、それらは mail/ 配下に作成されます。

以上、ずいぶんと長い道のりでしたが、ようやく解決しました。(1月末に終わった話なのですが、なんとか記憶のあるうちに整理できてよかった。ほとんど忘れかけていた^^;)


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元