「Heirloom mailx」でローカルサーバからSMTPメール送信

「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である

【応用】

【参考】

ref. smtpサーバー使ってbashでメールを送る方法
ref. mailx で、コマンドラインから POP, SMTP サーバを利用する
ref. Heirloom Project – Sourceforge
ref. The Heirloom Project