使用 Postfix 從 Fedora 系統中獲取電子郵件

2019-08-14 10:35:00

交流是非常重要的。你的電腦可能正試圖告訴你一些重要的事情。但是,如果你沒有正確設定郵件傳輸代理(MTA),那麼你可能不會收到通知。Postfix 是一個易於設定且以強大的安全記錄而聞名的 MTA。遵循以下步驟,以確保從本地服務傳送的電子郵件通知將通過 Postfix MTA 路由到你的網際網路電子郵件賬戶中。

安裝軟體包

使用 dnf 來安裝一些必須軟體包(你應該設定了 sudo,對吧?):

$ sudo -i# dnf install postfix mailx

如果以前設定了不同的 MTA,那麼你可能需要將 Postfix 設定為系統預設。使用 alternatives 命令設定系統預設 MTA:

$ sudo alternatives --config mtaThere are 2 programs which provide 'mta'.  Selection    Command*+ 1           /usr/sbin/sendmail.sendmail   2           /usr/sbin/sendmail.postfixEnter to keep the current selection[+], or type selection number: 2

建立一個 password_maps 檔案

你需要建立一個 Postfix 查詢表條目,其中包含你要用於傳送電子郵件賬戶的地址和密碼:

# [email protected]# MY_EMAIL_PASSWORD=abcdefghijklmnop# MY_SMTP_SERVER=smtp.gmail.com# MY_SMTP_SERVER_PORT=587# echo "[$MY_SMTP_SERVER]:$MY_SMTP_SERVER_PORT $MY_EMAIL_ADDRESS:$MY_EMAIL_PASSWORD" >> /etc/postfix/password_maps# chmod 600 /etc/postfix/password_maps# unset MY_EMAIL_PASSWORD# history -c

如果你使用的是 Gmail 賬戶,那麼你需要為 Postfix 設定一個“應用程式密碼”而不是使用你的 Gmail 密碼。有關設定應用程式密碼的說明,參閱“使用應用程式密碼登入”。

接下來,你必須對 Postfix 查詢表執行 postmap 命令,以建立或更新 Postfix 實際使用的檔案的雜湊版本:

# postmap /etc/postfix/password_maps

雜湊後的版本將具有相同的檔名,但字尾為 .db

更新 main.cf 檔案

更新 Postfix 的 main.cf 組態檔,以參照剛剛建立 Postfix 查詢表。編輯該檔案並新增以下行:

relayhost = smtp.gmail.com:587smtp_tls_security_level = verifysmtp_tls_mandatory_ciphers = highsmtp_tls_verify_cert_match = hostnamesmtp_sasl_auth_enable = yessmtp_sasl_security_options = noanonymoussmtp_sasl_password_maps = hash:/etc/postfix/password_maps

這裡假設你使用 Gmail 作為 relayhost 設定,但是你可以用正確的主機名和埠替換系統應該將郵件傳送到的郵件主機。

有關上述設定選項的最新詳細資訊,參考 man 幫助:

$ man postconf.5

啟用、啟動和測試 Postfix

更新 main.cf 檔案後,啟用並啟動 Postfix 服務:

# systemctl enable --now postfix.service

然後,你可以使用 exit 命令或 Ctrl+D 以 root 身份退出 sudo 對談。你現在應該能夠使用 mail 命令測試你的設定:

$ echo 'It worked!' | mail -s "Test: $(date)" [email protected]

更新服務

如果你安裝了像 logwatchmdadmfail2banapcupsdcertwatch 這樣的服務,你現在可以更新它們的設定,以便它們的電子郵件通知轉到你的 Internet 電子郵件地址。

另外,你可能希望將傳送到本地系統 root 賬戶的所有電子郵件都轉到網際網路電子郵件地址中,將以下行新增到系統的 /etc/alises 檔案中(你需要使用 sudo 編輯此檔案,或首先切換到 root 賬戶):

root: [email protected]

現在執行此命令重新讀取別名:

# newaliases
  • 提示: 如果你使用的是 Gmail,那麼你可以在使用者名稱和 @ 符號之間新增字母數位標記,如上所示,以便更輕鬆地識別和過濾從計算機收到的電子郵件。

常用命令

檢視郵件佇列:

$ mailq

清除佇列中的所有電子郵件:

# postsuper -d ALL

過濾設定,以獲得感興趣的值:

$ postconf | grep "^relayhost\|^smtp_"

檢視 postfix/smtp 紀錄檔:

$ journalctl --no-pager -t postfix/smtp

進行設定更改後重新載入 postfix:

$ systemctl reload postfix