RaspberryPiやUbuntuなどのLinux環境において、スクリプトからメールを送信する方法を紹介します。
この方法では、postfixなどでMTAを構築せずとも、メールを送信することができます。

前提:
・ここで紹介する方法は、Ubuntu、Raspbianで確認しました。その他のOS、ディストリビューションで正しく動作するかは未確認です。
・メール受信の方法についてはここでは紹介しません。
・使用するSMTPサーバの認証方式によっては、ここで紹介する.mailrcの設定以外に、必要な項目がある可能性があります。ここでは楽天メールを使用した場合の一例に留めます。


mailxコマンドのインストール:
メールを送るために、mailxコマンドを使用します。
mailxコマンドを使うことで、MTAを構築せずに、直接SMTPサーバへメールを転送することができます。
以下のコマンドでmailxコマンドをインストールしてください。
sudo apt-get install heirloom-mailx
なお、既にインストールされているかどうかは、下記のコマンドで確認してください。
sudo dpkg -l | grep mailx
ii  heirloom-mailx                        12.5-4                                    armhf        feature-rich BSD mail(1)
上記のように、 heirloom-mailx が出力された場合は、インストール済みなので不要です。

.mailrcの作成:
 スクリプトを実行するユーザーのホームディレクトリ(~)に、.mailrcを作成します。
内容は下記の通りです。
vim ~/.mailrc ←エディタはviでもnanoでも何でも良いです。
  1 set smtp=smtp://mail.gol.com:587 ←送信元smtpサーバの指定(この例は楽天メールの場合です)
  2 set from=xxxxxxx@gol.com ←送信元メールアドレス
  3 set smtp-auth-user=xxxxxxxx@gol.com ←SMTP認証のユーザ名
  4 set smtp-auth-password="xxxxxxxx" ←SMTP認証のパスワード

これらの設定値は各メールサービスによって異なるので、利用するメールサービスごとに読み替えて設定してください。

メール送信:
ここまでで準備は完了したため、あとはメールを送るだけです。
以下のコマンドでメールを送信してください。
mailx -s "SUBJECT" xxxxxxxx@hotmail.co.jp < /home/hoge/msg.txt 

SUBJECTがメールの件名です。
xxxxxxxx@hotmail.co.jpが宛先メールアドレスです。
/home/hoge/msg.txtの中身が本文です。

本文をファイルから入力しない場合、以下のようにパイプで渡すこともできます。
echo "HONBUN" | mailx -s "SUBJECT" xxxxxxxx@hotmail.co.jp

また、件名、宛先、本文を指定しなければ、対話モードでメールを作成します。この時、件名、宛先を入力した後のEnterで何も表示されなければ、本文入力の開始です。本文の入力の終了はCtrl+Dを入力します。

スクリプトでメールを作成する場合は、本文をテキストファイルで出力しておいて、mailxコマンドの入力にすることが多いでしょう。この時、cronなどでmailxコマンドを実行する場合は、ファイルの入出力は絶対パスで指定しないと、相対パスで意図しないパスを見てファイル入出力が正しく行われなかったりするので、気をつけましょう。
 
スポンサードリンク