WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

SSMTP でメール送信しよう!

GentooLinux に標準でインストールされる ssmtp というパッケージをご存知でしょうか。ssmtp は送信専用の MTA で、sendmail 互換のメール送信コマンドを提供します。これを利用すると、メール送信に sendmail コマンドを使用する CGI などをメールサーバーをインストールせずに動作させることができます。プロバイダーの提供するメールサーバーを利用する場合はもちろん、Web サーバーとメールサーバーを別のマシンに構築した場合も非常に便利です。

ということで、今回はこの ssmtp の設定に挑戦します。検索してもきちんと説明しているページは見つからなかったので、それなりに役に立つかもしれないと思って記事にしてみました(゜∀゜)

ssmtp.conf の書式

設定といってもそんなに大変なことはありません。設定ファイルは "/etc/ssmtp/ssmtp.conf" ひとつだけで、転送先のメールサーバーと多少のカスタマイズを記述するだけです。"ssmtp.conf" の設定項目は以下のとおりです。

root
ユーザー ID が 1000 より小さいユーザー宛のメールの宛先を指定します。root などのユーザー宛に送信されたメールを特定のアカウントに転送したい場合に指定します。省略すると宛先の書き換えは行われません。
mailhub
メールサーバーのホスト名、もしくは FQDN を指定します。ホスト名だけを指定した場合は、自ホストのドメインが補われます。プロバイダーのメールサーバーを利用する場合は、プロバイダーの SMTP サーバーの FQDN を指定するとよいでしょう。
rewriteDomain
宛先にドメイン名の指定が無かった場合に使用するドメイン名を指定します。
FromLineOverride
YES 以外を指定すると、"From :" ヘッダ行を実際に送信したユーザーで上書きします。"From :" の詐称を防ぐためのものかと思います。名前から類推される YES/NO と意味が逆転しているように思えるので、要注意です。
AuthUser
SMTP 認証のユーザー名を指定します。
AuthPass
SMTP 認証のパスワードを指定します。
AuthMethod
SMTP 認証の方法(LOGIN or CRAM-MD5)を指定します。

必須項目は mailhub だけだと思います。その他は必要に応じて指定してください。rewriteDomain はできるだけ指定したほうがよいでしょう。でないと宛先にドメイン指定のないメールが送信できません。とくに FromLineOverrideYES 以外を指定した場合は必須になるようです。

このほかにも SSL を利用する場合の設定がありますが、私は使っていないので確認できませんでした。"ssmtp.conf" にサンプルがあるので、それを参考にすれば設定は難しくないと思います。

また、SMTP 認証はパスワードを平文で記述するのでお勧めできません。可能ならメールサーバー側でリレーを許可するほうが適切かと思います。もちろん IP アドレスを限定して、ですよ(^^;

記述例

以下、ドメインが "example.com"、メールサーバーが "mail.example.com" の場合の記述例です。

root=hokousya
mailhub=mail
rewriteDomain=example.com
FromLineOverride=YES

SMTP 認証を利用するなら、以下の記述を追加します。

AuthUser=hokousya&#64example.com
AuthPass=xxxx
AuthMethod=LOGIN

動作テスト

まず、以下のようなファイル "mail" を作成します。メールアドレスは適切なものに置き換えてください。

To: hokousya&#64example.com
From: hokousya&#64example.com
Subject: Test

Test

そして以下のように sendmail コマンドでメールを送信します。

/usr/sbin/sendmail -t < mail

これで無事にメールが届いていれば成功です。

sendmail コマンドを利用してメールを送信する CGIWebアプリケーションは現在でもけっこうあるようです。GentooLinux をインストールした直後に ssmtp の設定を済ませておくことをお勧めします。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles