Exchange SMTP geçişini kullanarak IP adreslerini bulma


Posta göndermek için Exchange SMTP geçişini kullanan şirket içi IP adreslerini bulmak istiyorsunuz. Neden bu bilgiye sahip olmak istiyorsun? En yaygın olarak, bu, bir Exchange Sunucusunun hizmetini kaldırmak istediğiniz ve SMTP geçişi üzerinden çalışan bir posta akışının olmadığını onaylamak istediğiniz zamandır. Her şey ayarlandıysa SMTP geçiş alma konnektörünü devre dışı bırakabilirsiniz. Bu makalede, aramayı nasıl otomatikleştireceğinizi ve SMTP geçişini kullanan IP adreslerini nasıl bulacağınızı öğreneceksiniz.

giriiş

Başlamadan önce, hangi IP adreslerinin Exchange SMTP geçişini kullandığını neden bilmek istediğimizi bilmekte fayda var. Bunun birkaç nedeni şunlardır:

  • SMTP geçişiyle yeni Exchange Sunucusuna geçin

  • Office 365 SMTP geçişine geçin

  • Hangi IP adreslerini kaldırabileceğinizi denetleme

Not: Lütfen SMTP geçişi alma bağlayıcısını hemen kaldırmayın ve Exchange Sunucusunun hizmetini hemen kaldırmayın. Bu büyük bir hata.

Aşağıdaki sırayı öneriyoruz:

  • Exchange SMTP geçişini kullanarak IP adreslerini alma (bu makale)

  • SMTP geçiş alma konnektörünü devre dışı bırak

  • Exchange Server'ı bir hafta veya daha uzun süreyle kapatma

  • Exchange Sunucusunu Hizmetten Çıkarma

SMTP geçiş günlüklerini kontrol edin

Günlüklerde IP adreslerini aramak için bağlayıcıda günlüğe kaydetmeyi etkinleştirmeniz gerekir. Exchange Management Shell'i yönetici olarak çalıştırın. Get-ReceiveConnector cmdlet'ini çalıştırın ve SMTP geçiş alma konnektöründe protokol günlüğünün etkin olup olmadığını kontrol edin.

Örneğimizde, ProtocolLoggingLevel, Kimlik SMTP Aktarımı için Ayrıntılı değerini gösterir. Bu, günlüğe kaydetmenin etkin olduğu anlamına gelir.

[PS] C:\>Get-ReceiveConnector -Server "EX01-2016" | ft Identity,Enabled,TransportRole,Protocol*,Bindings

Identity                                    Enabled     TransportRole ProtocolLoggingLevel Bindings
--------                                    -------     ------------- -------------------- --------
EX01-2016\Default EX01-2016                    True      HubTransport              Verbose {0.0.0.0:2525, [::]:2525}
EX01-2016\Client Proxy EX01-2016               True      HubTransport              Verbose {[::]:465, 0.0.0.0:465}
EX01-2016\Default Frontend EX01-2016           True FrontendTransport              Verbose {[::]:25, 0.0.0.0:25}
EX01-2016\Outbound Proxy Frontend EX01-2016    True FrontendTransport              Verbose {[::]:717, 0.0.0.0:717}
EX01-2016\Client Frontend EX01-2016            True FrontendTransport              Verbose {[::]:587, 0.0.0.0:587}
EX01-2016\SMTP relay                           True FrontendTransport              Verbose {0.0.0.0:25}

Exchange yönetici merkezinde SMTP günlük kaydı durumunu kontrol edebilirsiniz. Posta akışı > bağlayıcıları al'a gidin. Kontrol etmek istediğiniz Exchange Sunucusunu seçin. SMTP geçişi alma konnektörünü seçin ve ayrıntılar bölmesinde Günlüğe Kaydetme - Açık gösterilip gösterilmediğini kontrol edin.

