2025年7月17日 星期四

Mapleboard MP510-50 測試 (三十二) : 安裝 postfix 與 mailutils

在前一篇測試中已完成入侵偵測與監控軟體 Fail2ban 的設定, 但如果要知道封鎖了多少入侵企圖與封鎖了那些 IP 必須登入系統用指令去查看, 如果能將監控資訊寄送的 Email 就方便多了. 但是在 jail.local 監控規則中納入 email 參數之前必須先讓主機具備寄送 email 功能. 

在 Linux 系統中寄送 email 通常使用 postfix + mailutils 組合 :
  • Postfix :
    一個郵件傳送代理 (MTA) 軟體, 負責在底層處理郵件的實際寄送任務, 將系統或程式產生的郵件發送到收件人的郵件伺服器 (Postfix 支援送收信功能, 但它的基本功能是寄信, 若要收信還需搭配安裝郵件投遞代理 軟體 MDA 才行). 
  • mailutils :
    一組郵件工具函式庫, 提供多種郵件相關指令 (例如寄信的 mail 指令), 讓使用者能在命令列環境中用 shell 指令撰寫與送收郵件. 它本身不會直接傳送郵件, 而是呼叫系統中的 MTA (例如 Postfix) 來完成郵件寄送. 
總之兩者就是上層 (mailutils) 與下層 (postfix) 的協作關係.  

但我在安裝 mailutils 時卻碰壁, 原因是以前安裝 Anydesk 時指定了錯誤的 CPU 核心架構 (Mapleboard 是 arm64, 但卻錯誤地新增了 amd64 架構),  事後沒有清除掉, 導致更新套件時找錯套件庫, 無法下載 arm64 架構所需套件, 本篇旨在紀錄我透過 AI 協助排除障礙後順利安裝這兩個軟體的過程. 

本系列全部的測試紀錄參考 :



1. 更新套件清單 :   

此指令用來更新系統的套件資料庫 : 

