Exchange Server 2013’de Catch-All (Olmayan bir kullanıcıya atılan mail’i yakalayıp belirli bir kullanıcıya gönderme özelliği) davranışı varsayılan olarak kapalı gelmektedir. Bu ayarın kapalı gelmesi Bounce Email trafiğini büyük ölçüde azaltmaktadır.

Exchange Server 2013 ile beraber bu davranış biraz değişiklik göstermekte, olmayan bir kullanıcıya gönderilen eposta Exchange Server tarafından karşılanarak kuyruğa alınmakta, adres defteri sorgulanarak belirli bir zaman ve kaynak ayrıldıktan sonra istenilen kullanıcının olmadığı anlaşılarak karşı SMTP sunucusuna NDR mesajı gönderilmektedir. Bu durumda sunucu üzerinde bir yük oluşturmaktadır.

Bu durumu bir nebze olsun azaltmak için Exchange Server 2013 SP1 üzerindeki RecipientValidationEnabled özelliğini aktif etmemiz yeterli olacaktır.

RecipientValidationEnabled’i Aktif Etmek

Recipient filtering on Edge Transport servers Exchange Server üzerinde SMTP seviyesinde gelen (Inbound) epostaları karşılayan ve iş akışı uygulayabilen bir servistir. RecipientValidationEnabled ise yine bu servisin bir özelliği olup gelen eposta’nın kullanıcısının SMTP seviyesinde olup olmadığını kontrol ederek Exchange’in mail alırken kullandığı diğer servislerde işlem göremeden reddedilmesine olanak verir. Böylece büyük ölçüde Bounce Email trafiği azaltılmış olur.

RecipientValidationEnabled aktifleştirmekl için;

1. Exchange Management Shell’i açın (Powershell konsolu)

Ayarı hemen aktif edebiliriz fakat Exchange Server üzerinde Anti Spam Agent’ını aktif etmeden ve çalıştırmadan bu özellik dikkate alınmaz o nedenle aşağıdaki komut ile Exchange Server üzerinde Anti Spam Agent’ı önce aktif ediniz.

& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1

Anti Spam Agent bir kaç servisi yükleyecektir. Bize lazım olan “Recipient Filter Agent” bunu aktif etmek için aşağıdaki komutu çalıştırın.

Enable-TransportAgent “Recipient Filter Agent”

ardından ayarların aktif olması için Transport servisini tekrar başlatalım.

net stop MSExchangeTransport & net start MSExchangeTransport

Bu aşamadan sonra Get-RecipientFilterConfig dediğimizde Servis aktif ve RecipientValidationEnabled True olarak görünüyorsa her şey yolunda demektir.

Get-RecipientFilterConfig | FL Enabled,RecipientValidationEnabled
Enabled : True
RecipientValidationEnabled : True

Bu aşamadan sonra sistemde kayıtlı olmayan bir kullanıcı mail aldığında SMTP seviyesindeki DATA komutu ile birlikte istemciye 550.1.1 User unknow hatası geri dönecektir.

Test’i basit bir kaç telnet komutu ile sağlayabilirsiniz.

telnet mailsunucusu.com 25
ehlo
mail from: mail@domain.com
rcpt to: salladim@mydomain.com
daha
mail içeriğini yaz Enter'a bas nokta arından yine Enter

exchange_001

Eğer RecipientValidationEnabled = False durumda olsaydı kullanıcı olmasa bile istemciye 250 2.1.5 Recipient OK döndürülerek eposta diğer transport katmanına taşınacaktı.

Smart Host Kullanıyorsanız?

Exchange Server 2007 ve 2010’da bu davranış biraz daha değişik gerçekleşiyordu. Exchange Server 2013’de DATA komutundan sonra Unknow User hatası döndürülürken Exchange Server 2007 ve 2010’da ise RCPT TO komutundan sonra Unknow User hatası dönüyorsu. Esas doğrusu ve diğer SMTP sunucularca kabul görmüş kullanımıda bunu RCPT TO komutundan sonra yakalamaktı fakat Exchange DATA’dan sonra validasyonu yaptığı için SMTP Gateway’lerin Callout’larıda problem yaşanıyor.

Bu durumu aşmak için Callout yapacak olan SMTP Gateway direkt 25 Portundan çalışan Default FrontEndTransport servisine istek göndermek yerin 2525 Portundan çalışan Default HubTransport servisine Callout yapması yeterli olacaktır validasyon HubTransport servisinde RCPT TO seviyesinde gerçekleşiyor.

Not: Default HubTransport servisinde Anonymous  kulanıcılara izin verilmesi gerekmektedir.

Bu hile biraz sakıncalı. Zorunlu olmadıkça da uygulamanız önerilmez çünkü CAS servisi direkt bypass ediliyor. Tabi tüm kuralları callout yapan SMTP servisinde yapıyorsanız çok bir şey farketmeyebilir.

Yazar