STARTTLS
を使用している場合、サーバーのリスニングポートは、最初は接続時に暗号化されません。クライアントが接続すると、サーバがサポートしていれば、サーバにオプションのSTARTTLS
コマンドを送信して、その時点でSSL/TLSハンドシェークを動的に実行することができます。これにより、従来の非SSL/TLSクライアントは同じポートに接続を継続でき、新しいSSL/TLS対応のクライアントはSSL/TLSを使用できるようになります。 IndyのUseTLS=utUseExplicitTLS
に相当します。 をTrueに設定してUseTLS=utUseExplicitTLS
を使用する必要があります。EHLO
コマンドは、サーバがSTARTTLS
コマンドをサポートしているかどうかを検出する方法であるため、TIdSMTP
が検出されます。
STARTTLS
の代わりにSSL/TLS
を使用する場合、サーバーのリスニングポートは常に暗号化を使用しており、クライアントは接続時に直ちにSSL/TLSハンドシェイクを開始して他のデータを交換する必要があります。 IndyのUseTLS=utUseImplicitTLS
に相当します。使用されるコマンドはSTARTTLS
ではありません。実装されているSASLベースのハッシュ/暗号化アルゴリズム(ケルベロス、GSSAPI、NTLMなどの元のSMTP仕様によって定義されている古い(及び非セキュア)AUTH LOGIN
コマンド、およびSMTPの拡張 - 認証のため
、TIdSMTP
は、2つのオプションがありSASLアルゴリズムとして)。 SASLを使用するには
は、satSASL
にTIdSMTP.AuthType
を設定して、アプリでサポートしたいアルゴリズムに対して別々のTIdSASL
由来のコンポーネントを指すようにTIdSMTP.SASLMechanisms
コレクションで記入します。インディはDIGEST-MD5
、CRAM-MD5
、CRAM-SHA1
、NTLM
のネイティブSASL成分(実験的)、ANONYMOUS
、EXTERNAL
、OTP
、PLAIN
、SKEY
、及びLOGIN
(AUTH LOGIN
用SASLラッパー)を有しています。別のアルゴリズム(KerberosやGSSAPIなど)が必要な場合は、独自のTIdSASL
由来コンポーネントを記述する必要があります。 Username/Passwordを使用するアルゴリズムの場合、値は別のTIdUserPassProvider
コンポーネントに割り当てられ、次にSASLコンポーネントに割り当てられます(TIdSMTP.UserName
およびTIdSMTP.Password
のプロパティはSASLでは使用されません)。サポートするSASLアルゴリズムが多くなればなるほど、サポートできるサーバーの数は増えます。まだAUTH LOGIN
をサポートするサーバーの場合
、それはsatDefault
にTIdSMTP.AuthType
を設定する(必要に応じて、サーバがAUTH LOGIN
をサポートしていますが、EHLO
コマンドに応答して、それを報告しない場合はFalseにTIdSMTP.ValidateAuthLoginCapability
を設定)し、その後に充填しても使用することができますTIdSMTP.UserName
およびTIdSMTP.Password
のプロパティを使用するか、またはコレクションにTIdSASLLogin
コンポーネントを含めることによって、
UseVerp
とUseNagle
はセキュリティとは関係ありません。 VERP
は、配信不能なエラーによる電子メールのバウンスを検出するSMTP拡張機能です。 Nagleは、ネットワークデータパケットを最適化するためのネットワーキングアルゴリズムです。
偉大な答えをありがとう! –
すばらしい答え!これを私のブックマークに追加する。 –
@Remy Lebeauあなたは 'UseTLS = utRequireTLS'について言及していませんでした。 –