tony1966@LX2438:~$ sudo apt update   
下載:1 https://packages.microsoft.com/repos/code stable InRelease [3,590 B]
下載:2 https://packages.microsoft.com/repos/code stable/main amd64 Packages [20.5 kB]
下載:3 https://packages.microsoft.com/repos/code stable/main arm64 Packages [20.5 kB]
下載:4 https://packages.microsoft.com/repos/code stable/main armhf Packages [20.6 kB]
下載:5 http://ports.ubuntu.com/ubuntu-ports jammy InRelease [270 kB]
下載:6 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [128 kB]
下載:7 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [129 kB]
下載:8 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease [127 kB]
略過:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages
下載:10 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 Packages [1,369 kB]
下載:11 http://ports.ubuntu.com/ubuntu-ports jammy/main armhf Packages [1,323 kB]
下載:12 http://ports.ubuntu.com/ubuntu-ports jammy/main Translation-en [510 kB]
下載:13 http://ports.ubuntu.com/ubuntu-ports jammy/main Translation-zh_TW [58.4 kB]
下載:14 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 c-n-f Metadata [29.8 kB]
下載:15 http://ports.ubuntu.com/ubuntu-ports jammy/restricted arm64 Packages [19.6 kB]
下載:16 http://ports.ubuntu.com/ubuntu-ports jammy/restricted armhf Packages [10.9 kB]
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages
下載:18 http://ports.ubuntu.com/ubuntu-ports jammy/restricted Translation-zh_TW [708 B]
下載:19 http://ports.ubuntu.com/ubuntu-ports jammy/restricted Translation-en [18.6 kB]
下載:20 http://ports.ubuntu.com/ubuntu-ports jammy/restricted arm64 c-n-f Metadata [372 B]
下載:21 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 Packages [13.9 MB]
下載:22 http://ports.ubuntu.com/ubuntu-ports jammy/universe armhf Packages [13.5 MB]                                                                 
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
下載:24 http://ports.ubuntu.com/ubuntu-ports jammy/universe Translation-en [5,652 kB]                                                                
下載:25 http://ports.ubuntu.com/ubuntu-ports jammy/universe Translation-zh_TW [42.0 kB]                                                              
下載:26 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 c-n-f Metadata [277 kB]                                                            
下載:27 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse arm64 Packages [184 kB]                                                                
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
下載:29 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse armhf Packages [164 kB]                                                                
下載:30 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse Translation-zh_TW [3,960 B]                                                            
下載:31 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse Translation-en [112 kB]                                                                
下載:32 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse arm64 c-n-f Metadata [7,064 B]                                                         
略過:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
下載:34 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages [2,526 kB]                                                            
下載:35 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main armhf Packages [1,181 kB]                                                            
下載:36 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main Translation-en [437 kB]                                                              
下載:37 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 c-n-f Metadata [18.2 kB]                                                       
下載:38 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted arm64 Packages [3,585 kB]                                                      
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
下載:40 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted armhf Packages [18.5 kB]                                                       
下載:41 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted Translation-en [725 kB]                                                        
下載:42 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted arm64 c-n-f Metadata [524 B]                                                   
下載:43 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe armhf Packages [951 kB]                                                          
下載:44 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 Packages [1,215 kB]                                                        
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
下載:46 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe Translation-en [302 kB]                                                          
下載:47 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 c-n-f Metadata [25.6 kB]                                                   
下載:48 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse armhf Packages [6,180 B]                                                       
下載:49 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse arm64 Packages [40.4 kB]                                                       
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
下載:51 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse Translation-en [14.2 kB]                                                       
下載:52 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse arm64 c-n-f Metadata [320 B]                                                   
略過:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages                                                                                
略過:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
下載:54 http://ports.ubuntu.com/ubuntu-ports jammy-security/main armhf Packages [956 kB]                                                             
下載:55 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages [2,255 kB]                                                           
下載:56 http://ports.ubuntu.com/ubuntu-ports jammy-security/main Translation-en [370 kB]                                                             
下載:57 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 c-n-f Metadata [13.2 kB]                                                      
下載:58 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 Packages [3,314 kB]                                                     
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
下載:60 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted armhf Packages [16.3 kB]                                                      
下載:61 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted Translation-en [677 kB]                                                       
下載:62 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 c-n-f Metadata [472 B]                                                  
下載:63 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe arm64 Packages [987 kB]                                                         
下載:64 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe armhf Packages [730 kB]                                                         
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
下載:66 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe Translation-en [214 kB]                                                         
下載:67 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe arm64 c-n-f Metadata [19.0 kB]                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
下載:69 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse armhf Packages [2,864 B]                                                      
下載:70 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 Packages [22.8 kB]                                                      
下載:71 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse Translation-en [8,908 B]                                                      
下載:72 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 c-n-f Metadata [280 B]                                                  
略過:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
下載:74 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main arm64 Packages [68.5 kB]                                                           
下載:75 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main armhf Packages [68.4 kB]                                                           
下載:76 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main Translation-en [11.4 kB]                                                           
下載:77 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main arm64 c-n-f Metadata [392 B]                                                       
下載:78 http://ports.ubuntu.com/ubuntu-ports jammy-backports/restricted arm64 c-n-f Metadata [116 B]                                                 
下載:79 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe arm64 Packages [28.4 kB]                                                       
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
下載:81 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe armhf Packages [28.4 kB]                                                       
下載:82 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe Translation-en [16.5 kB]                                                       
下載:83 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe arm64 c-n-f Metadata [600 B]                                                   
下載:84 http://ports.ubuntu.com/ubuntu-ports jammy-backports/multiverse arm64 c-n-f Metadata [116 B]                                                 
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages                                                                         
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
略過:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
略過:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages                                                                                
略過:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
略過:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages                                                                         
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
略過:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
略過:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages                                                                                
略過:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
略過:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages                                                                         
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
略過:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
略過:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages                                                                                
略過:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
略過:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages                                                                         
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
略過:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
錯誤:9 http://ports.ubuntu.com/ubuntu-ports jammy/main amd64 Packages                                                                                
  404  Not Found [IP: 91.189.91.104 80]
略過:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
略過:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
略過:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted amd64 Packages                                                                         
略過:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe amd64 Packages                                                                           
略過:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse amd64 Packages                                                                         
錯誤:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main amd64 Packages                                                                       
  404  Not Found [IP: 91.189.91.104 80]
略過:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted amd64 Packages                                                                 
略過:45 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe amd64 Packages                                                                   
略過:50 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse amd64 Packages                                                                 
錯誤:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/main amd64 Packages                                                                      
  404  Not Found [IP: 91.189.91.104 80]
略過:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted amd64 Packages                                                                
略過:65 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe amd64 Packages                                                                  
略過:68 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse amd64 Packages                                                                
錯誤:73 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main amd64 Packages                                                                     
  404  Not Found [IP: 91.189.91.104 80]
略過:80 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe amd64 Packages                                                                 
取得 58.8 MB 用了 15s (3,808 kB/s)                                                                                                                   
正在讀取套件清單... 完成
E: 無法取得 http://ports.ubuntu.com/ubuntu-ports/dists/jammy/main/binary-amd64/Packages,404  Not Found [IP: 91.189.91.104 80]
E: 無法取得 http://ports.ubuntu.com/ubuntu-ports/dists/jammy-updates/main/binary-amd64/Packages,404  Not Found [IP: 91.189.91.104 80]
E: 無法取得 http://ports.ubuntu.com/ubuntu-ports/dists/jammy-security/main/binary-amd64/Packages,404  Not Found [IP: 91.189.91.104 80]
E: 無法取得 http://ports.ubuntu.com/ubuntu-ports/dists/jammy-backports/main/binary-amd64/Packages,404  Not Found [IP: 91.189.91.104 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.

