What's mobileimap?
mobileimap is an IMAP-based web mailer for mobile phones. Using mobileimap, you can access your IMAP mailbox from mobile phones such as i-mode and au in Japan. mobileimap runs as a stand-alone HTTP server instead of a CGI script.
What's new
- 2004-06-09: mobileimap 2.5 Released!
- 2003-04-08: mobileimap 0.1 Released!
- The initial version was released.
Screenshots
The following screenshots were taken on a Japanese mobile phone called A3014S. (The screenshots are rather old. Recent mobileimap has a form for searching mail)
Summary | Display | Reply | Folders |
Requirements
- Ruby 1.6.7 or newer
- To support gzip compression (optional)
- Ruby/Zlib 0.6 or later
- To support https (optional)
- OpenSSL for Ruby 0.2.0pre0 or later
- To support Unicode folder names (optional)
- iconv library provided by Ruby 1.8
- Recent version of Net::IMAP library (Ruby 1.8.1 or later)
Supported devices
Mobile devices that support WAP 2.0 (XHTML Basic) are probably capable of displaying HTML that mobileimap generates.
- au (Japan)
- A5304T, A5303H, A3014S, A3012CA, A5303H, A1301S
- i-mode (Japan)
- P504i, P211i, SO505i, SH505i
- FOMA (Japan)
- P2102V
- Air H& PHONE (Japan)
- AH-J3002V
- feelH& (Japan)
- SANYO J90
- vodafone (Japan)
- J-SH52, J-SH53
- In Japan, vodafone can only access web servers running on the port 80 or 443.
To use vodafone, you can run mobileimap on the port 80, or
use Apache's mod_proxy to delegate requests to a certain
directory to mobileimap running on another port number. For
example,
ProxyPass /mobileimap http://localhost:12345
in httpd.conf allows delegation of all requests to /mobileimap to mobileimap running on the port 12345.
Supported IMAP servers
- Courier-IMAP
To search Japanese mail, you need to specify --enable-unicode=iso-2022-jp to ./configure - Cyrus IMAP Server
- uw-imapd
- Binc IMAP
Usage
Basic usage
mobileimap runs as a stand-alone HTTP server. To run mobileimap on the same host running your IMAP server, try the following command.
% mobileimap USERNAME@localhost:143[CRAM-MD5]: IMAP Password: http://example.jp:8143/
After entering your IMAP password, a URL is displayed. Then you can access the URL using any browser such as Mozilla and Internet Explorer. If your mail can be read successfully, enter Ctrl+C to terminate mobileimap.
The default parameters that mobileimap uses are as follows. Each parameter can be specified by the corresponding command option.
- IMAPの認証方法 (-a, --imap-auth)
- CRAM-MD5
- CRAM-MD5 の他は LOGIN と PLAIN を選べます。
- IMAPのユーザ名 (-u, --imap-user)
- 環境変数USER
- IMAPのホスト名 (-S, --imap-host)
- localhost
- IMAPのポート番号 (-P, --http-host)
- 143
- HTTPのホスト名 (-s, --http-host)
- Socket.gethostname
- HTTPのポート番号 (-p, --http-port)
- 8143
- SMTPのホスト名 (--smtp-host)
- localhost
- SMTPのポート番号 (--smtp-port)
- 25
- メール送信時の From: (-f, --from)
- 環境変数USER @ Socket.gethostname
- --from="Taro Yamada <taro@example.jp>" のように指定できます
Running as a daemon
You can specify -d option to daemonize mobileimap. In this case, mobileimap creates ~/.mobileimap.pid to store the process ID and also creates ~/.mobileimap.log to write log messages.
To terminate mobileimap running in the background, run the following. Then mobileimap is terminated and ~/.mobileimap.pid is removed.
% mobileimap --stop
If you are running two or more mobileimap, the above command terminates all mobileimap processes. To terminate mobileimap selectively, you can use --list option as follows
% mobileimap --list 7754 http://example.jp:8143/ 7761 http://example.jp:8144/foo
and gives the URL to be terminated to --stop option as follows.
% mobileimap --stop='http://example.jp:8143/'
Note that you can specify arbitrary numbers of --stop option as follows.
% mobileimap --stop='http://example.jp:8143/ http://example.jp:8144/foo'
Security issues
1. Adding a secret path
Just running mobileimap, anyone can access the URL at that mobileimap is running if they know the host name and port number. To mitigate the problem, you can specify a secret path to the URL as follows.
% mobileimap -x foobar
In this case, mobileimap begins to accept only the requests to http://example.jp:8143/foobar. You have to keep the path secret. Since mobileimap doesn't add links to other sites, your URL will not be exposed in the referer logs of other sites.
2. Using a subscriber ID
In Japan, some mobile phone carriers map a unique ID called subsriber ID to each device and provide it to the request header of HTTP. mobileimap is capable of using the subscriber ID for authentication. You can specify your subscribe ID to mobileimap with -i option as follows.
% mobileimap -i xxxxxxxxxxxxxx_xx.ezweb.ne.jp
In this case, mobileimap begins to accept only requests including the specified subscriber ID.
To check your own subscriber ID, just pass the random string to -i option like
% mobileimap -i foobar
and access the URL at that mobileimap running. Then, mobileimap says "your subscriber ID is wrong: xxxxxxxxxxxxxx" and you can make a note of the ID.
3. Host/IP-based access control
ホスト名/IPアドレスでのアクセス制御を行うには --allow-hosts オプションで、アクセスを許可するホスト名/IPアドレスを正規表 現で指定します。
たとえば、example.ne.jp 以外からのアクセスを受けつけないよう にするには、次のように指定します。
% mobileimap --allow-hosts='\.example\.ne\.jp$'
下の例のように、IPアドレスを指定することも可能です。
% mobileimap --allow-hosts='/^192\.168\.0\.1$/'
その4: https を喋る
OpenSSL for Ruby がインストールされている場合は https を喋ることがで きます。https を喋るにはコマンドラインから次のように実行します。
% mobileimap --ssl
ホスト名とポート名は --http-host, --http-port で指定したもの が使われます。SSLの鍵と証明書を指定するには --ssl-key, --ssl-cert オプションを使います。
なお、安心感を高める方法その1〜4は併用することができます。
.mobileimaprc の設定方法
% mobileimap --dump-config > ~/.mobileimaprc
のように実行すると、~/.mobileimaprc の雛形が作成されるので、 これを編集してください。また、
% mobileimap -a login -u foo -x bar -d --dump-config > ~/.mobileimaprc
のように --dump-config とともに他のコマンドラインオプション も指定すると、それらの値を反映した ~/.mobileimap が作成されます。
~/.mobileimaprc は mobileimap の起動 時に自動的に読み込まれます。他の設定ファイルを読み込む場合は コマンドラインオプション --mobileimaprc=FILE で指定します。
フォルダ一覧で表示されるフォルダを指定する
フォルダ一覧で表示されるフォルダを指定するには、 --folder-include オプションと --folder-exclude オプションで 正規表現を指定します。両方指定したときは --folder-include が 先に適用され、その後で --folder-exclude が適用されます。
# foo|bar にマッチするフォルダのみを表示する % mobileimap --folder-include="foo|bar" # baz|quux にマッチするフォルダを除外する % mobileimap --folder-exclude="baz|quux"
その他コマンドラインオプションの使い方
- --subscribed-only
- フォルダ一覧のときに購読フォルダのみを表示する
- --folder-prefix=PREFIX
- フォルダ名のプリフィクスを指定する (uw-imapd など用)
- --fcc-folder=FOLDER
- Webから送信したファイルを保存するフォルダを指定する (Courier-IMAP なら INBOX.Sent など)
- --client-width
- クライアントの横幅の桁数を指定する (デフォルトは20)
コマンドラインオプションの一覧は mobileimap --help で表示できます。
gzip 圧縮
Ruby/Zlib をインストールしてから mobileimap サーバを立ち上げると、 gzip による圧縮が行えるようになります。
gzip 対応のブラウザからアクセスすると、コンテンツが gzip で 圧縮されてブラウザに送られます。このとき、ページのフッタ部分 に
-- mobileimap 2.5 (gzip)
のように、gzip で圧縮されているという印がつきます。gzip圧縮 を行うと、通信するデータの量が減るため、パケット料金の節約が 期待できます。とはいうものの、gzip 圧縮に対応したブラウザを 内蔵した携帯電話は存在しないようです (パケットが増えた方が儲 かるわけですから、そういうものでしょうね。もしあったら教えて ください)。
Tips
デフォルトで「未読」のメールだけを読みたい
デフォルトで「未読」のメールだけを読みたい場合はメール一覧で 「未読」を選択した後でブックマークしてください。
Known problems
- メール一覧時に "unexpected token NIL" や "closed stream error" といった エラーが起きる場合は最新の Net::IMAP をお試しください。
(Ruby 1.8.1 までの Net::IMAP では起きる可能性があります) - https接続時は gzip 圧縮できない (なぜか出力が途中で切れるというバグが解決しないため)
Download
mobielimap is a free software with ABSOLUTELY NO WARRANTY under the terms of the GNU General Public License version 2.
Links
- squirrelmail
A full featured IMAP-based web mailer - mongle
A very simple IMAP-based web mailer