Microsoft 365: konektor i wysyłka wiadomości skryptem

Jak wysłać wiadomość skryptem PowerShell? Jak to zrobić używając usługi Microsoft 365? W jaki sposób wysłać wiadomość używając konektora Microsoft 365? Jak utworzyć konektor Microsoft 365 do wysyłki wiadomości? |

Wysyłaliśmy wiadomości mailowe skryptem w usłudze Microsoft 365 już wcześniej, jednak M365 cały czas się zmienia! Usługa staje się bardziej bezpieczna i aby teraz użyć skryptu PowerShell do wysyłki wiadomości należy utworzyć konektor – podobnie jak do wysyłki ze starszych urządzeń (skanery, drukarki). Sprawdzony przepis jak jak to zrobić przeczytacie poniżej.

Zacznijmy od początku, Microsoft wprowadzając OAuth 2.0 skutecznie zabezpieczył swoją usługę ale utrudnił życie wszystkim którzy używali SMTP do wysyłania wiadomości e-mail w organizacji. W tym nam, korzystającym ze skryptów które wysyłały maile… ale albo bezpieczeństwo albo SMTP 🙂

Żeby jednak nie pozostawić milionów urządzeń i swoich użytkowników bez rozwiązania powstało kilka sposobów dla usługi Microsoft 365 które pozwalają na wysyłkę wiadomości. Wszystkie opcje macie dokładnie opisane tutaj my jednak skupimy się na konkretnym przypadku, dzięki temu opis dostępny na stronie Microsoft uzupełnimy konkretnym przykładem. Nasze założenia są następujące:

  • chcemy skonfigurować aplikacje/skrypt lub urządzenie wysyłające maile w domenie którą mamy przypiętą do usługi Microsoft 365
  • chcemy wysyłać wiadomości z więcej niż jednego adresu
  • chcemy wysyłać wiadomości na adresy spoza naszej organizacji

Zgodnie z kreatorem który ma troch więcej pytań musimy utworzyć konektor tzw smtp relay.

Musimy posiadać stały adres publiczny który dodamy do rekordu (jest to jedno z ograniczeń ale też forma zabezpieczenia takiej wysyłki).

Nasz adres publiczny musimy dodać do rekordu SPF w strefie DNS naszej domeny. Zależnie od tego gdzie utrzymujemy naszą domenę połączoną z Microsoft 365 opcje mogą się delikatnie różnić natomiast wpis tego rekordu powinien mieć taką postać:

v=spf1 ip4:159.123.102.39 include:spf.protection.outlook.com -all

pomiędzy spf1 a include dodajemy po prostu ip4:XXX.XXX.XXX.XXX

gdzie XXX.XXX.XXX.XXX to nasz adres publiczny (skąd będziemy wysyłać maile, gdzie jest nasza drukarka, serwer ze skryptem), sprawdzić nasz adres możemy tutaj

Poniżej przykład ze strefy DNS zarządzanej przez usługę Microsoft 365 – taką wartość powinien mieć rekord TXT odpowiedzialny za SPF gdy nasz adres publiczny to 159.123.102.39 :

Po tym jak poprawimy nasz wpis DNS musimy jeszcze uzyskać nazwę serwera MX naszej usługi Microsoft 365. Zazwyczaj ma on postać:

nazwadomeny-pl.mail.protection.outlook.com

w naszym wypadku: sprawdzone-it.mail.protection.outlook.com

Serwer MX możemy też zweryfikować logując się do panelu usługi Microsoft 365, centrum administracyjnego, przechodząc do ustawień domen:

lub odpytując o domenę z użyciem narzędzia nslookup w wierszu poleceń:

nslookup -type=mx sprawdzone.it 8.8.8.8

Mając powyższe dane przechodzimy do tworzenia samego konektora, logujemy się do usługi Microsoft 365, przechodzimy do panelu administracyjnego usługi Exchange:

tutaj dodajemy nowy konektor, wskazując jako typ połączenia serwer naszej organizacji:

następnie podajemy nazwę konektora:

wybieramy typ i wprowadzamy nasz adres publiczny który dodaliśmy wcześniej do rekordu SPF:

przeglądamy podsumowanie i zatwierdzamy utworzenie konektora:


Teraz mamy już wszystko to co jest potrzebne aby nasz skrypt zadziałał poprawnie (pamiętajcie jednak że czasami zmiana rekordu SPF chwile trwa).

A tak powinien wyglądać sam skrypt wysyłający wiadomość (modyfikacja wcześniejszego):

#sprawdzone.it
#wysyłka wiadomości z użyciem konektora Microsoft 365

$credentials=new-object Management.Automation.PSCredential “alerty@sprawdzone.it”, (“Moj3.Haslo72” | ConvertTo-SecureString -AsPlainText -Force)

 $param = @{
    SmtpServer  = 'sprawdzone-it.mail.protection.outlook.com'
     Port = 25
     UseSsl = $true
     Credential  = $credentials
     Encoding = 'utf8'
     From = 'alerty@sprawdzone.it'
     To = 'adbiorca@adresat.pl'
     Subject = '[alert] uwaga bład'
     Body = "Wiadomość automatyczna - proszę nie odpowiadać"   
 }

 Send-MailMessage @param


Zwróćcie uwagę na te parametry, to one uległy zmianie w porównaniu do wcześniejszej wersji:

  • SmtpServer to nasz rekord MX
  • Port musi mieć wartość 25

Sprawdźcie sami, wiadomości docierają bez problemowo! A Wy macie kolejny sprawdzony sposób! Pamiętajcie warto ukryć hasło w skrypcie!


Jeżeli mój wpis Ci się spodobał, pomógł w pracy? Chcesz mnie wspierać? Postaw kawę! To dzięki waszemu wsparciu nie ma reklam! Poniżej kod QR do płatności który jest jednocześnie linkiem do PayPal możesz też wpłacić BLIK z użyciem Przelewy24.pl