sSMTP

2015/07/04更新

対応バージョン: 2.64-8

GmailのSMTPサーバを使ってsSMTPでroot宛のメール(cronジョブの結果など)を送信するには以下のようなシンプルな設定を行えばよい。

/etc/ssmtp/ssmtp.conf
root=<Gmailアカウント>@gmail.com
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<Gmailアカウント>@gmail.com
AuthPass=<パスワード>

メールを送信すると/var/log/mail.logには以下のようなログが記録される。

sSMTP[xxx]: Creating SSL connection to host
sSMTP[xxx]: SSL connection using RSA_ARCFOUR_128_SHA1
sSMTP[xxx]: Sent mail for xxx@xxx (221 2.0.0 closing connection qiweoz8011164x0d.78 - gsmtp) uid=xxx username=xxx outbytes=xxx

関連資料・記事

2008/8/17更新

対応バージョン: 2.62-1

sSMTPでSMTP AUTH(認証方式:LOGIN)を使用するにはssmtp.confに以下の設定を追加する。

AuthUser=<ユーザID>
AuthPass=<パスワード>
AuthMethod=LOGIN

さらにSSLを用いて通信する場合は以下の設定も記述する。

UseTLS=YES

以下にサーバとのやりとりを示す。

サーバからそのサーバがサポートする認証方式が通知される。

S:250-AUTH PLAIN LOGIN

この例の場合は「PLAIN」「LOGIN」がサポートされる。他に「CRAM-MD5」「DIGEST-MD5」があるが、試験環境がないのでここでは割愛する。

使用する認証方式をサーバに送るとサーバから認証方式に応じたレスポンスが返るので必要な情報を送る。

ここでは「LOGIN」について説明する。

C:AUTH LOGIN
S:334 VXNlcm5hbWU6 ← ログインプロンプト(「Username:」など)
C:<ユーザID> ← サーバにユーザIDを送る
S:334 UGFzc3dvcmQ6 ← パスワード入力プロンプト(「Password:」など)
C:<パスワード> ← サーバにパスワードを送る
S:235 ok authed ← 認証成功

プロンプトやユーザID/パスワードはすべてBase64エンコードされたものを使用する。

以降、メールデータを送信する。

関連資料・記事

2014/05/26更新

対応バージョン: 2.64

公式サイト

準備

導入に必要なもの

ssmtp_2.64.orig.tar.gz

導入OS

Ubuntu 14.04

インストール

配布ファイル展開

% tar jxvf ssmtp_2.64.orig.tar.bz2
% cd ssmtp-2.64

make,インストール

ここではSMTP Authを使用するものとしてSSLとMD5AUTHオプションを付ける。

% ./configure --enable-ssl --enable-md5auth
% vi Makefile
(変更前)
 83         $(CC) -o ssmtp $(OBJS) -lnsl  -lssl $(CFLAGS)

(変更後) -lcryptoを追加
 83         $(CC) -o ssmtp $(OBJS) -lnsl  -lssl -lcrypto $(CFLAGS)

% make
% sudo make install
:
Mail name [localhost]: ***.***.*** ← メール送信元ホストを指定

Please enter the SMTP port number [25]: ← SMTPポート番号を指定

ここで設定した内容は/usr/local/etc/ssmtp/ssmtp.confに保存される。

間違っていてもあとで変更すればいいので特に気にしなくてもよい。

インストール物 (man,infoは除く)

/usr/local/sbin/ssmtp

/usr/local/etc/ssmtp/revaliases
/usr/local/etc/ssmtp/ssmtp.conf

各種設定

/usr/local/etc/ssmtp/ssmtp.confにて設定を行う。

詳細は以下を参照のこと。

関連資料・記事

動作確認

テストメール送信

例えばメールサーバが「smtp.bar.com」の場合、まずssmtp.confを以下のように設定する。

root=foo
mailhub=smtp.bar.com
FromLineOverride=YES

次に以下のようなメール文を作成する。

To: foo@bar.com
From: foo@bar.com
Subject: sample

sample 

これをssmtpに渡してメールが送られていればよい。

ssmtp -t < mail.txt

