AIX環境でsendmailコマンドでメールを送信する。
インフラ作業では色々な情報を監視しています。
その中で異常を検知した場合に自動でメールを送信する仕組みを考える事になりました。
そこで「sendmail」コマンドを使ってメールを送信する事にしました。
コマンドに直接宛先や件名を指定して送信する事もできるのですが、
宛先等を記述したファイルを読み込まして送信する事もできます。
「sendmail」コマンドはメールを送信するだけなので、
シェルとかで整形してから実行するのがよさげです。
例えばこんな感じです。
#!/bin/bash ############################################################ # Program名称 : sendmail.sh # 処理概要 : メール送信シェル ############################################################# ########## < shell start > ########## # アドレス FROM_ADDRESS="from_hoge@co.jp" TO_ADDRESS="to_hoge@co.jp" CC_ADDRESS="cc_hoge@co.jp" # 件名 SUBJECT="This is Test" echo "From: ${FROM_ADDRESS}" > tmp.txt echo "To: ${TO_ADDRESS}" >> tmp.txt echo "Cc: ${CC_ADDRESS}" >> tmp.txt echo "Subject: ${SUBJECT}" >> tmp.txt echo "" >> tmp.txt echo "Mail Body" >> tmp.txt cat tmp.txt | sendmail -f ${FROM_ADDRESS} -i -t rm -f tmp.txt
件名の下を1行空ける事で、それ以下の文をメールの本文と認識してくれます。
複数の宛先に送信する場合は、「,(カンマ)」区切りでメールアドレスを設定すればOKです。
「sendmail」コマンドのオプションに付けているオプションはこういう意味です。
-i
入力されるメッセージ中の `.' だけを含む行を無視します。
このフラグは、データをファイルから読み込むような場合に使用する必要があります。
-t
受け手をメッセージから読み取ります。
To:, Cc:, Bcc: フィールドが受け手のアドレスとして読み込まれます。
Bcc: フィールドはメッセージの転送前に削除されます。
調べてみて分かったのですが、
「sendmail」はほとんどのUNIX系OSに標準として採用されており、
インターネット上で運営されるメールサーバの事実上の標準として利用されているみたいです。
全然知りませんでした。
いわゆるデファクトスタンダードですね。
参考にさせて頂いたサイトはこちら
sendmailコマンドの使い方: UNIX/Linuxの部屋
http://www.linux.or.jp/JM/html/sendmail/man8/sendmail.8.html