こんにちは。CTOの馬場です。
今回もインフラエンジニア向けにちょっとした情報を紹介します。
今回は、サーバでmailコマンドが利用できない。でもバッチやcronの処理結果をmailコマンドでさくっと送りたい。sendmailは入れたくない。メールサーバを指定してさくっとメール送りたいだけなんだけどな・・・。そんなときの対処法をご紹介します。
今回はPythonで書いたなんちゃってmailコマンドをご紹介します。
# サンプル
#!/usr/bin/python import sys import smtplib from email.MIMEText import MIMEText from email.Utils import formatdate MAIL_FROM="mailuser" SMTP_HOST="localhost" SMTP_PORT="25" SUBJECT=sys.argv[1] MAIL_TO=sys.argv[2] BODY="" for line in sys.stdin: BODY += line msg = MIMEText(BODY) msg['Subject'] = SUBJECT msg['From'] = MAIL_FROM msg['To'] = MAIL_TO msg['Date'] = formatdate() s = smtplib.SMTP(SMTP_HOST,SMTP_PORT) s.sendmail(MAIL_FROM, [MAIL_TO], msg.as_string()) s.close()
# 使い方
mail コマンドと同じノリで使えます
$ echo "hello"|./mail.py "test subject" mailto@example.com
# 注意
– Python2.4で動作確認したので、CentOS5.xなら追加インストール不要で使えるはずです。
– 日本語使えませんが、ちょこっと改修すれば使えるようになるはずです。
– メールサーバとの疎通に失敗したらデータをロストしてしまうので、**ローカルにメールサーバを立ててきちんとキューイングしたほうが安全**だということはお忘れなく