「Heirloom mailx」でローカルサーバからSMTPメール送信
2011年12月8日「Heirloom mailx」でローカルサーバからSMTPメール送信
以前のエントリでも紹介しましたが、ローカルのサーバはMXレコードを一般的に持たない為、グローバルのサーバへのメール送信は出来ません。
が、ローカルのサーバのステータスをメールで受け取ったり、ローカルのサーバからメールを送信したい場合があります。
PerlやPHP、rubyなどでスクリプトを作成することも可能ですが、サーバ側で完結できる方法があるので紹介。
【「Heirloom mailx」とは】
/bin/mailの拡張版ともいえる、「Heirloom mailx」をインストールします。
「Heirloom mailx」は、IMAP、POP3、APOP、SSL/TLS、S/MIMEに対応したLinux版のCUIメーラです。
【「Heirloom mailx」をインストール】
以下のコマンドでインストールを行います
$ cd /usr/local/src
$ sudo wget http://sourceforge.net/projects/heirloom/files/latest/download
$ sudo tar -jxf mailx-12.4.tar.bz2
$ cd mailx-12.4
ここで、Makefileを編集します
編集箇所は、「UCBINSTALL = /usr/ucb/install」となっている箇所です
$ sudo vim Makefile
…
¥#UCBINSTALL = /usr/ucb/install
UCBINSTALL = /usr/bin/install
コンパイル
$ sudo make
$ sudo make install
【.mailrcの作成】
利用するユーザ単位で、.mailrcを作成します
ここでは、Gmailのメールサーバを利用することにします
$ vim ~/.mailrc
set smtp-use-starttls
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=Gmail Address
set smtp-auth-password=GMail Password
set from=”UserName“
【テストShell】
以下のようなShellを作成して、メールの送信テストをします
$ vim sendmail.sh
\#!/bin/bash
SUBJECT=’your subject’
TO=’your@mail.address’
MESSAGE=’/tmp/message.txt’/usr/local/bin/mailx -s “$SUBJECT” “$TO” < $MESSAGE
【確認】
- ShellのTO欄に設定したアドレスへメールが受信する
- メールの差出人が、.marilrcのsmtp-auth-userで指定したメールアドレス(Gmail)である
- メールヘッダで、送信元(Recieved-To)がGoogleである
【応用】
- 以前のエントリのディスク容量(df)を監視して、規定値以上を超えたらアラートメールを送るシェルのメール送信部分を調整すれば、ローカルのサーバからのメール送信も可能
- 以前のエントリのDelegateを利用したSMTPリレー(SMTP-Auth)と組み合わせれば、ローカルのサーバにログを残しつつローカルのサーバからメールの送信が可能
【参考】
ref. smtpサーバー使ってbashでメールを送る方法
ref. mailx で、コマンドラインから POP, SMTP サーバを利用する
ref. Heirloom Project – Sourceforge
ref. The Heirloom Project