[mail] CentOS6でmailxをmailutilsに切り替える

コマンドラインでさくっとメールを送る際や、バッチでもたまに使っている「mail」コマンドですが、CentOS5系から6系に乗り換えたところ問題が・・・。

インストーラーを使用して入れたVM環境ではmailコマンドが標準で入っていたのですが、これまで使ってたテストコマンドがなんだかうまくいきません。

echo 'テストです!' | mail -s "テストメール"  "hoge@hoge.com" -- -f "huga@huga.com"

 

コマンドの実態を確認すると、

ls -la /bin/mail
lrwxrwxrwx 1 root root 19  5月 1 21:57 2012 /bin/mail -> mailx

そもそも「mailx」というコマンドに変わってしまった模様。

 

さらに、以下の状況になっていることがわかりました。

  • 件名がutf-8で送られて一部メーラーでは文字化け。お馴染みのnkf -jで渡してもだめ
  • 本文が数行に渡るとバイナリとして送信され、メーラー側ではファイル添付扱いされる

 

マニュアル含めいろいろ調べてみたものの、オプションで文字コードやContent-typeの指定ができるやり方は見つからず。

どうやら慣れ親しんだ以前のmailコマンドの挙動とはだいぶ違うことがわかったので、以前のコマンドに近いものを探してみたところ、「mailunits」を発見。

mailxコマンドをアンインストールした上で、インストールしてみます。

cd /usr/local/src/
wget http://ftp.gnu.org/gnu/mailutils/mailutils-latest.tar.gz
tar xvzf mailutils-latest.tar.gz
cd mailutils-*
./configure
make
make install

/usr/local/bin/mailとしてインストールされました。

 

一部オプションは違うようで、

echo "テストです!" | mail -s "テストメール"  "hoge@hoge.com" -- -f "huga@huga.com"
↓↓
echo "テストです!" | mail -s "テストメール" -a "From:huga@huga.com" "hoge@hoge.com"

とするとうまく動きました。

本文が長文でもちゃんと送ってくれてます。

cat honbun.txt | nkf -j | mail -s "テストメール" -a "From:huga@huga.com" "hoge@hoge.com"

 

mailコマンドはディストリビューションによって挙動が違う認識はありましたが、OSバージョンアップでコマンド自体が変わってしまっているのは予想外でした。

とりあえずはこの「mailutils」で様子を見ようと思います。

※初稿時、「mailunits」となっていた箇所を「mailutils」に修正しました(DQNEOさんありがとうございます。2012/11/7)。