OCI CLI
OCI CLI (oracle-cloud Infrastructure Command Line Interface) 是管理 Oracle Cloud 資源的命令列工具。在 oci-email-delivery-設定 中,OCI CLI 特別常用於自動新增 Approved Senders,無需每次手動登入 OCI Console。
安裝¶
在 Oracle Linux VPS 上安裝 OCI CLI,可使用官方安裝腳本:
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
安裝完成後確認版本:
oci --version
這與 Oracle Linux 9 安裝 oracle-linux-9-安裝-codex-cli 的環境相容,適合用於自架 n8n 或 docker 工作流程。
設定認證¶
執行 oci setup config 進行初始設定,需要提供:
- User OCID
- Tenancy OCID
- Region
若未有 API Key,可透過 openssl 產生:
mkdir ~/.oci
openssl genrsa -out ~/.oci/oci_api_key.pem 2048
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
cat ~/.oci/oci_api_key_public.pem
然後到 OCI Console 的 Identity → Users → 你的 User → API Keys → Add API Key,貼上 Public Key。
需要確保 IAM Policy 授予權限,例如:
Allow group Administrators to manage email-family in tenancy
或最小權限:
Allow user <username> to manage email-sender in tenancy
常用指令:管理 Approved Senders¶
列出目前 Approved Senders:
oci email sender list --compartment-id <COMPARTMENT_OCID>
新增 Approved Sender:
oci email sender create --compartment-id <COMPARTMENT_OCID> --email-address [email protected]
可以寫成腳本快速新增:
#!/bin/bash
COMPARTMENT_ID="你的 compartment OCID"
EMAIL=$1
oci email sender create --compartment-id $COMPARTMENT_ID --email-address $EMAIL
使用方式:./add_sender.sh [email protected]。
與 Infisical 整合¶
建議不要將 OCI API Key 明文存放在 VPS 的 ~/.oci,而是交由 infisical 管理。架構如下:
Infisical → n8n / OCI CLI → OCI Email Delivery API
在 Infisical 中建立 secrets,例如:
OCI_TENANCY_OCIDOCI_USER_OCIDOCI_FINGERPRINTOCI_REGIONOCI_PRIVATE_KEY
n8n 可透過 Infisical Docker Sidecar 或直接呼叫 Infisical API 取得 secrets,再執行 OCI CLI 指令。亦可建立臨時 config 使用:
mkdir -p /tmp/.oci
cat > /tmp/.oci/config <<EOF
[DEFAULT]
user=${OCI_USER_OCID}
fingerprint=${OCI_FINGERPRINT}
tenancy=${OCI_TENANCY_OCID}
region=${OCI_REGION}
key_file=/tmp/.oci/key.pem
EOF
echo "$OCI_PRIVATE_KEY" > /tmp/.oci/key.pem
chmod 600 /tmp/.oci/key.pem
export OCI_CLI_CONFIG_FILE=/tmp/.oci/config
oci email sender create --compartment-id $COMPARTMENT_OCID --email-address $1
完成後清理暫存檔案。
注意事項¶
oci-email-delivery 僅提供發信,沒有 mailbox 或 IMAP。若需收信,可搭配 cloudflare-email-routing 轉寄至 Gmail,或使用 Microsoft 365 等 mailbox 服務。
使用 OCI CLI 自動化時,建議建立專用 IAM User(例如 n8n-email-manager),僅授予管理 email-sender 的權限,以降低資安風險。