mailコマンドの最大サイズの変更もしくは方法自体を変える

centosmailコマンドで送信可能な添付ファイルの上限と上限を超えた時の対応策

リモートのcentosでファイルをメールで送ろうとしたらサイズ上限に引っかかっていたので、上限について調べた。 また、メール以外で送信というか回収する方法に変更したのでそのあたりを書いておく。

メールでの送信方法はこちら:

mail(mailx)の送信方法のメモ
mailコマンドの使い方メモ mailxを利用 mailxを利用します。準備などについては省略させてください。 mailx・sendmail・postfixあたりで調べれば見つかるでしょう。 echo "mail body message ...

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-machinescpを使って回収することにした。

ファイルのモードや場所によっては、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などを使うか?それはリモートのリソースを使いそうで少し躊躇している。

以上です。

タイトルとURLをコピーしました