Dato che mi ci è voluto parecchio per capire qual'era il problema, e per risolverlo, condivido con voi la soluzione, anche per chiedere se qualcuno conosce le cause di questo problema.

In sintesi volevo fare inviare dal mio server, via codice ASP, delle email di posta certificata. Avevo un codice, trovato su questo forum, che pareva funzionare, ma le email non venivano inviate con la posta certificata perchè "il server non riusciva a connettersi al trasporto" (con i dati di configurazione tutti giusti, e con gli invii via email normale che funzionavano).

Dato che volevo utilizzare questo codice sia su server Aruba, sia su un mio Windows Server 2003, per prima cosa ho aperto un ticket su Aruba. I tecnici mi hanno corretto il problema sul server (ma non mi hanno detto quale), e mi hanno inviato il codice seguente (e funzionante) da utilizzare su server Aruba per l'invio di email di posta certificata. Ma dal mio server, con lo stesso codice, continuavo a non riuscire ad inviare.

Ad un certo punto, per prova, ho impostato nella "Protezione directory" di IIS l'utilizzo non di utente anonimo, ma dell'utente Windows. Ora quando tento di accedere alla pagina con il codice il browser mi chiede di autenticarmi. Se mi autentico con le credenziali di accesso dell'utente amministratore del server il codice funziona ed invia le email di posta certificata!

La mia domanda è: perchè? Ovvero perchè con utente anonimo quel codice invia le email normali, ma non quelle di posta certificata, mentre invece loggandosi su IIS come amministratore posso invece inviare entrambe?

Ecco il codice:

codice:
<%
Const cdoSendUsingPickup = 1 'Send message using the local SMTP service pickup directory. 
Const cdoSendUsingPort = 2 'Send the message using the network (SMTP over the network). 

Const cdoAnonymous = 0 'Do not authenticate
Const cdoBasic = 1 'basic (clear-text) authentication
Const cdoNTLM = 2 'NTLM

Set objMessage = CreateObject("CDO.Message") 
objMessage.Subject = "invio da pec" 
objMessage.From = """Me"" <nomecasella@pec.nomedominio.xxx>" 
objMessage.To = "nomecasella@pec.nomedominio.xxx" 
objMessage.TextBody = "prova.." & vbCRLF & "It was sent using SMTP authentication."

'==This section provides the configuration information for the remote SMTP server.

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'Use SSL for the connection (False or True)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
 

'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtps.pec.aruba.it"

'Type of authentication, NONE, Basic (Base64 encoded), NTLM
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic

'Your UserID on the SMTP server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "nomecasella@pec.nomedominio.xxx"

'Your password on the SMTP server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"

'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 


'Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

objMessage.Configuration.Fields.Update

'==End remote SMTP server configuration section==

objMessage.Send

%>