JavaMailAPI-IMAPサーバー

IMAPはの頭字語です Internet Message Access Protocol。これは、電子メールクライアントがリモートメールサーバー上の電子メールにアクセスできるようにするアプリケーション層インターネットプロトコルです。IMAPサーバーは通常、既知のポート143でリッスンします。IMAPoverSSL(IMAPS)はポート番号993に割り当てられます。

IMAPは、オンラインとオフラインの両方の操作モードをサポートします。IMAPを使用する電子メールクライアントは、通常、ユーザーが明示的にメッセージを削除するまで、サーバーにメッセージを残します。

パッケージ com.sun.mail.imapは、IMAPメッセージストアへのアクセスを提供するJavaMailAPIのIMAPプロトコルプロバイダーです。次の表に、このプロバイダーのインターフェイスとクラスを示します。

クラス/インターフェース説明
IMAPFolder.ProtocolCommandこれは、ユーザー定義のIMAPプロトコルコマンド用のシンプルなインターフェイスです。
ACLこれはクラスです。特定の認証識別子(ユーザーまたはグループ)のアクセス制御リストエントリ。
IMAPFolderこのクラスは、IMAPフォルダーを実装します。
IMAPFolder.FetchProfileItemこれは、ヘッダーをフェッチするためのクラスです。
IMAPMessageこのクラスは、ReadableMimeオブジェクトを実装します。
IMAPMessage.FetchProfileCondition このクラスは、フォルダー内の各メッセージに対して実行されるテストを実装します。
IMAPSSLStoreこのクラスは、SSLを介したIMAPメッセージストアへのアクセスを提供します。
IMAPStoreこのクラスは、IMAPメッセージストアへのアクセスを提供します。
権利このクラスは、認証識別子(たとえば、ユーザーまたはグループ)の一連の権限を表します。
Rights.Right この内部クラスは、個人の権利を表します。
SortTermRFC5256で定義されている特定のソート基準。

このプロバイダーの上で注意すべきいくつかのポイント:

  • このプロバイダーは、IMAP4プロトコルとIMAP4rev1プロトコルの両方をサポートします。

  • 接続されたIMAPStoreは、IMAPサーバーとの通信に使用するIMAPプロトコルオブジェクトのプールを維持します。フォルダが開かれ、新しいIMAPプロトコルオブジェクトが必要になると、IMAPStoreは接続プールからそれらを提供するか、使用可能なものがない場合はそれらを作成します。フォルダが閉じられると、プールの場合、そのIMAPプロトコルオブジェクトが接続プールに返されます。

  • 接続されたIMAPStoreオブジェクトは、ストアにIMAPサーバーへの専用接続を提供する個別のIMAPプロトコルオブジェクトを維持する場合と維持しない場合があります。

IMAPプロトコルプロバイダーは、JavaMailSessionオブジェクトで設定できる次のプロパティをサポートしています。プロパティは常に文字列として設定されます。インクルードType 列は、文字列がどのように解釈されるかを説明します。

