iCloud+の「メールを非公開(偽装アドレス)」で実験してみた

以下,偽装アドレスと呼称します

コレに興味がある方は基本的な使い方は大丈夫だと思われまスゥゥゥ…

https://support.apple.com/ja-jp/HT210425

簡単な説明

macOS Monterey(Public Beta版でそこそこ安定しているやつがあるから登録して落としてこよう
設定 → Apple ID → メールを非公開(オプション)に移動
左下の『➕』で自動生成,ラベルとメモを忘れずに書き加える
アドレスをコピペして実際に使う,以上

用語リスト

f:id:Soluna_Eureka:20211008202622p:plain
説明

偽装アドレス

さっきの手順で手に入れたアドレス
xxx@icloud.comとおく

自分アドレス

自分の本来のiCloudのアドレス
XXX@icloud.comとおく

相手アドレス

やり取りをしたい相手のアドレス
YYY@example.ne.jpとでもおくか

串用アドレス

メールの送信先に実際に置かれるアドレス
4つ偽装アドレスで5つくらい取ってから実験してみた
ユーザーの視点では「プロキシが持つアドレス」に見えるのでそう呼びたい…
YYY@example.ne.jpを用いると
YYY_at_example_ne_jp_[aa][nnnnnnnnnn][bb]_[mm][cccccc]@icloud.comみたいに導出される

[aa][bb][cccccc]は同じ偽装アドレスを用いて通信した相手アドレスであれば共通する
[nnnnnnnnnn](10桁)・[mm](2桁)は相手アドレスによって完全にランダムに振られる
なんでこの桁数や構成になったのかは不明…

実際に制限ルールを探ってみた

ルール1.文通するには最初に相手から送られてくる必要がある

相手アドレスから偽装アドレスにメールが飛んでくると,相手アドレスに対応する串用アドレスが発行され,串用アドレスから自分アドレスにメールが飛んでくる(Applesmtpサーバから転送されてくる)
偽装アドレスを用いて相手アドレスにメールを返信するにはその真逆の動作をしなければならず,自分アドレスから串用アドレスに飛ばすことで偽装アドレスから相手アドレスにメールが飛んでいく

すなわち送信アドレスに対応した串側アドレスをユーザーが叩くことで偽装アドレスから相手アドレスへのアクセスが行えるが,串側アドレスの発行は外側から受けたメールを処理するApplesmtpサーバでしかできない以上,こちらから先制して送りつけることは不可能,対応できる串側アドレスがなければユーザーはなにもできない
濫用防止のためと言われれば当然はであるが

ルール2.串側アドレスの乱数文字列がユーザ認証の役目を果たす

試しに1文字だけ弄って送信したらエラーを吐かれたし,偽装アドレスによって串側アドレスのフォーマットの約半分が定まっていることから,自分アドレスと偽装アドレスの権限照合・串側アドレスと相手アドレスの宛先照合が行われているとみて良さそう
予想するに,他のiCloudユーザが他人の串側アドレスを宛先にして送信してもダメだったりするのではないだろうか…?(誰かやってくれ)

ちなみに宛先が間違っていると代替のsmtpサーバに送信され,Undelivered Mail Returned to Serverされる

ルール3.串側アドレスを宛先に含む場合はアドレス1つ分しか対応しない

宛先に2つ以上の串側アドレスを登録して1度に送ろうとすると,

  • Web版iCloudメールでは警告メッセージを吐かれる
    • 「機能的に無理です!」
  • Macデフォルトのメールソフトでは約5分間隔で宛先1つずつに再送される
    • 「too many recipients!」
      • 代替のstmpサーバの指定を要求されるが,何を選んでも結局は再送になる.
    • なお1つ目の宛先にはすぐに送れる
    • 個別送信扱いになるので他の宛先は見えなくなる

または串側アドレスと通常のアドレスを登録して1度に送ろうとすると,

  • Web版iCloudメールでは警告メッセージを吐かれる
    • 「Undelivered Mail Returned to Server」
    • どっちも届かない
  • Macデフォルトのメールソフトでは約5分間隔で宛先1つずつに再送される
    • 代替のstmpサーバの指定を要求される
      • 選ぶとバラバラに(串側アドレスはApplesmtpサーバで,それ以外は代替smtpサーバで)再送される
      • 相手アドレスから見れば宛先の連名は見れないが,通常のアドレスからは丸見え
    • 1つ目の串側アドレスや通常のアドレスの宛先にはすぐに送れる

つまりメールソフトにおける動作としては,

  1. まずはiCloudサーバにまるごと送る
  2. 串側アドレスがある場合は1つしか受け付けられないと返信する
  3. 代替smtpサーバがない場合は全て破棄,ある場合は
    1. 串側アドレス1つをiCloudサーバに送り
    2. その他全てを代替smtpサーバに送る
    3. 串側アドレスが残れば返送されるので
      1. 約5分間隔で1つずつ再送する
  4. エラーが無くなれば完了

という感じ…っぽい

ルール4.串側アドレスはApple側で保持される

以上のルールを満たすには,偽装アドレスのみならず串側アドレスもAppleが管理していると見るべきだろう
というかリンク切れが起きたりしたらこっちも大変なので,そこら辺は頑張ってセーブし続けてほしい月額160円でやっていいサービスか?これが…

感想

今後また仕様が何かしら変わるかも知れません
が,とりあえず串側アドレスには偽装アドレスと一意に結び付けられる成分があることは頭に入れておくべきだと思いました
万が一の場合にはそれが流出することでやり取りが特定される可能性も考えられます
あとはどれだけ串側アドレスが保持されるのかやってみなくちゃわかりません,1年間の未使用でリセットとかありそうですし…

匿名化ヨシ!ご安全に!

全てのきっかけ

https://twitter.com/Soluna_Eureka/status/1446095138808221707?s=20