Not: Kuruluşunuzda birden fazla Exchange Sunucunuz varsa, büyük olasılıkla yüksek kullanılabilirlik için birden fazla Exchange Sunucusunda yapılandırılmış bir SMTP geçiş alma bağlayıcınız vardır. SMTP geçişi alma bağlayıcı günlüğünün tüm Exchange Sunucularında etkin olduğundan emin olun.

SMTP günlük kaydı etkinse sonraki adımı atlayın. Değilse, bir sonraki adımda SMTP geçiş alma konnektöründe günlüğe kaydetmeyi etkinleştirin. Büyük ihtimalle FrontendTransport aktarım rolüdür.

SMTP geçiş günlüklerini etkinleştir

[PS] C:\>Get-ReceiveConnector -Identity "EX01-2016\SMTP relay" | Set-ReceiveConnector -ProtocolLogging Verbose

Exchange yönetim merkezinde SMTP geçiş günlüğünü etkinleştirmek istiyor musunuz? SMTP günlüğünü etkinleştirmek için Açık bağlantısındaki ayrıntılar bölmesini tıklayın. Aynısını diğer Exchange Sunucularında da yapın.

SMTP geçişinin bağlayıcı günlüğünü hemen almasını etkinleştirdiyseniz, günlüklerin oluşturulması için birkaç gün veya hafta beklemeniz gerekir. Bu kullanıma bağlıdır.

SMTP geçiş günlüklerini bulun

Exchange yönetici merkezinde Exchange SMTP günlüklerinin yolunu bulmak imkansızdır. Exchange Management Shell'i kullanmamız ve SMTP loglarının nereye yerleştirildiğini bulmamız gerekiyor.

[PS] C:\>Get-FrontendTransportService -Identity "EX01-2016" | fl Name,Identity,Receive*


Name                               : EX01-2016
Identity                           : Frontend
ReceiveProtocolLogMaxAge           : 30.00:00:00
ReceiveProtocolLogMaxDirectorySize : 250 MB (262,144,000 bytes)
ReceiveProtocolLogMaxFileSize      : 10 MB (10,485,760 bytes)
ReceiveProtocolLogPath             : C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive

ReceiveProtocolLogPath'i kopyalayın ve Windows Gezgini'ne yapıştırın.

Bir sonraki adımda tüm logları tarayıp IP adreslerini filtrelemek için PowerShell scriptini hazırlayacağız.

Devamını oku: Exchange alma bağlayıcı günlüğü kaydı »

SMTP-İnceleme PowerShell betiğini hazırlayın

Exchange Server (C:) sürücüsünde iki klasör oluşturun:

  • Sıcaklık

  • Kodlar

SMTP-Review.ps1 PowerShell betiğini indirin ve C:\scripts klasörüne yerleştirin. Komut dosyası, metin dosyasını C:\temp klasörüne aktaracaktır.

Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona SMTP-Review.ps1 adını verin ve C:\scripts klasörüne yerleştirin.

<#
    .SYNOPSIS
    SMTP-Review.ps1

    .DESCRIPTION
    Script is intended to help determine servers that are using an Exchange server to connect and send email.
    This is especially pertinent in a decommission scenario, where the logs are to be checked to ensure that
    all SMTP traffic has been moved to the correct endpoint.

    .LINK
    www.alitajran.com/find-ip-addresses-using-exchange-smtp-relay

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 04/05/2021 - Initial version
    V2.00, 03/28/2023 - Rewrite script to retrieve results faster
#>

# Clears the host console to make it easier to read output
Clear-Host

# Sets the path to the directory containing the log files to be processed
$logFilePath = "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive\*.log"

# Sets the path to the output file that will contain the unique IP addresses
$Output = "C:\temp\IPAddresses.txt"

# Gets a list of the log files in the specified directory
$logFiles = Get-ChildItem $logFilePath

# Gets the number of log files to be processed
$count = $logFiles.Count