名前タイプ説明
mail.imap.userストリングIMAPのデフォルトのユーザー名。
mail.imap.hostストリング接続するIMAPサーバー。
mail.imap.portintconnect()メソッドで明示的に指定されていない場合に接続するIMAPサーバーポート。デフォルトは143です。
mail.imap.partialfetch ブール値IMAPパーシャルフェッチ機能を使用するかどうかを制御します。デフォルトはtrueです。
mail.imap.fetchsizeintバイト単位の部分フェッチサイズ。デフォルトは16Kです。
mail.imap.ignorebodystructuresize ブール値IMAP BODYSTRUCTURE応答には、各身体部分の正確なサイズが含まれます。通常、このサイズは、各身体部分に対してフェッチするデータの量を決定するために使用されます。デフォルトはfalseです。
mail.imap.connectiontimeoutintミリ秒単位のソケット接続タイムアウト値。デフォルトは無限タイムアウトです。
mail.imap.timeout intミリ秒単位のソケットI / Oタイムアウト値。デフォルトは無限タイムアウトです。
mail.imap.statuscachetimeoutintSTATUSコマンド応答のキャッシュのミリ秒単位のタイムアウト値。デフォルトは1000(1秒)です。ゼロはキャッシュを無効にします。
mail.imap.appendbuffersizeintIMAPフォルダに追加するときにメモリにバッファリングするメッセージの最大サイズ。
mail.imap.connectionpoolsize int接続プールで使用可能な接続の最大数。デフォルトは1です。
mail.imap.connectionpooltimeoutint接続プール接続のミリ秒単位のタイムアウト値。デフォルトは45000(45秒)です。
mail.imap.separatestoreconnection ブール値ストアコマンドに専用のストア接続を使用するかどうかを示すフラグ。デフォルトはfalseです。
mail.imap.auth.login.disableブール値trueの場合、プレーンなLOGINコマンドを使用する代わりに、非標準のAUTHENTICATELOGINコマンドの使用を防止します。デフォルトはfalseです。
mail.imap.auth.plain.disable ブール値trueの場合、AUTHENTICATEPLAINコマンドの使用を防ぎます。デフォルトはfalseです。
mail.imap.auth.ntlm.disableブール値trueの場合、AUTHENTICATENTLMコマンドの使用を防ぎます。デフォルトはfalseです。
mail.imap.proxyauth.userストリングサーバーがPROXYAUTH拡張機能をサポートしている場合、このプロパティは、機能するユーザーの名前を指定します。管理者の資格情報を使用してサーバーを認証します。認証後、IMAPプロバイダーはこのプロパティで指定されたユーザー名を使用してPROXYAUTHコマンドを発行します。
mail.imap.localaddressストリングIMAPソケットを作成するときにバインドするローカルアドレス(ホスト名)。デフォルトは、Socketクラスによって選択されたアドレスです。
mail.imap.localport intIMAPソケットを作成するときにバインドするローカルポート番号。デフォルトは、Socketクラスによって選択されたポート番号です。
mail.imap.sasl.enableブール値trueに設定されている場合は、javax.security.saslパッケージを使用して、ログイン用の認証メカニズムを選択してみてください。デフォルトはfalseです。
mail.imap.sasl.mechanismsストリング使用しようとするSASLメカニズム名のスペースまたはコンマ区切りのリスト。
mail.imap.sasl.authorizationidストリングSASL認証で使用する認証ID。設定されていない場合、認証ID(ユーザー名)が使用されます。
mail.imap.sasl.realmストリングDIGEST-MD5などのレルムを必要とするSASL認証メカニズムで使用するレルム。
mail.imap.auth.ntlm.domainストリングNTLM認証ドメイン。
mail.imap.auth.ntlm.flags intNTLMプロトコル固有のフラグ。
mail.imap.socketFactory ソケットファクトリーjavax.net.SocketFactoryインターフェースを実装するクラスに設定されている場合、このクラスはIMAPソケットの作成に使用されます。
mail.imap.socketFactory.classストリング設定されている場合、javax.net.SocketFactoryインターフェースを実装するクラスの名前を指定します。このクラスは、IMAPソケットを作成するために使用されます。
mail.imap.socketFactory.fallbackブール値trueに設定されている場合、指定されたソケットファクトリクラスを使用してソケットを作成できないと、java.net.Socketクラスを使用してソケットが作成されます。デフォルトはtrueです。
mail.imap.socketFactory.portint指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合は、デフォルトのポートが使用されます。
mail.imap.ssl.enableブール値trueに設定されている場合、SSLを使用して接続し、デフォルトでSSLポートを使用します。デフォルトは、「imap」プロトコルの場合はfalse、「imaps」プロトコルの場合はtrueです。
mail.imap.ssl.checkserveridentityブール値trueに設定されている場合は、RFC2595で指定されているサーバーIDを確認してください。デフォルトはfalseです。
mail.imap.ssl.trustストリング設定されていて、ソケットファクトリが指定されていない場合、MailSSLSocketFactoryの使用が有効になります。
「*」に設定すると、すべてのホストが信頼されます。
空白で区切られたホストのリストに設定されている場合、それらのホストは信頼されます。
それ以外の場合、信頼はサーバーが提示する証明書に依存します。
mail.imap.ssl.socketFactory SSLソケットファクトリjavax.net.ssl.SSLSocketFactoryクラスを拡張するクラスに設定されている場合、このクラスはIMAPSSLソケットの作成に使用されます。
mail.imap.ssl.socketFactory.classストリング設定されている場合、javax.net.ssl.SSLSocketFactoryクラスを拡張するクラスの名前を指定します。このクラスは、IMAPSSLソケットを作成するために使用されます。
mail.imap.ssl.socketFactory.portint指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合、デフォルトのポートが使用されます。
mail.imap.ssl.protocols ストリングSSL接続で有効になるSSLプロトコルを指定します。プロパティ値は、javax.net.ssl.SSLSocket.setEnabledProtocolsメソッドで受け入れ可能なトークンの空白で区切られたリストです。
mail.imap.starttls.enable ブール値trueの場合、ログインコマンドを発行する前に、STARTTLSコマンド(サーバーでサポートされている場合)を使用して接続をTLSで保護された接続に切り替えることができます。デフォルトはfalseです。
mail.imap.starttls.required ブール値trueの場合、STARTTLSコマンドを使用する必要があります。サーバーがSTARTTLSコマンドをサポートしていない場合、またはコマンドが失敗した場合、接続方法は失敗します。デフォルトはfalseです。
mail.imap.socks.host ストリングメールサーバーへの接続に使用されるSOCKS5プロキシサーバーのホスト名を指定します。
mail.imap.socks.portストリングSOCKS5プロキシサーバーのポート番号を指定します。これは、プロキシサーバーが標準のポート番号1080を使用していない場合にのみ使用する必要があります。
mail.imap.minidletimeintこのプロパティは、遅延をミリ秒単位で設定します。設定されていない場合、デフォルトは10ミリ秒です。
mail.imap.enableimapevents ブール値特別なIMAP固有のイベントをストアのConnectionListenerに配信できるようにします。trueの場合、ストアのアイドルメソッド中に受信された一方的な応答は、タイプがIMAPStore.RESPONSEのConnectionEventsとして送信されます。イベントのメッセージは、生のIMAP応答文字列になります。デフォルトでは、これらのイベントは送信されません。
mail.imap.folder.classストリングcom.sun.mail.imap.IMAPFolderのサブクラスのクラス名。サブクラスを使用して、追加のIMAPコマンドのサポートを提供できます。サブクラスには、public MyIMAPFolder(String fullName、charセパレーター、IMAPStoreストア、ブールisNamespace)およびpublic MyIMAPFolder(ListInfo li、IMAPStoreストア)の形式のパブリックコンストラクターが必要です。

一般に、アプリケーションはこのパッケージのクラスを直接使用する必要はありません。代わりに、javax.mailパッケージ(およびサブパッケージ)で定義されたAPIを使用する必要があります。アプリケーションは、IMAPStoreまたはIMAPFolderのインスタンスを直接構築しないでください。代わりに、SessionメソッドgetStoreを使用して適切なStoreオブジェクトを取得し、そこからFolderオブジェクトを取得する必要があります。

IMAPサーバーの使用例は、クォータ管理の章に示されています。