備註:
- 本教學課程隨附於 Oracle 提供的免費實驗室環境。
- 此範例使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代成雲端環境的特定值。
瞭解如何在 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
- 產生自行簽署的 TLS 憑證
- 設定 Postfix 以透過 STARTTLS 傳送電子郵件並驗證完整性
- 使用
mailx
傳送測試電子郵件 - 檢閱 Postfix 郵件佇列
必要條件
- 使用 Oracle Linux 8 的任何系統
安裝 Postfix
注意:使用免費實驗室環境時,請參閱 Oracle Linux Lab Basics 以取得連線和其他使用指示。
-
使用套裝軟體管理員在您的執行處理上安裝
postfix
套裝軟體,如下所示:sudo dnf install -y postfix
-
允許透過伺服器防火牆使用 SMTP 流量:
sudo firewall-cmd --zone=public --add-service=smtp --permanent
sudo firewall-cmd --reload
-
如果
sendmail
套裝軟體存在,請加以移除:sudo dnf remove -y sendmail
-
將 Postfix 設為預設的郵件傳輸代理程式 :
sudo alternatives --set mta /usr/sbin/sendmail.postfix
-
啟用並啟動 Postfix 服務:
sudo systemctl enable --now postfix
產生 TLS 憑證
對於此實驗室的目的,產生並使用自行簽署的 TLS 憑證。在生產環境中,Oracle 強烈建議使用由外部「憑證授權機構 (CA)」簽署的 TLS/SSL 憑證。如需詳細資訊,請參閱 https://docs.oracle.com/en/operating-systems/oracle-linux/certmanage/。
-
使用套裝軟體管理員在您的執行處理上安裝
openssl
套裝軟體,如下所示:sudo dnf install -y openssl
-
建立 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"
-
將您的 RSA 私密金鑰複製到
/etc/pki/tls/private
目錄:sudo cp private.key /etc/pki/tls/private/
-
將自行簽署的 X.509 測試憑證複製到
/etc/pki/tls/certs
目錄:sudo cp public.cert /etc/pki/tls/certs/
使用 STARTTLS 設定 Postfix
-
為預設的 Postfix 組態建立備份:
sudo mv /etc/postfix/main.cf /etc/postfix/main.cf.bak
-
編輯組態檔案
/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 手冊。 -
重新啟動 Postfix 服務:
sudo systemctl restart postfix
傳送測試電子郵件
-
安裝
mailx
電子郵件用戶端:sudo dnf install -y mailx
-
傳送測試電子郵件至您的外部電子郵件地址。更新
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
。 -
檢查您自己的電子郵件帳戶,以取得新訊息。您可能需要檢查垃圾郵件資料夾。
-
如果電子郵件未出現,您可以檢查 Postfix 郵件佇列:
sudo mailq
-
您也可以檢查 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。
Learn to Install and Configure Postfix With STARTTLS on Oracle Linux
F47875-07
February 2023
Copyright © 2021, Oracle and/or its affiliates.