# Initializes an array to store the unique IP addresses
$ips = foreach ($log in $logFiles) {

    # Displays progress information
    $percentComplete = [int](($logFiles.IndexOf($log) + 1) / $count * 100)
    $status = "Processing $($log.FullName) - $percentComplete% complete ($($logFiles.IndexOf($log)+1) of $count)"
    Write-Progress -Activity "Collecting Log details" -Status $status -PercentComplete $percentComplete

    # Displays the name of the log file being processed
    Write-Host "Processing Log File $($log.FullName)" -ForegroundColor Magenta

    # Reads the content of the log file, skipping the first five lines
    $fileContent = Get-Content $log | Select-Object -Skip 5

    # Loops through each line in the log file
    foreach ($line in $fileContent) {

        # Extracts the IP address from the socket information in the log line
        $socket = $line.Split(',')[5]
        $ip = $socket.Split(':')[0]
        
        # Adds the IP address to the $ips array
        $ip
    }
}

# Removes duplicate IP addresses from the $ips array and sorts them alphabetically
$uniqueIps = $ips | Select-Object -Unique | Sort-Object

# Displays the list of unique IP addresses on the console
Write-Host "List of noted remove IPs:" 
$uniqueIps
Write-Host 

# Writes the list of unique IP addresses to the output file
$uniqueIps | Out-File $Output

Dosya Gezgini'nde bu şekilde görünüyor.

Satır 27'de, önceki adımda aradığınız alma protokolü günlüğü yolunun yolunu değiştirin.

Örneğimizde şu şekilde görünüyor:

$LogFilePath = "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive\*.log"

SMTP-İnceleme PowerShell betiğini çalıştır

PowerShell'i yönetici olarak çalıştırın ve SMTP-Review.ps1 PowerShell betiğini çalıştırın.

Not: Üzerinde yapılandırılmış bir SMTP geçişi varsa, komut dosyasını tüm Exchange Sunucularında çalıştırın. Örneğin Exchange Server EX01-2016 ve EX02-2016.

PS C:\> cd C:\scripts
PS C:\scripts> .\SMTP-Review.ps1

Komut dosyası tüm dosyaları inceleyecek ve tamamlandıktan sonra konsol çıkışında hangi IP adreslerinin SMTP geçişini kullandığını göreceksiniz. Ayrıca, C:\temp klasöründeki IP adreslerini içeren bir IPAddresses.txt dosyası oluşturacaktır.

IP adreslerini not edin ve yazıcılar, uygulamalar ve sunuculardaki SMTP alanını yeni SMTP geçiş kaydına göre ayarlayın.

İlginizi çekebilecek diğer makaleler:

  • Uzak IP adreslerini Exchange alma bağlayıcısına aktarma

  • Uzak IP adreslerini Exchange alma bağlayıcısına aktarın

  • Alma bağlayıcısını başka bir Exchange Sunucusuna kopyalama

Çözüm

Exchange SMTP geçişini kullanarak IP adreslerini nasıl bulacağınızı öğrendiniz. SMTP geçiş alma konektöründe günlüğe kaydetmeyi etkinleştirin ve başlamadan önce günlük yolunu kopyalayın. SMTP-Review.ps1 PowerShell betiğini çalıştırın ve SMTP alma günlükleri üzerinden çalışmasına izin verin. Komut dosyasını, SMTP geçiş alma bağlayıcısı yapılandırılmış olan tüm Exchange Sunucularında çalıştırmayı unutmayın.

Betik bittiğinde belirtilen IP adreslerindeki SMTP kayıtlarını ayarlayın. Komut dosyasını kullanmanın bir başka mükemmel yolu da hangi IP adreslerinin eski olduğunu bilmek ve bunları alma bağlayıcısı IP adresleri listesinden silmektir.

Bu makaleyi beğendiniz mi? Ayrıca Microsoft Exchange Server güvenlik açığı kontrolünü de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler