Articles

Adam the Automator

Lo odio o lo amo; l’email è ovunque. Il protocollo per spostare l’email ovunque è SMTP e i “router” SMTP sono relè SMTP.

L’impostazione dei relè SMTP varia tra i sistemi, ma se si dispone di Office 365 come provider di servizi di posta, le opzioni sono limitate. L’installazione può essere complicata e soggetta a errori, soprattutto per i dispositivi che non sono in grado di TLS.

Si noti che l’invio di e-mail tramite Office 365 non richiede un relè SMTP. È possibile che i client inviino e-mail direttamente a Office 365 senza aggiungere un relè SMTP che non richiede alcuna modifica alla configurazione. Per sapere cosa sono, leggi Come inviare Office 365 Direct Send / SMTP Client Submission Email (PowerShell).

Sommario

Prerequisiti

Questi sono i requisiti prima di poter procedere.

  1. Un abbonamento a Office 365. Se non si dispone ancora di questo, è possibile registrarsi per un abbonamento di prova di Office 365 E5.
  2. Un computer Windows 10 con PowerShell v5.1
  3. Un indirizzo IP pubblico statico. È comunque possibile creare un relè SMTP in Office 365 anche senza questo, ma potrebbe non essere testato.
  4. Porta TCP 25 accesso da un client all’endpoint Office MX
  5. Un certificato SSL valido. Questo certificato potrebbe essere un certificato con caratteri jolly (ad es. *.yourdomain.com) rilasciato da autorità di certificazione di terze parti come LetsEncrypt, Digicert, ecc. Si noti che non è possibile utilizzare certificati autofirmati o certificati emessi da un PKI interno perché non sono supportati. (richiesto solo per le connessioni TLS)

Per impostare un relè SMTP, è necessario innanzitutto creare un connettore in Office 365 per accettare le transazioni SMTP. Questo connettore riceverà le transazioni di inoltro SMTP dall’applicazione o dal dispositivo.

Prima di tentare di creare un connettore, assicurati che il tuo account disponga delle autorizzazioni di Exchange Online appropriate. Assicurati che il tuo account sia un membro del gruppo di gestione dell’organizzazione.

Esistono due modi per creare un connettore. È possibile utilizzare Exchange Admin Center o PowerShell. Entrambe le opzioni eseguiranno la stessa attività. Sta a te quale usare. In questo articolo, tratteremo entrambi. Tratteremo anche la creazione di connettori non TLS e TLS.

Crea un connettore non TLS usando Exchange Admin Center

Iniziamo creando un connettore non TLS. Per prima cosa imparerai come farlo tramite il Centro di amministrazione di Exchange. È possibile configurare molte impostazioni SMTP di Office 365 in Exchange Admin Center.

Una volta effettuato l’accesso, fare clic su mail flow (1) –>connectors (2) –> New (3). Verrà visualizzata la finestra Nuovo connettore.

Nuovo Connettore
Nuovo Connettore

il Nuovo Connettore finestra, selezionare: organizzazione server di posta elettronica (1), seleziona Per: Office 365 (2), fare clic su Avanti (3).

Selezionare un flusso di posta scenario
Selezione di un flusso di posta scenario

Nella finestra successiva, inserire il nome di Inoltro SMTP (Non TLS) o scegliere il proprio nome (1), digitare la descrizione Accettare l’inoltro da locale Server SMTP (2), deselezionare Mantenere Scambio interno intestazioni delle e-mail (consigliato) (3) e fare clic su next (Avanti) (4).

Assegnazione di un nome al connettore
Assegnazione di un nome al connettore

Nella finestra successiva, selezionare, verificando che l’indirizzo IP del server di invio corrisponde a uno di questi indirizzi IP che appartengono all’organizzazione (1), e fare clic su Aggiungi (2).

Aggiunta consentito di indirizzi IP per il connettore
Aggiunta consentito di indirizzi IP per il connettore

Nella nuova finestra che si apre, digita il tuo indirizzo IP pubblico (1), quindi fare clic su OK (2). Questo dovrebbe riportarti alla finestra precedente.

Aggiunta consentito di indirizzi IP per il connettore
Aggiunta consentito di indirizzi IP per il connettore

Verificare che l’indirizzo IP è aggiunto in lista (1), quindi fare clic su Avanti (2).

Aggiunta di indirizzi IP consentiti al connettore
Aggiunta di indirizzi IP consentiti al connettore

Quindi vedrai il riepilogo delle modifiche che devi implementare. Lavora prima sulle modifiche necessarie. Se non ce n’è, puoi andare avanti e fare clic su Salva.

Di nuovo in Exchange Admin Center, è ora possibile confermare che il nuovo connettore è stato creato.

È stato creato il connettore di Office 365
è stato creato il connettore di Office 365

Ora è necessario creare un connettore non TLS.

Creare un connettore TLS utilizzando Exchange Admin Center

La creazione di un connettore TLS è simile alla creazione di un connettore non TLS. Ad esempio, come è stato creato un connettore non TLS, tornare alla procedura guidata Nuovo connettore e utilizzare lo stesso scenario di flusso di posta. Userò un nome di connettore del relè SMTP (non TLS) ma il tuo potrebbe variare.

