將Postfix配置為在Ubuntu 20.04上使用Gmail SMTP

歡迎來到我們的教程,該教程如何配置Postfix在Ubuntu 20.04上使用Gmail SMTP中繼郵件。 後綴 是一個免費的開源郵件傳輸代理,可以路由和傳遞電子郵件。可以將Postfix MTA配置為通過外部SMTP服務器(例如Gmail SMTP服務器)中繼郵件,以實現可靠的郵件傳遞。

將Postfix配置為在Ubuntu 20.04上使用Gmail SMTP

在Ubuntu 20.04上安裝Postfix

您可以通過安裝 postfix 包裝本身或通過 mailutils 隨它一起安裝的軟件包。

apt install postfix

要麼

apt install mailutils

在安裝過程中,系統將提示您提供一些配置Postfix所需的信息。

選擇郵件服務器類型

選擇最適合您的環境需求的郵件服務器類型配置。為您提供了多種選擇。

  • No configuration:應選擇保留當前配置不變。
  • Internet site:直接使用SMTP發送和接收郵件。
  • Internet with smarthost:直接使用SMTP或運行實用程序(例如fetchmail)來接收郵件。外發郵件是使用smarthost發送的。
  • Satellite system:所有郵件都發送到另一台稱為“ smarthost”的機器上進行傳遞。
  • Local only:唯一傳遞的郵件是本地用戶的郵件。沒有網絡。

選擇 Internet Site 啟用Postfix發送和接收郵件,然後按Enter繼續。

設置系統郵件名稱

mail name 是用於“限定”沒有域名的_ALL_郵件地址的域名,例如, kifarunix-demo.com,就我們而言。

將Postfix配置為在Ubuntu 20.04上使用Gmail SMTP

您始終可以通過執行以下命令在安裝後通過重新配置後綴來重置這些設置。

dpkg-reconfigure postfix

將Postfix配置為在Ubuntu 20.04上使用Gmail SMTP

現在使用默認配置設置了Postfix。要進行進一步的配置更改,請編輯主Postfix配置文件, /etc/postfix/main.cf 並根據需要進行任何必要的更改。

您可以使用postconf命令查看Postfix配置值。

postconf

設置Postfix中繼服務器

可以將Postfix配置為通過中繼主機間接傳遞郵件。中繼主機可以使用以下命令在Postfix配置文件中定義: relayhost 參數。

默認情況下, relayhost 參數是 空的。此配置Postfix試圖將郵件直接傳遞到Internet,這通常是不希望的。

根據 後綴配置,可以為relayhost參數設置不同的值;

  • 在Intranet上,您可以指定組織域名。如果內部DNS不使用MX記錄,請改為指定Intranet網關主機的名稱。
  • 如果是SMTP或LMTP交付,請以域名,主機名,主機名:端口, [hostname]:港口, [hostaddress] 要麼 [hostaddress]:port,用逗號或空格分隔。表格 [hostname] 關閉MX查找。

在本例中,我們將Postfix中繼設置為Gmail SMTP服務器。因此,打開Postfix主配置文件。

vim /etc/postfix/main.cf

找到線, relayhost =,並將其值設置為Gmail SMTP域名,如下所示;

...
mydestination = $myhostname, kifarunix-demo.com, ubuntu20, localhost.localdomain, localhost
relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
...

配置Postfix SASL身份驗證

根據 後綴

  • SMTP服務器需要確定SMTP客戶端是否有權將郵件發送到遠程目標,或僅發送到服務器本身負責的目標。
  • 通常,當客戶端的IP地址與服務器的IP地址位於“相同的網絡”中時,SMTP服務器會接受到遠程目標的郵件。
  • SMTP服務器網絡外部的SMTP客戶端需要一種不同的方式來獲得“相同網絡”特權。為了滿足此需求,Postfix支持SASL身份驗證。這樣,遠程SMTP客戶端可以向Postfix SMTP服務器進行身份驗證,而Postfix SMTP客戶端可以向遠程SMTP服務器進行身份驗證。
  • 客戶端通過身份驗證後,服務器即可為其授予“相同網絡”特權。

