🦧
[SMTP]MailKit を用いた認証方式しらべ
2023/03/06 現在の内容です。
C# を用いた Windows アプリの開発に携わっています。Outlook や GMail など主要メーラーにおいて BASIC 認証を廃止して OAuth2 認証(認可)を用いてセキュリティを高めようという動きがあります。🚨🚔🚨🚔🚨
OAuth2 認証に対応している SMTP サーバーはどれだというところから
各SMTP サーバーがどのような認証方式に対応しているのか MailKit というライブラリを用いて調査しましたので、議事録を兼ねて結果をまとめます。💌
参考 API
- ライブラリ
MailKit(Version: 3.0.0 以降) - Namespace
MailKit.Net.Smtp - 列挙型
SmtpCapabilities - 実装
公式が載せているコピペでも動きましたので、環境を構築すれば誰でもすぐに確認することができます。
public static void PrintCapabilities ()
{
using (var client = new SmtpClient ()) {
client.Connect ("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
if (client.Capabilities.HasFlag (SmtpCapabilities.Authentication)) {
var mechanisms = string.Join (", ", client.AuthenticationMechanisms);
Console.WriteLine ("The SMTP server supports the following SASL mechanisms: {0}", mechanisms);
client.Authenticate ("username", "password");
}
if (client.Capabilities.HasFlag (SmtpCapabilities.Size))
Console.WriteLine ("The SMTP server has a size restriction on messages: {0}.", client.MaxSize);
if (client.Capabilities.HasFlag (SmtpCapabilities.Dsn))
Console.WriteLine ("The SMTP server supports delivery-status notifications.");
if (client.Capabilities.HasFlag (SmtpCapabilities.EightBitMime))
Console.WriteLine ("The SMTP server supports Content-Transfer-Encoding: 8bit");
if (client.Capabilities.HasFlag (SmtpCapabilities.BinaryMime))
Console.WriteLine ("The SMTP server supports Content-Transfer-Encoding: binary");
if (client.Capabilities.HasFlag (SmtpCapabilities.UTF8))
Console.WriteLine ("The SMTP server supports UTF-8 in message headers.");
client.Disconnect (true);
}
}
- 調査 PC
- OS
Windows 10 Pro - プロセッサ
Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz 2.21 GHz - メモリ
16 GB
- OS
調査方法
上記リンクを参考に、 SMTP サーバーの ホスト名・ポート番号・暗号化方式
を指定して応答を確認します。なお、SMTP サーバーは下記を参考にしました。間違いがあるかもしれません、ご了承ください。
調査結果
50個ほど SMTPサーバーについて確認してみました。
No | メーラー | SMTPサーバー名 | ポート | 対応認証方式 | メッセージ最大サイズ |
---|---|---|---|---|---|
1 | Gmail | smtp.gmail.com | 587 | LOGIN PLAIN PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH XOAUTH2 |
35882577 |
2 | Yahoo!JAPANメール | smtp.mail.yahoo.co.jp | 465 | PLAIN LOGIN XYMYCONNECT |
38168576 |
3 | Outlook.com | smtp-mail.outlook.com | 587 | LOGIN XOAUTH2 |
157286400 |
4 | Office | smtp.office365.com | 587 | LOGIN XOAUTH2 |
157286400 |
5 | AOLメール | smtp.aol.com | 465/587 | PLAIN LOGINXOAUTH2 OAUTHBEARER |
41697280 |
6 | BIGLOBEメール | smtp.aol.com | 465 | PLAIN LOGIN XOAUTH2 OAUTHBEARER |
41697280 |
7 | iCloud | smtp.mail.me.com | 465 | - | - |
8 | ムームーメール | smtp.muumuu-mail.com | 465 | LOGIN PLAIN CRAM-MD5 |
104857600 |
9 | ロリポップ | smtp.lolipop.jp | 465 | LOGIN PLAIN CRAM-MD5 |
104857600 |
10 | OCN | smtp.ocn.ne.jp | 465/587 | PLAIN LOGIN |
10485760 |
11 | Yahoo!BB | ybbsmtp.mail.yahoo.co.jp | 465/587 | PLAIN LOGIN XYMYCONNECT |
38168576 |
12 | So-net | mail.so-net.ne.jp | 465 | - | - |
13 | ぷらら(plala) | secure.plala.or.jp | 465/587 | LOGIN PLAIN CRAM-MD5 |
20971520 |
14 | eo | smtps.eonet.ne.jp | 465 | LOGIN PLAIN CRAM-MD5 |
104857600 |
15 | nifty | smtp.nifty.com | 465/587 | LOGIN PLAIN CRAM-MD5 |
20971520 |
16 | 5x2.de | mail.5x2.de | 465/587 | PLAIN LOGIN |
52428800 |
17 | AnPa.de | www.anpa.de | 465/587 | PLAIN LOGIN |
76800000 |
18 | Bitrix24 | smtp.yandex.com | 465/587 | PLAIN LOGIN XOAUTH2 |
53477376 |
19 | Cockmail | mail.cock.li | 465/587 | PLAIN LOGIN |
10240000 |
20 | DerpyMail | derpymail.org | 465/587 | PLAIN LOGIN |
52428800 |
21 | Dismail.de | smtp.dismail.de | 587/2525 | PLAIN LOGIN |
36700160 |
22 | Disroot.org | disroot.org | 587 | PLAIN LOGIN |
73400320 |
23 | e-nautia | e-nautia.com | 465/587 | - | - |
24 | Gazeta.pl | smtp.gazeta.pl | 465/587 | PLAIN LOGIN XOAUTH2 |
90000000 |
25 | GMX Mail | mail.gmx.com | 465/587 | PLAIN LOGIN |
69920427 |
26 | Inbox.lt | mail.inbox.lt | 465/587 | PLAIN LOGIN |
59900000 |
27 | Inbox.lv | mail.inbox.lv | 465/587 | PLAIN LOGIN |
59900000 |
28 | Interia.pl | poczta.interia.pl | 465/587 | PLAIN LOGIN |
157286400 |
29 | Kolab Now | smtp.kolabnow.com | 587 | PLAIN LOGIN |
62914560 |
30 | magenta.de | securesmtp.t-online.de | 465/587 | PLAIN LOGIN |
52428800 |
31 | Mail.bg | smtp.mail.bg | 465 | PLAIN LOGIN |
70000000 |
32 | Mail.com | smtp.mail.com | 465/587 | PLAIN LOGIN |
141557760 |
33 | Mail.ee | mail.ee | 465/587 | PLAIN LOGIN |
59900000 |
34 | Mailo | mail.mailo.com | 465/587 | LOGIN | 73400320 |
35 | Mail.ru | smtp.mail.ru | 465/587/2525 | PLAIN LOGIN XOAUTH2 |
73400320 |
36 | MetaMail | smtp.meta.ua | 465 | PLAIN LOGIN |
31457280 |
37 | Newmanity | webmail.ntymail.com | 465/587 | LOGIN | 73400320 |
38 | NixNet | smtp.nixnet.email | 465/587 | PLAIN LOGIN |
10240000 |
39 | O2.pl | poczta.o2.pl | 465 | PLAIN LOGIN |
- |
40 | OK.de | mail.ok.de | 465/587 | - | - |
41 | Onet.pl | smtp.poczta.onet.pl | 465 | PLAIN LOGIN XOAUTH2 |
90000000 |
42 | postale.io | mail.postale.io | 465/587 | PLAIN LOGIN |
36700160 |
43 | Rambler | smtp.rambler.ru | 465/587 | PLAIN LOGIN |
104857600 |
44 | Seznam Email | smtp.seznam.cz | 465/587 | PLAIN LOGIN |
52428800 |
45 | Snopyta | mail.snopyta.org | 465/587 | - | - |
46 | SoftHome | mail.SoftHome.net | 2500/25000 | - | - |
47 | Teknik.io | mail.teknik.io | 465/587 | - | - |
48 | VFEmail | mail.vfemail.net | 465/587 | - | - |
49 | Vivaldi Mail | smtp.vivaldi.net | 465/587 | PLAIN LOGIN OAUTHBEARER XOAUTH2 |
36700160 |
50 | XMail.net | smtp.xmail.net | 465 | - | - |
51 | Yahoo! Mail | smtp.mail.yahoo.com | 465 | PLAIN LOGIN OAUTHBEARER XOAUTH2 |
41697280 |
52 | Yandex.Mail | smtp.yandex.com | 465/587 | PLAIN LOGIN XOAUTH2 |
53477376 |
XOAUTH2 対応メールサーバー
今回の調査では下記 12 のメールサーバーが XOAUTH2 認証に対応していました。
- Gmail (Google)
- Outlook.com (Microsoft)
- Office (Microsoft)
- AOLメール (Oath(アメリカ))
- BIGLOBEメール (ビッグローブ社(日本))
- Bitrix24 (ビットリックス社(アメリカ))
- Gazeta.pl(ガゼッタ ピーエル (ポーランド))
- Mail.ru (メイルルー(ロシア))
- Onet.pl (オーネット(ポーランド))
- Vivaldi Mail (ヴィヴァルディ(ノルウェー))
- Yahoo! Mail (ヤフー(アメリカ))
- Yandex.Mail(ヤンデックス(イギリス))
所感
- OAuth2 認証に対応しているのはまだ少数派であり、今後どのように増えていくのが楽しみ
- Yahoo!JAPAN ではOAuth2 認証に未対応で Yahoo! Mail は対応であることがやや驚き
- そもそもメーラーの数の多さに驚きました
Discussion