送られていない場合はssmtp.confのDebug=をYESに設定してログを調査する。

2009/2/15更新

対応バージョン: 2.62-3

公式サイト

準備

導入に必要なもの

ssmtp_2.62.orig.tar.gz
ssmtp_2.62-3.diff.gz

導入OS

Fedora 10

関連資料・記事

デフォルトでインストールされているSendmailの無効化

まず、既にサービスが起動していれば停止する。

% sudo service sendmail stop

次にサービスを無効にする。

% sudo chkconfig sendmail off

sendmailのシンボリックリンクを削除する。

% sudo rm /usr/sbin/sendmail

(*) /usr/sbin/sendmailは/etc/alternatives/mtaにリンクしており、/etc/alternatives/mtaはさらに/usr/sbin/sendmail.sendmailにリンクしている。

インストール

配布ファイル展開

% gunzip ssmtp_2.62-3.diff.gz
% tar zxvf ssmtp_2.62.orig.tar.gz
% cd ssmtp
% patch -p1 < ../ssmtp_2.62-3.diff        

make,インストール

% ./configure
% make
% sudo make install
:
Mail name [foo.bar.com]: ***.***.*** ← メール送信元ホストを指定

Please enter the SMTP port number [25]: ← SMTPポート番号を指定

ここで設定した内容は/usr/local/etc/ssmtp/ssmtp.confに保存される。

各種プログラムでsendmailが呼び出された時にssmtpを実行するようにする。

% sudo ln -s /usr/local/sbin/ssmtp /usr/sbin/sendmail

インストール物 (man,infoは除く)

/usr/local/sbin/ssmtp

/usr/local/etc/ssmtp/revaliases
/usr/local/etc/ssmtp/ssmtp.conf

各種設定

/usr/local/etc/ssmtp/ssmtp.confにて設定を行う。

以下、主な設定項目について説明する。

root=<メールアドレス>

UIDが1000未満のシステムアカウント宛のメールが送信される場合の宛先メールアドレスを指定する。

root宛に送信されるcronジョブの実行結果などを送る場合に利用する。

デフォルトはpostmaster。

省略するとメールアドレスの書き換えは行われない。

ドメインを省略した場合はhostname=の設定が補完される(rewriteDomain=が設定されていればそちらが優先される)。

例)

root=foo@bar.com

mailhub=

メール送信先のSMTPサーバを指定する。

ポート番号が25以外の場合はコロンに続けてポート番号を指定する。

ドメインを省略した場合は自ホストのドメインが補完される。

デフォルトはmail。

例)

mailhub=mail.bar.com:8025

rewriteDomain=<ドメイン>

送信元を別ドメインに見せかける場合にそのドメインを指定する。

デフォルトは未設定。

hostname=<ホスト>

メール送信元ホストを指定する。

デフォルトはインストール時に指定したホストが記述されている。

FromLineOverride=

From:ヘッダの送信元アドレスを変更するかどうかを指定する。

YESを指定するとアドレスは書き換えず、YES以外を指定すると実際に送信したユーザに書き換える。

設定と動作が逆に見受けられるので注意が必要である。

デフォルトはYES以外。

Debug=

YESを指定するとSMTPサーバとのやりとりがログに出力される。

sSMTPがうまく動作しない場合の調査に便利である。

デフォルトはYES以外。

その他の設定項目

上記設定の他にSSL通信やSMTP AUTHに関する設定などがあるがここでは割愛する。

なお、SSL通信を行う場合はconfigure時に--enable-sslを指定しておく必要がある。

関連資料・記事

動作確認

テストメール送信

例えばメールサーバが「smtp.bar.com」の場合、まずssmtp.confを以下のように設定する。

root=foo
mailhub=smtp.bar.com
FromLineOverride=YES

次に以下のようなメール文を作成する。

To: foo@bar.com
From: foo@bar.com
Subject: sample

sample 

これをsendmail(実際にはssmtp)に渡してメールが送られていればよい。

/usr/sbin/sendmail -t < mail.txt

送られていない場合はssmtp.confのDebug=をYESに設定してログを調査する。

関連資料・記事