Linux メールを受信せずにサーバ上で読む

linux

受信したメールをサーバ上で読もうとして文字化けしてて読めない。わざわざ別のテストアカウントにコピーしてクライアントメーラーソフトで受信して読む。手間ですよね。。。昔はよくやってました。画像などまで見たいときはそうしないと見れませんが、運用していく上では件名本文がわかればやりたいことはだいたいできるはず。ということで簡単にメールの中身を読む方法について紹介します。

nkfコマンド。Network Kanji Filterの略称となります。ずいぶん使ってきてたけど正式名称知らなかった(笑)簡単に説明すると文字コードを変換してくれるソフトウェアとなります。対応している文字コードは下記の5通りみたいです。(wikipedia参照)
・JIS
・Shift-JIS
・EUC-JP
・UTF-8
・UTF-16

インストール

### centOS の場合
# yum install --enablerepo=epel nkf

### amazon Linux の場合
# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nkf-2.1.3-5.el7.x86_64.rpm
# rpm -ivh nkf-2.1.3-5.el7.x86_64.rpm

### 確認
# nkf --version
Network Kanji Filter Version 2.1.3 (2013-11-22)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2013, The nkf Project.

※余談)ついついyumって書いてしまう。使えるんだけど最近はdnfって書くべきなのかな

使い方

対象メールの本文のcharsetencodingを調べる

# cat mail | grep -i content
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

上記の場合だと、以下のようにすると見れる。

# cat mail | nkf -mQ -W8

その他、文字コードの例(試してないですがたぶんこんな感じでOK)

Content-Type: text/plain; charset="UTF-8"
# cat mail | nkf -W8

Content-Type: text/plain; charset="ISO-2022-JP"
# cat mail | nkf -J

Content-Type: text/plain; charset="euc-jp"
# cat mail | nkf -E

Content-Type: text/plain; charset="shift_jis"
# cat mail | nkf -S

Content-Transfer-Encoding: quoted-printable
# cat mail | nkf -mQ

Content-Transfer-Encoding: base64
# cat mail | nkf -mB

件名はMIME解読だけでいけるっぽい

# cat mail | nkf -m

コメント