Quando si utilizza STARTTLS
, la porta di ascolto del server non viene inizialmente crittografata al momento della connessione. Quando un client si connette, può inviare un comando opzionale STARTTLS
al server, se il server lo supporta, per eseguire dinamicamente l'handshake SSL/TLS in quel momento. Ciò consente ai client legacy non-SSL/TLS di continuare a connettersi a quella stessa porta, consentendo ai nuovi client abilitati a SSL/TLS di utilizzare SSL/TLS, se disponibili sul server. Questo corrisponde a UseTLS=utUseExplicitTLS
in Indy. È necessario impostare UseEHLO
su True per utilizzare UseTLS=utUseExplicitTLS
, in quanto il comando EHLO
è il modo in cui TIdSMTP
rileva se il server supporta o meno il comando STARTTLS
.
Quando si utilizza SSL/TLS
anziché STARTTLS
, la porta di ascolto del server utilizza sempre la crittografia e il client deve avviare immediatamente l'handshake SSL/TLS al momento della connessione prima di poter scambiare qualsiasi altro dato. Ciò corrisponde a UseTLS=utUseImplicitTLS
in Indy. Non è disponibile il comando STARTTLS
.
Per l'autenticazione, TIdSMTP
ha due opzioni - il vecchio (e non protetta) AUTH LOGIN
comando che viene definito dalle specifiche SMTP originale, e le estensioni SMTP per gli algoritmi di hashing/crittografia SASL-based (Kerberos, GSSAPI, NTLM, ecc sono attuate come algoritmi SASL).
Per usare SASL, impostare TIdSMTP.AuthType
-satSASL
e quindi compilare la raccolta TIdSMTP.SASLMechanisms
per puntare a diversi componenti TIdSASL
-derived per gli algoritmi si desidera supportare nella vostra app. Indy ha componenti nativi SASL per DIGEST-MD5
, CRAM-MD5
, CRAM-SHA1
, NTLM
(sperimentale), ANONYMOUS
, EXTERNAL
, OTP
, PLAIN
, SKEY
, e LOGIN
(SASL wrapper per AUTH LOGIN
). Se hai bisogno di un altro algoritmo (Kerberos o GSSAPI, ad esempio), dovrai scrivere il tuo componente originale TIdSASL
. Per gli algoritmi che utilizzano nome utente/password, i valori devono essere assegnati a un componente separato TIdUserPassProvider
che viene quindi assegnato ai componenti SASL (le proprietà TIdSMTP.UserName
e TIdSMTP.Password
non vengono utilizzate con SASL).Maggiore è il numero di algoritmi SASL supportati, maggiore è il numero di server che sarà in grado di supportare.
Per i server che ancora supportano AUTH LOGIN
, esso può essere utilizzato sia impostando TIdSMTP.AuthType
-satDefault
(e facoltativamente impostazione TIdSMTP.ValidateAuthLoginCapability
False se il server supporta AUTH LOGIN
ma non lo segnala nella risposta al comando EHLO
) e poi compilando il TIdSMTP.UserName
e TIdSMTP.Password
proprietà o includendo il componente TIdSASLLogin
nella raccolta TIdSMTP.SASLMechanisms
.
UseVerp
e UseNagle
non hanno nulla a che fare con la sicurezza. VERP
è un'estensione SMTP per il rilevamento di messaggi rimbalzati a causa di errori non recapitabili. Nagle è un algoritmo di rete per l'ottimizzazione dei pacchetti di dati di rete.
Grazie per l'ottima risposta! –
Ottima risposta! Aggiungendo questo ai miei segnalibri. –
@Remy Lebeau Non hai menzionato 'UseTLS = utRequireTLS', che cosa fa esattamente questa opzione? –