[linux][sSMTP] 自前で smtp サーバを用意せずにメール送信する
実は 中村ノリ選手 と誕生日が同じでした、nakamura です!(年はさすがに違いますよ!)名字まで一緒でもはや運命しか感じませんね~。
サーバをセットアップする際に『メール送信は一ヶ所に集約したいな~』とか『わざわざ SMTP サーバ立てるのメンドイな~』なんてことありませんか?特に開発環境とか。今日はそんな時に使える sSMTP という超シンプルな MTA を紹介してみます。以下全て CentOS-6.3 での話しです。
軽く解説
sSMTP はメール送信専用に作られた超シンプルな MTA です。MTA っていうとピンと来ないかもしれませんが、要はただの SMTP クライアントです(デーモンとして常駐しません)。localhost に SMTP サーバが起動していなくても、外部のサーバに接続してメール送信することができます。
とりあえずインストール
Base リポジトリにはないので epel リポジトリを追加しましょう。CentOS-6.x 系ならこんな感じ。
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm
リポジトリを追加したら以下でインストールします。
yum install ssmtp
設定
設定ファイルは /etc/ssmtp/ssmtp.conf です。
LAN 内であれば以下のように送信を依頼するサーバを mailhub ディレクティブで指定、SMTP サーバ側でメールの転送を許可するだけで使えてしまいます。簡単すぎてヨダレが・・・。
mailhub=mail.example.com
インターネット上の SMTP サーバを使うのであれば、おそらく認証処理が必要になるでしょう。以下は Gmail を介してメール送信するための設定です。
mailhub=smtp.gmail.com:587
AuthUser=USERNAME@gmail.com
AuthPass=PASSWORD
UseSTARTTLS=YES
これまた、めっちゃ簡単!VM とか CoLinux を使っての開発環境であればこれで十分ですね。
ちょっと注意
例えば sSMTP と Postfix のように複数の MTA がインストールされている場合、どちらの MTA をデフォルトで使うのか明示的に設定する必要があります。CentOS の場合、alternatives というコマンドを使います。
以下のコマンドで現在どの MTA が使われているのか確認できます。
alternatives --display mta
sSMTP を使うには以下を実行し、
alternatives --config mta
こんな感じで表示されるので、2 を入力して sSMTP を選択します。
2 プログラムがあり 'mta' を提供します。
選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
2 /usr/sbin/sendmail.ssmtp
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
終わりに
たいがいのディストリビューションは Postfix とか sendmail とかインストールするだけで普通にメール送信できてしまうのであまり意識することはないかもしれませんが、開発環境ごときで SMTP サーバを起動しておくのが大袈裟に感じてしまうっていうマメな方はぜひ試してみてください!