注意上面的 404 部分, 這是安裝 mailutils 時無法下載套件而失敗的原因. 


2. 安裝 postfix 與 mailutils :   

這兩個軟體可以一起用 apt install 安裝 : 

tony1966@LX2438:~$ sudo apt install postfix mailutils    
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
下列的額外套件將被安裝:
  gsasl-common guile-3.0-libs libgsasl7 libmailutils8 libmysqlclient21 libntlm0 libpq5 mailutils-common mysql-common
建議套件:
  mailutils-mh mailutils-doc procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin | dovecot-common
  resolvconf postfix-cdb postfix-mta-sts-resolver postfix-doc
下列【新】套件將會被安裝:
  gsasl-common guile-3.0-libs libgsasl7 libmailutils8 libmysqlclient21 libntlm0 libpq5 mailutils mailutils-common mysql-common postfix
升級 0 個,新安裝 11 個,移除 0 個,有 10 個未被升級。
需要下載 11.4 MB 的套件檔。
此操作完成之後,會多佔用 69.9 MB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] Y
下載:1 http://ports.ubuntu.com jammy-security/main arm64 postfix arm64 3.6.4-1ubuntu1.3 [1,237 kB]
下載:2 http://ports.ubuntu.com jammy/universe arm64 gsasl-common all 1.10.0-5 [59.8 kB]
下載:3 http://ports.ubuntu.com jammy/universe arm64 guile-3.0-libs arm64 3.0.7-1 [7,539 kB]
下載:4 http://ports.ubuntu.com jammy/universe arm64 libntlm0 arm64 1.6-4 [74.0 kB]
下載:5 http://ports.ubuntu.com jammy/universe arm64 libgsasl7 arm64 1.10.0-5 [69.9 kB]
下載:6 http://ports.ubuntu.com jammy/universe arm64 mailutils-common all 1:3.14-1 [382 kB]
下載:7 http://ports.ubuntu.com jammy/main arm64 mysql-common all 5.8+1.0.8 [7,212 B]
略過:8 http://ports.ubuntu.com jammy-security/main arm64 libmysqlclient21 arm64 8.0.37-0ubuntu0.22.04.3
略過:9 http://ports.ubuntu.com jammy-security/main arm64 libpq5 arm64 14.12-0ubuntu0.22.04.1
下載:10 http://ports.ubuntu.com jammy/universe arm64 libmailutils8 arm64 1:3.14-1 [490 kB]
下載:11 http://ports.ubuntu.com jammy/universe arm64 mailutils arm64 1:3.14-1 [123 kB]
錯誤:8 http://ports.ubuntu.com jammy-security/main arm64 libmysqlclient21 arm64 8.0.37-0ubuntu0.22.04.3
  404  Not Found [IP: 2620:2d:4000:1::19 80]
錯誤:9 http://ports.ubuntu.com jammy-security/main arm64 libpq5 arm64 14.12-0ubuntu0.22.04.1                                                         
  404  Not Found [IP: 2620:2d:4000:1::19 80]
取得 9,981 kB 用了 6s (1,591 kB/s)                                                                                                                   
E: 無法取得 http://ports.ubuntu.com/pool/main/m/mysql-8.0/libmysqlclient21_8.0.37-0ubuntu0.22.04.3_arm64.deb,404  Not Found [IP: 2620:2d:4000:1::19 80]
E: 無法取得 http://ports.ubuntu.com/pool/main/p/postgresql-14/libpq5_14.12-0ubuntu0.22.04.1_arm64.deb,404  Not Found [IP: 2620:2d:4000:1::19 80]
E: 有部份套件檔無法取得,試著執行 apt-get update 或者試著加上 --fix-missing 選項?

安裝過程顯示 postfix 有被安裝, 途中會跳出設定視窗要求選擇選擇郵件系統類型與輸入系統郵件名稱 (也可以之後用 sudo dpkg-reconfigure postfix 指令進行完整設定) : 
  • 郵件系統類型 : 要選擇 "Internet Site"
  • 系統郵件名稱 : 輸入主機名稱或網域, 例如 tony1966.cc
先按 Tab 鍵移動熱點到 "確定" 鈕時按 Enter : 
 



點選 Internet Site 按 Tab 鍵移動熱點到 "確定" 鈕時按 Enter : 




在 System name 框內輸入主機域名 tony1966.cc, 按 Tab 鍵移動熱點到 "確定" 鈕時按 Enter : 




