mobileimap: an IMAP-based web mailer for mobile phones

Last Modified: 2004-07-11 (Since: 2003-04-08)

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


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


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)
Air H& PHONE (Japan)
feelH& (Japan)
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


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:

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 の他は LOGIN と PLAIN を選べます。
IMAPのユーザ名 (-u, --imap-user)
IMAPのホスト名 (-S, --imap-host)
IMAPのポート番号 (-P, --http-host)
HTTPのホスト名 (-s, --http-host)
HTTPのポート番号 (-p, --http-port)
SMTPのホスト名 (--smtp-host)
SMTPのポート番号 (--smtp-port)
メール送信時の From: (-f, --from)
環境変数USER @ Socket.gethostname
--from="Taro Yamada <>" のように指定できます

Running as a daemon

You can specify -d option to daemonize mobileimap. In this case, mobileimap creates ~/ 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 ~/ 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

and gives the URL to be terminated to --stop option as follows.

% mobileimap --stop=''

Note that you can specify arbitrary numbers of --stop option as follows.

% mobileimap --stop=''

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 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

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アドレスを正規表 現で指定します。

たとえば、 以外からのアクセスを受けつけないよう にするには、次のように指定します。

% mobileimap --allow-hosts='\.example\.ne\.jp$'


% 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 オプションを使います。


.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"


フォルダ名のプリフィクスを指定する (uw-imapd など用)
Webから送信したファイルを保存するフォルダを指定する (Courier-IMAP なら INBOX.Sent など)
クライアントの横幅の桁数を指定する (デフォルトは20)

コマンドラインオプションの一覧は mobileimap --help で表示できます。

gzip 圧縮

Ruby/Zlib をインストールしてから mobileimap サーバを立ち上げると、 gzip による圧縮が行えるようになります。

gzip 対応のブラウザからアクセスすると、コンテンツが gzip で 圧縮されてブラウザに送られます。このとき、ページのフッタ部分 に

mobileimap 2.5 (gzip)

のように、gzip で圧縮されているという印がつきます。gzip圧縮 を行うと、通信するデータの量が減るため、パケット料金の節約が 期待できます。とはいうものの、gzip 圧縮に対応したブラウザを 内蔵した携帯電話は存在しないようです (パケットが増えた方が儲 かるわけですから、そういうものでしょうね。もしあったら教えて ください)。



デフォルトで「未読」のメールだけを読みたい場合はメール一覧で 「未読」を選択した後でブックマークしてください。

Known problems


mobielimap is a free software with ABSOLUTELY NO WARRANTY under the terms of the GNU General Public License version 2.


Satoru Takabayashi