centos
でmail
コマンドで送信可能な添付ファイルの上限と上限を超えた時の対応策
リモートのcentos
でファイルをメールで送ろうとしたらサイズ上限に引っかかっていたので、上限について調べた。
また、メール以外で送信というか回収する方法に変更したのでそのあたりを書いておく。
メールでの送信方法はこちら:
mailの最大サイズ
mail
コマンドとはmailx
のこと。受信送信できるが今は送信だけ使う。
メールのメッセージの最大サイズの設定は、
# メッセージ最大サイズの確認
~ $ postconf -d | grep message_size
message_size_limit = 10240000
で確認できる。参考: What is the maximum size for attachment using unix mailx - Unix & Linux Stack Exchange
これを変更してもいいのだが、100MBを超える想定もしておきたいのでそれはしないでおく。変更方法は参考ページのAnswerにある:
# メッセージ最大サイズの変更
~ $ postconf -e 'message_size_limit = 20480000'
# サービスの再起動を忘れずに。コマンドは環境依存。
~ $ service postfix restart
でサイズの変更ができる。
方法の変更
サイズが大きくなることがあるので、違う方法にしようと思った。
要件としては、サイズまちまち、タイミングいつでも可なのでローカルからスクリプトの実行により回収する形にした。
scp
というかdocker-machine
のscp
を使って回収することにした。
ファイルのモードや場所によっては、permission denied
といわれることもあるので、そういう時はその時だけ権限を変更するなどして対処する。(この方法は安全とは言いづらいのだが)
SOMEWHERE_DIR
に圧縮ファイルを作成しておいて、ローカルのデスクトップに移すスクリプト例を置いておく。
# 圧縮ファイルは他のところで作成ずみ。
docker-machine ssh ${MACHINE_NAME} mkdir ${SOMEWHERE_DIR}
docker-machine scp ${MACHINE_NAME}:${SOMEWHERE_DIR}/archive.tar.gz ~/Desktop/
echo "${SOMEWHERE_DIR}に作成したものを削除…"
docker-machine ssh ${MACHINE_NAME} rm ${SOMEWHERE_DIR}/archive.tar.gz
おわり
mail
で送れば楽ではあるがサイズ上限などはよく検討しておきたい。scp
での回収は能動的にやる必要があるのが若干難点と、権限問題がちょっとだけあるのが気になった。利用目的と手段をよく吟味すべきだとわかるいい例だった。正直もっといい方法がありそうな気もする。
能動的に実行が必要な点はcron
などでなんとかなる。権限は微妙な問題。
FTP
などを使うか?それはリモートのリソースを使いそうで少し躊躇している。
以上です。