Nella finestra per definire Office 365 identificare le email dal server di posta elettronica, selezionare:

  • verificare che il nome del soggetto certificato che il server di invio utilizza per autenticare con Office 365 corrisponde al nome di dominio (consigliato) (1)
  • quindi digitare il soggetto del certificato SSL (2)
  • e fare clic su next (Avanti) (3).
Crea un connettore TLS usando Exchange Admin Center
Crea un connettore TLS usando Exchange Admin Center

Ancora una volta, vedrai un riepilogo di modifiche necessarie. Lavorare su di loro prima di elaborare. Se non ce n’è, è possibile fare clic sul pulsante Salva subito.

Crea un connettore non TLS usando PowerShell

Se la creazione di connettori Office 365 tramite una GUI non è la tua passione, puoi sempre crearli anche tramite PowerShell. Per fare ciò, assicurati innanzitutto di essere connesso a Exchange Online PowerShell.

Per creare il connettore, è necessario eseguire il comando New-InboundConnector. Questo comando richiede alcuni parametri diversi, quindi configurerò questi parametri prima del tempo usando PowerShell splatting.

Ho aggiunto alcuni commenti nel codice stesso di seguito, ma ecco una ripartizione di ciascun parametro e per cosa viene utilizzato:

  • Nome – Questo è il nome del connettore.
  • ConnectorType-Questo è il tipo di connettore. Questo valore può essereOnPremises oPartner. In questo scenario, il tipo appropriato è OnPremises.
  • SenderDomains – Questo può essere un elenco dei domini del mittente consentiti. Solo i domini verificati per il tenant sono scelte valide. L’asterisco (*) indica che si sta consentendo a tutti i domini verificati di inoltrare messaggi utilizzando questo connettore. Se è necessario consentire solo determinati domini mittente, modificare questo valore in un array di domini. (ad es. 'domain1.com','domain2.com')
  • SenderIPAddresses – Questo è il tuo indirizzo IP pubblico. Non dimenticare di cambiarlo prima dell’esecuzione.
  • RestrictDomainsToIPAddresses – Quando questo valore è impostato su$true, indica che questo connettore accetterà solo e-mail da indirizzi mittente provenienti dall’indirizzo IP pubblico consentito.
