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



