2021年5月7日 星期五

[經驗分享] Zimbra 常用 CLI 指令整理 (持續更新)

 


Zimbra 是開源界中最好用的郵件協作平台之一,在管理上也提供了許多實用指令方便管理者以 script 進行自動化操作,本文整理我較常使用的指令,提供分享。




前置作業

由於 Zimbra 所有的服務與程式都會以 zimbra 這個帳戶身份執行,因此在使用本文所有指令之前,請先切換帳戶身份後再開始執行
su zimbra
指令

或者,想要單次執行指令不想先做切換,又或是要放到 script 裡,可以使用另一種方式:
/bin/su - zimbra -c "指令"







指令列表

以下將分類整理不同對象的指令,其中的 user 請替換為您的帳戶,domain 請替換為您的網域名稱。

zmcontrol

# 查看所有服務狀態
zmcontrol status


# 重啟所有服務
zmcontrol restart


# 停止所有服務
zmcontrol stop


# 啟動所有服務
zmcontrol start


# 重啟 MTA 服務
zmmtactl restart

zmlocalconfig

# 查看本機伺服器所有設定
zmlocalconfig


# 查看本機伺服器單項設定
zmlocalconfig <設定>


# 查看本機伺服器相關密碼
zmlocalconfig -s | grep ldap_amavis_password 
zmlocalconfig -s | grep ldap_nginx_password 
zmlocalconfig -s | grep ldap_postfix_password 
zmlocalconfig -s | grep ldap_replication_password 
zmlocalconfig -s | grep ldap_root_password 
zmlocalconfig -s | grep zimbra_ldap_password


# 查看本機伺服器是否顯示來源 IP Header
zmlocalconfig zimbra_http_originating_ip_header


# 修改本機伺服器設定
zmlocalconfig -e <設定>=<數值>


# 修改本機伺服器顯示來源 IP Header
zmlocalconfig -e zimbra_http_originating_ip_header="X-Forwarded-For"


# 查看 Zimbra-ldap 是否啟用 StartTLS
zmlocalconfig | grep ldap | grep tls


# 關閉 Zimbra-ldap 使用 StartTLS
zmlocalconfig -e ldap_starttls_required=false
zmlocalconfig -e ldap_starttls_supported=0


# 允許未信任的 SSL 憑證
zmlocalconfig -e ssl_allow_untrusted_certs=true

zmprov

# 查看信任 IP
zmprov gcf zimbraMailTrustedIP

# 修改信任 IP (若一次要設定多個,在後方串接)
zmprov mcf +zimbraMailTrustedIP 127.0.0.1 +zimbraMailTrustedIP 192.168.1.200


# 查看中繼網域轉發設定
zmprov gd <域名> zimbraMailCatchAllAddress
zmprov gd <域名> zimbraMailCatchAllForwardingAddress
zmprov gd <域名> zimbraMailTransport


# 修改中繼網域轉發設定 (可以使用 smtp 或 lmtp)
zmprov md <域名> zimbraMailCatchAllAddress @<域名>
zmprov md <域名> zimbraMailCatchAllForwardingAddress @<域名>
zmprov md <域名> zimbraMailTransport lmtp:<目標LMTPServer:Port>


# 修改網域名稱
zmprov -l rd <原有域名> <新的域名>


# 停用舊版 SSL/TLS 與加密協定
zmprov mcf -zimbraReverseProxySSLProtocols TLSv1 
zmprov mcf -zimbraReverseProxySSLProtocols TLSv1.1
zmprov mcf -zimbraReverseProxySSLProtocols TLSv1.2
zmprov modifyConfig zimbraReverseProxySSLCiphers '!AES128-SHA256:!AES128-SHA:!CAMELLIA256-SHA:!CAMELLIA128-SHA!AES256-SHA:!AES256-SHA256:!AES256-GCM-SHA384:!AES128-GCM-SHA256:!ADH:!eNULL:!aNULL:!DHE-RSA-AES256-SHA:!SSLv2:!MD5:!EXPORT:!DES:!PSK:!RC4:HIGH'


# 外部驗證帳戶密碼失敗時嘗試本機驗證
zmprov md domain zimbraAuthFallbackToLocal TRUE


# 取消外部 LDAP 繫結帳戶設定
zmprov md domain zimbraAuthLdapSearchBindDn "" 
zmprov md domain zimbraAuthLdapSearchBindPassword ""


# 查看與修改 Webclient http 服務連接埠號
zmprov gs `zmhostname` | grep zimbraMailPort
zmprov ms `zmhostname` zimbraMailPort '8081'


# 查看與啟用 Web Admin Coneols https 服務連接埠
zmprov gs `zmhostname` | grep zimbraReverseProxyAdminEnabled
zmprov ms `zmhostname` zimbraReverseProxyAdminEnabled TRUE


