You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zimbra脚本导出用户邮件ID时如何新增对应账号列

Zimbra 全用户邮件ID采集脚本改造方案

直接用awk做输出流逐行处理即可,不需要额外依赖,完全兼容原有命令逻辑,落地步骤如下:

  • 保留原有遍历所有用户邮箱的循环逻辑,新增变量存储当前查询的目标邮箱地址
  • 对zmmailbox的原始输出做逐行匹配加工:统计行原样输出,表头追加User列名,分隔线补对应长度保证对齐,实际邮件条目末尾追加当前查询的邮箱地址
  • 所有处理后的结果直接追加写入最终的txt导出文件即可

可直接替换使用的核心代码片段(默认适配Zimbra 8.8/9.0版本输出格式):

# 执行前请先切换到zimbra用户:su - zimbra
# 结果导出文件路径可自行修改
OUTPUT_FILE="./all_user_mail_id.txt"
# 先清空旧的结果文件
> "$OUTPUT_FILE"

# 此处替换为你原有获取所有用户邮箱列表的逻辑,示例为遍历所有zmailbox列表里的用户
for USER_EMAIL in $(zmprov -l gaa | grep -v -E "^(admin|galsync|spam|ham|virus-quarantine)@"); do
    zmmailbox -z -m "$USER_EMAIL" search -l 9999 "in:/inbox" | awk -v cur_user="$USER_EMAIL" '
    /^num:/ {
        print $0 "\n"
        next
    }
    /^  Id  Type/ {
        print $0 "         User"
        next
    }
    /^----/ {
        print $0 "---------------"
        next
    }
    /^[[:space:]]*$/ { next }
    {
        print $0 "  " cur_user
    }
    ' >> "$OUTPUT_FILE"
done

调整说明

  • 代码里-l 9999是单用户查询的最大邮件条数,如果不需要全量采集,改回你需要的数值即可
  • 代码中拼接的空格数是按默认输出列宽设置的,如果你的环境输出列有偏移,直接增减对应位置的空格数量就能对齐
  • 如果只需要导出纯邮件ID,不需要其他字段,把awk里最后一行的print $0 " " cur_user改成print cur_user "," $1即可直接输出csv格式的「用户邮箱,邮件ID」对应表
  • 过滤规则里排除了系统内置账号,如果需要采集系统账号的邮件,删掉grep过滤段即可

内容的提问来源于stack exchange,提问作者rickygm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 06:00:54