但是另一個工具包 mailutils 卻因為有部份套件檔無法取得而沒有安裝, 也就是出現 404 錯誤的部分, 具體而言是缺了 libmysqlclient21 與 libpq5 這兩個套件. 

我依照提示使用 sudo apt install postfix mailutils --fix-missing 指令安裝結果還是一樣不行. 詢問 ChatGPT 原因, 它叫我檢視 /etc/apt/sources.list 內容 : 

tony1966@LX2438:~$ cat /etc/apt/sources.list   
deb http://ports.ubuntu.com/ jammy main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy main restricted universe multiverse
deb http://ports.ubuntu.com/ jammy-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-security main restricted universe multiverse
deb http://ports.ubuntu.com/ jammy-updates main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ jammy-backports main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-backports main restricted universe multiverse

AI 建議在 http://ports.ubuntu.com/ 後面添加 ubuntu-ports 子目錄, 因為 ARM 架構的官方軟體庫都存放在 ubuntu-ports 路徑下, 於是我用 nano 將它改成 : 

tony1966@LX2438:~$ cat /etc/apt/sources.list 
deb http://ports.ubuntu.com/ubuntu-ports jammy main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse

但再次下載安裝還是不行. 

於是我改問 perplexity, 它跟 ChatGPT 一樣也是叫我更新清單重新安裝 : 