$splat = @{ ## Define the name of the connector. Name = 'SMTP Relay' ## Defined the type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Change this to your actual public IP address. SenderIPAddresses = '110.x.x.x' ## Restrict the email relay only to your sender domains and sender IP address RestrictDomainsToIPAddresses = $true}## Create the connectorNew-InboundConnector @splat

Quando viene eseguito, dovresti vedere qualcosa di simile a sotto.

Nuovo-InboundConnector
Nuovo-InboundConnector

Creare un TLS Connettore utilizzando PowerShell

Supponendo che sei connesso, eseguire il codice riportato di seguito per creare un TLS connettore con PowerShell come bene. Puoi vedere sotto molti parametri sono identici alla creazione di un connettore non TLS. I parametri richiesti che differiscono dalla creazione di un connettore non TLS sono:

  • RequireTLS – Specifica che tutti i messaggi ricevuti da questo connettore richiedono la trasmissione TLS
  • TlsSenderCertificateName – Questo è il nome (o l’oggetto) del certificato utilizzato dal mittente.

$splat = @{ ## Define the name of the connector. Name = 'SMTP Relay (TLS)' ## The type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Require TLS RequireTLS = $true ## Subject/Name of the SSL certificate TlsSenderCertificateName = '*.YourDomain.com'}## Create the connectorNew-InboundConnector @splat

Eseguire il codice di cui sopra e di avere un connettore TLS creato e pronto a ricevere e-mail.

Testare il connettore del relè SMTP di Office 365 con PowerShell

Dopo aver creato il connettore, prepararsi a testarlo. Il modo più semplice per farlo è usare PowerShell. In questa sezione, creeremo alcuni script PowerShell per consentire di garantire facilmente il connettore funziona correttamente.

Prima di iniziare il test, assicurati innanzitutto di sapere qual è l’URL dell’endpoint MX per il tuo dominio Exchange Online. Se non sai come trovare l’URL dell’endpoint MX, accedi al portale di amministrazione di Office 365. Fare clic su Imposta, selezionare Domini, fare clic sul nome di dominio e copiare i punti MX per indirizzo o valore.

Test di un relè SMTP non TLS (indirizzo IP)

Nota: Questo test deve essere eseguito dal computer il cui indirizzo IP pubblico è consentito nella configurazione del relè SMTP di Office 365.

Utilizzare il codice PowerShell qui sotto per il test. Assicurarsi di modificare i valori dei parametriFromTo eSmtpServer per utilizzare le proprie impostazioni del relè SMTP di Office 365 prima di eseguirlo.

  • To – Deve includere un destinatario di dominio interno e un destinatario di dominio esterno. Non dimenticare di cambiare questi valori al tuo.
  • From – Deve essere cambiato all’indirizzo del mittente designato. La parte di dominio dell’indirizzo e-mail deve essere uno dei domini e-mail del tenant.
  • SmtpServer – Deve essere modificato nell’endpoint MX del tenant di Office 365.
$mailParams = @{ SmtpServer = '<tenant>.mail.protection.outlook.com' Port = '25' From = '' To = '','' Subject = ('SMTP Relay - ' + (Get-Date -Format g)) Body = 'This is a test email using SMTP Relay' DeliveryNotificationOption = 'OnFailure','OnSuccess'}Send-MailMessage @mailParams

Test di un relè SMTP TLS (certificato)

Nota: È necessario disporre del certificato SSL pubblico in formato PFX prima di poter procedere con questo test.

Poiché il relay SMTP TLS richiede un certificato, non è possibile utilizzare il cmdlet PowerShell Send-MailMessage perché non consente di selezionare un certificato specifico. Utilizzare invece due oggetti. NET chiamati System. Net.Mail.SmtpClient per definire i parametri SMTP e System.Net.Mail.MailMessage per comporre il messaggio.

Di seguito troverai uno snippet di codice PowerShell che puoi utilizzare per testare il relè SMTP TLS. Non dimenticare di modificare i valori pfxFilepfxPassFromTo e SmtpServer per utilizzare il tuo Office 365 impostazioni relè SMTP prima di eseguirlo.

# specify the full path of your PFX certificate$pfxFile = "C:\Certificate\cert.pfx"$pfxPass = '<cert password here>'$pfxBytes = Get-Content -path $pfxFile -encoding Byte -ErrorAction:SilentlyContinue$X509Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2$X509Cert.Import(]$pfxBytes, $pfxPass,"Exportable,PersistKeySet")# Build SMTP properties$smtpServer = '<tenant>.mail.protection.outlook.com'$smtpPort = '25'$smtp = New-Object Net.Mail.SmtpClient($smtpServer,$smtpPort)$smtp.ClientCertificates.Add($X509Cert)$smtp.EnableSSL = $true# Compose message$emailMessage = New-Object System.Net.Mail.MailMessage$emailMessage.From = ''$emailMessage.To.Add('')$emailMessage.To.Add('')$emailMessage.Subject = ('SMTP Relay (TLS) - ' + (Get-Date -Format g))$emailMessage.Body = 'This is a test email using SMTP Relay (TLS)'# Send the message$smtp.Send($emailMessage)

Se impostato il connettore TLS è corretto, i destinatari definiti tramite il metodoAdd() dovrebbero ricevere l’e-mail di prova.

Convalida dell’hops del relè SMTP utilizzando l’intestazione del messaggio

Ora hai un relè SMTP funzionale impostato utilizzando un server locale e un relè SMTP di Office 365. Tutti i test hanno avuto successo e i dispositivi possono inviare messaggi a destinatari interni ed esterni. Bel lavoro!

Se sei ancora in dubbio e hai bisogno di confermare se questi messaggi stanno passando attraverso il relay SMTP di Office 365, puoi rivedere le intestazioni dei messaggi sulle e-mail ricevute.

Nota: l’apertura delle intestazioni dei messaggi varia tra i diversi client di posta. L’esempio seguente è specifico per Gmail.

Apri l’e-mail nell’interfaccia Gmail, apri il messaggio e fai clic sui tre punti verticali (1), quindi fai clic su Mostra originale (2).

Convalida di Inoltro SMTP Luppolo utilizzando l'Intestazione del Messaggio
Convalida di Inoltro SMTP Luppolo utilizzando l’Intestazione del Messaggio

Una nuova pagina mostra il messaggio di posta elettronica intestazioni. Fare clic su Copia negli appunti (1).

Convalida di Inoltro SMTP Luppolo utilizzando l'Intestazione del Messaggio
Convalida di Inoltro SMTP Luppolo utilizzando l’Intestazione del Messaggio

Aprire una nuova scheda del browser e passare a https://testconnectivity.microsoft.com/.

Vai alla scheda Analizzatore messaggi (1), incolla i dati copiati nella casella (2) e fai clic su Analizza intestazioni (3).

Analisi delle intestazioni
Analisi delle intestazioni

Il risultato dell’analisi verrà visualizzato nella tabella come mostrato di seguito.

Analisi dei risultati
Analisi dei risultati

Si dovrebbe vedere la seguente flusso di lavoro nei risultati di cui sopra:

  1. indirizzo IP 192.168.0.3 e indica l’origine del computer.
  2. Il server relay SMTP on-prem ha ricevuto il messaggio.
  3. Exchange Online Protection (EOP) ha ricevuto il messaggio.
  4. Exchange Online server e reindirizzato per la consegna in uscita ha ricevuto il messaggio.
  5. Ufficio 365 a google.com consegnato il messaggio.

In base ai risultati dell’analisi, è possibile confermare che il messaggio è passato attraverso il relè SMTP di Office 365 come previsto.

Riepilogo

In questo articolo, hai imparato come creare un relè SMTP di Office 365 TLS e non TLS. Hai anche imparato come testare e confermare la loro funzionalità utilizzando tecniche diverse e come convalidare i percorsi SMTP che il messaggio aveva attraversato.

Ulteriori letture