要啟用SASL服務器身份驗證,您需要:

  • 通過設置的值啟用SMTP客戶端身份驗證 smtp_sasl_auth_enableyessmtp_sasl_auth_enable = yes
  • 配置Postfix SMTP客戶端以將用戶名和密碼信息發送到郵件網關服務器。這可以通過定義以下路徑來完成: sasl_passwd 作為使用 smtp_sasl_password_maps 參數。smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
  • 對傳出SMTP強制執行STARTTLS加密,以確保與遠程SMTP服務器的連接將使用 smtp_tls_security_level 參數。smtp_tls_security_level = encrypt
  • 定義Postfix SMTP客戶端SASL安全選項。這是零個或多個以下選項;
    • noplaintext: 禁止使用純文本密碼的方法。
    • 不活躍:禁止遭受主動(非詞典)攻擊的方法。
    • 虛構的:禁止遭受被動(詞典)攻擊的方法。
    • 匿名的:禁止允許匿名身份驗證的方法。
    • 相互認證:僅允許提供相互認證的方法。smtp_sasl_security_options = noanonymous

這些配置可以在Postfix配置文件(查看突出顯示的行);

...
relayhost = [smtp.gmail.com]:587
...
#
...
smtp_tls_CApath=/etc/ssl/certs
#smtp_tls_security_level=may
smtp_tls_security_level=encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
...
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

保存並退出配置文件。

設置SMTP SASL憑據

根據上述配置,SASL憑證數據庫文件設置為 /etc/postfix/sasl_passwd

您應該使用以下格式定義SMTP憑據:

# destination                   credentials
[smtp.domain.name]              username:password

如下所示;

vim /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 [email protected]:password

更換 [email protected]password 使用您的Gmail帳戶憑據。

注意:

  • 如果您指定“[”和“]“ 在裡面 relayhost 目的地,您還必須在 smtp_sasl_password_maps 文件。
  • 如果您指定了非默認的TCP端口(例如“:submission“ 要麼 ”:587“) 在裡面 relayhost 目的地,您還必須在 smtp_sasl_password_maps 文件。

保護SASL密碼文件

憑據以純文本設置。為了保護其他用戶對文件的訪問,請僅對文件進行讀寫操作 root

chown root:root /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd

創建SASL密碼數據庫文件

Postfix要求 sasl_passwd 文件作為數據庫,以便可以更快地讀取它。採用 postmap 命令將文件轉換為數據庫, sasl_passwd.db

postmap /etc/postfix/sasl_passwd

這將為數據庫文件分配與上述sasl_passwd文件相同的所有權和權限。

ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root 53 Jun 1 13:57 /etc/postfix/sasl_passwd
-rw------- 1 root root 12288 Jun 1 14:06 /etc/postfix/sasl_passwd.db

檢查Postfix配置

跑過 postfix check 命令以檢查Postfix配置是否存在任何錯誤。任何錯誤都應在輸出上打印。

postfix check

您可以忽略警告, postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out

重新啟動Postfix

systemctl restart postfix

檢查狀態;

systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2020-06-01 14:11:55 UTC; 5s ago
    Process: 7507 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 7507 (code=exited, status=0/SUCCESS)

Jun 01 14:11:55 ubuntu20 systemd[1]: Starting Postfix Mail Transport Agent...
Jun 01 14:11:55 ubuntu20 systemd[1]: Finished Postfix Mail Transport Agent.

發送測試郵件以驗證Postfix Gmail SMTP中繼

完成配置後,您可以嘗試發送測試郵件以驗證Gmail SMTP中繼能否正常運行。您可以為此目的使用郵件客戶端或任何其他客戶端。

echo "Test Postfix Gmail SMTP Relay" | mail -s "Postfix Gmail SMTP Relay" [email protected]

您可以跟蹤日誌以檢查交付狀態;

tail /var/log/mail.log

如果得到錯誤;

...status=deferred (SASL authentication failed; server smtp.gmail.com[74.125.133.108] said: 535-5.7.8 Username and Password not accepted.

您需要登錄到用於SASL身份驗證的帳戶並啟用 安全性較低的應用程序訪問

將Postfix配置為在Ubuntu 20.04上使用Gmail SMTP

之後,重試發送測試郵件並檢查日誌和歡呼聲,我們的測試郵件已送達, 狀態=已發送

...
Jun 1 14:22:42 ubuntu20 postfix/smtp[7650]: 6892D40186: to=[email protected], relay=smtp.gmail.com[173.194.76.109]:587, delay=4.8, delays=0.35/0.03/3.6/0.8, dsn=2.0.0, status=sent (250 2.0.0 OK 1591021361 k12sm19227410wrn.42 - gsmtp)
...

這標誌着我們指南的結尾,說明了如何在Ubuntu 20.04上安裝和配置Postfix以使用Gmail SMTP中繼主機。請享用。

閱讀有關Postfix配置的更多信息;

Postfix基本配置

Sidebar