Exchange 2010: 554 5.1.0 Sender denied, PerRecipientBlockedSender

Danas sam imao vrlo zanimljivu situaciju pošto su mi kolege prijavile da ne mogu da šalju mejlove samo jednoj osobi u našoj korporaciji, dok im poruke prolaze ka svim ostalim primaocima. Inače domen sa koga šalju nije na našem Exchange serveru već se koristi drugi mejl server (tip nije bitan u ovom slučaju). Dakle recimo da su u pitanju adrese predrag@nesto.rs kao primaoc i rajco@domen.com kao pošiljaoc.

U ovom slučaju kada Rajco pošalje poruku Predragu dobije sledeću grešku:

User and password not set, continuing without authentication.
<predrag@nesto.rs> 93.87.xxx.xxx failed after I sent the message.
Remote host said: 554 5.1.0 Sender denied

Pošto mi ne koristimo u ovom slučaju Edge server, na HUB serveru pod opcijom Anti-Spam, sam proverio da li je adresa rajco@domen.com slučajno blokirana, ali to nije bio slučaj:

554 5.1.0 Sender denied 01

Dodavanje kompletnog domena ili adrese u IP Allow List ne pomaže u ovom slučaju, pa sam morao da pogledam detaljnije logove u potrazi za ovom greškom. To radimo sa sledećom komandom u EMS:

Get-Agentlog | where {$_.SmtpResponse -eq "554 5.1.0 Sender denied"}

554 5.1.0 Sender denied 02

E odavde je već lakše, vidimo u crvenom delu da je korisnik blokirao pošiljaoca u svom outlook-u. To se može desiti i slučajno ako je korisnik prevukao mejl u junk pa odabrao da ubuduće blokira pošiljaoca. Da bi bili sigurni da je konkretna mejl adresa blokirana kod samog korisnika možemo iskoristiti komandu:

Get-MailboxJunkEmailConfiguration -Identity predrag@nesto.rs

Koji nam vraća listu TrustedSendersAndDomains i BlockedSendersAndDomains:

554 5.1.0 Sender denied 03

Određena polja su zatamljena jer su slike preuzimane sa servera koji je u produkciji, ali ne bi trebalo da utiče na razumevanje teksta.

Pretraga i filtriranje računara u Active Directory pomoću Powershell-a

Često se dešava da nam Active Directory nije potpuno ažuriran u smislu da imamo nekih računara koji se više ne koriste, a nalaze se u različitim organizacionim jedinicama pa bi ih bilo vrlo teško locirati bez PowerShell-a. Jedan od načina je da pronađemo računare na koje je poslednje logovanje bilo pre više od 100 dana i prebacimo ih u jednu organizacionu jedinicu gde ih kasnije možemo brisati.

Prvo ćemo postaviti željeni datum u promenljivu d sa komandom:

$d = [DateTime]::Today.AddDays(-100)

Zatim ćemo iskoristiti komandu koja pretražuje i izlistava računare u AD, Get-ADComputer, a zatim sa filter parametrom izlistati sve računare koji su u statusu enable i kojima je zadnji datum logovanja manji ili jednak od datuma koji smo stavili u promenljivu $d.

Get-ADComputer -filter {(enabled -eq "true") -and 
(lastlogondate -le $d)} -properties Name,LastLogonDate

Nakon toga možemo sve računare prebaciti u novu OU:

Move-ADObject -Targetpath 'ou=Disabled Computers,dc=rajco,dc=me'

Ukoliko hoćemo više detalja o svojstvima računara koje ćemo dobiti u rezultatu možemo koristiti komandu:

Get-ADComputer -filter {(enabled -eq "true") -and (lastlogondate -le $d)} -Properties * |
ft name, lastlogondate, operatingsystem
Get-ADComputer -filter {(enabled -eq "true") -and (lastlogondate -le $d)}`
-Properties * | select Name, LastLogonDate, OperatingSystem | Out-GridView

Evo kako izgledaju rezultati poslednje dve komande respektivno:

PS_AD01

PS_AD02

Ukoliko pretragu želimo da izvršimo prema imenu računara komanda bi izgledala:

Get-ADComputer -Filter "Name -like '*AICABO*'" | ForEach-Object {$_.Name}

Sada se možemo poigrati i pronaći sve željene računare i proveriti veličinu particija i slobodnog prostora:

 $Computers = Get-ADComputer -Filter "Name -Like '*AACABO*'" |
 ForEach-Object {$_.Name}
Get-WMIObject Win32_LogicalDisk -filter “DriveType=3" -computer $computers | `
Select SystemName,DeviceID,VolumeName,@{Name=”size(GB)”;Expression=`
{“{0:N1}” -f($_.size/1gb)}},@{Name=”freespace(GB)”;Expression={“{0:N1}” `
-f($_.freespace/1gb)}} | Out-GridView

