基本情報技術者 2017年 春期 午前(科目A) 問44
問題文
電子メールの送信時に、送信者を送信側のメールサーバで認証するためのものはどれか。
選択肢
ア:APOP
イ:POP3S
ウ:S/MIME
エ:SMTP-AUTH(正解)
🔒 解説は解答すると表示されます
SMTP認証方式【午前解説】
正解の理由
正解は エ(SMTP-AUTH)です。
SMTP-AUTH は SMTP プロトコルの拡張で、AUTH コマンドにより送信時にユーザ認証を行います。MUA が送信サーバに接続してメールを送る際に、送信側サーバが接続元のユーザを確認して送信を許可するための仕組みであり、不正中継(オープンリレー)防止の主要手段の一つです。送信(Submission)ではポート587(Submission)やポート465(smtps)を用い、STARTTLS 等で暗号化した上で AUTH による認証を行う運用が一般的です。
SMTP-AUTH は SMTP プロトコルの拡張で、AUTH コマンドにより送信時にユーザ認証を行います。MUA が送信サーバに接続してメールを送る際に、送信側サーバが接続元のユーザを確認して送信を許可するための仕組みであり、不正中継(オープンリレー)防止の主要手段の一つです。送信(Submission)ではポート587(Submission)やポート465(smtps)を用い、STARTTLS 等で暗号化した上で AUTH による認証を行う運用が一般的です。
解法ステップ
- 問題文のキーワード「送信時」「送信側のメールサーバで認証」を確認する。
- 各選択肢のプロトコルの役割を思い出す(送信/受信/署名・暗号化)。
- 送信時にサーバ側でユーザを認証する用途に該当するのは SMTP の拡張である SMTP-AUTH と判断する。
- よって正解は SMTP-AUTH(エ)とする。
選択肢別の誤答解説
- ア: APOP
- 説明:POP3 の認証方式の一つで、チャレンジレスポンス(MD5)により受信時の認証を行います。
- なぜ誤りか:受信(POP)に関する認証であり、送信サーバ側の送信時認証ではないため不適切です。
- イ: POP3S
- 説明:POP3 を TLS(SSL)で保護して安全にメールを受信するためのものです。
- なぜ誤りか:暗号化された受信プロトコルであり、送信時のサーバ側認証には関係ありません。
- ウ: S/MIME
- 説明:メールの暗号化と電子署名を提供する仕組みで、送信者の署名で送信者性を保証できます。
- なぜ誤りか:メッセージ単位での署名・暗号化技術であり、送信サーバへのログイン認証(送信時のサーバ側認証)ではありません。
- エ: SMTP-AUTH
- 説明:SMTP の拡張で、AUTH コマンドにより SMTP セッション中にユーザ認証を行う仕組みです。
- なぜ正解か:送信時に送信側メールサーバが送り主(接続元ユーザ)を認証する目的に適合します。
よくある誤解
- 「POP3S や APOP が送信時の認証になる」:どちらも POP(受信)プロトコルに関する認証であり、送信(SMTP)とは役割が異なります。
- 「S/MIME が送信者認証と同じ」:S/MIME は電子署名で送信者の署名検証が可能ですが、サーバ側での送信時ログイン(SMTP セッションでの認証)とは目的と作用箇所が異なります。
- 「STARTTLS によって認証が不要になる」:STARTTLS は通信の暗号化であり、ユーザ認証(誰が送っているかの確認)は別途 SMTP-AUTH 等で行う必要があります。
補足コラム
- SMTP-AUTH と SPF/DKIM/DMARC の違い:SMTP-AUTH は「送信時にクライアントがサーバにログインする」仕組みでユーザ認証を行います。一方 SPF/DKIM/DMARC は送信元ドメインやメッセージの改ざん検出、ドメインレベルでのなりすまし対策に使われ、メール配送チェーンでの検証が目的です。両者は補完関係にあります。
- 実運用のポイント:メールクライアントは通常ポート587(submission)を使い、まず STARTTLS で暗号化してから AUTH で認証する運用が推奨されます。古い APOP は既に推奨されないことが多く、POP3S(TLS化)や IMAPS が用いられます。
- 学習メモ:送信=SMTP(SMTP-AUTH)、受信=POP/IMAP(POP3S, IMAPS 等)、署名=S/MIME(あるいは PGP)と覚えると選択で迷いにくいです。
コード例(Python smtplib による SMTP-AUTH の例)
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = "sender@example.com"
msg["To"] = "recipient@example.com"
msg["Subject"] = "Test"
msg.set_content("This is a test email.")
# SMTP サーバへ接続して STARTTLS → 認証 → 送信
with smtplib.SMTP("smtp.example.com", 587) as s:
s.starttls()
s.login("username", "password") # ここが SMTP-AUTH に相当
s.send_message(msg)
FAQ
Q1. SMTP-AUTH と STARTTLS はどちらが認証ですか?
A1. STARTTLS は通信の暗号化(TLS による保護)であり、認証は行いません。SMTP-AUTH がユーザ認証を行います。暗号化と認証はそれぞれ役割が異なりますが、実運用では STARTTLS の後に SMTP-AUTH を行います。
A1. STARTTLS は通信の暗号化(TLS による保護)であり、認証は行いません。SMTP-AUTH がユーザ認証を行います。暗号化と認証はそれぞれ役割が異なりますが、実運用では STARTTLS の後に SMTP-AUTH を行います。
Q2. SMTP-AUTH があればなりすましは完全に防げますか?
A2. SMTP-AUTH は送信サーバの不正中継を防ぎますが、送信元ドメインのなりすまし(他の送信経路を使う)やメールヘッダ改ざんに対しては SPF/DKIM/DMARC の併用が必要です。
A2. SMTP-AUTH は送信サーバの不正中継を防ぎますが、送信元ドメインのなりすまし(他の送信経路を使う)やメールヘッダ改ざんに対しては SPF/DKIM/DMARC の併用が必要です。
Q3. ポート番号はどれを使えばよいですか?
A3. メール送信サブミッションの標準はポート587(STARTTLS を使うのが一般的)。ポート465 は SMTPS(暗号化された SMTP)で使われることがあります。
A3. メール送信サブミッションの標準はポート587(STARTTLS を使うのが一般的)。ポート465 は SMTPS(暗号化された SMTP)で使われることがあります。
Q4. S/MIME の電子署名はサーバ側認証と同じですか?
A4. 署名はメッセージの作成者(署名鍵所有者)を検証できますが、送信サーバにログインして送信を許可する「サーバ側認証」とは別の仕組みです。
A4. 署名はメッセージの作成者(署名鍵所有者)を検証できますが、送信サーバにログインして送信を許可する「サーバ側認証」とは別の仕組みです。
関連キーワード: 電子メール, SMTP-AUTH, SMTP, 認証, メール送信, APOP, POP3S, S/MIME, MTA, MUA, STARTTLS, SPF, DKIM, DMARC

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

