2012年12月21日金曜日

Linux サーバ上でエンコードされたメールを PHP でデコードして確認する方法



Postfix 設定に失敗して、送信されるはずだったメールがローカルユーザと勘違いされ、
でもローカルユーザにそんなやつはいないから root 宛に転送されていた。
mail コマンドで確認したら、メールの内容が残ってた!助かった!でも文字化けしてる…

=E3=81=93=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=AF=E3=80=81 ...


http://d.hatena.ne.jp/minesouta/touch/searchdiary?word=*%5BPerl%5D&of=10
これは文字化け?いいえ、Quoted Printable です。
エンコードされているんですよ。
Perl でデコード出来ます。


http://www.plus-a.net/tools/text_tool/
試しにデコードをしてみよう。
お!読める文字になった!


http://pentan.info/php/quoted_printable.html
php でも Quoted Printable 文字列の変換することができるんですよ。
quoted_printable_decode っていう関数があるんです。


php がインストールされているからデコードできそうだ!
早速やってみよう!


メールが記録されているファイルを確認
# less /var/spool/mail/root


あったあった!
これらを別のファイルに書き出す
# cp /var/spool/mail/root /root/mails.txt


書きだしたファイルをデコードして別に保存する
# php -r "echo quoted_printable_decode( file_get_contents('mails.txt') );" > decode_mails.txt


サーバからダウンロードしてきて確認。
subject に余計な文字が紛れていて、所々おかしいけど、これで読めるようになった!


0 件のコメント:

コメントを投稿