SquirrelMailの導入

Mail System Postfix SMTP-Auth SMTP-Auth+TLS SMTP+Virtual Qpopper Qpopper/SSL Courier-IMAP FetchMail Procmail WebMail AntiVirus Relay Mail

Webメールの第2段です。おやじは、WebメールとしてSqWebMailを使っていましたが、SquirrelMailというPHPベースのものがあることを知り、PHPの勉強も兼ねて乗り換えてみることにしました。SqwebMailで添付ファイルが壊れたことがあったのも一つの要因です。といっても一度だけですが。
なお、ここではSquirrelMailの基本的なところを動かすことだけについて示しています。と、いうよりも、まだ使い込んでいるわけではないので・・・ これしか書けません。SquirrelMailにはpluginがいろいろ用意されていますので、使用方法に合わせてアレンジしていくと良いと思います。

■SquirrelMail導入のための必要条件

SquirrelMailを導入るための必要条件は下記のとおりです。
  1. SquirrelMailはPHPベースですので、PHPが使える環境が必要である。日本語環境で使用するには、PHP 4.1.2以上でmbstringが有効になっているものが必要。ApacheのPHP対応については、こちらを参照のこと。
  2. 連携するためのimapサーバが必要である。imapサーバとしては、cyrus、uw、exchange、courier、macosx他に対応している。なお、imapサーバは必ずしもSquirrelMailと同一のサーバである必要はない。sslも使用できるので、外部サーバであればこちらを利用すると良い。おやじは同じサーバ内なので未使用。
  3. おやじはApacheを使用しているので、1項関連でDSOモジュールとしてPHPを組み込むため、再コンパイルが必要。ApacheのDSO対応については、こちらを参照のこと。

■SqirrelMailのインストールと設定

SqirrelMailのインストールにあたって、WebサーバはPHP対応になっているものとします。ApacheのPHP対応については、、こちらを参照ください。
SqirrelMailの日本語対応版には、RedHat用のRPMが用意されているのですが、PHPが新しすぎるためかインストールではじかれてしまいます。仕方がないので、ソースからインストールすることにしました。

◆SquirrelMailのインストール

