1

私たちは、事実上、電子メール/カレンダー/連絡先クライアントであるシステムを構築しています。

ユーザーはメールアドレスのパスワード (または oauth などの他の認証) を提供し、基盤となるメールシステムに接続します。

「基礎となるシステム」には以下が含まれます。

  • マイクロソフト エクスチェンジ / Office365
  • Gメール
  • ヤフーメール
  • アップルのメール
  • 汎用 IMAP

これらの各システムには、特にカレンダーと連絡先データにアクセスするための API に微妙な (それほど微妙ではない) 違いがあります。したがって、ユーザーが使用しているプロバイダーを知る必要があります。

しかし、私たちはむしろユーザーに質問したくありません。私たちはそれを自動的に把握したいと考えています (そして、少なくとも選択肢を減らしたいと考えています)。

すでにこれを実装しているものを探しましたが、何も見つかりませんでした。Windows Phone はかなりうまく機能するので、ほとんどの場合可能であることはわかっています (username/pw を入力するだけで、正しいことが行われます)。

飛び込んで自分で書き始める前に、誰かがすでに優れた方法で書いている場合、時間を無駄にしないようにしたいと思います。

このようなことを知っていますか?このプロジェクトでは、C#/.NET を優先します。

[編集: 潜在的なアルゴリズムの追加]

潜在的なアルゴリズム:

  • 与えられたメールアドレスとパスワード
    • メールアドレスからドメイン名を抽出
    • Exchange の自動検出を試してください。成功した場合は完了です。
    • DNS MX レコードを使用して smtp ホストを見つけます。
      • SMTP EHLO を行う
      • Gmail は「250-mx.google.com at your service」で応答します
        • 「google.com」が表示されれば完了です。
      • Yahoo は 250-mta1257.mail.sk1.yahoo.com で応答します。
        • したがって、応答に「yahoo.com」が表示されれば完了です。
      • Apple は 250-xxxxxx-mac.com で応答します
        • したがって、応答に「mac.com」が表示されれば完了です。
      • 上記のいずれでもない場合
        • IMAP?
          • ...

[編集: 5/18] 認証を必要としないメソッド (例: MX/SMTP sluthing のみ) を使用するプロトタイプを作成しました。試してみてください: http://bit.ly/KLZKxD

4

4 に答える 4

1

アルゴリズムは合理的なようです。フィルタリングされていないサーバーから実行すると、最良の結果が得られます (つまり、直接 SMTP アウトバウンドがあり、プロキシ経由で実行されません)。クライアント (モバイル/タブレット/デスクトップ) から実行している場合、一部の ISP は SMTP をプロキシ リレー経由で渡すため、保証はありません。そのため、EHLO 応答はプロキシ専用です。

予想されるプロトコルのサポートを確認するために、サーバーのポート チェックを実行することをお勧めします (TCP 接続だけで十分かもしれませんが、プロトコル ハンドシェイクが望ましいです)。さらに、名前が分割される可能性があるため (smtp.domain.com と mail.domain.com など)、検証済みの SMTP および IMAP サーバー マッピングのデータベースを構築することをお勧めします。カレンダー/連絡先サーバーを意味し、それほど多くはありません (Exchange を除くが、自動検出が正しく構成されている場合のみ)。

ユーザーに承認してもらうことができ、ユーザー名/パスワードを持っていると仮定すると、MX レコードを介して SMTP に接続し、自分のアドレスにメールを返信してから、ヘッダーをチェックしてサーバーに関する有用な情報を確認できます (認証が必要です)。つなぐために)。ユーザーは、同じサーバー情報を取得するために、生成した電子メールに返信することもできます。

また、独自の DNS クエリを実行し、各 MX レコードまたはすべてのプライマリを試してください。プリンシパル MX がダウンしているか、DNS が均等に重み付けされるように構成されていない場合、スマートホスト/バックアップにヒットする可能性がありますが、これは単にダム SMTP である可能性があります。リレー/ストアアンドフォワードであり、正しい応答が得られません。

TL;DR: 迅速な解決策はありませんが、1 つが機能するまで、または期待される結果が得られるまで、さまざまな解決策を試行して失敗するカスケード アルゴリズムが機能するはずです。

于 2012-05-01T10:10:43.353 に答える
0

ドメインの MX レコードを調べることで、Google Apps for Your Domain アカウントを検出できます。プライマリ MX レコードが ASPMX.L.GOOGLE.com の場合、GMail です。

于 2012-05-01T14:48:06.617 に答える
0

ほとんどのデバイスは、電子メール アドレス全体を解析することでサービスを自動検出できます。Xyz@gmail.com は明らかに gmail アカウントです。したがって、Apple、Gmail、Yahoo、Live、Hotmail などのプログラムを簡単に作成できます。カスタムを含む他のドメインについては、これを試すことができます: http://www.exclamationsoft.com/exclamationsoft/netmailbot/help/website/HowToFindTheSMTPMailServerForAnEmailAddress.html

于 2012-04-30T22:55:01.883 に答える