こんにちは。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なら追加インストール不要で使えるはずです。
- 日本語使えませんが、ちょこっと改修すれば使えるようになるはずです。
- メールサーバとの疎通に失敗したらデータをロストしてしまうので、ローカルにメールサーバを立ててきちんとキューイングしたほうが安全だということはお忘れなく