SquirrelMailの日本語対応版の最新版のアーカイブをこちらからダウンロードしてきます。ダウンロードするのは、日本語化パッチをあてた本体(squirrelmail-1.4.5-ja-2005xxxx.tar.gz)と、日本語のlocal情報(ja_JP-1.4.5-ja-20050714.tar.gz)の2つのアーカイブです。こちらには、本体関係としてsquirrelmail-1.4.5-ja-2005xxxx-patch.gz (本家アーカイブからの差分)とsquirrelmail-1.4.5-ja-2005xxxx.tar.gz (パッチ当て済みのアーカイブ)がありますので、後者の方をダウンロードしてきます。
  1. アーカイブの展開

    本体とlocal情報を/usr/local/src以下にダウンロードし、アーカイブをApacheでアクセス可能なディレクトリ展開するが、このままですと
    アクセスが不便( http://www.aconus.com/squirrelmai-1.4.5/ )なので、アクセスしやすい名前(ex. webmail)に変更する。続いて、local情報も展開しておく。こちらがないと日本語化されないので忘れずに。

    # cd /usr/local/src
    # wget http://www.yamaai-tech.com/~masato/Download/squirrelmail-1.4.5-ja-20050714.tar.gz
    # wget http://www.yamaai-tech.com/~masato/Download/ja_JP-1.4.5-ja-20050714.tar.gz
    # cd /home
    # tar zxfv /usr/local/src/squirrelmail-1.4.5-ja-20050714.tar.gz
    # mv squirrelmai-1.4.5 webmail
    # cd webmail
    # tar zxfv /usr/local/src/a_JP-1.4.5-ja-20050714.tar.gz


  2. dataディレクトリのパーミッションおよびオーナの変更

    dataディレクトリのパーミッションおよびオーナを変更する。オーナはApacheのユーザ:グループにあわせること。

    # cd webmail
    # chmod 730 data
    # chown -R nobody:nobody data


  3. dataディレクトリの不可視化

    dataディレクトリが外部から見えないように、dataディレクトリに.htaccessが用意されているので、それが有効になるようにhttpd.confに下記を追記する。

    # vi /usr/local/apache2/conf/httpd.conf

      <Directory /webmail>
        AllowOverride Limit
      </Directory>

    [Esc]、[:]、[w]、[q]で保存。

    # /etc/rc.d/init.d/httpd2 restart


◆SquirrelMailの設定

SquirrelMailには設定ツールが用意されているので、それを使用して設定していきます。設定ツールは、./configureで起動されますので、順次設定していきます。
  1. ツールが起動すると以下のような画面が表示されるので、まずは使用するIMAPサーバにあわせたデフォルト設定を行うため、dを選択する。

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Main Menu --
    1.  Organization Preferences
    2.  Server Settings
    3.  Folder Defaults
    4.  General Options
    5.  Themes
    6.  Address Books
    7.  Message of the Day (MOTD)
    8.  Plugins
    9.  Database
    10. Languages

    D.  Set pre-defined settings for specific IMAP servers

    C   Turn color on
    S   Save datav Q   Quit

    Command >>
    d[Enter]


  2. 下記のような画面が表示されるので、使用するIMAPサーバの種類を設定する。 変更後 r でメインメニューに戻る。

    SquirrelMail Configuration : Read: config_default.php
    ---------------------------------------------------------
    While we have been building SquirrelMail, we have discovered some
    preferences that work better with some servers that don't work so
    well with others.  If you select your IMAP server, this option will
    set some pre-defined settings for that server.

    Please note that you will still need to go through and make sure
    everything is correct.  This does not change everything.  There are
    only a few settings that this will change.

    Please select your IMAP server:
        cyrus       = Cyrus IMAP server
        uw          = University of Washington's IMAP server
        exchange    = Microsoft Exchange IMAP server
        courier     = Courier IMAP server
        macosx      = Mac OS X Mailserver
        hmailserver = hMailServer
        quit        = Do not change anything
    Command >>
    courier[Enter]

                  imap_server_type = courier
             default_folder_prefix = INBOX.
                      trash_folder = Trash
                       sent_folder = Sent
                      draft_folder = Drafts
                show_prefix_option = false
              default_sub_of_inbox = false
    show_contain_subfolders_option = false
                optional_delimiter = .
                     delete_folder = true

    Press any key to continue...
    [Enter]


  3. ツールが起動すると以下のような画面が表示されるので、まずはOrganization Preferencesで基本的な設定を行うため、1を選択する。

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Main Menu --
    1.  Organization Preferences
    2.  Server Settings
    3.  Folder Defaults
    4.  General Options
    5.  Themes
    6.  Address Books
    7.  Message of the Day (MOTD)
    8.  Plugins
    9.  Database
    10. Languages

    D.  Set pre-defined settings for specific IMAP servers

    C   Turn color on
    S   Save data
    Q   Quit
    Command >>
    1[Enter]


  4. 下記のような画面が表示されるので、Signout Pageを選択(5を選択)し、SquirrelMailのトップページのURIを指定する。ログアウト時にトップページに戻るための変更なので不要ならそのままでよい。 変更後 r でメインメニューに戻る。

    SquirrelMail Configuration : Read: config_default.php (1.4.0
    ---------------------------------------------------------
    Organization Preferences
    1.  Organization Name      : SquirrelMail
    2.  Organization Logo      : ../images/sm_logo.png
    3.  Org. Logo Width/Height : (308/111)
    4.  Organization Title     : SquirrelMail $version
    5.  Signout Page           :
    6.  Top Frame              : _top
    7.  Provider link          : http://www.squirrelmail.org/
    8.  Provider name          : SquirrelMail

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    5[Enter]
    When users click the Sign Out button they will be logged out and
    then sent to signout_page.  If signout_page is left empty,
    (hit space and then return) they will be taken, as normal,
    to the default and rather sparse SquirrelMail signout page.

    []: /webmail[Eenter]

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Organization Preferences
    1.  Organization Name      : SquirrelMail
    2.  Organization Logo      : ../images/sm_logo.png
    3.  Org. Logo Width/Height : (308/111)
    4.  Organization Title     : SquirrelMail $version
    5.  Signout Page           : /webmail
    6.  Top Frame              : _top
    7.  Provider link          : http://www.squirrelmail.org/
    8.  Provider name          : SquirrelMail

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    r[Enter]


  5. 同様に以降も設定していく。メインメニューで、Server Settings(2を選択)でドメイン名とimapサーバ(デフォルトはother)の設定を行う。

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Server Settings

    General
    -------
    1.  Domain                 : example.com
    2.  Invert Time            : false
    3.  Sendmail or SMTP       : SMTP

    A.  Update IMAP Settings   : localhost:143 (other)
    B.  Update SMTP Settings   : localhost:25

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    1[Enter]

    The domain name is the suffix at the end of all email addresses.  If
    for example, your email address is jdoe@example.com, then your domain
    would be example.com.

    [example.com]:
    mail.aconus.com[Enter]

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Server Settings

    General
    -------
    1.  Domain                 : mail.aconus.com
    2.  Invert Time            : false
    3.  Sendmail or SMTP       : SMTP

    A.  Update IMAP Settings   : localhost:143 (other)
    B.  Update SMTP Settings   : localhost:25

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    a[Enter]

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Server Settings

    General
    -------
    1.  Domain                 : mail.aconus.com
    2.  Invert Time            : false
    3.  Sendmail or SMTP       : SMTP

    IMAP Settings
    --------------
    4.  IMAP Server            : localhost
    5.  IMAP Port              : 143
    6.  Authentication type    : login
    7.  Secure IMAP (TLS)      : false
    8.  Server software        : other
    9.  Delimiter              : detect

    B.  Update SMTP Settings   : localhost:25
    H.  Hide IMAP Server Settings

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    8[Enter]
    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Server Settings

    General
    -------
    1.  Domain                 : mail.aconus.com
    2.  Invert Time            : false
    3.  Sendmail or SMTP       : SMTP

    IMAP Settings
    --------------
    4.  IMAP Server            : localhost
    5.  IMAP Port              : 143
    6.  Authentication type    : login
    7.  Secure IMAP (TLS)      : false
    8.  Server software        : courier
    9.  Delimiter              : detect

    B.  Update SMTP Settings   : localhost:25
    H.  Hide IMAP Server Settings

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    r[Enter]


  6. メインメニューで、Languages(10を選択)でDefault Languagesの変更(en_US -> ja_JP)とDefault Charsetの変更(iso-8859-1 -> iso-2022-jp)を行う。

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Language preferences
    1.  Default Language       : en_US
    2.  Default Charset        : iso-8859-1
    3.  Enable lossy encoding  : false

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    1[Enter]
    SquirrelMail attempts to set the language in many ways.  If it
    can not figure it out in another way, it will default to this
    language.  Please use the code for the desired language.

    [en_US]:
    ja_JP[Enter]
    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Language preferences
    1.  Default Language       : ja_JP
    2.  Default Charset        : iso-8859-1
    3.  Enable lossy encoding  : false

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    2[Enter]
    This option controls what character set is used when sending
    mail and when sending HTML to the browser.

    This option is used only when default language is 'en_US'.

    [iso-8859-1]:
    iso-2022-jp[Enter]

    SquirrelMail Configuration : Read: config_default.php (1.4.0)
    ---------------------------------------------------------
    Language preferences
    1.  Default Language       : ja_JP
    2.  Default Charset        : iso-2022-jp
    3.  Enable lossy encoding  : false

    R   Return to Main Menu
    C   Turn color on
    S   Save data
    Q   Quit

    Command >>
    r[Enter]


  7. 最後にデータをセーブ(sを入力)し、qを入力してconfigureは終了。
後はブラウザから、

       http://www.aconus.com/webmail/

と起動し、imapサーバのユーザとパスワードでログインできればおしまいです。特に難しいことも無く動作し、文字化け等もないようです。

■セキュリィティ対策

外部からアクセスするのに生では危険なので、httpでアクセスしてきたらhttpsにredirectするようにしました。当然のこととしてhttpsに対応していなければなりませんが、対処方法としては以下の3点ぐらいがあると思います。
  1. login.phpでredirectする方法

    SqWebMailはconfigure時に指定すれば設定できたが、SquirreMailにはそのようなオプションが無いので、index.phpを下記のように変更(赤字を追加)して対応した。ホスト名は各自の環境に合わせてること。ssl化のためのpluginもあるようですが、こちらが簡単だったので・・・。

     # vi /usr/share/squirrelmail/login.php
     <?php

     /**
      * index.php -- Displays the main frameset
      *
      * Copyright (c) 1999-2003 The SquirrelMail Project Team
      * Licensed under the GNU GPL. For full terms see the file COPYING.
      *
      * Redirects to the login page.
      *
      * $Id: index.php,v 1.14 2002/12/31 12:49:29 kink Exp $
      */

     header("Location: https://www.aconus.com/webmail/src/login.php\n\n");
     exit();

     ?>

     [Esc]、[:]、[w]、[q]で保存。


  2. mod_rewriteによる方法

    こちらにある方法でhttpsにredirectする。設定する場所は、環境に合わせること。通常はデフォルトサーバか非httpsのバーチャルサーバのはずである。

    <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteLog "logs/rewrite_log"
          RewriteLogLevel 0

          RewriteCond %{SERVER_PORT} !^443$
          RewriteRule ^/webmail/(.*)?$ https://%{HTTP_HOST}/webmail/$1 [L,R]
    </IfModule>


  3. Redirect/RedirectMatchディレクティブによる方法

    デフォルトサーバか非httpsのバーチャルサーバ内で下記設定を行うことにより、httpsにredirectする。無限ループしてしまうので、間違ってもhttps用バーチャルサーバに書かないこと。また、ホスト名は各自の環境に合わせること。


    Redirect permanent /webmail https://www.aconus.com/webmail

    または

    RedirectMatch permanent ^/webmail/(.*)?$ https://www.aconus.com/webmail/$1


     

Mail System Postfix SMTP-Auth SMTP-Auth+TLS SMTP+Virtual Qpopper Qpopper/SSL Courier-IMAP FetchMail Procmail WebMail AntiVirus Relay Mail