備註:

瞭解如何在 Oracle Linux 上使用 STARTTLS 安裝及設定 Postfix

簡介

本教學課程示範如何在 Oracle Linux 系統上安裝並設定 Postfix 電子郵件伺服器軟體,以便您使用 STARTTLS 加密和驗證在您的網路傳送訊息。本教學課程的適用對象是 Oracle Linux 8 或更新版本的使用者。

Postfix 是專為 sendmail 取代而開發的「郵件傳輸代理程式 (MTA)」伺服器,在許多舊的 Linux 系統上都是預設的 MTA 伺服器。由於 Postfix 是以模組化管線為基礎的架構,許多其他服務 (例如垃圾郵件和防毒處理) 也與訊息存放區軟體 (例如 Dovecot IMAP 和 POP 伺服器) 搭配使用,因此 Postfix 在功能上很容易整合。

您應將 Postfix 設定為支援 STARTTLS,透過 SMTP 連線執行 TLS/SSL 驗證與加密。使用 STARTTLS 來協助保護您的通訊的完整性。

本教學課程描述如何設定並設定 Postfix 以主要作為「簡易郵件傳輸協定 (SMTP)」伺服器運作。

目標

實驗室完成時,您將能夠:

必要條件

安裝 Postfix

注意:使用免費實驗室環境時,請參閱 Oracle Linux Lab Basics 以取得連線和其他使用指示。

  1. 使用套裝軟體管理員在您的執行處理上安裝 postfix 套裝軟體,如下所示:

    sudo dnf install -y postfix
    
  2. 允許透過伺服器防火牆使用 SMTP 流量:

    sudo firewall-cmd --zone=public --add-service=smtp --permanent
    
    sudo firewall-cmd --reload
    
  3. 如果 sendmail 套裝軟體存在,請加以移除:

    sudo dnf remove -y sendmail
    
  4. 將 Postfix 設為預設的郵件傳輸代理程式 :

    sudo alternatives --set mta /usr/sbin/sendmail.postfix
    
  5. 啟用並啟動 Postfix 服務:

    sudo systemctl enable --now postfix
    

產生 TLS 憑證

對於此實驗室的目的,產生並使用自行簽署的 TLS 憑證。在生產環境中,Oracle 強烈建議使用由外部「憑證授權機構 (CA)」簽署的 TLS/SSL 憑證。如需詳細資訊,請參閱 https://docs.oracle.com/en/operating-systems/oracle-linux/certmanage/

  1. 使用套裝軟體管理員在您的執行處理上安裝 openssl 套裝軟體,如下所示:

    sudo dnf install -y openssl
    
  2. 建立 RSA 私密金鑰和自行簽署的 X.509 測試憑證:

    hostname=$(hostname -f)
    
    sudo openssl req -new -x509 -days 1 -nodes -newkey rsa:2048 -keyout private.key \
    -out public.cert -subj "/C=US/ST=Ca/L=Sunnydale/CN=$hostname"
    
  3. 將您的 RSA 私密金鑰複製到 /etc/pki/tls/private 目錄:

    sudo cp private.key /etc/pki/tls/private/
    
  4. 將自行簽署的 X.509 測試憑證複製到 /etc/pki/tls/certs 目錄:

    sudo cp public.cert /etc/pki/tls/certs/
    

使用 STARTTLS 設定 Postfix

  1. 為預設的 Postfix 組態建立備份:

    sudo mv /etc/postfix/main.cf /etc/postfix/main.cf.bak
    
  2. 編輯組態檔案 /etc/postfix/main.cf,以包含與下列類似的行:

    sudo tee -a /etc/postfix/main.cf > /dev/null <<EOF
    myhostname = $(hostname -f)
    myorigin = \$myhostname
    inet_interfaces = all
    inet_protocols = all
    mydestination = \$myhostname, localhost
    mynetworks = 192.168.1.0/24, 127.0.0.0/8, 10.0.0.0/24
    home_mailbox = mail/
    # Additional STARTTLS configuration settings
    tls_random_source=dev:/dev/urandom
    # SMTPD TLS configuration for incoming connections
    smtpd_use_tls = yes
    smtpd_tls_cert_file = /etc/pki/tls/certs/public.cert
    smtpd_tls_key_file = /etc/pki/tls/private/private.key
    smtpd_tls_security_level = may
    # SMTP TLS configuration for outgoing connections
    smtp_use_tls = yes
    smtp_tls_cert_file = /etc/pki/tls/certs/public.cert
    smtp_tls_key_file = /etc/pki/tls/private/private.key
    smtp_tls_security_level = may
    EOF
    

    注意:從單一主機傳送電子郵件就此實驗室而言已足夠。在生產環境中,您應將 mydomain 設為您想要傳送電子郵件的已註冊網域名稱。如需詳細資訊,請參閱 Postfix 手冊。

  3. 重新啟動 Postfix 服務:

    sudo systemctl restart postfix
    

傳送測試電子郵件

  1. 安裝 mailx 電子郵件用戶端:

    sudo dnf install -y mailx
    
  2. 傳送測試電子郵件至您的外部電子郵件地址。更新 mailx 命令中的主機名稱,以與傳送電子郵件的執行處理相同:

    hostname=$(hostname -f)
    
    echo "External email" | mailx -r root@$hostname -s "Test email subject" admin@example.com
    

    注意:使用 mailx 從單一主機傳送測試電子郵件,已足夠供此實驗室使用。在生產環境中,您應該改用您在寄件者電子郵件地址內於 /etc/postfix/main.cf 中設定的已註冊網域,例如 root@example.com

  3. 檢查您自己的電子郵件帳戶,以取得新訊息。您可能需要檢查垃圾郵件資料夾。

  4. 如果電子郵件未出現,您可以檢查 Postfix 郵件佇列:

    sudo mailq
    
  5. 您也可以檢查 Postfix 紀錄 。按 Ctrl + C 以結束:

    sudo tail -f /var/log/maillog
    

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或是存取更多免費學習內容至 Oracle Learning YouTube 通道。此外,瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請瀏覽 Oracle Help Center