【サーバ】LinuxサーバからSMTP-Authでメールを送る | 稼働率99.9%

稼働率99.9%

春日井市でiPhoneアプリの開発を行っています。iPhoneを使い出してからそれに伴って開発環境もWindowsからMacへと移行しました。MacやiPhoneだけでなくIT全般について日々感じた事や思った事を備忘録として記録する事を目的としたブログです。

簡単にメールを送信するには

バックアップ等のエラー時に自動的にメールを送信する方法を採る事があります。

そのサーバ内に「SMTPサーバ」が稼働していれば単純に、
mail -s "件名" "red-ozemi@gmail.com" < message.txt 
とすれば内部のサーバを利用してメールを送信する事ができます。

※メーラーによっては文字化けするから対策が必要かも。
※mailコマンドはCentOS5とCentOS6で動作に互換性が無いようです。
にわかSEの独り言 CentOS 5のmailコマンドをCentOS 6で使えるようにする方法 
「SMTPサーバ」がサーバ内に無い場合にどうするかというのが本題です。

mailコマンドを拡張した「mailx」を使用する

CentOSを最小構成でインストールしているとmailコマンドが無いので
# yum install mailx
でインストールします。
SMTP-Authで送信させるには、「.mailrc」に設定します。
「.mailrc」はユーザディレクトリに配置するか(~/.mailrc)
またはmailコマンド実行時に環境変数でファイル指定をする事も可能です。

mailrcを設定する

以下の内容を「.mailrc」に記述します。
#メールサーバ
set smtp=smtp://[SMTPメールサーバ]:[送信ポート]
#認証方式
set smtp-auth=login
#SMTPユーザ名
set smtp-auth-user=[ユーザ名]
#SMTPパスワード
smtp-auth-password=[パスワード]

メールを送信する

メールを送信するには、
mail -s "件名" "送信先アドレス" < [メッセージファイルパス]
例.
mail -s "バックアップエラー" "red-ozemi@gmail.com" < message.txt

mailrcを別名ファイルで渡す場合、
env MAILRC=[.mailrcパス] mail -s "件名" "送信先アドレス" < [メッセージファイルパス]
例.
env MAILRC=mail.conf mail -s "バックアップエラー" "red-ozemi@gmail.com" < message.txt
これ以外にも添付ファイルを加えたり(-aオプション)する事ができます。

これを知る前は、perlベースで作成していましたが、色々とモジュールを入れないといけなかったりと設定が手間でした。
これなら、手軽にメールで通知できるのではないでしょうか。

参考サイト

hiro aki » Blog Archive » smtpサーバー使ってbashでメールを送る方法
Linuxのメモメモ [がらくたネット]
mail(1) manページ
mailx.1