mailコマンドで添付ファイル付きメールを送信

自宅サーバの運用機能をメンテしていて、mailコマンドで添付ファイルを送りたくなったのでちょっと調べてみた。結論としては、uuencodeコマンドとmailコマンドを組み合わせれば実現できる。私のメイン環境はCentOS 4/5系(32/64bit)なのだが、uuencodeコマンドは自分の標準インストール構成ではインストールされていなかったので、yumでインストールした。
uuencodeは、バイナリデータをテキストデータに変換するUNIX及びUnix系OSのコマンド。或いは、それによって生成されるテキストデータのフォーマット。デコードにはuudecodeコマンドを用いる。

  • sharutilsのインストール


# yum install sharutils
含まれている実行ファイルは以下の通り

# rpm -ql sharutils-4.6.1-2 | grep bin
/usr/bin/compress-dummy
/usr/bin/mail-files
/usr/bin/mailshar
/usr/bin/remsync
/usr/bin/shar
/usr/bin/unshar
/usr/bin/uudecode
/usr/bin/uuencode

  • 添付ファイル付きでメールを送信


$ uuencode ファイル 添付ファイル名 | mail -s "メールサブジェクト" メールアドレス
実行例:/tmp/aaa.zipをattach.zipとしてメールに添付する

$ uuencode /tmp/aaa.zip attach.zip | mail -s "XXXXXX" hoge@example.com