コンテンツにスキップ

Mutt

提供: ArchWiki

関連記事

Mutt は強力な機能を持っていることで知られているテキストベースのメールクライアントです。20年以上前に作られたメールクライアントでありながら、Mutt は今でも多くのパワーユーザーから愛用されています。

Mutt は主にメールユーザエージェント (MUA) として開発されており、最初はメールを読むために書かれました。他のメールアプリケーションと比べて後の実装 (メールの取得・送信・フィルタリングの追加) はシンプルとなっており、ユーザーは外部のアプリケーションを使って Mutt の機能を拡張できます。

しかしながら、Arch Linux の mutt パッケージは IMAP や POP3、SMTP のサポートを有効にしてコンパイルされているため、外部アプリケーションの必要はありません。

この記事ではネイティブの IMAP を使ってメールを送受信する方法と、OfflineIMAPgetmail (POP3) を使ってメールを取得し、POP3 の場合 procmail でフィルタリングして、msmtp でメールを送信する方法の両方を説明します。

インストール

mutt パッケージをインストールしてください。

任意で isync, OfflineIMAP, msmtp などの外部のヘルパーアプリケーションをインストールしてください (IMAP セットアップをする場合)。

もしくは (POP3 を使う場合) getmailAUR, fetchmail, fdm, procmail をインストールしてください。

ノート
  • LOGIN と PLAIN で認証するだけであれば、依存パッケージの libsasl だけで使うことができます。
  • CRAM-MD5, GSSAPI, DIGEST-MD5 を使用する場合は cyrus-sasl-gssapi パッケージをインストールしてください。
  • SMTP サーバーとして Gmail を使用する場合は cyrus-sasl パッケージもインストールする必要があります。

NeoMutt

NeoMutt プロジェクトは Mutt にあらゆるパッチを適用しています。パッチによって膨大な数の 機能 が追加されます。古い Mutt のパッチの多くは更新・整理されドキュメント化されています。

AUR には mutt の別バージョンのパッケージが存在していますが、NeoMutt は適切なコンパイルオプションを実行することでそれらを置き換えます。現在、NeoMutt は neomuttneomutt-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
ヒント 先ほどの例を続けると、Gmail には完全なメールアドレスが必要であることに注意してください。 (これは標準ではありません)
set imap_user=your.username@gmail.com
imap_pass

設定されていない場合、パスワードが要求されます。

set imap_pass=SECRET
ヒント Gmail で二段階認証を有効にしている場合、Mutt のためにアプリケーションパスワードを追加して、通常の Gmail パスワードの代わりに使うことができます。
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 に組み込まれていますが、オフラインで読むためにメールをダウンロードすることはしません。OfflineIMAPisync などの外部のアプリケーションを使うことでメールをローカルフォルダにダウンロードして、それを Mutt で処理することが可能です。

メールをソートしたい場合は spamassassinimapfilterAUR などのアプリケーションを使います。

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 エージェントを使うこともできます。

muttrcsendmail 変数で 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 を押して送信します。

警告 この時点で誤って q を押すと、Mutt は Postpone this message? (yes/no) これは本当にあなたが書いたばかりのメッセージを保存したいかどうかを尋ねています。 「n」を押すと(おそらくメッセージを再度編集するため)、メッセージは完全に削除されます。 Mutt を使用するときは、「このメッセージを延期しますか?」本当に「このメッセージを保存しますか?」という意味です。

マルチアカウント

これで、少なくとも1つのアカウントに対して有効な構成ができるはずです。すべてを1つのファイルにまとめているので、複数のアカウントをどのように使用するのか疑問に思われるかもしれません。

必要なのは、アカウント固有のパラメーターをそれぞれのファイルに書き込んで、それらを調達することだけです。各アカウントのすべての IMAP / POP3 / SMTP 構成は、それぞれのフォルダーに移動する必要があります。

