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認証にて行えるようになっているか、直接SMTPに接続し送信テストを行ってみよう。実際にSMTP認証での送信テストを行う場合、telnetコマンドを使おうとすると、AUTHログイン時にエンコードしたパスワード文字列を送出しなくてはならないため難しい。メーラーを設定して試す方法が簡単だ。
telnetコマンドを使ってSMTP認証付き送信テストを行うのは現実的ではないので、その代わりに最近の Windows10/11 や Windows Server 2022/2025に実装されているcurlコマンドでSMTP認証付き送信テストを行う事例をここでは紹介する。メモ帳でcurlコマンドをオプション付きであらかじめしっかり記述し、コマンドプロンプトに貼り付けて送信できるか試すとよいだろう。なお、"curl --help smtp" を実行すると書式が確認できる。
[SMTP認証あり]書式 curl -v --url "smtp://[Server_IPaddress]:25" -u "[ID]:[PW]" --mail-rcpt [mailaddress] --mail-from [mailaddress] --form-string text="xyzxyz" -H "Subject: abcabc" -H "From: <[mailaddress]>" -H "To: <[mailaddress]>" |
[実例] curl -v --url "smtp://192.168.1.103:25" -u "user1@test-sample.jp:pass1234" --mail-rcpt user1@test-sample.jp --mail-from user1@test-sample.jp --form-string text="hello" -H "Subject: mail-test" -H "From: <user1@test-sample.jp>" -H "To: <user1@test-sample.jp>" |
-
SMTP認証が失敗するとき
サーバからの応答の部分で "535 5.7.0 Authentication failed(AUTH failed)" という応答メッセージが返ってきて、送信ができないときは、指定したアカウントかパスワードに間違いがあることを示している。
アカウントマネージャで設定したアカウントやパスワードを再度試してみよう。