sSMTP

更新日:2008/8/17

対応ソフトウェア:sSMTP 2.62-1

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

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

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

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

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エンコードされたものを使用する。

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

(関連)

更新日:2009/11/24

対応ソフトウェア:sSMTP 2.63-1.1

公式サイト

準備

導入に必要なもの

ssmtp_2.63.orig.tar.gz
ssmtp_2.63-1.1.diff.gz

導入OS

Ubuntu 9.04

インストール

配布ファイル展開

% gunzip ssmtp_2.63-1.1.diff.gz
% tar zxvf ssmtp_2.63.orig.tar.gz
% cd ssmtp-2.63
% patch -p1 < ../ssmtp_2.63-1.1.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に保存される。

インストール物 (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

対応ソフトウェア:sSMTP 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に設定してログを調査する。