tony1966@LX2438:~$ sudo apt clean   
tony1966@LX2438:~$ sudo rm -rf /var/lib/apt/lists/*   
tony1966@LX2438:~$ sudo apt update  

同樣無效, 但是審視我貼上去的 sources.list 覺得路徑完整沒問題, 是正確的 Ubuntu 22.04 ARM64 官方 ports 軟體庫, 但要求我確認系統架構和平台資訊, 因為它懷疑有版本不合或架構誤判可能 (這真的厲害, 有聯想思考能力) : 

"你的系統更新出現大量 404 Not Found 錯誤,是因為你的 /etc/apt/sources.list 指向的官方 Ubuntu 伺服器對 amd64 架構的套件路徑不存在,但你的系統主架構是 arm64。APT 嘗試下載 amd64 架構的套件導致失敗。"

Perplexity 要求我下三個指令回報給它判斷 : 

tony1966@LX2438:~$ dpkg --print-architecture   
arm64
tony1966@LX2438:~$ dpkg --print-foreign-architectures
armhf
amd64
tony1966@LX2438:~$ uname -m   
aarch64

第一個指令是顯示當前系統的架構類型, 回應 arm64 表示 CPU 是 64 位元的 ARM 架構 (若顯示 amd64 表示 64 位元的 x86 架構; i386 表示 32 位元的 x86 架構); 第二個指令用來顯示目前系統中已註冊的外部架構 (foreign architectures), 這些外部架構可以用下列指令添加 :

sudo dpkg --add-architecture amd64  

第三個指令 uname -m 用來顯示系統的硬體架構類型, aarch64 表示 CPU 為 64 位元的 ARM 架構, 與 arm64 意思一樣. Perplexity 根據此三指令之回應研判問題就是出在 amd64 這個外部架構, 只要移除 amd64 架構應該就可以解決此問題 (至於 armhf 則無妨可保留) : 

"你的系統可能之前加入了 amd64 架構(可用 dpkg --print-foreign-architectures 觀看),APT 嘗試同步 amd64,找不到對應檔案就報 404。移除系統不需要且不存在相應套件來源的 amd64 架構,可以解決 apt 更新時出現的大量 404 錯誤,自然也能讓系統找到 mailutils 等套件並安裝成功。"

用下列指令刪除 amd64 架構 :

tony1966@LX2438:~$ sudo dpkg --remove-architecture amd64   
tony1966@LX2438:~$ dpkg --print-foreign-architectures   
armhf

這樣再次更新套件清單就不會出現 404 錯誤了 :

tony1966@LX2438:~$ sudo apt clean   
tony1966@LX2438:~$ sudo rm -rf /var/lib/apt/lists/*   
tony1966@LX2438:~$ sudo apt update 
下載:1 https://packages.microsoft.com/repos/code stable InRelease [3,590 B]
下載:2 http://ports.ubuntu.com/ubuntu-ports jammy InRelease [270 kB]                  
下載:3 https://packages.microsoft.com/repos/code stable/main amd64 Packages [20.5 kB]
下載:4 https://packages.microsoft.com/repos/code stable/main arm64 Packages [20.5 kB]
下載:5 https://packages.microsoft.com/repos/code stable/main armhf Packages [20.6 kB]
下載:6 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [128 kB]                
下載:7 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [129 kB]
下載:8 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease [127 kB]
下載:9 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 Packages [1,369 kB]
下載:10 http://ports.ubuntu.com/ubuntu-ports jammy/main armhf Packages [1,323 kB]
下載:11 http://ports.ubuntu.com/ubuntu-ports jammy/main Translation-en [510 kB]
下載:12 http://ports.ubuntu.com/ubuntu-ports jammy/main Translation-zh_TW [58.4 kB]
下載:13 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 c-n-f Metadata [29.8 kB]
下載:14 http://ports.ubuntu.com/ubuntu-ports jammy/restricted armhf Packages [10.9 kB]
下載:15 http://ports.ubuntu.com/ubuntu-ports jammy/restricted arm64 Packages [19.6 kB]
下載:16 http://ports.ubuntu.com/ubuntu-ports jammy/restricted Translation-zh_TW [708 B]
下載:17 http://ports.ubuntu.com/ubuntu-ports jammy/restricted Translation-en [18.6 kB]
下載:18 http://ports.ubuntu.com/ubuntu-ports jammy/restricted arm64 c-n-f Metadata [372 B]
下載:19 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 Packages [13.9 MB]
下載:20 http://ports.ubuntu.com/ubuntu-ports jammy/universe armhf Packages [13.5 MB]                                                                 
下載:21 http://ports.ubuntu.com/ubuntu-ports jammy/universe Translation-en [5,652 kB]                                                                
下載:22 http://ports.ubuntu.com/ubuntu-ports jammy/universe Translation-zh_TW [42.0 kB]                                                              
下載:23 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 c-n-f Metadata [277 kB]                                                            
下載:24 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse arm64 Packages [184 kB]                                                                
下載:25 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse armhf Packages [164 kB]                                                                
下載:26 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse Translation-en [112 kB]                                                                
下載:27 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse Translation-zh_TW [3,960 B]                                                            
下載:28 http://ports.ubuntu.com/ubuntu-ports jammy/multiverse arm64 c-n-f Metadata [7,064 B]                                                         
下載:29 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages [2,526 kB]                                                            
下載:30 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main armhf Packages [1,181 kB]                                                            
下載:31 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main Translation-en [437 kB]                                                              
下載:32 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 c-n-f Metadata [18.2 kB]                                                       
下載:33 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted armhf Packages [18.5 kB]                                                       
下載:34 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted arm64 Packages [3,585 kB]                                                      
下載:35 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted Translation-en [725 kB]                                                        
下載:36 http://ports.ubuntu.com/ubuntu-ports jammy-updates/restricted arm64 c-n-f Metadata [524 B]                                                   
下載:37 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 Packages [1,215 kB]                                                        
下載:38 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe armhf Packages [951 kB]                                                          
下載:39 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe Translation-en [302 kB]                                                          
下載:40 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 c-n-f Metadata [25.6 kB]                                                   
下載:41 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse arm64 Packages [40.4 kB]                                                       
下載:42 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse armhf Packages [6,180 B]                                                       
下載:43 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse Translation-en [14.2 kB]                                                       
下載:44 http://ports.ubuntu.com/ubuntu-ports jammy-updates/multiverse arm64 c-n-f Metadata [320 B]                                                   
下載:45 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages [2,255 kB]                                                           
下載:46 http://ports.ubuntu.com/ubuntu-ports jammy-security/main armhf Packages [956 kB]                                                             
下載:47 http://ports.ubuntu.com/ubuntu-ports jammy-security/main Translation-en [370 kB]                                                             
下載:48 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 c-n-f Metadata [13.2 kB]                                                      
下載:49 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 Packages [3,314 kB]                                                     
下載:50 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted armhf Packages [16.3 kB]                                                      
下載:51 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted Translation-en [677 kB]                                                       
下載:52 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 c-n-f Metadata [472 B]                                                  
下載:53 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe armhf Packages [730 kB]                                                         
下載:54 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe arm64 Packages [987 kB]                                                         
下載:55 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe Translation-en [214 kB]                                                         
下載:56 http://ports.ubuntu.com/ubuntu-ports jammy-security/universe arm64 c-n-f Metadata [19.0 kB]                                                  
下載:57 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse armhf Packages [2,864 B]                                                      
下載:58 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 Packages [22.8 kB]                                                      
下載:59 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse Translation-en [8,908 B]                                                      
下載:60 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 c-n-f Metadata [280 B]                                                  
下載:61 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main armhf Packages [68.4 kB]                                                           
下載:62 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main arm64 Packages [68.5 kB]                                                           
下載:63 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main Translation-en [11.4 kB]                                                           
下載:64 http://ports.ubuntu.com/ubuntu-ports jammy-backports/main arm64 c-n-f Metadata [392 B]                                                       
下載:65 http://ports.ubuntu.com/ubuntu-ports jammy-backports/restricted arm64 c-n-f Metadata [116 B]                                                 
下載:66 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe arm64 Packages [28.4 kB]                                                       
下載:67 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe armhf Packages [28.4 kB]                                                       
下載:68 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe Translation-en [16.5 kB]                                                       
下載:69 http://ports.ubuntu.com/ubuntu-ports jammy-backports/universe arm64 c-n-f Metadata [600 B]                                                   
下載:70 http://ports.ubuntu.com/ubuntu-ports jammy-backports/multiverse arm64 c-n-f Metadata [116 B]                                                 
取得 58.8 MB 用了 22s (2,643 kB/s)                                                                                                                   
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成  
可升級 375 個套件。執行 apt list --upgradable 檢視

再次安裝 mailutils 就可順利下載套件且安裝成功 :

tony1966@LX2438:~$ sudo apt install mailutils    
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
以下套件為自動安裝,並且已經無用:
  libcap2:armhf libsystemd0:armhf
使用 'sudo apt autoremove' 將之移除。
下列的額外套件將被安裝:
  libmailutils8 libmysqlclient21 libpq5
建議套件:
  mailutils-mh mailutils-doc
下列【新】套件將會被安裝:
  libmailutils8 libmysqlclient21 libpq5 mailutils
升級 0 個,新安裝 4 個,移除 0 個,有 375 個未被升級。
需要下載 2,072 kB 的套件檔。
此操作完成之後,會多佔用 9,897 kB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] y
下載:1 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 libmysqlclient21 arm64 8.0.42-0ubuntu0.22.04.2 [1,312 kB]
下載:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 libpq5 arm64 14.18-0ubuntu0.22.04.1 [147 kB]
下載:3 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 libmailutils8 arm64 1:3.14-1 [490 kB]
下載:4 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 mailutils arm64 1:3.14-1 [123 kB]
取得 2,072 kB 用了 3s (611 kB/s)   
選取了原先未選的套件 libmysqlclient21:arm64。
(讀取資料庫 ... 目前共安裝了 290367 個檔案和目錄。)
正在準備解包 .../libmysqlclient21_8.0.42-0ubuntu0.22.04.2_arm64.deb……
解開 libmysqlclient21:arm64 (8.0.42-0ubuntu0.22.04.2) 中...
選取了原先未選的套件 libpq5:arm64。
正在準備解包 .../libpq5_14.18-0ubuntu0.22.04.1_arm64.deb……
解開 libpq5:arm64 (14.18-0ubuntu0.22.04.1) 中...
選取了原先未選的套件 libmailutils8:arm64。
正在準備解包 .../libmailutils8_1%3a3.14-1_arm64.deb……
解開 libmailutils8:arm64 (1:3.14-1) 中...
選取了原先未選的套件 mailutils。
正在準備解包 .../mailutils_1%3a3.14-1_arm64.deb……
解開 mailutils (1:3.14-1) 中...
設定 libmysqlclient21:arm64 (8.0.42-0ubuntu0.22.04.2) ...
設定 libpq5:arm64 (14.18-0ubuntu0.22.04.1) ...
設定 libmailutils8:arm64 (1:3.14-1) ...
設定 mailutils (1:3.14-1) ...
update-alternatives: 在自動模式下以 /usr/bin/frm.mailutils 來提供 /usr/bin/frm (frm)
update-alternatives: 在自動模式下以 /usr/bin/from.mailutils 來提供 /usr/bin/from (from)
update-alternatives: 在自動模式下以 /usr/bin/messages.mailutils 來提供 /usr/bin/messages (messages)
update-alternatives: 在自動模式下以 /usr/bin/movemail.mailutils 來提供 /usr/bin/movemail (movemail)
update-alternatives: 在自動模式下以 /usr/bin/readmsg.mailutils 來提供 /usr/bin/readmsg (readmsg)
update-alternatives: 在自動模式下以 /usr/bin/dotlock.mailutils 來提供 /usr/bin/dotlock (dotlock)
update-alternatives: 在自動模式下以 /usr/bin/mail.mailutils 來提供 /usr/bin/mailx (mailx)
執行 man-db (2.10.2-1) 的觸發程式……
執行 libc-bin (2.35-0ubuntu3.8) 的觸發程式……

這樣 postfix 與 mailutils 都已安裝完成. 可以用下列指令檢視 :

tony1966@LX2438:~$ dpkg -l | grep mailutils  
ii  libmailutils8:arm64                      1:3.14-1                                arm64        GNU Mail abstraction library
ii  mailutils                                1:3.14-1                                arm64        GNU mailutils utilities for handling mail
ii  mailutils-common                         1:3.14-1                                all          common files for GNU mailutils
tony1966@LX2438:~$ dpkg -l | grep postfix  
ii  postfix                                  3.6.4-1ubuntu1.3                        arm64        High-performance mail transport agent

有輸出表示已安裝, 可用下列指令查詢其安裝路徑 :

tony1966@LX2438:~$ which postfix  
/usr/sbin/postfix
tony1966@LX2438:~$ which mail  
/usr/bin/mail

檢視 Postfix 的系統服務狀態 :

tony1966@LX2438:~$ systemctl status postfix  
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2025-07-17 10:49:52 CST; 10h ago
       Docs: man:postfix(1)
   Main PID: 487837 (code=exited, status=0/SUCCESS)
        CPU: 5ms

可見 Postfix 服務正在運行 (active), 但其主進程已經結束 (exit), 表示此服務在啟動後會立即退出, 這對 Postfix 而言應該是正常的, 因為 Postfix 主要是作為一個郵件傳輸代理 (Mail Transport Agent), 它可能在啟動時完成一些初始化任務後就會退出, 但它仍然在背景中運行, 其功能是否正常要透過發送測試郵件來驗證. 


3. 安裝認證用套件 :    

上面安裝好 postfix 與 mailutils 後其實還無法使用 mailtils 的 mail 程式傳送信件給 Gmail 信箱, 還需要安裝三個工具包才行, 指令如下 : 

sudo apt install libsasl2-2 libsasl2-modules  ca-certificates    

其中 libsasl2-2 與 libsasl2-modules 用於 Gmail 的 SASL 認證; ca-certificates 用於確保 SSL/TLS 連線正常. 可以用 dpkg 指令先查詢是否已安裝過這三個工具包 : 

tony1966@LX2438:~$ dpkg -l | grep libsasl2-2   
ii  libsasl2-2:arm64                         2.1.27+dfsg2-3ubuntu1.2                 arm64        Cyrus SASL - authentication abstraction library
tony1966@LX2438:~$ dpkg -l | grep ca-certificates    
ii  ca-certificates                          20240203~22.04.1                        all          Common CA certificates
tony1966@LX2438:~$ dpkg -l | grep libsasl2-modules   
ii  libsasl2-modules:arm64                   2.1.27+dfsg2-3ubuntu1.2                 arm64        Cyrus SASL - pluggable authentication modules
ii  libsasl2-modules-db:arm64                2.1.27+dfsg2-3ubuntu1.2                 arm64        Cyrus SASL - pluggable authentication modules (DB)
ii  libsasl2-modules-gssapi-mit:arm64        2.1.27+dfsg2-3ubuntu1.2                 arm64        Cyrus SASL - pluggable authentication modules (GSSAPI)

三個套件都顯示 ii, 表示套件都已安裝且狀態正常. 下列指令可以一次顯示這三個套件的狀態與版本編號 :

tony1966@LX2438:~$ dpkg -l libsasl2-2 ca-certificates libsasl2-modules   
要求=U:未知/I:安裝/R:刪除/P:清除/H:保留
| 狀態=N:未安裝/I:已安裝/C:設定檔/U:已解開/F:半設定/H:半安裝/W:待觸發/T:未觸發
|/ 錯誤?=(無)/R:須重新安裝(狀態,錯誤:大寫=有問題)
||/ 名稱                   版本                    硬體平台     簡介
+++-======================-=======================-============-===============================================
ii  ca-certificates        20240203~22.04.1        all          Common CA certificates
ii  libsasl2-2:arm64       2.1.27+dfsg2-3ubuntu1.2 arm64        Cyrus SASL - authentication abstraction library
ii  libsasl2-modules:arm64 2.1.27+dfsg2-3ubuntu1.2 arm64        Cyrus SASL - pluggable authentication modules


4. 更新 Postfix 設定檔 :   

傳送信件到 Gmail 信箱需要更改 Postfix 的設定檔, 使用 Gmail 的 SMTP 伺服器作為中繼 (relay) 來寄信, 這樣 Mapleboard 才會被視為可被信任的 SMTP 發信主機. 

tony1966@LX2438:~$ cat /etc/postfix/main.cf   
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = LX2438
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = tony1966.cc, LX2438, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

用 nano 編輯 Postfix 設定檔 :

tony1966@LX2438:~$ sudo nano /etc/postfix/main.cf   
[sudo] tony1966 的密碼: 

在最底下添加下列 Gmail SMTP 設定資訊 : 

# Gmail SMTP settings
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes

設定值說明如下 :
  • relayhost : 指定 Gmail 的 SMTP 伺服器和埠 (587 埠用於 TLS)
  • smtp_sasl_auth_enable : yes 啟用 SASL 認證
  • smtp_sasl_password_maps : 指向儲存 Gmail 帳戶憑證的文件 (密碼檔)
  • smtp_use_tls : yes 啟用 TLS 加密
按 Ctrl+O 存檔後按 Ctrl+X 跳出 nano. 


5. 建立 Gmail 帳戶憑證密碼檔 :   

在上一步驟中的 Postfix 設定檔裡有一個 smtp_sasl_password_maps 參數用來設定 Gmail 帳戶憑證密碼檔, 裡面需要指定一個 Google 應用程式密碼, 此密碼可在登入 Google 帳號後, 點選 "安全性/ 應用程式密碼" 或直接點下列超連結去建立一組密碼 :


在下方 "應用程式名稱" 框內輸入可辨識的名稱, 按右下角的 "建立" 鈕 : 




將產生的密碼複製下來 : 




用 nano 編輯密碼檔 /etc/postfix/sasl_passwd : 

tony1966@LX2438:~$ sudo nano /etc/postfix/sasl_passwd    
[sudo] tony1966 的密碼: 

輸入下列設定值, 其中 "your-email" 填入 Google 帳號, "應用程式密碼" 填入上面所建立之密碼, 注意, Google 生成之密碼中間有空格, 必須去除後再填入, 總共 16 字元 : 

[smtp.gmail.com]:587 your-email@gmail.com:應用程式密碼

按 Ctrl+O 存檔後按 Ctrl+X 跳出 nano.  

接下來用 postmap 指令轉換密碼檔, postmap 是 Postfix 的一個工具, 用來將純文字的密碼檔 etc/postfix/sasl_passwd 轉換成 Postfix 可以高效讀取的資料庫檔 (has 格式檔)  /etc/postfix/sasl_passwd.db :

tony1966@LX2438:~$ sudo postmap /etc/postfix/sasl_passwd   
[sudo] tony1966 的密碼: 
postmap: warning: /etc/postfix/main.cf, line 50: overriding earlier entry: relayhost=

然後用 chmod 指令更改 sasl_passwd 與 sasl_passwd.db 這兩個檔的權限為僅擁有者 (owner) 可讀寫, 群組與其他使用者無此權限 (600), 這是為了防止密碼洩漏, 避免被用來發送垃圾郵件或盜用帳號 :

tony1966@LX2438:~$ sudo chmod 600 /etc/postfix/sasl_passwd 
tony1966@LX2438:~$ sudo chmod 600 /etc/postfix/sasl_passwd.db  

最後重啟 Postfix 服務 : 

tony1966@LX2438:~$ sudo systemctl restart postfix   

這樣就可以用 mail 指令來寄信了 : 

tony1966@LX2438:~$ echo "這是測試信件" | mail -s "測試主旨" mygmail@gmail.com   

這時去 Gmail 信箱就可以收到這封測試信了 :




可以用下列指令查閱郵件日誌檔最近寄信狀況 :

tony1966@LX2438:~$ sudo tail -f /var/log/mail.log  
[sudo] tony1966 的密碼: 
Jul 18 16:56:44 LX2438 postfix/smtp[579367]: 7E40EC53B8: to=<yhhuang1966@gmail.com>, relay=smtp.gmail.com[2404:6800:4008:c03::6d]:587, delay=552, delays=549/0.3/1.5/1.2, dsn=2.0.0, status=sent (250 2.0.0 OK  1752829004 d9443c01a7336-23e3b60eac6sm9025115ad.53 - gsmtp)
Jul 18 16:56:44 LX2438 postfix/qmgr[579313]: 7E40EC53B8: removed

"status=sent" 表示信件已成功送出. 

以上測試我先在 Mapleboard 上安裝 mailutils 與 postfix 工具包, 更新 Postfix 設定檔後以 mail 程式透過 Google SMTP 郵件伺服器 (smtp.gmail.com) 經過應用程式密碼認證傳送郵件到任何 Email 信箱, 實際的寄件主機並不是我的伺服器, 而是透過 Google 的 SMTP 郵件伺服器作為 relay server 寄出信件. 

因為我只需要寄信不須收信 (毋須打開 ufw 的 25, 465 或 587 埠), 因此最適合採用這種透過 relay server 的 "client 模式" 寄信方式, 而且 Google SMTP 預設會簽 DKIM, 加 SPF, 以及處理 TLS 加密等, 這些措施都增強了郵件的安全性與可信度, 因此透過它寄信送達率高. 

如果想讓 Mapleboard 收信, 那就比較麻煩些, 必須進行下列處置 : 
  • 打開 ufw 的 25 埠 (或 SMTPS 的 465 埠, Submission 的 587 埠)
  • 到 Namecheap 新增 mail.tony1966.cc A 紀錄並調整 DNS 的 SPF, DKIM, MX 記錄
  • 解決 IP 是否在黑名單, Reverse DNS 等問題
  • 安裝支援 IMAP/POP3 協議的 Dovecot
  • 設定 SSL 憑證 (可用 Let's Encrypt)
這似乎不好辦也不需要, 所以就先記著吧. 

1 則留言 :

Surono 提到...
網誌管理員已經移除這則留言。