7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SMTP についてざっくりと

Last updated at Posted at 2019-11-07

動機

メール送信のプロトコルであるSMTPについて理解していないことが多く、なんとなく使っていたので全体像を理解するために調べてみた。

SMTP とは

SMTP は Simple Mail Transfer Protcol の略でメールを送信するプロトコル。RFC5312 で標準化されている。
POP とセットで出てくる。こちらは Post Office Protcol の略でメールを送信するプロトコル。

well known port

  • 25 ...認証なしで送信する用途に利用されていた。現在はプロバイダによっては利用できなくなっている(Outbound Port 25 Blocking)。認証を挟んでいないので非推奨になっている。認証をさせて、587番ポートと同じ役割を持たせることもある。
  • 465...認証を必須として送信する用途に利用されている。暗号化は SMTP over SSL(SMTPS)で行われている。
  • 587...認証を必須として送信する用途に利用されている。暗号化は TLS/STARTTLSで行われている。

SMTP? SMTPS? starttls?

もともとのSMTP には送信者を認証するための仕組みがないため、自分が持っているSMTPサーバを第三者に迷惑メールの送信のために使われてしまうことを防ぐことができない。
現在は拡張仕様となるSMTP-AUTH が標準化されていて、送信の前段で認証をすることができるようになっている。

  • SMTP-AUTH... ユーザIDとPasswordによる認証。メール送信時に認証を行い、認証されたときにメールが送信できるようにする仕組み。SMTPだと誰でも利用できてしまうため、それの対策のためにSMTPの拡張仕様として盛り込まれた。認証方式は[PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5]がある。PLAIN, LOGIN は平文での認証。LOGINは標準仕様がなく、各社独自の仕様になっている。
  • SMTP... メールの認証もなく、メール自体も平文で送られている。
  • SMTPS... メールソフト<->メールサーバ の通信を最初から暗号化して通信する方法。最初から暗号化するので、どちらかが対応していないと通信ができない。
  • STARTTLS... SMTPと同様に最初は暗号化せずにサーバとやり取りを行う。相手のサーバがTLS通信に対応しているかを確認して、可能であれば暗号化して通信を行う。この特性上、クライアントからSMTPサーバでは暗号化されるが、メールソフト(送信側のSMTPサーバ)からメールサーバ(受信側のIMAPサーバ)間のリレー時に平文に戻ってしまう可能性がある。

所感

メールを送信する際には暗号化がされるSMTPSまたはSTARTTLSを利用するのが一般的。STARTTLSはどちらかがTLS通信に対応していない場合に平文になってしまうので注意が必要。また、SMTPサーバからSMTPサーバにリレーする際にも平文になってしまう可能性がある。
SMTPSが一番安全だが、お互いが対応していなければならないので要件が厳しいといえる。
SMTP-AUTHはPLAINだとパスワードが平文で流れて、サーバも平文でパスワードを管理するので推奨できる感じではない印象。CRAM-MD5またはDIGEST-MD5での認証をしたい。

7
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?