PS_AD04

Mogućnosti su velike, pa možete sami da nastavite sa isprobavanjem komandi po vašoj želji i potrebama.

Nadgledanje servisa i performansi sa WMI na windows serveru

Ukoliko imate potrebu da pratite statistike interfejsa, CPU-a, zauzeća HDD-a, memorije ili bilo kog drugog parametra na windows serveru najbolje rešenje je koristiti WMI (Windows Management Instrumentation). Za prikupljanje podataka možete koristiti PRTG Network Monitor ili neki drugi alat. Na računarima koji su u domenu (u ovom tekstu ćemo govoriti samo o tom slučaju) domenski administratori imaju prava da prikupljaju WMI informacije, naravno pod uslovom da ste pre toga dozvolili wmi remoting.

To možete uraditi preko GPO (Group Policy Object), deo podešavanja možete videti na sledećoj slici:

WMI01

Kada smo podesili računare da dozvoljavaju WMI konekcije i automatski podižu sam servis možemo krenuti sa prikupljanjem podataka. Proveru možemo uraditi sa udaljenog računara bilo kojim wmi objektom:

Get-WmiObject win32_processor -ComputerName print -Credential adminrajco@rajco.me

Ako je sve dobro podešeno dobijamo sledeći rezultat:WMI02

Problem koji možemo imati prilikom prikupljanja podataka preko wmi sa nekim od alata je što mu moramo dati kredencijale preko kojih će pristupati željenim serverima, a ne želimo nikako da to bude administrator domena, već korisnik sa minimalnim pravima. Najbolje je kreirati jednu sigurnosu grupu WMI Performace i korisnika WMI User koji će biti član te grupe. Nakon toga je potrebno da damo prava toj grupi na WMI Control i DCOM servisu. To radimo na sledećim mestima:

WMI03

WMI04

Kada smo podesili sva potrebna prava možemo koristiti korisnika WMI User za prikupljanje svih WMI infromacija bez bojazni da taj korisnik ima prava veća od potrebnih. Na kraju možemo i videti kako izgleda jedan od grafika napravljenih pomoću WMI:

WMI05

Mikrotik senzor temperature

Na određenim RouterBoard pločama imamo senzor temperature, pa ga možemo iskoristiti za automatsko slanje mejla ukoliko uređaj pređe zadatu temperaturu. Ovo može biti vrlo korisno u manje opremljenim serverskim sobama koje nemaju redudantno hlađenje, a ni sopstveni uređaj za monitoring, ali se tu nalazi neki od modela Mikrotik rutera sa pomenutim senzorom.

Podesićemo skript koji će proveravati temperaturu i slati mejl ukoliko nije u dozvoljenim granicama, dok će u suprotnom ispisivati log, pa ukoliko koristite neki od alata za udaljeno nadgledanje logova bićete u mogućnosti da vidite temperaturu. Prvo je potrebno da podesimo e-mail alat da bi uopšte mogli da šaljemo poruke:

MikrotikTemp01

/tool e-mail
set address=192.168.0.252 from=Mikrotik@Rajco.test

Nakon toga možemo podesiti skript. U zavisnosti od željene temperature možete promeniti vaše vrednosti:

MikrotikTemp02

add name=TempMonitor policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
    source="/system health\r\
    \n:if ([get temperature]>32) do={/tool e-mail send to=\"admin@rajco.me\" su\
    bject=\"Temperatura serverske sobe\" body=(\"Temperatura serverske sobe je\
    \_veca od dozvoljene! Trenutna temperatura iznosi : \".[/system health get\
    \_temperature] )} else {:log info (\"Temperatura je u dozvoljenim vrednost\
    ima. T=\".[/system health get temperature])}"

Sada je još potrebno da stavimo scheduler koji će pokretati skript u određenom razmaku. Lično mislim da je pet minta sasvim prihvatljiv vremenski interval:

MikrotikTemp03

add interval=5m name=TempMonitor on-event="/system script run TempMonitor" \
    policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
    start-date=sep/21/2012 start-time=09:46:31

Uz male izmene možemo postavljati automatska obaveštenja za sve događaje na routerOS-u, a ne samo za temperaturu.