警告 1つのアカウントが他のアカウントに指定されていない変数を設定している場合は、そのアカウントを must unset する必要があります。そうしないと、設定が重複し、予期しない動作が発生することになります。

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"
ノート ユーザー定義変数は必ず最初に my_ を付ける必要があります。

あなた自身を受取人としてファイルを暗号化し、アクセス可能なディレクトリに移動してください。以下の例では暗号化したファイルを $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の使用とカスタマイズを始めるためのガイド

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/plaintext/html に置き換えてください。

ノート HTML 形式の電子メールは、多くの人々によって役に立たず、扱いにくく、問題を抱えていると見なされています。 Mutt は w3m や lynx のようなテキストブラウザーで HTML メールを読むことができますが、プレーンテキストの電子メールに比べて明らかに利点はありません。可能な場合は、HTML 電子メールを作成しないでください。

作成中に他のメールを表示

Mutt のよくある不満として、新しいメール (あるいは返信) を作成しているときに、現在のメールを閉じないと (後回しにしないと) 他のメールを開けないというものがあります。以下の方法で解決できます:

まず、通常通り Mutt を立ち上げてください。そして、別のターミナルウィンドウを起動します。そして次のコマンドで新しい Mutt を起動:

mutt -R

これで読み取り専用モードで Mutt が起動するので、他のメールを自由に閲覧することができます。2番目の Mutt は必ず読み取り専用モードで起動することを強く推奨します。衝突が発生してしまう可能性があるためです。

ノート (c または y を使用して) フォルダーを変更する場合、読み取り専用モードは保持されません。 代わりに、Esc c を使用する必要があります。
ヒント 上記の解決法では多少入力が必要になるため、キーボードショートカットに以下のコマンドをバインドすると良いでしょう (詳しくは特別なキーボードキーを参照):
$TERMINAL -e mutt -R
$TERMINAL は使用しているターミナルに置き換えて下さい。

印刷

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 はそれを静かにすることです。つまり、不要なメッセージの印刷を防止します。

ノート urlview にはいくつかの欠点(たとえば、特定の電子メールエンコーディングを処理できないなど)かなり機能が不足しています(その他にも見つかったリンクのコンテキストを提供しません)より良い方法として、すべての電子メールエンコーディングを処理でき、リンクコンテキストを提供する extract_url.pl もう1つは、リンクコンテキストを提供できるが、すべての電子メールエンコーディングを処理できない、 urlscan-gitAUR です。 どちらも urlview のドロップイン代替品ですが、extract_url には追加の構成変更の恩恵を受ける機能があります。

HTML の表示

HTML の本文を外部の HTML プログラムに渡してからダンプすることで、Eメールの表示を均一にして目立たなくすることができます。ここでは、lynxw3melinks の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 には mailmessage メジャーモードが存在します。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

テーマのサンプルは [1] を見てください。

インデックスフォーマット

ここでは、.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_frommy_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 に設定された順序で表示されます。

sidebar_sort_method オプションを使用しない場合、mailboxes オプションを使用すると、フォルダは mailboxes に設定された順序で表示されます。

ヒント 異なるメールボックス間に区切り記号を追加するには、フォルダの一覧に偽のフォルダを追加します、例 mailboxes "+-- My mailbox -----------"

ページャビューの上にインデックスを表示

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,address
  • reverse_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

詳しい解説や設定例は abookabookrc の man ページを見てください。

Goobook

goobook-gitAUR パッケージをインストールして Goobook を使うことでコマンドラインや Mutt の中から Google コンタクトを検索することができます。

goobook を使用する前に ~/.goobookrc を設定してください。デフォルトテンプレートを生成するには:

$ goobook config-template > ~/.goobookrc

設定オプションについては ~/.goobookrc を見てください。最低でも、emailpassword は入力する必要があります。

ノート Google アカウントで二段階認証を有効にしている場合、アプリケーションパスワードを生成する必要があります。

エイリアスの代わりに 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=^Hkbs=\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 は正しく解析されません [2] を参照してください。代わりに 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/ にインストールします。
  • muttmuttrcman ページ

参照