12.SMTP認証(SMTP-AUTH)を使って送ろう

メールが送れることが確認できたら、SMTP認証の設定で送る設定に変更してみる。SMTP認証とは、電子メールを送信する際に、送信者がユーザであることを確認するためにユーザー名とパスワードの確認を行う機能のこと。SMTP-AUTHとも言う。
プロバイダなど、「POP before SMTP」という方法を採用しているSMTPサーバーもまだまだあるが、実はメール送信のセキュリティ面からすれば、非常に危ういものなのだ。絶対に避けなければいけない。次のカコミを読んでほしい。

"POP before SMTP"の危険性について

最近は常時接続があたりまえになり、数分間隔でメールチェックしている利用者も増えている。おそらくあなたもそうだろう。
"POP before SMTP"の基本的な仕組みは、POP3への認証後、一定時間は、そのユーザーアカウントでの送信は、誰が送信してもスルーになってしまっている。
つまり、サーバ側で "POP before SMTP" を設定し、5分間スルーにしているときは、メールクライアントが5分未満の時間間隔によるメールチェックを行っているとすると、このユーザーのメールアカウントさえわかっていれば、簡単に第三者がメール送信できてしまう。とても大きなセキュリティホールになる可能性があるのだ。

SMTP認証を採用することにより、SPAMメールの中継など、第三者によるメールサーバーの不正利用を防ぐことができるのだ。
最初に、「E-Post Mail Control」を開き、サービスがSMTP認証の実行を可能にする設定を行う。

 E-Post Mail Control
  →[サービス制御]タブ
   →[SMTP認証方法]=「PLAIN LOGIN CRAM-MD5」を選択
    →[セキュリティレベル]=「認証ファイル」を選択

適用ボタンをクリックした後、EPSTRSを再起動させる。
次に、「E-Post Mail Account Manager」に切り替え、各ユーザーが、SMTP認証/APOP認証での接続有無の設定を行う。

 E-Post Mail Account Manager
  →[ドメインツリー]を選択
   →[アカウント]をクリック
    →[user1]をダブルクリック
     →[アカウント設定ダイアログ]=「SMTP-AUTH & APOPを使用」
      チェックボックスをオン

[OK]ボタンをクリックし、ダイアログボックスを閉じる。
すると、「SMTP-AUTH & APOPを使用」が有効に設定変更されたことによって、SMTP認証パスワードの入力をうながすダイアログボックスが表示されるので、正しいSMTP認証パスワードを入力する。

以上でSMTP認証を有効にしたサーバー側の設定は完了する。
実際に、メールクライアント側でも、メールの送信がSMTP認証にて行えるようになっているか、コマンドプロンプトを開き、telnetコマンドを使って、直接SMTPに接続し、送信テストを行ってみよう。ただし、実際には、SMTP認証での送信テストなので、telnetコマンドを使うより、メーラーを使った方が試験は簡単だ。telnetコマンドを使うと、AUTHログイン時にエンコードしたパスワード文字列を送出しなくてはならないからだ。下記画面では「AUTH PLAIN AFVzZXIx……」個所がそれに該当する。人間の頭の中ではとてもエンコードできないので、エンコードしたパスワード文字列を生成するには、エンコードツールなどの手助けがないと実際には難しい。

コマンドプロンプトからのSMTP送信
Telnet 192.168.0.103 smtp<CR>
220 test-sample.jp E-POST ESMTP Receiver (4.xx)......
EHLO<CR>
250-test-sample.jp Hello [xxxx.xxx.xxxx.xxxx], pleased to meet you
250 AUTH PLAIN LOGIN CRAM-MD5
AUTH PLAIN AFVzZXIxQHRlc3Qtc2FtcGxlLmpwAHVzZXIxMjM0
235 Authentication successful.
mail from: <user1@test-sample.jp><CR>
250 <user1@test-sample.jp>... Sender ok.
rcpt to: <user1@test-sample.jp><CR>
250 <user1@test-sample.jp>... Recipient ok.
data<CR>
354 Start mail input;id <BXXXXXXXXXX> end with <CRLF>.<CRLF>
subject: test<CR>
from: <user1@test-sample.jp><CR>
to: <user1@test-sample.jp><CR>
<CR>
test.<CR>
.<CR>
250 Message received ok.
quit<CR>
221 test-sample.jp closing connection.

下線の箇所がコマンドプロンプトから入力する内容
<CR>は、<Enter>キーの入力を表す

←自分で入力する内容
→SMTPサービスが応答を返す。
←拡張SMTPであることを宣言
→SMTP認証が利用可能であることを回答
←PLAIN方式でアカウントとパスワードを送信
→認証成功…[1]
←user1@・・から
→送信者OK
←user1@・・あてへ
→送信先OK
←ヘッダと本文の書き始め

←ヘッダ
  :
  :
←ヘッダと本文の区切り
←本文
←データ終了ピリオド
→受領完了
←接続終了


SMTP認証が失敗するとき

[1]の部分で "535 5.7.0 Authentication failed(AUTH failed)" という応答メッセージが返ってきて、送信ができないときは、指定したアカウントかパスワードに間違いがあることを示している。
アカウントマネージャで設定したアカウントやパスワードを再度試してみよう。


書籍『E-Post Mail Server完全ガイド』ご案内