# 查看與修改 Web Admin Coneols https 服務連接埠號
zmprov gs `zmhostname` | grep zimbraAdminProxy
zmprov ms `zmhostname` zimbraAdminProxyPort '59091'


# 變更對 LMTP 儲存時不經由 DNS 查詢而直接指向本機
zmprov ms mtaserver.com zimbraMtaLmtpHostLookup native
zmprov mcf zimbraMtaLmtpHostLookup native


# 清除 Zimlet 快取
zmprov flushCache zimlet


# 清除佈景主題快取
zmprov flushCache skin


# 清除語言檔快取
zmprov flushCache locale


# 啟用 CBPolicyd 服務
zmprov ms `zmhostname` +zimbraServiceInstalled cbpolicyd 
zmprov ms `zmhostname` +zimbraServiceEnabled cbpolicyd


# 查看 SMTP 寄信主機連接埠號
zmprov gs `zmhostname` | grep zimbraSmtpPort


# 變更 SMTP 寄信主機連接埠號
zmprov ms `zmhostname` zimbraSmtpPort 26


# 查看外部轉信主機設定
zmprov gcf zimbraMTARelayHost
zmprov gcf zimbraMTAFallbackRelayHost


# 修改外部轉信主機設定
zmprov mcf zimbraMtaRelayHost <轉信主機位址>:<轉信主機連接埠>
zmprov mcf zimbraMtaFallbackRelayHost <轉信主機位址>:<轉信主機連接埠>


# 查看已啟用與已安裝服務
zmprov -l gs `zmhostname` | egrep -i 'serviceen|servicein'


# 停用服務 (完成後記得重啟 Zimbra)
zmprov -l ms `zmhostname` -zimbraServiceEnabled <服務名稱> 


# 查看 MTA 信任網路
zmprov gs `zmhostname` zimbraMtaMyNetworks


# 設定 MTA 信任網路 (後面為範例,請不要照抄)
zmprov ms `zmhostname` zimbraMtaMyNetworks '127.0.0.0/8 192.168.1.0/24 172.18.0.1 172.17.0.1 192.168.1.100'

zmprov ddl

# 查看所有通訊群組清單 (DDL)
zmprov gadl


# 建立通訊群組清單 (DDL)
zmprov cddl <通訊群組清單名稱>@domain memberURL '<ldap>'
zmprov cddl engineers@domain memberURL 'ldap:///??sub?(&(objectClass=zimbraAccount)(ZimbraAccountStatus=active))'


# 通訊群組清單 (DDL) 更名
zmprov rdl <通訊群組清單名稱>@domain <新通訊群組清單名稱>@domain
zmprov rdl engineers@domain engineers2@domain


# 查看通訊群組清單 (DDL) 屬性
zmprov gdl <通訊群組清單名稱>@domain
zmprov gdl engineers@domain


# 設定通訊群組清單 (DDL) 在全域通訊錄 (GAL) 隱藏
zmprov mdl <通訊群組清單名稱>@domain zimbraHideInGal TRUE


# 查看通訊群組清單 (DDL) 成員
zmprov gdlm <通訊群組清單名稱>@domain
zmprov gdlm engineers@domain


# 查看通訊群組清單 (DDL)
zmprov gdl <通訊群組清單名稱>@domain
zmprov gdl engineers@domain


# 增加通訊群組清單 (DDL) 成員
zmprov adlm <通訊群組清單名稱>@domain <加入的成員>@domain
zmprov adlm engineers@domain user1@domain


# 移除通訊群組清單 (DDL) 成員
zmprov rdlm <通訊群組清單名稱>@domain <移除的成員>@domain
zmprov rdlm engineers@domain user1@domain

zmprov account

# 查看帳戶屬性
zmprov ga user@domain
zmprov ga user@domain <屬性名稱>
zmprov ga user@domain description
zmprov ga user@domain title
zmprov ga user@domain zimbraMailTransport


# 修改帳戶屬性
zmprov ma user@domain <屬性名稱> '<修改數值>'
zmprov ma user@domain description '帳戶描述'
zmprov ma user@domain title '資深工程師'


# 指定外部 LDAP 驗證目標帳戶
zmprov ma user@domain zimbraAuthLdapExternalDn "uid=ldapuser,dc=domain,dc=com" 


# 移除外部 LDAP 驗證目標帳戶
zmprov ma user@domain zimbraAuthLdapExternalDn ""


# 查看帳戶狀態
zmprov ga user@domain zimbraAccountStatus 


# 解除帳戶鎖定
zmprov ma user@domain zimbraAccountStatus active


# 帳戶鎖定
zmprov ma user@domain zimbraAccountStatus lock


# 帳戶更名
zmprov ra user@domain user2@domain


