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 | この内部クラスは、個人の権利を表します。 |
SortTerm | RFC5256で定義されている特定のソート基準。 |
このプロバイダーの上で注意すべきいくつかのポイント:
このプロバイダーは、IMAP4プロトコルとIMAP4rev1プロトコルの両方をサポートします。
接続されたIMAPStoreは、IMAPサーバーとの通信に使用するIMAPプロトコルオブジェクトのプールを維持します。フォルダが開かれ、新しいIMAPプロトコルオブジェクトが必要になると、IMAPStoreは接続プールからそれらを提供するか、使用可能なものがない場合はそれらを作成します。フォルダが閉じられると、プールの場合、そのIMAPプロトコルオブジェクトが接続プールに返されます。
接続されたIMAPStoreオブジェクトは、ストアにIMAPサーバーへの専用接続を提供する個別のIMAPプロトコルオブジェクトを維持する場合と維持しない場合があります。
IMAPプロトコルプロバイダーは、JavaMailSessionオブジェクトで設定できる次のプロパティをサポートしています。プロパティは常に文字列として設定されます。インクルードType 列は、文字列がどのように解釈されるかを説明します。
名前 | タイプ | 説明 |
---|---|---|
mail.imap.user | ストリング | IMAPのデフォルトのユーザー名。 |
mail.imap.host | ストリング | 接続するIMAPサーバー。 |
mail.imap.port | int | connect()メソッドで明示的に指定されていない場合に接続するIMAPサーバーポート。デフォルトは143です。 |
mail.imap.partialfetch | ブール値 | IMAPパーシャルフェッチ機能を使用するかどうかを制御します。デフォルトはtrueです。 |
mail.imap.fetchsize | int | バイト単位の部分フェッチサイズ。デフォルトは16Kです。 |
mail.imap.ignorebodystructuresize | ブール値 | IMAP BODYSTRUCTURE応答には、各身体部分の正確なサイズが含まれます。通常、このサイズは、各身体部分に対してフェッチするデータの量を決定するために使用されます。デフォルトはfalseです。 |
mail.imap.connectiontimeout | int | ミリ秒単位のソケット接続タイムアウト値。デフォルトは無限タイムアウトです。 |
mail.imap.timeout | int | ミリ秒単位のソケットI / Oタイムアウト値。デフォルトは無限タイムアウトです。 |
mail.imap.statuscachetimeout | int | STATUSコマンド応答のキャッシュのミリ秒単位のタイムアウト値。デフォルトは1000(1秒)です。ゼロはキャッシュを無効にします。 |
mail.imap.appendbuffersize | int | IMAPフォルダに追加するときにメモリにバッファリングするメッセージの最大サイズ。 |
mail.imap.connectionpoolsize | int | 接続プールで使用可能な接続の最大数。デフォルトは1です。 |
mail.imap.connectionpooltimeout | int | 接続プール接続のミリ秒単位のタイムアウト値。デフォルトは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 | int | IMAPソケットを作成するときにバインドするローカルポート番号。デフォルトは、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 | int | NTLMプロトコル固有のフラグ。 |
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.port | int | 指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合は、デフォルトのポートが使用されます。 |
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.port | int | 指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合、デフォルトのポートが使用されます。 |
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.minidletime | int | このプロパティは、遅延をミリ秒単位で設定します。設定されていない場合、デフォルトは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サーバーの使用例は、クォータ管理の章に示されています。