Relay Nedir? Exchange Server Relay Yapısı

Merhaba, bu yazımızda Exchange Server’ın Relay yapısını ele alacağız. E-posta servisleri, her kurum ve birey için vazgeçilmez bir iletişim aracıdır. E-posta göndermek kullanıcılar için basit bir işlem gibi görünse de, bu işlemin arka planında MTA, MUA ve RELAY gibi önemli kavramlar bulunmaktadır.

Relay Nedir?

Relay, gönderilen iletilerin alıcılara ulaştırılmasını sağlayan araçtır. Bu süreçte, kullanıcılarımızın mail sunucularına bağlandığı yazılımlar MUA (Mail User Agent) olarak, mail sunucularımız ise MTA (Mail Transfer Agent) olarak adlandırılır. MUA, hedefe e-posta göndermek istediğinde bu talebi MTA‘ya iletir; MTA ise gelen bilgileri doğrular ve Relay işlemini gerçekleştirir.

E-Mail Relay İşleminin Postane Benzetmesi

E-mail Relay işlemini daha iyi anlamak için postane örneğini kullanabiliriz: Bir paket göndermek istediğimizde, paketin üzerine alıcı ve iade adresi yazılır ve yerel postaneye teslim edilir. Yerel postane, paketi alıcı adresinin bulunduğu bölgedeki postaneye yönlendirir. Alıcı postane ise paketi belirtilen adrese teslim eder. Eğer teslimat gerçekleşmezse, paket iade adresine geri gönderilir.(Burada adres benzetmesi, Relay işlemi de benzer şekilde, MUA’nın isteği MTA’ya iletilir ve ileti, alıcının MTA’sına teslim edilir. MTA, iletiyi alıcının e-posta adresine göre tanımlar ve MUA’ya iletir.

Günlük Yaşantıda Relay Kullanımı

Relay kavramı, günlük iş akışlarımızda birçok farklı serviste yer alır. Örneğin, backup, SIEM ve ERP sistemleri gibi çeşitli yazılım platformlarından alınan günlük raporlar ve alarmlar, şirket içi mail sunucularımız aracılığıyla bize ulaştırılır. Bu süreçte iki ana yöntemle authentication işlemi gerçekleştirilebilir:

Open Relay

Open relay, e-posta sunucusunun kimlik doğrulama gerektirmeden, herhangi bir kaynaktan gelen e-postaları kabul edip, herhangi bir hedefe yönlendirebilmesi durumudur. Bu tür sunucular, spam göndericileri tarafından istismar edilebilir çünkü kaynağı ne olursa olsun tüm e-posta iletilerini kabul edip yönlendirirler.

Authenticated Relay

Authenticated relay, e-posta sunucusunun yalnızca belirli kimlik doğrulama bilgilerine sahip kullanıcılar tarafından e-posta gönderimi yapmasına izin verdiği bir yapılandırmadır. Bu, kullanıcı adı ve şifre gibi kimlik bilgileri ile doğrulanmış kullanıcıların veya belirli IP adreslerinden gelen istemcilerin e-posta gönderimine izin verilmesini içerebilir. Authenticated relay, güvenli bir e-posta gönderimi sağlar ve kötü niyetli kullanımları önleyebilir.

Özet:

  • Internal Relay ve External Relay, e-postaların iç veya dış ağlar arasında nasıl yönlendirildiğini tanımlar.
  • Open Relay geniş ve kontrolsüz erişim sağlar, bu da güvenlik riskleri yaratır.
  • Authenticated Relay, güvenliğin sağlanması için belirli kimlik doğrulama gereksinimleri koymaktadır.

Exchange Server 2019 Internal Relay Adımları

Yukarıda Internal Relay kavramında kısa bir şekilde bahsetmiştik, şimdi Exchange Server üzerinde Internal Relay kavramlarından bahsedeceğiz.

Exchange Server 2016 veya 2019’u ortamınıza ilk eklediğinizde, kurulum süreci anonymous  göndericilerden dahili alıcılara e-posta teslim etmeye olanak tanımak için otomatik olarak önceden yapılandırılmış bir connector oluşturur. Bu yapılandırma, gelen e-postaların sunucu tarafından kabul edilmesini sağlar ve aynı zamanda dahili e-posta iletimi (relay) için de kullanılır.

Exchange Server kurulumu tamamlandığında, varsayılan olarak beş adet connector kurulmuş olur. Bu bağlayıcılardan biri örneğimde “EXCSERVER\Default Frontend EXCSERVER” olarak adlandırılan bağlayıcıdır.

Bu bağlayıcıları, Exchange Kontrol Paneli (ECP) üzerinden görsel olarak inceleyebileceğiniz gibi, Exchange Management Shell (EMS) üzerinden de detaylı bilgilere ulaşabilirsiniz. Bu bağlayıcılar, kurulum sürecinde Exchange Server’ın e-posta alışverişini yönetmek için otomatik olarak ayarlanır ve sistem yöneticilerine esneklik sağlamaktadır.

Get-ReceiveConnector
Get-ReceiveConnector

Identity                                    Bindings                  Enabled

EXCSERVER\Default EXCSERVER                 {0.0.0.0:2525, [::]:2525} True

EXCSERVER\Client Proxy EXCSERVER            {[::]:465, 0.0.0.0:465}   True

EXCSERVER\Default Frontend EXCSERVER        {[::]:25, 0.0.0.0:25}     True

EXCSERVER\Outbound Proxy Frontend EXCSERVER {[::]:717, 0.0.0.0:717}   True

EXCSERVER\Client Frontend EXCSERVER         {[::]:587, 0.0.0.0:587}   True

Exchange Server Internal Relay Connectorü Telnet Adımları

telnet EXCSERVER 25

220 EXCSERVER.akkaya.local Microsoft ESMTP MAIL Service ready at Tue, 25 Apr 2022 22:14:29 +0300

helo

250 EXCSERVER.akkaya.local Hello [192.168.1.30]

mail from: [email protected]

250 2.1.0 Sender OK

rcpt to: [email protected]

250 2.1.5 Recipient OK

Data

354 Start mail input; end with .

Subject: Test email

Testing

.

250 2.6.0 <[email protected] > [

InternalId=854698491929, Hostname=EXCSERVER.akkaya.local ] Queued mail for

 delivery

Yukarıda bahsettiğim Internal Relay senaryosu için ek bir Connector ihtiyacınız bulunmamaktadır, güvenlik gereksinimleriniz doğrultusun da yeni bir Port ve yeni bir Connector oluşturabilirsiniz. Fakat, Connector yerine DNS kullanmanız daha sağlıklı olacaktır.

Exchange Server 2019 External Relay Adımları

Exchange Server ortamımıza dahil edilmiş bir Internal adress üzerinden, External bir ortamda bulunan bir email adresine mail göndermek için Telnet adımlarını kullanacağız ve Telnet gönderim sırasında nasıl cevap verecek kontrol edelim.

220 EXCSERVER.akkaya.local Microsoft ESMTP MAIL Service ready at Tue, 25 Apr 2022 22:30:29 +0300

helo

250 EXCSERVER.akkaya.local Hello [192.168.1.30]

mail from: [email protected]

250 2.1.0 Sender OK

rcpt to: [email protected].

550 5.7.54 SMTP; Unable to relay recipient in non-accepted domain

External E-posta adresini girdiğim zaman “550 5.7.54 SMTP; Unable to relay recipient in non-accepted domain” hata kodu dönmektedir.

550 5.7.54 hata kodunu çözmemiz için kullanabileceğimiz iki yöntem bulunmaktadır.

Kullanıcı Authentication yapılandırması
Connector üzerinde Anonymous yetkilendirmesi

Exchange Server’da Authentication Kullanarak External Relay Adımları

Her zaman tercih edilen yöntem, kimlik doğrulaması gerektiren SMTP bağlantıları kullanmaktır. Exchange Server 2019 ortamınızda varsayılan olarak gelen ve TLS (Transport Layer Security) kullanarak güvenli bağlantıları kabul eden “Client FrontendConnectorü, TCP Port 587 üzerinden çalışır.

Bu bağlayıcının etkin şekilde çalışabilmesi için asgari düzeyde yapılandırma yeterlidir. Exchange Server 2019 ortamınızda SSL sertifikasını yapılandırmış olduğunuzu ve cihazlarınızın veya uygulamalarınızın erişimi için gerekli DNS ayarlarını yapmış olduğunuzu varsayalım (örneğin: mail.cozumpark.com, relay.cozumpark.com gibi). Şimdi, bağlayıcı üzerinde TLS sertifikası adını (TlsCertificateName) ayarlayarak işlemlere devam edeceğiz. Bu adımlar, güvenli e-posta iletişimi için kritik öneme sahiptir ve kimlik doğrulanmış bağlantılar aracılığıyla veri güvenliğini artırmaktadır.

Öncelikle SSL Sertifikamızın thumprint kodunu bulmamız gerekmektedir, bunun için Exchange Management Shell üzerinden “Get-ExchangeCertificate” komutunu kullanmanız yeterli olacaktır.

Get-ExchangeCertificate

Thumbprint                                Services   Subject
----------                                --------   -------
F3D0A4E2578B66E2BB427FAC4C9FD450B7AE34CF ...WS.. CN=mail.cozumpark.com, OU=IT, O=cozumpark Portal,...
5D38258B1645D4A344B12EAB99D2CC25B3B4E5F3 ....S.. CN=Microsoft Exchange Server Auth Certificate
C2B9A4D5E3F67B0CDF7F82ABC337D453F7A4C2E9 IP.WS.. CN=EXCSERVER
8E57DA66CC25DBFAD2D3B5BBC5E4A5F534D5B60D ....... CN=WMSvc-EXCSERVER

TlsCertificateName dizesi, SSL sertifikasının iki öz niteliğini içerir. Bu yüzden aşağıdaki PowerShell komutlarını kullanarak ayarları yapabilirsiniz:

$cert = Get-ExchangeCertificate -Thumbprint F3D0A4E2578B66E2BB427FAC4C9FD450B7AE34CF
 $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
Set-ReceiveConnector "EXCSERVER\Client Frontend EXCSERVER" -Fqdn mail.cozumpark.com -TlsCertificateName $tlscertificatename

Bu yapılandırmayı test etmek için PowerShell‘in Send-MailMessage cmdlet’ini kullanacağım.

$credential = Get-Credential

Sonra mail göndermek için gerekli bilgileri içeren cmdlet’i yazacağım:

Send-MailMessage -SmtpServer mail.cozumpark.com -Credential $credential -From '[email protected]' -To '[email protected]' -Subject 'Test email' -Port 587 -UseSsl

Bu yapılandırma ile Exchange Server 2019 sunucumuzda 587 numaralı port üzerinden dinleyen, kimliği doğrulanmış SMTP bağlantıları kabul eden connectorumuzu başarıyla test etmiş olduk.

Exchange Server 2019’da Connector için Anonymous Yapılandırılması

Belirli IP adreslerinden veya IP aralıklarından anonim olarak e-posta gönderimi yapılmasına olanak sağlayan bir connector oluşturmak için Exchange Server 2019’da Exchange Control Panel (ECP) kullanabiliriz:

  • Exchange Control Panel (ECP) Erişimi:
    • ECP’ye giriş yapın ve sol menüden “mail flow” seçeneğine tıklayın.
    • “receive connectors” sekmesine gidin ve yeni bir connector oluşturmak için “+” butonuna basın.
  • Connector İsimlendirme ve Rol Ayarı:
    • Connector için “IP_Relay” adını verin.
    • “Role” seçeneğini “Frontend Transport” olarak belirleyin.
    • “Type” olarak “Custom” seçeneğini işaretleyin.
  • Network Adapter Bindings:
    • “Network adapter bindings” kısmında, connectorun dinleyeceği IP adresi ve port numarası görülecektir. Varsayılan port “25” olarak geliyor, bu örneğimiz de değişiklik sağlamayacağız.
  • Remote Network Settings:
    • Bu kısımda, varsayılan olarak gelen IP aralığını kaldırın ve anonim SMTP relay için izin vermek istediğiniz özel IP adreslerini veya aralıklarını ekleyin.
    • Ortamdaki diğer Exchange sunucularının IP adreslerini eklemekten kaçının, çünkü bu, sunucular arası iletişimde problemlere yol açabilir.
  • Connector Yapılandırmasını Kaydedin:
    • Tüm ayarları tamamladıktan sonra yapılandırmayı kaydedin.

Exchange Management Shell (EMS) Kullanarak Connector Ayarları:

  • EMS penceresini açın ve anonim kullanıcılar için izinleri ayarlamak üzere aşağıdaki komutları uygulayın:
Set-ReceiveConnector "EXCSERVER\IP_Relay" -PermissionGroups AnonymousUsers

Exchange Server üzerinde ullanıcılara Relay izni vermek için aşağıdaki komutu çalıştırabilirsiniz.

Get-ReceiveConnector “EXCSERVER\IP_Relay” | Add-ADPermission -User ‘NT AUTHORITY\Anonymous Logon’ -ExtendedRights MS-Exch-SMTP-Accept-Any-Recipient

Makalemizde, bir connector için TLS sertifikası yapılandırmasını ele aldık ve TLS/SSL kullanarak Send-MailMessage ile gerçekleştirdiğim test sürecini inceledik.

Relay Güvenliği

Birçok kuruluş, anonim e-posta teslimi için çeşitli IP adreslerinden e-posta gönderebilen connector’lar oluşturur. Bu senaryoyu kendi ortamınıza uyarlarken dikkatli olunmalıdır çünkü göründüğünden daha fazla güvenlik riski içerebilir. İzin verdiğiniz IP adreslerinin güvenilir olduğundan emin olun. Özellikle, IP adresleri DHCP havuzundan otomatik olarak atanıyorsa, veya bir Uzak Masaüstü Hizmetleri (RDS) sunucusu olarak kullanılıyorsa, güvenlik açısından riskler taşıyabilir.

Authentication

Kimlik doğrulama yöntemi, işlemleri karmaşıklaştırabilir ancak bu, daha yüksek güvenlik seviyesi için kabul edilebilir bir zorluktur. Yönetilen cihazlar ve servisler için kullanılan hesap bilgilerini düzenli olarak gözden geçirmek yeterli olacaktır.

Yorum yapın