# 增加帳戶別名
zmprov aaa user@domain useralias@domain


# 建立帳戶
zmprov ca user@domain password


# 變更帳戶密碼
zmprov sp user@domain newpassword


# 刪除帳戶
zmprov da user@domain


# 列出啟用中的帳戶
zmprov -l sa '(zimbraAccountStatus=active)'


# 列出啟用中的帳戶並排除系統帳戶
zmprov -l sa '(&(objectClass=zimbraAccount)(ZimbraAccountStatus=active)(!(Name=*galsync*))(!(Name=*ham.*))(!(Name=*spam.*))(!(Name=*virus-quarantine.*))(!(Name=admin)))'


# 列出所有系統管理員帳戶
zmprov gaaa


# 建立額外的系統管理員帳戶
zmprov ca admin2@domain password zimbraIsAdminAccount TRUE

zmprov cos

# 查看服務類別 (COS) 設定
zmprov gc <cos名稱>
zmprov gc highleveluser


# 擷取服務類別 (COS) ID 欄位
zmprov gc <cos名稱> | grep zimbraId:
zmprov gc highleveluser | grep zimbraId:


# 擷取服務類別 (COS) ID 欄位內容
zmprov gc <cos名稱> | grep zimbraId: | cut -d ' ' -f 2
zmprov gc highleveluser | grep zimbraId: | cut -d ' ' -f 2

zmmailbox

# 搜尋郵件
zmmailbox -z -m <帳戶> search -t message -l 100 "<搜尋字串>"
zmmailbox -z -m user@domain search -t message -l 100 "in:inbox subject: 要搜尋的主旨"


# 顯示郵箱已使用容量
zmmailbox -z -m user@domain gms


# 匯出連絡人至 CSV (可用格式有 zimbra-csv / yahoo-csv / thunderbird-csv / outlook-2000-csv / outlook-2003-csv)
zmmailbox -z -m user@domain -t 0 getRestURL "//contacts?fmt=outlook-2003-csv"
zmmailbox -z -m user@domain -t 0 getRestURL "//其它通訊錄名稱?fmt=outlook-2003-csv"


# 讀取篩選器設定
zmmailbox -z -m user@domain getFilterRules


# 新增篩選器設定
zmmailbox -z -m user@domain addFilterRule '規則名稱:主旨郵件轉發' active any header 'subject' matches '符合的主旨' redirect 'manager@domain'


# 修改篩選器設定
zmmailbox -z -m user@domain modifyFilterRule '規則名稱:主旨郵件轉發' active any header 'subject' matches '符合的主旨' redirect 'manager@domain'


# 刪除篩選器設定
zmmailbox -z -m user@domain deleteFilterRule '規則名稱:主旨郵件轉發'


# 將郵件檔案 (.eml / .msg) 匯入指定帳戶收件夾
zmmailbox -t 0 -z -m user@domain addMessage /inbox 1.eml
zmmailbox -t 0 -z -m user@domain addMessage /測試信件夾 /tmp/user/*.eml

zmzimletctl

# 部署 Zimlet
zmzimletctl deploy <zimlet檔名>
zmzimletctl deploy <zimlet_uc.zip>

others

# 查看郵件佇列
postqueue -p
mailq


# 查看郵件佇列 (依網域)
qshape hold 


# 重送佇列中的郵件
postqueue -f


# 刪除佇列中的郵件
postsuper -d ALL


# 立即同步 GAL 全域通訊錄
zmgsautil forceSync -a galsync@domain -n InternalGAL


# 郵件狀況查詢
zmmsgtracs -s '<寄件者郵箱>'
zmmsgtracs -s 'user@domain'
zmmsgtracs -r '<收件者郵箱>'
zmmsgtracs -r 'user@gmail.com'


# 列出所有帳戶狀況總覽
zmaccts


# 匯出 LDAP 伺服器所有資料
ldapsearch -h <Server IP> -x -D "uid=zimbra,cn=admins,cn=zimbra" -w <ldap_root_password> > /tmp/ldap_export.ldif
ldapsearch -h 192.168.20.100 -x -D "uid=zimbra,cn=admins,cn=zimbra" -w hjf3jgc > /tmp/ldap_export.ldif


# 匯入 LDAP 伺服器所有資料
ldapadd -h <Server IP> -x -c -D "uid=zimbra,cn=admins,cn=zimbra" -w <ldap_root_password> < /tmp/ldap_expore.ldif
ldapadd -h 192.168.20.100 -x -c -D "uid=zimbra,cn=admins,cn=zimbra" -w hjf3jgc < /tmp/ldap_expore.ldif


# 列出所有 Postfix 設定內容
postconf


# 設定所有郵件備份
postconf -e always_bcc=archivebox@domain


# 查看所有郵件備份設定
postconf always_bcc








參考資料