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 はできるだけ指定したほうがよいでしょう。でないと宛先にドメイン指定のないメールが送信できません。とくに FromLineOverride に YES 以外を指定した場合は必須になるようです。
このほかにも SSL を利用する場合の設定がありますが、私は使っていないので確認できませんでした。"ssmtp.conf" にサンプルがあるので、それを参考にすれば設定は難しくないと思います。
また、SMTP 認証はパスワードを平文で記述するのでお勧めできません。可能ならメールサーバー側でリレーを許可するほうが適切かと思います。もちろん IP アドレスを限定して、ですよ(^^;
記述例
以下、ドメインが "example.com"、メールサーバーが "mail.example.com" の場合の記述例です。
root=hokousya mailhub=mail rewriteDomain=example.com FromLineOverride=YES
SMTP 認証を利用するなら、以下の記述を追加します。
AuthUser=hokousya@example.com AuthPass=xxxx AuthMethod=LOGIN
動作テスト
まず、以下のようなファイル "mail" を作成します。メールアドレスは適切なものに置き換えてください。
To: hokousya@example.com From: hokousya@example.com Subject: Test Test
そして以下のように sendmail コマンドでメールを送信します。
/usr/sbin/sendmail -t < mail
これで無事にメールが届いていれば成功です。
sendmail コマンドを利用してメールを送信する CGI やWebアプリケーションは現在でもけっこうあるようです。GentooLinux をインストールした直後に ssmtp の設定を済ませておくことをお勧めします。
詳しくはこちらの記事をどうぞ!
この記事にコメントする