HEARTBEATS

mailコマンドが使えない時はPythonを使おう

   

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

株式会社ハートビーツの技術情報やイベント情報などをお届けする公式ブログです。



ハートビーツをフォロー

  • Twitter:HEARTBEATS
  • Facebook:HEARTBEATS
  • HATENA:HEARTBEATS
  • RSS:HEARTBEATS

殿堂入り記事