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 Frontend” Connectorü, 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.