...anche se la nostra (mia) paranoia ci fa prudere da ogni parte del corpo, dobbiamo farlo.
Ecco un semplice modo per far prudere un po' meno e mandare a spasso quell'omino che continua a ripeterti "e se..." (oltre a smanettare una settimana sul firewall layer7, finchè non siamo rassicurati, ovviamente ;-) ).
Creiamo si, un connettore, per quell'host di quella rete, ma almeno richiediamo utente e password per poter spedire la posta all'esterno del nostro dominio... (non ci piacerebbe essere inseriti in una black-list di spammers, ve lo assicuro. Uscirne è comunque, sempre, critico.)
Ma come si fa? Ecco allora la mini guida che svela questi piccoli segreti del sistemista:
Dalla Exchange Management Console, recati su Microsoft Exchange on-premises (tuo org name).
Crea un nuovo ocnnettore di ricezione sul server che vai a puntare sulla porta 25, in server configuration->Hub transport-> il server che scegli (se ne hai uno non puoi sbagliare...).
Pannello a destra, quindi, clicca su: "new Receive Connector".
Nella finestra che si apre (fig 1), scegli un nome, poi NEXT
fig 1 |
Se vuoi restringere gli indirizzi su cui il server ASCOLTA sulla porta 25, puoi operare sulla parte "local Network Settings" (fig 2) in alto, rimuovendo "all available ipv4" e aggiungendo un IP disponibile alla volta. altrimenti lascia "all".
Scegli quindi il nome con cui il server si presenterà ai client che si connettono su questo connettore. poi NEXT
fig 2 |
Nella scheda "Remote Network Settings" (fig 3) scegli quali indirizzi IP o reti sono abilitati a connettersi a questo connettore. ATTENZIONE: se degli indirizzi sono già presenti in altri connettori NON PUOI metterli qui. Poi NEXT.
fig 3 |
A questo punto clicca su "New" ed il tuo connettore è creato, ma dovrai fare delle altre modifiche prima di usarlo, quindi:
cliccaci sopra col destro e seleziona properties. (fig 4)
fig 4 |
A questo punto vai sulla scheda Authentication (fig 5) e metti la spunta solo su Basic Authentication...
fig 5 |
poi vai sulla scheda Permission Groups (fig 6) e metti la spunta su "anonymous users" e su "Exchange Users".
ATTENZIONE: in questa ultima scheda si specifica chi può CONNETTERSI al connettore, non c'entra con la autenticazione che poi serve per fare relay.
fig 6 |
Ultima cosa: devi lanciare il comando powershell per permettere il relay attraverso questo connettore agli utenti o gruppi selezionati.
Ti consiglio di fare un gruppo in Active Directory e di usare quello, in modo da non dover rilanciare il comando powershell ogni volta che si aggiungono o si tolgono utenti a quel diritto.
Creato? allora il comando (da lanciare in Exchange Management Shell, ovviamente) è:
Get-ReceiveConnector "
Fatto questo puoi proseguire e testare che tutto funzioni.
NOTA:
ATTENZIONE: per qualche motivo l'invio autenticato in SMTP da .NET C#, se si specificano lo user e la pw con la classe SmtpClient, passandoglieli come System.Net.NetworkCredential non FUNZIONA.
Per fare funzionare la classe dovrai specificare i parametri nel web.config sotto system.net->mailSettings.
Esempio di codice che NON FUNZIONA:
nei sorgenti:
SmtpClient smtpClient = new SmtpClient("hostnameServerOppureIP", 25);
smtpClient.Credentials = new System.Net.NetworkCredential("username", "password", "dominio");
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = false;
MailMessage mail = new MailMessage();
mail.From = new MailAddress("prova@dominio.it", "il mio portale");
mail.To.Add(new MailAddress("destinatario@ilSuoDominio.com", "destinatario@ilSuoDominio.com"));
mail.Subject = "subject di test";
mail.Body = "body di test";
smtpClient.Send(mail);
Esmpio di codice che FUNZIONA:
nei sorgenti:
MailMessage mail = new MailMessage();
mail.From = new MailAddress("prova@dominio.it", "il mio portale");
mail.To.Add(new MailAddress("destinatario@ilSuoDominio.com", "destinatario@ilSuoDominio.com"));
mail.Subject = "subject di test";
mail.Body = "body di test";
SmtpClient smtpClient = new SmtpClient();
smtpClient.Send(mail);
nel web.config:
...
....
P.S. se qualcuno sa PERCHE' di preciso, mi erudisca, per favore. io ho provato a cambiare ogni parametro, mettere in base64 user e pw (per assurdo, perchè dovrebbe arrangiarsi lui), mettere il dominio nel nome utente, useDefault... false, e chi più ne ha più ne metta.
Ciao a tutti e buona serata!