2008/02/22(金)UNIXのコンソールメーラー mutt の設定メモ

出先などでメールを確認したいとき、今までは mail コマンドで行っていたのですが、さすがに何百通もあるSPAMの中にまぎれたメールを探すのは大変です。

コンソールメーラーといえば mnews だったのですが、危険なのか今は使われなくなっている様子(FreeBSDのPortsやLinuxのパッケージに存在しない)。

検索しても代わりになるようなメーラーの情報がほとんどみつからず*1、ほとほと困っていたところ mutt というメーラーを教えてもらいました。

*1 : X上のメーラーばかりみつかる

muttの設定(Ver1.5.6系)

日本語版のパッケージをインストールしました(FreeBSDではjapanese/mutt)。特にインストール時に設定する必要はありません。

インストール後、自分は次のように設定ファイル ~/.muttrc を書きました。

# 日本語環境設定(日本語サイト参照)
set send_charset="us-ascii:iso-2022-jp"
set strict_mime=no
set assumed_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"
set thorough_search=yes
set sanitize_ja_chars=yes
set rfc2047_parameters=yes
set edit_headers=yes

# メールアドレスホスト名
set hostname="xxx.yy"
# 送信メールのbccを書かない
set write_bcc=no
# 終了時に、常に mbox 等にメールを移動しない
set move=no
# bccのデフォルトに自分のアドレス
my_hdr Bcc: my-address@xxx.yy

標準動作で /var/mail等(Maildirも対応している) にあるメールをそのまま表示します。終了時に指定しなければ、mboxに移動されることもありません。画面操作は直感的で悩むこともありませんでした。

メールを読むのが楽になり、間違えてメールをmboxに移動することもなくなったため(重要*2)、とても助かりました。

*2 : あとでPCでメールを受信できなくなるので困る

muttの設定(Ver1.5.1x系)

UbuntuのUTF-8環境で、メールタイトルなどが文字化けするなあと思ったのですが、パッチを充ててソースから入れた mutt Ver1.5.6 を使っていたのが原因でした。

それを消した後で、普通に apt-get で Mutt 1.5.17+ が入ったらうまく動きました。

以下、その時のMaildir環境での設定メモ。

# cat /etc/Muttrc
# 日本語環境設定
set send_charset="us-ascii:iso-2022-jp"
set file_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"
set assumed_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"
set thorough_search=yes
set rfc2047_parameters=yes
set edit_headers=yes

# Maildir
set mbox_type=Maildir
set folder=~/Maildir
set spoolfile=+
set tmpdir=+tmp
# 送信メールのbccを書かない
set write_bcc=no
# 終了時に、常に mbox 等にメールを移動しない
set move=no
# メールアドレスホスト名
set hostname="xxx.yyy"

"+"は folder に設定した値が展開されます。

使用Version

# mutt -v
Mutt 1.5.17+20080114 (2008-01-14)
Copyright (C) 1996-2007 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.

System: Linux 2.6.24.3 (x86_64)
ncurses: ncurses 5.6.20071124 (compiled with 5.6)
libidn: 1.1 (compiled with 1.1)
hcache backend: GDBM version 1.8.3. 10/15/2002 (built Jun 15 2006 21:27:32)
コンパイル時オプション:
-DOMAIN
+DEBUG
-HOMESPOOL  +USE_SETGID  +USE_DOTLOCK  +DL_STANDALONE
+USE_FCNTL  -USE_FLOCK
+USE_POP  +USE_IMAP  +USE_SMTP  -USE_GSS  -USE_SSL_OPENSSL  +USE_SSL_GNUTLS  +USE_SASL  +HAVE_GETADDRINFO
+HAVE_REGCOMP  -USE_GNU_REGEX
+HAVE_COLOR  +HAVE_START_COLOR  +HAVE_TYPEAHEAD  +HAVE_BKGDSET
+HAVE_CURS_SET  +HAVE_META  +HAVE_RESIZETERM
+CRYPT_BACKEND_CLASSIC_PGP  +CRYPT_BACKEND_CLASSIC_SMIME  -CRYPT_BACKEND_GPGME
-EXACT_ADDRESS  -SUN_ATTACHMENT
+ENABLE_NLS  -LOCALES_HACK  +COMPRESSED  +HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  +HAVE_LANGINFO_YESEXPR
+HAVE_ICONV  -ICONV_NONTRANS  +HAVE_LIBIDN  +HAVE_GETSID  +USE_HCACHE
-ISPELL
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/usr/share/mutt"
SYSCONFDIR="/etc"
EXECSHELL="/bin/sh"
MIXMASTER="mixmaster"
開発者(本家)に連絡をとるには <mutt-dev@mutt.org> へメールせよ。
バグをレポートするには http://bugs.mutt.org/ を参照のこと。
日本語版のバグレポートおよび連絡は mutt-j-users ML へ。

patch-1.5.13.cd.ifdef.2
patch-1.5.13.cd.purge_message.3.4
patch-1.5.13.nt+ab.xtitles.4
patch-1.5.4.vk.pgp_verbose_mime
patch-1.5.6.dw.maildir-mtime.1
patch-1.5.8.hr.sensible_browser_position.3

2008/02/14(木)Linux の badblocks コマンド

Linuxでディスクエラーをチェックするコマンドbadblocksについて。

fsck

man。ファイルシステムのエラーをチェックするプログラム。ディスクの物理エラーを調べてはくれない。

# fsck /dev/hda1

badblocks

デバイスそのもののエラーをチェックする。

# badblocks -s -v /dev/hda	読み出しテスト
# badblocks -s -v -n /dev/hda	非破壊読み書きテスト
# badblocks -s -v -w /dev/hda	破壊読み書きテスト

HDDの区画ではなくHDD全体を与えるのがミソ。破壊テストでは「0xaa, 0x55, 0xff, 0x00」を書き込み読み出してテストします。"-s -v"は進捗などを表示する指定。

一度にテストするサイズは -b(ブロックサイズ)と -c(ブロック数)で指定します。

# badblocks -s -v -b 1024 -c 256 /dev/hda	1024*256

マウントされているディスクでは読み出しテストしかできません。シングルユーザーモードでは読み書きテストができるみたいですが。

非破壊読み書き検査について

非破壊読み書き検査は次の手順で行われます。

  1. ディスクから現在のデータを読み出す
  2. ディスクにテストパターンを書き込む
  3. バッファをフラッシュする
  4. ディスクから読み込み書き込んだテストパターンと比較する
  5. 最初に読み込んだデータを書き戻す

Linuxカーネルで「O_DIRECT」というフラグが使えれば、2と4では O_DIRECT 用いてディスクと直接やりとりをします(ディスクキャッシュを抑制します)。これは比較的最近のカーネルでないとまともに使えないようです。

CTRL-Cなどで止めると大変なことになるので、プログラム側でCTRL-Cで落ちないように抑制されています。(上に書いたとおりですので、この検査をkillとかで止めると大変なことになります。)

非破壊テストは破壊テスト並のチェックができますが、単純な破壊テストよりもメモリと時間が食います。