紀錄一下在 AWS 環境安裝 Proxmox Mail Gateway 的過程,有滿多小細節需要注意的,踩過才會知道XD
新建 Instance
在建 Instance 時必須要選擇 Debian 11 來安裝,因為 PMG 是基於 Debian 所開發的。
Instance Type 建議選擇 c5 系列的機器,才有辦法在 EC2 網頁上看到機器的 Console (Nitro 才有支援 Serial Port 操作,請見 AWS 官方文件:執行個體類型)
設定 SSH Key
記得幫機器 Assign 一個 Public IP 方便 SSH 連線,之後可以綁定 Elastic IP 來提供服務
硬碟先給個 20 GB
啟動 Instance
安裝 Proxmox Mail Gateway
使用 SSH Key 以 User admin
連線進入 Debian 後,切換到 root
:
sudo su -
新增 Proxmox Mail Gateway 的 APT Repo:
echo "deb http://download.proxmox.com/debian/pmg bullseye pmg-no-subscription" > /etc/apt/sources.list.d/pmg.list
wget wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
移除 apparmor
,AWS 預設提供的是包含 apparmor
,但是 PMG 系統如果安裝 apparmor
會無法正常執行:
apt remove apparmor
更新套件庫並安裝套件,在 PMG 安裝過程中會移除 ifupdown,因此必須安裝 ifupdown
避免被移除導致 cloud-init 出問題,進而影響 EC2 網路連線
apt update
apt install -y proxmox-mailgateway ifupdown
最後再幫 root
改一下密碼以便登入 PMG 的後台,再把 PMG Enterprise 的 Repo 移除(如果有買訂閱就可以留著)
sudo passwd
sudo rm /etc/apt/sources.list.d/pmg-enterprise.list
重開機
sudo reboot
如此一來 Proxmox Mail Gateway 就安裝完成了。
可以用下面這個 user-data
在啟動 Instance 時直接安裝,root
的密碼為 awspmgawspmg
:
#!/bin/bash -xe
export DEBIAN_FRONTEND=noninteractive
exec > >(tee /var/log/cloud-init-output.log|logger -t user-data -s 2>/dev/console) 2>&1
echo "deb http://download.proxmox.com/debian/pmg bullseye pmg-no-subscription" > /etc/apt/sources.list.d/pmg.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
apt-get remove apparmor -yq
apt-get update
apt-get install proxmox-mailgateway ifupdown -yq
rm -rf /etc/apt/sources.list.d/pmg-enterprise.list
echo -e "awspmgawspmg\nawspmgawspmg" | passwd root
reboot
透過 SSH Port forwarding 存取 Proxmox Mail Gateway Console
以 macOS 環境為例,輸入下方指令就可以將 8006
forwarding 到 localhost
:
ssh -L 8006:localhost:8006 -i .ssh/<PRIVKEY>.pem admin@<Instance's Public IP>
然後瀏覽器打開 https://localhost:8006/
,發現會出現 NET::ERR_CERT_INVALID
錯誤,這時候你只需要停在這個頁面,直接輸入:
thisisunsafe
按下 Enter
, 就可以 Bypass 這個頁面了。
申請 25/tcp 白名單
預設的所有 EC2 Instance 的 25/tcp 是會被阻擋的,需要去申請白名單,詳情請看官方文件:針對電子郵件應用程式使用反向 DNS