RSAT Tools i Powershell pretraga zaključanih naloga

Iskoristiću ovaj post da objasnim instaliranje i korišćenje RSAT alata, a zatim da dam primer korišćenja Powershell-a preko RSAT-a. RSAT (Remote Server Administration Tools) nam dozvoljava upravljanje rolama i karakteristikama (Roles and Features) koje su instalirane na udaljenom serveru sa operativnim sistemom Windows Server 2008 i 2008R2 (važi i za pojedine role i karakteristike na verziji servera 2008 i 2003). Na primeru koji ću pokazati vidimo koliko je RSAT koristan, ne samo u olakšavanju upravljanja, već i donošenjem novih i poboljšanih komandi.

RSAT je dostupan za obe arhitekture procesora (x86 i x64) a obradićemo verziju za Windows 7 SP1 (mora biti u ediciji Enterprise, Professional ili Ultimate). Bitna stavka je da alat dolazi u vidu ažuriranja i mora se potpuno ukloniti svaka prethodna verzija pre instalacije nove, podrazumeva se da se ne može instalirati na ciljanom serveru. Takođe su nam potrebna administratorska prava na računaru na kom istaliramo alat. Kada završimo instalaciju ostaje nam da u Control Panelu pod opcijom Program and Features dodamo karakteristike i role sa kojim želimo da upravljamo.

RSAT-01

Sada možemo da počnemo sa upravljanjem željenih rola na ciljanom serveru/serverima. Ukoliko ste na klijentskom računaru već logovani kao administrator sa potrebnim pravima na udaljenom serveru onda je dovoljno samo da pokrenete neki od alata. Pošto nije dobra praksa biti logovan na klijentski računar i raditi stalno sa administratorskim pravima onda je potrebno alat pokrenuti kao drugi korisnik i ukucati administratorske kredencijale. Takođe postoji opcija prilikom korišćenja Powershell-a da prilikom izvršavanja same komande obezbedimo kredencijale koji su dovoljni za tu akciju i time izbegnemo rad sa pravima većim od potrebnih.

RSAT-02

Na ovom primeru vidimo da su instalirani svi dostupni alati jer računar nije u produkciji, već u testnom okruženju. Vi ćete naravno izabrati alate za role koje imate instalirane. U svakom trenutku možete dodati i neki koji vam kasnije zatreba. Kao što sam rekao na sledećem primeru ćemo videti kolika je korist od RSAT-a.

Ukoliko dobijete zadatak da proverite sve zaključane naloge u vašem domenu a pri tome imate stotine ili hiljade naloga taj posao ručno bi bio nemoguć, a ako je domain controler na verziji nižoj od Windows Servera 2008 R2 trebaće vam neki PS skript ili ne daj bože VB :). Uz pomoć RSAT alata to možemo uradti sa jednom komandom na sledeći način:

RSAT-03

Search-ADAccount -LockedOut

U prvom redu izlistavamo sve zaključane naloge na domenu.

Search-ADAccount -LockedOut | Unlock-ADAccount

Drugim redom prosleđujemo (pipe) komandu za otključavanje svih naloga. Ukoliko nemamo dovoljna prava ovde možemo dobiti grešku pa je potrebno ponoviti akciju sa odgovarajućim dozvolama. Na kraju ponavljamo prvu komandu da bi se uverili da smo otključali sve naloge. Sve ovo smo radili sa klijentskog računara i pokrenutim Active Directory Module for Powershell, da smo pokrenuli samo Powershell morali bi da importujemo odgovarajući modul sa komandom:

Import-Module ActiveDirectory

Velika verovatnoća je da ne želimo da otključamo sve naloge, već da izaberemo pojedinačno, tada koristimo

RSAT-04

Imamo parametar confirm pa će nam PS tražiti da potvrdimo svaki nalog pojedinačno. Takođe u nastavku vidimo da možemo koristiti select da bi izabrali polja u prikazu koja nas interesuju.

PS C:\Users\Administrator> Search-ADAccount -LockedOut | select Name

Kao što vidimo sada vrlo lako možemo vršiti upravljanje serverima sa lokalnog računara čak i uz korišćenja komandi koje nam ne bi bile dostupne na serveru. Još jedna velika prednost je ukoliko više administratora koristi RDP konekciju ka serverima, a znamo da je, ne računajući terminal servise, ili po novom RDP rolu, broj istovremenih RDP konekcija dve, tako da treći administrator neće moći da pristupi serveru bez da izloguje jednog od prve dvojice ili odlaskom do servera i logovanjem lokalno.