-
entry001105
comments
ガヂェットとチャットをしているときに
「デスクトップ環境を Linux に移行したいけど、Linux で電信八号は使えないからなぁ」
「電信八号じゃなくても vi でメール書ければ良いんでしょ?」
「うん、確かにそうだね」
「お、こんなツールがあるらしいよ」
というなかなか爛れた会話になり、発見されたのがこの MUA。mutt はすべてコンソール・ベースで動作する MUA です。 基本的には受信したメールを扱う機能に特化していて、メールの作成、送信や閲覧には別ツールと連携して動作します。 電信八号に非常に近いものを感じますな。 もちろん外部エディタとして vi を使ってメールを書くことも可能です。 これは面白い、ということでさっそくセットアップしてみることにしました。 Cygwin 上で……あれ? 当初の目的が……。
mutt はもともと UNIX 上で開発されているツールなので、Cygwin にもってくるにはいくつか追加の設定が必要になりました。 そのあたりの手順を送信設定と受信設定の二回に分けてご紹介します。 今回はまず送信設定編です。MTEntryMoremutt の情報mutt の情報は、先ほどのサイトにアップされている Linux Japan の記事がとっかかりとして良さそうです。
もっと網羅的に知りたい場合は元の英文にあたるのが確実でしょう。
mutt の日本語対応状況mutt は安定版の 1.4 系と開発版の 1.5 系が存在していて、Cygwin の標準パッケージには安定板の 1.4.2.2i(2007/03/27 現在)が用意されています。 1.3 系以降は国際化対応していることになっているので、現行のバージョンでは問題なく日本語を扱えるはずです。 確かに Linux 上などで動かすときちんと日本語を処理してくれるのですが、ぼくが試した限り画面表示に使える日本語文字エンコーディングは EUC-JP のみで、Shift_JIS は吐いてくれませんでした。 Cygwin の標準ターミナルは DOS プロンプトの Shift_JIS なのでちょっと厳しい状況ですが、今回は TF-8 TeraTerm Pro with TTSSH2 に同梱された CygTerm を利用することでこの問題を回避します。 CygTerm は Cygwin のターミナルとして TeraTerm をかぶせることができるツールです。
このツールは入出力の文字エンコーディングを指定可能なので、mutt にあわせて EUC-JP を使えるよう設定します。
日本語入力の問題表示の問題は CygTerm で解決できますが、今度はメール作成の日本語入力が問題になります。 CygTerm 越しに vi を使用する場合、入力モードで日本語を入力したあとにコマンド・モードに遷移すると、日本語 IME も解除する必要があります。 Windows 版 gVim はこの IME のオン / オフ制御を行ってくれますが、間に CygTerm をはさんだ Cygwin 版 vim はそこまで賢い動きをしてくれません。 そこで今回は、ちょっと変則的ですが CygTerm 越しの mutt から Windows 版 gVim を起動してメールを作成するよう設定します。
Cygwin のセットアップ最初に Cygwin のセットアップです。
上記サイトから setup.exe をダウンロードしてインストールを行います。 以下のパッケージを追加でインストールしてください。
- Devel
- Mail
- mutt
- ssmtp
カテゴリー "Devel" は送信設定の範囲では不要ですが、後日執筆予定の mutt + Cygwin + Maildir という構成の受信設定を行うために必要になります。 Maildir を使いたい人は入れておいてください。
CygTerm のセットアップ続いて CygTerm のセットアップです。
上記サイトから最新版をダウンロードしてインストールします。 インストール途中のコンポーネント選択画面で "CygTerm+" にチェックを入れ忘れないように。 TeraTerm をインストールしたディレクトリにある "cygterm.exe" が実行ファイルです。 メニュー "Setup > Additional Settings" の "Cygwin" タブから CygTerm の設定を行えます。 "TERM" 欄の ttermpro.exe の引数 "/KR" , "/KT" で文字エンコーディングを指定できるので、双方とも "EUC" としましょう。 設定変更後は "Setup > Save settings..." で明示的に設定を保存する必要があります。
ssmtp のセットアップ続きましては ssmtp の設定を行います。 ssmtp はごくごくシンプルな MTA で、別の SMTP サーバーにメールを送りつける役割を果たします。 mutt はメールを送る機能(SMTP を話す機能)すらも、こういった別ツールを呼び出すことでまかなっているのです。 ssmtp の設定は ssmtp-config コマンドで行います。 たった六つの質問に答えるだけの簡単設定です。 設定項目は順にこんな具合。
- メールをリレーしてもらう SMTP サーバー
- ssmtp が送信メールの From フィールドを書き換えるかどうか。今回は書き換えないように "YES" を設定(意味が逆なような気がするんだけど……)
- ssmtp が動作するホストの名前
- メールアカウントの @ 以降
- エラーメールの戻り先となるユーザー名
- sendmail コマンドの代わりに使うかどうか。今回は sendmail がないので "y" に。
以下は設定例です。 環境に合わせて読み替えてください。
$ ssmtp-config Configure sSMTP in Six Easy Steps (1) mailhub This is the computer responsible for handling your outgoing mail. It could be the SMTP server of your ISP, or a departmental mailhub. Use the fully-qualified domain name (foo.bar.baz) of the mailhub; if it uses an unusual SMTP port number, use the colon syntax foo.bar.baz:2525 Otherwise sSMTP will use the standard SMTP port number (25). (Note that sSMTP can support a user-dependent mailhub with the 'reverse aliases' feature, for which see the man page.) Please enter your mailhub []: smtp.example.com (2) FromLineOverride This specifies how sSMTP handles the From: line of outgoing mail. If FromLineOverride=YES, sSMTP will leave the From: line alone if it already exists. If FromLineOverride has any other value, or there is no From: line, sSMTP creates the From: line using your username (or the -f command-line option), and the value of the rewriteDomain option (step (4), below). If you use a mail user agent (MUA; e.g. mutt, pine) I recommend using YES and having the MUA set the From: line. (Exception: the 'reverse aliases' feature can be used to set up a particular From: address for each user, in which case don't use FromLineOverride=YES. See the man page.) FromLineOverride? [YES]: YES (3) hostname sSMTP uses the hostname of your computer to identify itself to the mailhub, and in the Received: headers of the outgoing mail. This has relatively little effect on how the mail is handled. Use the fully-qualified domain name (FQDN) of your computer (foo.bar.baz). If it doesn't have a FQDN, use some name for your box. Hostname of your box []: mypc.example.com (4) rewriteDomain Please enter the mail name of your system. sSMTP uses this value to add a domain to unqualified e-mail addresses (addresses without an @-sign). You probably want to use the domain from your own e-mail address. You probably want to set up your MUA to handle unqualified addresses itself, in which case sSMTP will never have to use this. (Users of cron note that cron always uses unqualified addresses.) Mail name []: example.com (5) root If sSMTP finds an unqualified e-mail address among the recipients, and it corresponds to a username on your local machine with a userid less than 1000, then the e-mail is sent to this value instead. The idea is that mail sent to 'root' should probably go to 'postmaster' instead. If you set up your MUA to do its own handling of unqualified addresses, this is irrelevant. (But note that cron does use unqualified addresses corresponding to local usernames.) Use your own e-mail address unless you know a better postmaster. System users receive mail at []: myAccount (6) link /usr/sbin/sendmail to /usr/sbin/ssmtp? Some programs (e.g. cron) expect /usr/sbin/sendmail to handle mail. Currently it does not exist. Changing it to a link to ssmtp may affect other programs such as cron. Do you want to link /usr/sbin/sendmail to /usr/sbin/ssmtp (y/N)? y Please check the configuration file /etc/ssmtp/ssmtp.conf for correctness.
gVim のセットアップ下ごしらえの最後は gVim の設定です。 gVim 本体をインストールする前に、文字エンコーディング変換のためのライブラリを導入します。
こちらから libiconv.dll を入手し、%SystemRoot%system32 フォルダなどにコピーします。 このライブラリがあると、gVim で :set fileencoding することで文字コード変換を行うことができるようになります。
gVim の最新版は 7.0 です。 以下のサイトなどから入手してインストールします。
今回の構成で gVim は Cygwin 環境から呼ばれることになります。 そのため Cygwin での環境変数 $HOME の値を引き継ぐことになり、gVim は設定ファイルとして Cygwin の ${HOME}/.vimrc を読みにいきます。 .vimrc の詳細は別のドキュメントに譲るとして、今回はファイルを euc-jp として扱うために以下の行を追加します。
set fileencoding=euc-jp set fileencodings=euc-jp,iso-2022-jp,utf-8,ucs2le,ucs-2,cp932
.muttrc の設定さて、ここまでで下ごしらえは完了。 いよいよ mutt の設定です。 mutt はデフォルトで ~/.mutt/muttrc を設定ファイルとして読みに行きます。 設定項目などの詳細は以下のドキュメントを参照してください。 ここでは動作させるために最低限必要な設定のみを述べます。
まずは文字エンコーディング関連の設定です。 EUC-JP を使うよう設定します。
set charset=euc-jp set send_charset=us-ascii:iso-2022-jp
続いてメール作成に使うエディタの設定です。 先ほど設定した gVim を指定します。 ドライブ・レター周りの記述にご注意を。 gVim の実行ファイルは Cygwin スタイルで記述し、編集すべきファイルは DOS スタイルで記述します。 "%s" はファイル名に置換されますが、Cygwin の "/" から始まるパスになっているので、Windows から見た Cygwin のインストール・パスを頭に追加してください。 以下設定例です。 環境に合わせて読み替えてください。
set editor="/cygdrive/c/Vim/vim70/gvim.exe c:/cygwin%s"
送信設定の最後は、送信ユーザーのメールアカウントです。 From ヘッダフィールドに設定される各値を設定します。
set realname="Foo Bar" set hostname="example.com" set from="Foo.Bar@example.com"
以上で基本的な送信設定は完了です。
シェルの設定設定の最後はシェルの設定です。 mutt を動かすには以下の設定を行います。
$ unset LC_CTYPE $ unset LC_MESSAGES $ export LC_ALL=ja_JP.eucJP
起動と動作確認いよいよ mutt を起動しましょう。
$ muttメールを作成するには "m" と入力します。 To と Subject を訊かれた後に gVim が起動するはずです。 gVim で :set fenc? として文字エンコーディングを確認してください。 もし euc-jp 以外の値が表示された場合は :set fenc=euc-jp として文字エンコーディングを変更する必要があります。 本文を入力して gVim を終了すると、mutt の送信確認画面に移ります。 送信メールの内容を確認して、問題なければ "y" と入力してください。 メールが送信されます。
以上、Cygwin 上で mutt を使うための設定前半「送信設定編」でした。 このあとはメールの受信設定を行うのですが、実は素の mutt はちょっと問題を抱えていて、Maildir 形式をまともに扱えません(根本原因は mutt ではなく Maildir 形式と Windows の相性ですが)。 ぼくのメールボックスは、過去に qmail を使っていた経緯から Maildir 形式になっています。 このあたりの詳しい状況と問題の回避方法は後半の「受信設定編」で。