→認証技術
1. @でスプリットする 2. 配列要素が2つかチェック。NGはエラー 3. 1つ目の要素(ユーザ名部分)および2つ目の要素(ドメイン部分)に空白や制御文字、非ASCII文字が含まれていないかチェック。NGはエラー 4. 2つ目の要素(ドメイン部分)がDNSのMXレコードを持つかチェック。NGはエラー
→認証技術
"v=spf1 +a:mail.example.com ?all"
PLAIN 「UserID\0UserID\0Password」というフォーマットで平文(無変換)またはBASE64化したデータで認証します。暗号化されていないため、SSL/TLSとの組み合わが推奨されます。 LOGIN PLAINと同様ですが、ユーザーIDとパスワードをBASE64化します。一度にユーザーIDとパスワードを送るのではなく、ユーザーIDとパスワードを別々に送る点が異なります。 セキュリティ的 にはPLAINと同様にSSL/TLSとの組み合わせが必要です。 CRAM-MD5 CRAM(Challenge-Response Authentication Mechanism/チャレンジレスポンス認証)と呼ばれる認証方法が利用されます。 クライアントはサーバーからBASE64化されたタイムスタンプを受け取り、それをデコードします。クライアントはデコードした タイムスタンプをパスワードをキーとしてMD5(Message Digest Algorithm 5)と呼ばれるアルゴリズムにより ハッシュ値(d41d8cd98f00b204e9800998ecf8427eのような)を求めます。ハッシュ値にユーザーIDを加えBASE64化してサーバーに送ります。 サーバーはユーザーIDとパスワードを知っているので、送信したタイムスタンプのハッシュ値を求め、受信したハッシュ値と一致していたら 認証を許可します。パスワードがネットワークに流れないため、PLAINやLOGINと比較すると安全性が高まります。 DIGEST-MD5 CRAM-MD5であっても任意のタイムスタンプを組み合わることで、辞書攻撃や総当り攻撃(ブルートフォースアタック)などが可能です。 DIGEST-MD5はCRAM-MD5を拡張して、これらの攻撃への耐性を高めたものです。Realm(ドメイン)やURLの指定や HMAC(Keyed-Hashing for Message Authentication)による暗号化に対応しています。