Mutt
関連記事
Mutt は強力な機能を持っていることで知られているテキストベースのメールクライアントです。20年以上前に作られたメールクライアントでありながら、Mutt は今でも多くのパワーユーザーから愛用されています。
Mutt は主にメールユーザエージェント (MUA) として開発されており、最初はメールを読むために書かれました。他のメールアプリケーションと比べて後の実装 (メールの取得・送信・フィルタリングの追加) はシンプルとなっており、ユーザーは外部のアプリケーションを使って Mutt の機能を拡張できます。
しかしながら、Arch Linux の mutt パッケージは IMAP や POP3、SMTP のサポートを有効にしてコンパイルされているため、外部アプリケーションの必要はありません。
この記事ではネイティブの IMAP を使ってメールを送受信する方法と、OfflineIMAP や getmail (POP3) を使ってメールを取得し、POP3 の場合 procmail でフィルタリングして、msmtp でメールを送信する方法の両方を説明します。
目次
- 1 インストール
- 2 設定
- 3 ヒントとテクニック
- 3.1 キーバインディング
- 3.2 作成
- 3.3 印刷
- 3.4 コンテンツの表示
- 3.5 mutt とエディタの設定
- 3.6 表示設定
- 3.7 連絡先の管理
- 3.8 複数の送信者アカウントの管理
- 3.9 手動で IMAP のメール取得をリクエスト
- 3.10 カラー化によって巨大なフォルダのインデックスが遅くなる (IMAP)
- 3.11 フォルダの切り替えの高速化
- 3.12 メールのアーカイブ化
- 3.13 他のコンピュータにメールを移動
- 3.14 添付ファイルを保存するデフォルトフォルダ
- 3.15 ページャの挙動
- 3.16 クイック返信
- 3.17 グループ返信のメールアドレスを無視
- 3.18 IMAP メッセージキャッシュ
- 3.19 添付ファイルを開くか、バックグラウンドでHTMLメールを表示する
- 4 トラブルシューティング
- 5 ドキュメント
- 6 参照
インストール
任意で isync, OfflineIMAP, msmtp などの外部のヘルパーアプリケーションをインストールしてください (IMAP セットアップをする場合)。
もしくは (POP3 を使う場合) getmail, fetchmailAUR, fdm, procmail をインストールしてください。
NeoMutt
NeoMutt プロジェクトは Mutt にあらゆるパッチを適用しています。パッチによって膨大な数の 機能 が追加されます。古い Mutt のパッチの多くは更新・整理されドキュメント化されています。
AUR には mutt の別バージョンのパッケージが存在していますが、NeoMutt は適切なコンパイルオプションを実行することでそれらを置き換えます。現在、NeoMutt は AUR の neomutt や neomutt-gitAUR でインストールできます。
設定
このセクションでは #IMAP, #POP3, #Maildir, #SMTP の設定を扱います。
デフォルトで Mutt は2つのディレクトリから設定ファイルを認識します: ~/.muttrc
と ~/.mutt/muttrc
。どちらでも問題ありません。別の場所に設定ファイルを配置したい場合は $ mutt -F /path/to/.muttrc
を使ってください。また、Mutt の設定の要件をある程度知る必要があります。Mutt の構文は Bourne Shell とよく似ています。例えば、別の設定ファイルを読み込むには:
source /path/to/other/config/file
シェルコマンドの結果を変数に入れることができます:
set editor=`echo \$EDITOR`
ここで $
はエスケープされるためシェルに渡される前に Mutt によって置き換えることはありません。Bash 構文の $(...)
は使えないためバッククォートを使用することを覚えておいてください。Mutt には定義済み変数がたくさん存在しますが、自分で設定することもできます。ユーザー変数には必ず前に "my" を付ける必要があります:
set my_name = "John Doe"
IMAP
ネイティブの IMAP サポート
mutt パッケージは IMAP のサポートを有効にしてコンパイルされています。最低でも muttrc ファイルに4行を記述すればメールにアクセスすることができます。
imap_user
set imap_user=USERNAME
imap_pass
設定されていない場合、パスワードが要求されます。
set imap_pass=SECRET
folder
ローカルディレクトリに全てのメール (とディレクトリ) を保存するかわりに、サーバーを使用します (必要であれば最上階のフォルダも)。
set folder=imap[s]://imap.server.domain[:port]/[folder/]
フォルダを使用する必要はありませんが、他のフォルダが全て受信フォルダの中にある場合などに有用です。設定したフォルダは Mutt でイコール記号 (=) とプラス記号 (+) を使ってアクセスできます。例:
set folder=imaps://imap.gmail.com/
複数のアカウントを使用する場合、フォルダを分けるのがベストプラクティスです (例: account-hook)。複数の Gmail アカウントを持っている場合:
set folder=imaps://username@imap.gmail.com/
username@gmail.com はあなたのアカウントに置き換えてください。こうすることでフォルダを区別できるようになります。設定しないと認証エラーが発生します。
spoolfile
スプールファイルは、(フィルタリングされていない)電子メールが到着するフォルダーです。ほとんどの電子メールサービスでは、通常、INBOX という名前が付けられています。上記で設定したフル folder
パスの代わりに「=」または「+」を使用できるようになりました。例えば:
mailboxes
新着メールがないか定期的にチェックする必要がある imap フォルダーをここにリストします。
mailboxes =INBOX =family mailboxes imaps://imap.gmail.com/INBOX imaps://imap.gmail.com/family
または、すべてのサブスクライブされた IMAP フォルダーを確認します(すべての mailboxes
で追加)
set imap_check_subscribed
これら2つのバージョンは、すべてのフォルダーをサブスクライブする場合は同等です。したがって、2番目の方法の方がはるかに便利ですが、最初の方法の方が柔軟性が高くなります。また、新しいバージョンの Mutt は、デフォルトで「y」キーにバインドされたマクロを含むように設定されており、メールボックスの下にリストされているフォルダーのいずれかに変更できます。
変数を設定しなかった場合、デフォルトで spoolfile が使われます。サイドバーでも使用する変数です。
まとめ
これらのオプションを使用すると、Mutt を起動し、IMAP パスワードを入力して、メールの読み取りを開始できます。以下は、IMAP サポートを改善するために追加を検討する可能性のある他の行を含む muttrc スニペット (Gmail用) です。
set folder = imaps://imap.gmail.com/ set imap_user = your.username@gmail.com set imap_pass = your-imap-password set spoolfile = +INBOX mailboxes = +INBOX # Store message headers locally to speed things up. # If hcache is a folder, Mutt will create sub cache folders for each account which may speeds things up even more. set header_cache = ~/.cache/mutt # Store messages locally to speed things up, like searching message bodies. # Can be the same folder as header_cache. # This will cost important disk usage according to your e-mail amount. set message_cachedir = "~/.cache/mutt" # Specify where to save and/or look for postponed messages. set postponed = +[Gmail]/Drafts # Allow Mutt to open new imap connection automatically. unset imap_passive # Keep IMAP connection alive by polling intermittently (time in seconds). set imap_keepalive = 300 # How often to check for new mail (time in seconds). set mail_check = 120
外部の IMAP サポート
IMAP のサポートは Mutt に組み込まれていますが、オフラインで読むためにメールをダウンロードすることはしません。OfflineIMAP や isync などの外部のアプリケーションを使うことでメールをローカルフォルダにダウンロードして、それを Mutt で処理することが可能です。
メールをソートしたい場合は spamassassin や imapfilterAUR などのアプリケーションを使います。
POP3
mutt パッケージは POP3 のサポートを有効にしてコンパイルされています。muttrc(5)
で説明されているように pop_*
変数で設定できます。
また、外部のプログラムを使って POP3 でメールを取得することもできます。メールの取得には getmail を使ってメールのフィルタリングには procmail を使うのが人気のある選択肢です。
Maildir
Maildir は汎用・標準のフォーマットです。ほとんど全ての MUA が Maildir を処理でき、Mutt もサポートしています。Mutt で Maildir を使用するために必要な設定は少しだけです。muttrc を開いて以下の行を追加してください:
set mbox_type=Maildir set folder=~/mail set spoolfile=+/ set header_cache=~/.cache/mutt
上記は Maildir にアクセスして INBOX に新しいローカルメールが存在しないか確認するだけの最小設定です。上記の設定はメールのヘッダーをキャッシュしてディレクトリの表示を高速化します。(Arch の公式パッケージを使っていない場合) キャッシュは使用できない可能性があります。上記の設定は OfflineIMAP には影響を与えないので注意してください。常にサーバー上の全てのディレクトリを同期します。spoolfile
は Mutt が新しいメールが来ていないか問い合わせるローカルディレクトリです。メーリングリストのディレクトリなどスプールファイルは追加することができます。詳しい設定方法は Mutt のマニュアルを参照してください。
SMTP
POP や IMAP を使ってメールを受け取る場合でもメールを送信するときは SMTP を使います。
フォルダ
ここには基本的に重要なフォルダが1つだけあります。送信されたすべての電子メールが保存されるフォルダです。
set record = +Sent
Gmail は送信したメールを自動的に +[Gmail]/Sent
に保存するため、重複させないようにします:
unset record
ネイティブの SMTP サポート
公式の mutt は SMTP のサポートを有効にしてコンパイルされています。
例:
set my_pass='mysecretpass' set my_user=myname set realname = 'Your Real Name' set from = your-email-address set use_from = yes set smtp_url=smtps://$my_user:$my_pass@smtp.domain.tld set ssl_force_tls = yes
SMTP 資格情報が IMAP 資格情報と同じである場合、これらの変数を使用できることに注意してください。
set smtp_url=smtps://$imap_user:$imap_pass@smtp.domain.tld
セキュリティパラメータは変更する必要があるかもしれません。例えば以下のようなエラーが表示される場合:
SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
サーバーは SMTPS ではなく SMTP を使っているため、以下のように設定する必要があります:
set smtp_url=smtp://$imap_user:$imap_pass@smtp.domain.tld
他にも設定する必要がある変数が存在します。例えば STARTTLS を使用する場合:
set ssl_starttls = yes
詳しくは man 5 muttrc
を見て下さい。
外部の SMTP サポート
msmtp, SSMTP, opensmtpd など外部の SMTP エージェントを使うこともできます。
muttrc
の sendmail
変数で mutt でメールを配達するのに使用するプログラムと引数を定義できます。追加引数はプログラムによって受取人のアドレスとして解釈されます。
例えば、msmtp を使う場合:
muttrc
set realname='Disgruntled Kangaroo' set sendmail="/usr/bin/msmtp" set edit_headers=yes set folder=~/mail set mbox=+mbox set spoolfile=+inbox set record=+sent set postponed=+drafts set mbox_type=Maildir mailboxes +inbox +lovey-dovey +happy-kangaroos
Mutt からメールを送信
設定したら mutt
を起動してください:
~/mail/inbox
にあるメールが全て表示されます。m
を押すとメールを書くことができます。EDITOR
環境変数で設定されたエディタが使われます。変数が設定されていない場合、Mutt を起動する前に設定できます:
$ export EDITOR=your-favorite-editor $ mutt
EDITOR はシェルの設定ファイル (bashrc など) に保存するべきです。Mutt の設定ファイルでエディタを設定することもできます:
.muttrc
set editor=your-favorite-editor
テストの目的で、手紙を自分宛てに送ってください。手紙を書いたら、保存してエディターを終了します。 Mutt に戻り、電子メールに関する情報が表示されます。 y
を押して送信します。
マルチアカウント
これで、少なくとも1つのアカウントに対して有効な構成ができるはずです。すべてを1つのファイルにまとめているので、複数のアカウントをどのように使用するのか疑問に思われるかもしれません。
必要なのは、アカウント固有のパラメーターをそれぞれのファイルに書き込んで、それらを調達することだけです。各アカウントのすべての IMAP / POP3 / SMTP 構成は、それぞれのフォルダーに移動する必要があります。
Muttは、最も強力な機能の1つであるフックのおかげで、これを処理できます。基本的にフックは、特定のアクションの前に実行されるコマンドです。利用可能なフックがいくつかあります。複数のアカウントの場合、account-hooksとfolder-hooks を使用する必要があります。
- フォルダフックは、フォルダを切り替える前にコマンドを実行します。これは、特定のフォルダにいるときに適切な SMTP パラメータを設定するのに役立ちます。たとえば、仕事用メールボックスにいて、電子メールを送信すると、仕事用アカウントが送信者として自動的に使用されます。
- アカウントフックは、Mutt が IMAP 同期などのアカウントに関連する関数を呼び出すたびにコマンドを実行します。フォルダーに切り替える必要はありません。
フックは次の2つのパラメーターを取ります。
account-hook [!]regex command folder-hook [!]regex command
正規表現は、一致するフォルダです(または!が前に付いていない場合)。コマンドは、何をすべきかを伝えます。
例:
.muttrc
## General options set header_cache = "~/.cache/mutt" set imap_check_subscribed set imap_keepalive = 300 unset imap_passive set mail_check = 60 set mbox_type=Maildir ## ACCOUNT1 source "~/.mutt/work" # Here we use the $folder variable that has just been set in the sourced file. # We must set it right now otherwise the 'folder' variable will change in the next sourced file. folder-hook $folder 'source ~/.mutt/work' ## ACCOUNT2 source "~/.mutt/personal" folder-hook *user@gmail.com/ 'source ~/.mutt/personal' folder-hook *user@gmail.com/Family 'set realname="Bob"'
.mutt/work
## Receive options. set imap_user=user@gmail.com set imap_pass=**** set folder = imaps://user@imap.gmail.com/ set spoolfile = +INBOX set postponed = +Drafts set record = +Sent ## Send options. set smtp_url=smtps://user:****@smtp.gmail.com set realname='User X' set from=user@gmail.com set hostname="gmail.com" set signature="John Doe" # Connection options set ssl_force_tls = yes unset ssl_starttls ## Hook -- IMPORTANT! account-hook $folder "set imap_user=user@gmail.com imap_pass=****"
Finally .mutt/personal
should be similar to .mutt/work
.
全てのアカウントを設定したら Mutt を起動してください。フォルダを変えればアカウントを切り替えることができます (c
キー)。もしくはサイドバーを使うこともできます。
異なるメールボックスのフォルダーを変更するには、完全なアドレスを入力する必要があります IMAP/POP3 フォルダーの場合、これはかなり不便かもしれません、それにいくつかのキーをバインドしましょう。
## Shortcuts macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.mutt/personal<enter><change-folder>!<enter>' macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.mutt/work<enter><change-folder>!<enter>'
上記のショートカット(またはサイドバー)を使用すると、フォルダーの変更(デフォルトでは c
を使用)はコンテキストに依存しません。つまり、現在のメールボックスのフォルダーは表示されませんが、最後にフォルダーを変更したときに使用されたフォルダーが一覧表示されます。動作をより文脈的にするための秘訣は、現在のメールボックスで=または+を押すことです。これは次のマクロで自動化できます。
macro index 'c' '<change-folder>?<change-dir><home>^K=<enter>'
パスワード管理
.muttrc
にパスワードを記述することはセキュリティ的に問題があります。毎回手動でパスワードを入力するという方法もありますが、面倒です。
GnuPG を使ってパスワードを暗号化しファイルに保存するという解決方法が存在します。まだキーペアを設定していない場合、先に作成してください。以下の内容で tmpfs にファイルを作成:
set my_pass = " password"
あなた自身を受取人としてファイルを暗号化し、アクセス可能なディレクトリに移動してください。以下の例では暗号化したファイルを $HOME/.my-pwds.gpg
に配置しています。
mutt の設定ファイルに以下を追加 (アカウントの前に追加してください):
source "gpg -dq $HOME/.my-pwds.gpg |"
上記の設定でファイルが復号化され my_pass
変数が設定されます。source された後は変数を自由に使うことができます。例:
set imap_pass=$my_pass
OfflineIMAP や msmtp などの外部ツールを使用する場合、エージェント (例: gpg-agent、GnuPG#gpg-agent を参照) を設定してパスフレーズをキャッシュに保存して何度もパスワードが聞かれないようにしてください。
セキュリティの問題
enter-command
が UI から利用できる場合、暗号化されていないパスワードが表示される可能性があります。Mutt の実行中にセッションにアクセスできるのがあなた以外の誰かである場合、これは望ましくない可能性があります。このため、これを無効にすることができます。その結果ユーザーが使用する予定のすべてのコマンドを事前にキーにバインドする必要があります。そうしないとアクセスできません。
.muttrc
bind generic,alias,attach,browser,editor,index,compose,pager,pgp,postpone ':' noop
ヒントとテクニック
Muttの使用とカスタマイズを始めるためのガイド
- My first Mutt (maintained by Bruno Postle)
- The Woodnotes Guide to the Mutt Email Client (maintained by Randall Wood)
- The Homely Mutt (by Steve Losh)
- Everything You Need To Know To Start Using GnuPG with Mutt (by Justin R. Miller)
Mutt について何か疑問があったら、IRC チャンネルで質問してください。
キーバインディング
デフォルトのキーバインドは Emacs や Vi などの一般的なバインドとかけ離れています。自由に設定することができます。Mutt にはページャ・インデックス・添付ビューなどに様々なバインドのセットが用意されています。キーをバインドしたいときは編集したいマップを指定してください。Mutt のヘルプページからコマンドとキーバインドのリストを確認できます (デフォルトキー: ?
)。Vi ライクなバインドの例:
muttrc
bind pager j next-line bind pager k previous-line bind attach,index,pager \CD next-page bind attach,index,pager \CU previous-page bind pager g top bind pager G bottom bind attach,index g first-entry bind attach,index G last-entry
作成
メールの暗号化と署名 (GnuPG)
GnuPG を使って mutt でメールを暗号化するには /usr/share/doc/mutt/samples/gpg.rc
を mutt の設定フォルダにコピーしてください (例: ~/.mutt/gpg.rc
)。そして mutt の設定ファイルに以下を追加してください (例: ~/.mutt/mutrrc
):
source ~/.mutt/gpg.rc
コンポーズビューで p
を押すことで暗号化オプションを使うことができるようになります。
詳しくは muttrc(5) の pgp_*
や crypt_*
オプションを見てください。
メールの文字エンコーディング
Mutt を使用する場合、指定する必要のある文字セットには2つのレベルがあります。
- 電子メールを作成するために使用されるテキストエディタは、目的のエンコーディングで保存する必要があります。
- その後、Mutt は電子メールをチェックし、
send_charset
変数で指定した優先順位に従って、どのエンコーディングがより適切であるかを判断します。デフォルト: "us-ascii:iso-8859-1:utf-8"
そのため、ISO-8859-1 で許可された文字( 'résumé'など)を使用して、Unicode 固有の文字を使用せずに電子メールを作成すると、Mutt はエンコーディングを ISO-8859-1 に設定します。
この動作を回避するには、muttrc
で変数を設定します。
set send_charset="us-ascii:utf-8"
あるいは
set send_charset="utf-8"
左から最初の互換性のある文字セットが使用されます。 UTF-8 は US-ASCII のスーパーセットであるため、UTF-8 の前に置いても問題ありません。これにより、電子メールヘッダーに文字セットが表示されたときに古い MUA が混乱しないことが保証されます。
カスタムメールヘッダ
Mutt ではメールヘッダを完全に制御することができます。
メールを書くときにヘッダを編集できるようにするには:
set edit_headers=yes
Muttには、ヘッダーをカスタマイズするための特別な関数 my_hdr
もあります。はい、変数と同じように名前が付けられていますが、実際は関数です。
あなたはそれを完全にクリアすることができます、それはあなたが異なるヘッダーでアカウントを切り替えるときに行うべきです、そうでなければそれらはオーバーラップします:
unmy_hdr *
他の変数もヘッダーに影響を与えるため、my_hdr
を使用する前にそれらをクリアするのが賢明です。:
unset use_from unset use_domain unset user_agent
これで、次の構文を使用して、ヘッダーに任意のフィールドを追加できます(非標準のものも含む):
my_hdr <FIELD>: <VALUE>
<VALUE>はコマンドの結果である可能性があることに注意してください。
例:
## Extra info. my_hdr X-Info: Keep It Simple, Stupid. ## OS Info. my_hdr X-Operating-System: `uname -s`, kernel `uname -r` ## This header only appears to MS Outlook users my_hdr X-Message-Flag: WARNING!! Outlook sucks ## Custom Mail-User-Agent ID. my_hdr User-Agent: Every email client sucks, this one just sucks less.
署名ブロック
ホームディレクトリに .signature
を作成してください。署名はメールの末尾に追加されます。もしくは Mutt の設定でファイルを指定することもできます:
set signature="path/to/sig/file"
ランダム署名
fortune (パッケージ: fortune-mod) を使うことで Mutt にランダムに署名を追加することができます。
fortune ファイルを作成して以下の行を .muttrc
に追加してください:
set signature="fortune pathtofortunefile|"
最後のパイプに注意してください。指定した文字列がファイルではなくコマンドであることをMuttに伝えます。
Mutt を使ってコマンドラインからメールを送信
マニュアルページには、使用可能なすべてのコマンドとその使用方法が表示されますが、ここにいくつかの例を示します。 Mutt を使用して、.bash_profile を介したログイン、または通常の cron ジョブとしてトリガーされたアラート、ログ、またはその他のシステム情報を送信できます。
メッセージを送信:
mutt -s "Subject" somejoeorjane@someserver.com < /var/log/somelog
添付ファイルを付けてメッセージを送信:
mutt -s "Subject" somejoeorjane@someserver.com -a somefile < /tmp/sometext.txt
HTML メールの作成
Mutt は WYSIWIG クライアントではないため、HTML はそのままソースコードを直接編集して扱うことができます。HTML 構文を使ってメールを書くだけです。例:
This is normal text<br> <b>This is bold text</b>
メールを送信する前に、edit-type
コマンドを使って (デフォルトのショートカット: Ctrl+t
)、text/plain
を text/html
に置き換えてください。
作成中に他のメールを表示
Mutt のよくある不満として、新しいメール (あるいは返信) を作成しているときに、現在のメールを閉じないと (後回しにしないと) 他のメールを開けないというものがあります。以下の方法で解決できます:
まず、通常通り Mutt を立ち上げてください。そして、別のターミナルウィンドウを起動します。そして次のコマンドで新しい Mutt を起動:
mutt -R
これで読み取り専用モードで Mutt が起動するので、他のメールを自由に閲覧することができます。2番目の Mutt は必ず読み取り専用モードで起動することを強く推奨します。衝突が発生してしまう可能性があるためです。
印刷
muttprintAUR をインストールすることで印刷の品質を向上することができます。muttrc ファイルに以下の行を追加してください:
set print_command="/usr/bin/muttprint %s -p {PrinterName}"
コンテンツの表示
URL を表示 & ウェブブラウザの起動
まだ行っていない場合は、まず$ HOMEに.muttディレクトリを作成する必要があります。そこで、macrosという名前のファイルを作成します。以下を挿入します。
macro pager \cb <pipe-entry>'urlview'<enter> 'Follow links with urlview'
次に urlviewAUR パッケージをインストールします。
$ HOMEに.urlviewを作成し、以下を挿入します。
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):] COMMAND <your-browser> %s
pager でメールを読んでいるときにctrl + bを押すと、メールからすべての URL がリストされます。矢印キーで上下に移動し、目的の URL で Enter キーを押します。ブラウザが起動し、選択したサイトに移動します。
一部のブラウザでは、正しく機能するために追加の引数が必要になります。たとえば、Luakit は Mutt の終了時に閉じます。 -n
パラメータを使用して、バックグラウンドにフォークする必要があります。
COMMAND luakit -n %s 2>/dev/null
2>/dev/null
はそれを静かにすることです。つまり、不要なメッセージの印刷を防止します。
HTML の表示
HTML の本文を外部の HTML プログラムに渡してからダンプすることで、Eメールの表示を均一にして目立たなくすることができます。ここでは、lynx、 w3m、 elinks の3つのプログラムについて説明します(選択したパッケージが installed) されていることを確認してください)。
~/.mutt/mailcap
が存在しない場合は、作成して以下を保存する必要があります。
text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput
または、w3m の場合
text/html; w3m -I %{charset} -T text/html; copiousoutput;
または、elinks の場合
text/html; elinks -dump ; copiousoutput;
muttrc を編集して以下を追加します。
set mailcap_path = ~/.mutt/mailcap
lynx、w3m、elinks で HTML メッセージを自動的に開くには、次の行をmuttrcに追加します。
auto_view text/html
この方法の利点は、html ボディをソースとして表示したり、開いたりする代わりに、 別のプログラム (この場合は lynx ) を使うと、フォーマットされた内容を直接見ることができます。
urlviewAUR がインストールされていれば、電子メール内の URL リンクを Ctrl+b
で表示できます。
複数のエンコーディングや別のエンコーディングの電子メールをたくさん受信した場合、Mutt はデフォルトですべての電子メールを html として扱うことができます。これを回避するには、 ~/.muttrc に次の変数を追加します。muttrc は、Mutt が利用可能な場合はデフォルトで text に設定され、電子メールでテキストバージョンが利用できない場合にのみ w3m/lynx を使用します。
alternative_order text/plain text/html
一部の HTML メールは、テキストベースの Web ブラウザで正しく表示されない場合があります。このような場合、フォールバックソリューションとして、キーをバインドしてグラフィカルブラウザを開くことができます。次のマクロは、環境で定義された Web ブラウザーの添付ファイルビューから選択された HTML メールを開きます。 ~/.cache/mutt/
フォルダーを自由に変更してください)。
macro attach 'V' "<pipe-entry>cat >~/.cache/mutt/mail.html && $BROWSER ~/.cache/mutt/mail.html && rm ~/.cache/mutt/mail.html<enter>"
メッセージビューのフィルタリング
limit
コマンド (既定のショートカット:l
) を使用すると、表示をパターンおよび特定のプロパティに一致する電子メールに制限できます。
ヘッダーに "foo" が含まれているすべての電子メールを表示するには、"foo" と入力するだけで完了です。フィルタを削除するには、"all" キーワードを使用します。
フラグの設定されたすべてのメッセージを表示するには、
~F
サイズが1MB以上またはjohndoeからの未読メッセージをすべて表示するには、次を使用します。
~U (~z 1M- | ~f johndoe)
すべての可能なパターンは公式マニュアルにリストされています。 official manual
会話のグループ化
既定の並べ替え順序は、日付順です。並べ替えオプションを変更するには、sort-mailbox
コマンド (デフォルトキー: o
) を使用してください。
スレッドごとにEメールをグループ化することができます。この場合、スレッドのソート方法とスレッド内でのソート方法を定義できます。
次の例では、スレッドは最後の電子メールの日付に従って並べ替えられます。
muttrc
set sort=threads set sort_aux=last-date-received
mutt とエディタの設定
vim
- テキストの幅を72文字に制限するには、.vimrc ファイルを編集して以下を追加します。
au BufRead /tmp/mutt-* set tw=72
- もう1つの選択肢は、Vim のメールファイルタイププラグインを使用して、72文字幅以外のメール中心のオプションを有効にすることです。 ~/.vim/filetype.vim を編集し、存在しない場合は作成し、次を追加します。
augroup filetypedetect " Mail autocmd BufRead,BufNewFile *mutt-* setfiletype mail augroup END
- 別の tmp ディレクトリを設定するには、 ~/.tmp 次のように muttrc に行を追加します。
- 変更されたテキストを再フォーマットするには、Vim のコンテキストヘルプを参照してください。
:h 10.7
GNU nano
[ [nano] ] もMuttで使える素晴らしいコンソールエディタです。
テキストの幅を72文字に制限するには、を編集します。nanorcファイルに以下を追加します。
set fill 72
また、muttrcファイルでは、編集を開始する行を指定して、メールヘッダーをスキップできます。
set editor="nano +7"
Emacs
Emacs には mail と message メジャーモードが存在します。Mutt から Emacs が呼び出されたときに自動的に mail-mode に切り替えるには、.emacs
に以下を追加:
.emacs
;; Mutt support. (setq auto-mode-alist (append '(("/tmp/mutt.*" . mail-mode)) auto-mode-alist))
Emacs デーモンを使っている場合、Mutt から接続するには以下を .muttrc
に追加:
.muttrc
set editor="emacsclient -a \"\" -t"
表示設定
カラー
.muttrc
ファイルにサンプルのカラー定義を追加してから自由にカスタマイズしてください:
$ cat /usr/share/doc/mutt/samples/colors.linux >> ~/.muttrc
これらの各設定で実際に生成される色は、 ~/Xresources ファイルを参照してください。
また、カラーを含む任意のファイルをソースにすることもできます(テーマファイルとして機能します)
source ~/.mutt/colors.zenburn
テーマのサンプルは [2] を見てください。
インデックスフォーマット
ここでは、.muttrc
を使用して、インデックスフォーマット (フォルダビューに表示される列) をカスタマイズします。
set date_format="%y-%m-%d %T" set index_format="%2C | %Z [%d] %-30.30F (%-4.4c) %s"
詳しくは Mutt Reference, man 3 strftime
, man 3 printf
を見てください。
"Sent" フォルダビューで送信者ではなく受信者を表示
デフォルトでは、Mutt は送信者をインデックスビューに表示します。ほとんどのフォルダでは問題ありませんが、送信した電子メールのコピーを保存するフォルダには常に名前が表示されるので、あまり役に立ちません。
これを解決する最も簡単な方法は、muttrc に alternative email addresses をセットアップすることです。送信者のアドレスがあなたの別のメールアドレスのどれかと一致すれば、 Mutt は自動的にインデックスに "宛先<受信者>" と表示します。
可変幅のカラム
ウィンドウのサイズを変更すると、送信者などの一部のフィールドに未使用のスペースが残っている間に、件名が切り捨てられる場合があります。 tput cols へのシェル呼び出しを使用して、端末でサポートされている列の最大数(つまり、幅)を取得できます。この値を使用して、送信者や件名などのフィールドに幅の割合を設定できます。
上記のフォルダーフックとサイドバーの幅 24 を使用した例
muttrc
## From field gets 30% of remaining space, Subject gets 70%. ## Remaining space is the total width minus the other fields (35), minus the sidebar (24) set my_index_format_pre='set my_col_from = `echo $((30 * ($(tput cols)-35-24) / 100))`; set my_col_subject = `echo $((70 * ($(tput cols)-35-24) / 100))`; set index_format="%2C | %Z [%d] %-$my_col_from.${my_col_from}' set my_index_format_post=' (%-4.4c) %?M?<%M> ?%-$my_col_subject.${my_col_subject}s"' folder-hook .*[sS]ent.* "$my_index_format_pre"t"$my_index_format_post" folder-hook ! .*[sS]ent.* "$my_index_format_pre"F"$my_index_format_post"
"must" フック内から変数 my_col_from
と my_col_from
を設定します。そうしないと、カラム値は再計算されません。
フォルダを変更せずにインデックスフォーマットを強制的に再計算するバインディングを追加できます。
muttrc
macro index,pager \CL "<enter-command>$my_index_format_pre"F"$my_index_format_post<enter><redraw-screen>"
サイドバー
サイドバーの設定例は /usr/share/doc/mutt/samples/sample.muttrc-sidebar
にあり、キーバインドも定義されています。あなたの mutt 設定ファイルにコピー・編集したり source してください。set sidebar_visible = yes
に必ず変更してください。
以下を追加することでサイドバーの表示を切り替えられます:
bind index,pager B sidebar-toggle-visible
sidebar_sort_method
オプションを使用しない場合、mailboxes
オプションを使用すると、フォルダは mailboxes
に設定された順序で表示されます。
ページャビューの上にインデックスを表示
muttrc
で以下の変数を設定してください:
set pager_index_lines=10
連絡先の管理
アドレスのエイリアス
Mutt ではエイリアスを使って連絡先を管理します。エイリアスは nickname [longname] <address> です。
- The nickname は Mutt と入力すると連絡先が表示される。一言だけで、覚えやすいはずです。
- The longname はオプションです。いくつかの単語かもしれません。
- An <address> は有効な形式 (例
@
) である必要があります。
実に簡単ですこれを .muttrc
に追加します。
set alias_file = "~/.mutt/aliases" set sort_alias = alias set reverse_alias = yes source $alias_file
説明
alias_file
は、Mutt 内からエイリアスを追加したときに情報が保存されるファイルです。sort_alias
は、Mutt で表示されるエイリアスリストのソートに使用するフィールドを指定する。使用可能な値 :alias,addressreverse_alias
yes に設定すると、メッセージの送信者と一致するエイリアスが見つかった場合に、インデックスメニューにエイリアスの「個人的な」名が表示されます。source $alias_file
は Mutt に起動時にエイリアスを読むように指示する。自動補完に必要です。
To:
がフルアドレスではなくエイリアスを書き込んでいることを示すメッセージが表示されたらあとはこれで完了です。この機能の利点は、Tab
を使用してエイリアスを自動補完できることです。
間違った文字列や空の文字列を自動補完すると完全なリストが表示されます。通常どおりにエイリアスを選択するか、インデックス番号を入力します。
エイリアスを作成するには、次の2つの方法があります。
- Mutt では、対象者のメールが選択されていれば
a
を押す。 - alias_file を手動で編集します。構文は実に単純です。
alias nickname Long Name <my-friend@domain.tld>
Abook
abook は連絡先管理のための専用のスタンドアロンプログラムです。とてもシンプルなテキストベースのインターフェースで人間が読めるプレーンテキストのデータベースに連絡先が保存されます。そして連絡先のプロパティは自由に拡張できます (誕生日, 住所, FAX など)。
Abook は、Mutt とのインターフェースとして特別に設計されているため、Mutt の内部エイリアスの完全でより機能的な置き換えとして機能できます。 エイリアスの代わりに Abook を使用する場合は、.muttrc
のエイリアス構成を削除して、次を追加します。
muttrc
## Abook set query_command= "abook --mutt-query '%s'" macro index,pager a "<pipe-message>abook --add-email-quiet<return>" "Add this sender to Abook" bind editor <Tab> complete-query
詳しい解説や設定例は abook
や abookrc
の man ページを見てください。
Goobook
goobook-gitAUR パッケージをインストールして Goobook を使うことでコマンドラインや Mutt の中から Google コンタクトを検索することができます。
goobook を使用する前に ~/.goobookrc
を設定してください。デフォルトテンプレートを生成するには:
$ goobook config-template > ~/.goobookrc
設定オプションについては ~/.goobookrc
を見てください。最低でも、email と password は入力する必要があります。
エイリアスの代わりに Goobook を使用する場合は、.muttrc
を追加します。
muttrc
## GooBook set query_command="goobook query '%s'" macro index,pager a "<pipe-message>goobook add<return>" "add sender to google contacts" bind editor <Tab> complete-query
mutt 内で電子メールメッセージを作成すると、Tab
が Google の連絡先を検索するようになりました。メッセージの表示中に a
送信者を Google の連絡先に追加します。
Khard
khard は、ローカルに保存された carddav アドレス帳エントリを使用するコマンドラインアドレス帳です。 vdirsyncer を使用して、それらを CardDAV サーバーと同期できます。 mutt での統合は、abook に似ています。 Khardのドキュメントを参照してください
複数の送信者アカウントの管理
複数の送信者アカウントを使用する場合は、特定の送信者アカウントを受信者に自動的に関連付けることができます。mutt-vidAUR は、送信された電子メールをスキャンして、特定の受信者に関連づけられた最新の「開始日」詳細情報を探し、mutt から source へのファイルに保存します。次回この受信者に電子メールを送信すると、mutt は以前に使用したのと同じ電子メールアドレスと実名を持つ送信フックを自動的に起動します。詳細は mutt-vid のホームページを参照してください。
手動で IMAP のメール取得をリクエスト
次の自動 IMAPフェッチ(または、有効にしていない場合)を待機しない場合は、手動でメールをフェッチできます。
そのための mutt コマンド imap-fetch-mail
があります。
あるいは、キーにバインドすることもできます。
bind index "^" imap-fetch-mail
カラー化によって巨大なフォルダのインデックスが遅くなる (IMAP)
正規表現によるインデックスの強調表示は便利ですが、正規表現がメッセージの本文をチェックすると、フォルダーの表示が遅くなる可能性があります。
フォルダーフックを使用して、たとえば受信トレイ(メールボックスを効率的に空にした場合)の強調表示のみを行います。
folder-hook . 'uncolor index "~b \"Hi Joe\" ~R !~T !~F !~p !~P"' folder-hook ""!"" 'color index brightyellow black "~b \"Hi Joe\" ~N !~T !~F !~p !~P"'
フォルダの切り替えの高速化
以下を .muttrc
に追加してください:
set sleep_time = 0
メールのアーカイブ化
電子メールを読むときは、答える、フラグを付ける、アーカイブする、または削除するという4つの選択肢があります。 これを念頭に置いている場合は、受信トレイをスリムに保ちこのマクロ( Gmail 用に設定)に適合させることができます。
macro index \' "<tag-pattern>~R !~D !~F<enter>\ <tag-prefix><save-message>+[Gmail]/All <enter>" \ "Archive"
他のコンピュータにメールを移動
メールを新しいマシンに転送する場合(コピー&ペースト)など、Muttが移行したファイルを読み取れるようにするには、ヘッダーキャッシュ(上記の構成に従っている場合は ~/.cache/mutt
のようなファイルまたはフォルダー)を削除して、Mutt が移行したメールを読めるようにしてください、そうしないと Mutt はフリーズするかもしれません。
ヘッダキャッシュ用にフォルダを作成した場合、すべてのメールボックスに独自のキャッシュファイルが作成されるため、すべてを削除せずにキャッシュを個別に削除できます。
添付ファイルを保存するデフォルトフォルダ
デフォルトでは Mutt は添付ファイルを起動したときのフォルダに保存します。添付ファイルの保存場所を常に ~/attachments
にしたい場合、以下のエイリアスを作成することで ~/attachments
から Mutt が起動するようになります:
alias mutt='cd ~/attachments && mutt'
ページャの挙動
次のページに移動するときにコンテキスト行を表示します:
set pager_context=3
次のメールを表示する代わりに最後で停止します:
set pager_stop=yes
クイック返信
デフォルトでは、Mutt はメールに返信するときに受信者と件名の確認を求めます。回答に元のメールを含めるかどうかも尋ねられます。常にデフォルト値を使用することを想定している場合は、以下の質問をスキップするように Mutt を設定できます:
muttrc
set fast_reply=yes set include=yes
送信する前に、受信者と件名を編集できます。
グループ返信のメールアドレスを無視
CC されたメールにグループ返信すると、Mutt の受信者リストにメールアドレスが含まれます。 Mutt にいくつかのアドレスを無視するように頼むことができます:
alternates mail1@server1|mail2@server2|...
IMAP メッセージキャッシュ
組み込みの IMAP サポートを使用する場合、電子メールはデフォルトでメモリにフェッチされます。大きなメールを数回取得すると、 IMAP サーバーから何度もダウンロードされます。 または、フェッチしたすべてのメッセージをディスクに保存するように Mutt に要求することもできます:
muttrc
set message_cachedir=~/.cache/mutt/messages
これにより、大きな添付ファイルがある場合でも、 (フォルダーが存在している必要があります) 将来の検索が瞬時に行われます。 たとえば、50MB の制限を超える最も古い電子メールからキャッシュを削除する場合は、次のようなスクリプトを使用できます:
~/.mutt/purgecache.sh
#!/bin/sh ## In KB. CACHE_LIMIT=51200 cd "$1" 2>/dev/null [ $? -ne 0 ] && exit [ $(du -s . | cut -f1 -d' ') -lt $CACHE_LIMIT ] && exit while IFS= read -r i; do rm "$i" [ $(du -s . | cut -f1 -d' ') -lt $CACHE_LIMIT ] && exit done <<EOF $(find . -type f -exec ls -rt1 {} +) EOF
起動時にそれを呼び出します:
muttrc
set message_cachedir=~/.cache/mutt/messages source "~/.mutt/purgecache.sh '$message_cachedir'|"
添付ファイルを開くか、バックグラウンドでHTMLメールを表示する
デフォルトでは、mutt の添付ファイルを開くと mutt がブロックされます。~/.mutt/mailcap
を編集して &
を追加すると、mutt はバックグラウンドで デフォルトアプリケーション の1つを起動します。xdg-open を例にとると、
text/html; xdg-open %s &> /dev/null &; nametemplate=%s.html application/*; xdg-open %s &> /dev/null &; image/*; xdg-open %s &> /dev/null &;
&> /dev/null
は、エラーやメッセージが mutt ターミナルウィンドウを乱雑にするのを防ぐために使用されます。 また、また .html 拡張子のないローカルファイルを HTML としてレンダリングすることを chromium が拒否するため、nametemplate=%s.html
が使用されます。
トラブルシューティング
Mutt でバックスペースが使えない
これは、一部のxtermライクな端末に共通の問題です。 2つのソリューション:
.muttrc
のキーを再バインドします
bind index,pager ^? previous-line
^?
は、caret notation の Backspace を表す1文字です。Emacs で入力するには Ctrl+q Backspace
を使います、vimでは Ctrl+v Backspace
を使用します。
- または、端末を修正します:
$ infocmp > termbs.src
termbs.src
を編集して、kbs=^H
を kbs=\177
に変更します:
$ tic -x termbs.src
change-folder 機能で同一のメールボックスが表示される
これはバグではありません、仕様です。詳しくはマルチアカウントのセクションを見て下さい。
Mutt を読み取り専用で使った時にフォルダが変えられない (Mutt -R)
以下のようなマクロを使用していることが原因です:
macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.mutt/personal<enter><change-folder>!<enter>'
上記のマクロはフォルダを切り替える前に同期を行います (同期は書き込み操作です)。サイドバーを使用するか別のマクロを設定してください:
macro index,pager <f3> '<enter-command>source ~/.mutt/personal<enter><change-folder>!<enter>'
Error sending message, child exited 127 (Exec error)
これは SMTP エラーです。それは、mutt がメッセージの送信方法を知らないことを意味します。 sendmail をインストールして問題が解決するかどうかを確認するか、smtp_url 変数を設定できます。 gmail を使用する場合は、以下を muttrc に追加して、mutt にgmails smtp サーバーを使用するように指示できます。
set smtp_url=smtps://$imap_user:$imap_pass@smtp.gmail.com
smtpsプロトコルに注意してください、これは重要です。問題が解決するはずです。
文字エンコーディングの問題
文字列のエンコーディングに問題がある場合、まずは Mutt の wiki の こちらのセクション を見てください。
中国語のテキストがまだ文字化けしている場合は、たとえヘッダーに GB2312 が指定されていても、GBK でのデコードが役立つことがあります。これは、mailcap
ファイルに以下を追加することで、iconv
で行うことができます。
text/plain; iconv -f gbk -t utf-8 %s; test=echo "%{charset}" | grep -ic "gb2312"; copiousoutput;
.muttrc
に以下を追加して有効にします。
auto_view text/plain
HTMLメールの場合、次のように置き換えることにより、メールキャップの関連する行を編集できます。 %{charset}
with $(echo %{charset} | sed s/gb2312/gbk/I)
, 例えば:
text/html; w3m -dump -I $(echo %{charset} | sed s/gb2312/gbk/I) %s; nametemplate=%s.html; copiousoutput
GMail にログインできない
Gmail は mutt
などのアプリからのアクセスを無効にしています。こちら の手順に従うことでアクセスが可能になります。
urlview で長すぎる URL は開くことができません
urlviewはテキストをデコードしないので、長すぎる URL は正しく解析されません [3] を参照してください。代わりに mutt にメールをデコードさせることができます urlview を開く行を次のコードに置き換えます。
macro index \cb "\ :set my_tmp_pipe_decode=\$pipe_decode\n\ :set pipe_decode\n\ |urlview\n\ :set pipe_decode=\$my_tmp_pipe_decode\n\ :unset my_tmp_pipe_decode\n" \ 'call urlview to extract URLs out of a message'
ドキュメント
初心者は Mutt のヘルプを見つけるのにも苦労するかもしれませんが、公式ドキュメントでほとんどのトピックについて書かれています。公式ドキュメントを読むことを推奨します。
- 公式マニュアル。Arch Linux の標準パッケージの mutt は HTML とプレーンテキストのマニュアルを
/usr/share/doc/mutt/
にインストールします。 mutt
とmuttrc
の man ページ。