查询操作场景
日志相关查询
查询邮件投递情况
grep $USER/home/coremail/logs/deliveragent.log.$DATE| grep state
#$USER替换为用户 eg:admin@a.cn
#$DATE替换为时间 eg:2021-07-13
查询站内是否有发垃圾邮件用户
发垃圾邮件用户的特征:1、外发且量大 ;
2、邮件主题倾向推广
第一步:查询到外发且量大的用户
grep
"channel=remote"
/home/coremail/logs/deliveragent.log.$DATE|awk -F"<|>"
'{print $2}'
| grep @|sort |uniq -c|sort -rn | more
第二步:根据步骤一,查询其发送的邮件主题
zgrep -a Sender:$USER/home/coremail/logs/backup/mta$DATE.tar.gz | grep
'cmd:DATA'
| awk -F
",ip:|,FreeIP|,subject:|,SubjectCnt"
'{print $2,$5}'
#$USER 替换为步骤一用户 eg:admin@a.cn
#$DATE 替换为时间 eg:2021_06_30
查询用户登录失败情况
grep cmd:1005
/home/coremail/logs/udsvr.log.$DATE|grep clienttype:[0-9.]* | awk -F
'loginip:|,loginname:|,clienttype:|,ret:'
'{print $2,$3,$4}'
#$DATE替换为时间 eg:2021-07-13
单命令查询多机环境相同模块日志
/home/coremail/bin/sysutil --grep
@HOST
$logfile
'$text-pattern'
--date
20210701:20210706
#命令格式:/home/coremail/bin/sysutil --grep
@$HOST
$logfile $text-pattern --date $DATE
#$HOST local表示仅查询本地服务器 all表示查询所有服务 eg:@all
#$logfile 表示要查询的日志类型 md ms ud pop3 mta da imap rmi ajx(web) ,如果要查询的是事务日志,则加上.t eg:mta 或 mta.t
#$text-pattern 表示需要查询的正文内容 eg:subject=test
#$DATE 表示需要查询的时间范围 eg:20210701:20210706
查询某段日期内所有日志包含特定关键字的信息
find . -type f -newermt
'$START_TIME'
! -newermt
'$END_TIME'
-exec grep $text-pattern {} \; | more
#$START_TIME 替换为开始时间 eg:2021-07-01
00:00:00
#$END_TIME 替换为结束时间 eg:2021-07-31
23:59:59
#$text-pattern 表示需要查询的正文内容 eg:'test'
统计单个用户在某个时间段发送邮件数量
/home/coremail/bin/sautil call-svr
@all:adminsvr
'{cmd:103,conds:"(cmd == '\'DATA\''|| cmd ==
'\'WEBMAIL\'') && (Sender ==
'\'$EMAILADDRESS\'')",date:"$DATE",fields:"count(cnt)",file_filter:"mta.t",group:"Sender",limit:"-1",log_filter:"$EMAILADDRESS",log_filter_reg:"",nocase:False}'
#$DATE 替换为时间范围,eg:20250325:20250401
#$EMAILADDRESS 替换为邮件地址,eg:admin@a.cn
说明:
每台机器都会对应命令调用的返回的结果,Received:,其中“count(cnt): [LNG:6]” 表示数量,这里的6表示发送了6封邮件;
查询用户删除的邮件情况
grep cmd:2006
/home/coremail/logs/udsvr.log.$DATE | grep $USER_MBOX_ID | grep subj | awk -F
'precode:|,ver|subj:|,from:'
'{print $2,$4}'
| more
#$DATE替换为时间 eg:2021-07-13
#$USER_MBOX_ID 替换为用户的mbox_id eg:1_admin###_01_1000001s
查询站内域名的收信数量(包含投递失败和投递成功的请求,站内和站外)
/home/coremail/bin/sysutil --grep
@all
da
'channel=remote'
--date $DATE | grep -E
'channel=remote|channel=local'
| grep -E
'state=defer|state=bounced|state=sent'
| grep -E
"to=<[^@]*@$DOMAIN>"
| awk -F
'to=<|>,channel'
'{print $2}'
| sort | uniq -c | sort -nr
#$DATE 替换为时间范围 eg:20250126:20250401
#$DOMAIN 替换为站内域名
查询站内域名的发信数量(包含投递失败和投递成功的请求,站内和站外)
/home/coremail/bin/sysutil --grep
@all
da
'channel=remote'
--date $DATE | grep -E
'channel=remote|channel=local'
| grep -E
'state=defer|state=bounced|state=sent'
| grep -E
"from=<[^@]*@$DOMAIN>"
| awk -F
'from=<|>'
'{print $2}'
| sort | uniq -c | sort -nr
#$DATE 替换为时间范围 eg:20250126:20250401
#$DOMAIN 替换为站内域名
用户相关查询
查询用户属性
/home/coremail/bin/userutil --get-user-attr $USER
'$ATTR'
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$ATTR 根据实际情况替换为附录中的数据库字段,比如true_name
附录:
字段名 | 说明 |
---|---|
org_id | 组织ID |
mbox_id | 信筒ID |
lastdate | 最后登录时间 |
user_id | 用户uid |
password | 密码,默认smd5加密 |
forwarddes | 转发地址 |
iaddress | 个人通讯录 |
pwd_hint_question | 忘记密码问题 |
forwardactive | 是否开启自动转发 |
filter | 过滤器规则 |
pwd_hint_answer | 忘记密码答案 |
keeplocal | 自动转发是否本地保留 |
signature | 简单文本签名档 |
time_zone | 时区 |
maxlist | 邮件每页显示的条数 |
popweb | 代收邮件配置信息 |
true_name | 姓名 |
displaysender | 发信人显示我的姓名 |
mbox_shr_acl | 共享权限 |
mobile_number | 电话 |
refuselist | 黑名单列表 |
mbox_shr_view | 被共享人可查看的邮箱及设置 |
fax_number | 传真 |
style | 风格 |
calendar_folder | 日历文件夹 |
country | 国家 |
big5 | 编码 |
authorized_list | 信任设备列表 |
province | 省份 |
language | 语言 |
altpwd | 客户端专用密码 |
city | 城市 |
autorepmode | 自动回复模式0关,1开 |
otp_bindinfo | otp绑定信息 |
homepage | 主页 |
autoreptext | 自动回复内容 |
mms_enabled | 开启多媒体消息 |
anniversary | 周年纪念日 |
autorep_condition | 自动回复条件,开始/结束时间 |
sms_notify | 短信通知 |
alt_email | 备用邮箱 |
autorep_welcometip | 首页是否提示开启自动回复 |
antivirus_option | 反病毒设置 |
nick_name | 昵称 |
op_readreceipt | 已读回执 |
smsaddr | 手机号码,绑定的手机号 |
gender | 性别,0男,1女 |
safelist | 邮件列表授权 |
forwardmaillist | 邮件列表中的用户 |
birthday | 生日 |
antispam_option | 反垃圾邮件选项 |
firstpage | 登录后显示页 |
home_phone | 家庭电话 |
junkfilter | 垃圾邮件过滤器 |
aftersend_saveaddr | 自动保存收件人到”个人通讯录” |
company_phone | 公司电话 |
rejectjunk | 拒收 |
maillist_errorto | 邮件列表退信地址 |
address | 地址 |
udid | 用户的UDID标识 |
maillist_filter | 动态邮件列表用户属性 |
zipcode | 邮政编码 |
save_sent | 邮件自动保存到[已发送] |
smtp_save_sent | SMTP发信后保存到[已发送] |
netfolder_id | 网盘ID |
edit_mode | 写信时邮件编辑模式 |
def_sec_folder | 安全锁(文件密码保护) |
reg_ip | 注册IP |
signature_position | 签名位置 |
password_expiry_time | 密码过期时间 |
remarks | 备注 |
facesettings | 页面属性设置 |
trans_schedule_time | 用户延迟删除时间 |
duty | 职位 |
clock_system | 邮件列表时间显示格式 |
syncHistory | ActiveSync服务相关 |
login_ip_range | 登录IP范围 |
index_time_category | 邮件列表显示时间 |
force_sender_name | 强制发信人姓名 |
ws_msg_notify_folder | 邮件到达通知的文件夹 |
off_site_remind | 异常登录提醒 |
org_unit_fullName | 完整部门名称 |
off_site_remind_sms | 异地登录短信提醒 |
off_site_remind_ip | 异常登录提醒IP |
bindauthkey | 是否绑定动态密保 |
subject_refw_prefix_expand | 读信设置-主题“回复/转发”前缀展开/收起 |
off_site_remind_time | 异常登录提醒时间 |
second_auth_type | 二次验证类型 |
default_sender_address | 默认发信人账号 |
display_list | 显示邮件列表方式 |
weixinaddr | 绑定的企业微信ID |
tags_init_completed | 标签管理 |
display_size | 显示邮件大小 |
api_acl | api访问的权限和范围控制 |
migration_progress | 邮箱搬家进度 |
pop_limit_day | pop3收信时间范围 |
list_brief_text | 是否显示正文摘要 |
migration_status | 邮箱搬家状态 |
multi_tab | 是否开启多标签页 |
preview_layout | 读信窗口布局 |
junknotify | 垃圾邮件通知 |
shortcut | 是否开启键盘快捷键 |
ws_msg_notify_folder | 邮件到达通知的文件夹 |
junknotify_detail | 垃圾邮件通知详情 |
search_ordering_rule | 全文搜索排序方式 |
junklastnotifytime | 垃圾邮件通知时间 |
查询用户邮件信息
/home/coremail/bin/userutil --list-msg $USER
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
附录:list-msg中每个字段的含义
查询用户邮件信头的信息
/home/coremail/bin/userutil --display-msginfo $USER $MID
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$MID 替换为邮件的mid号 eg:1tbiAQAFB2DX5ccAAAACsU
查询用户自助查询中的信息
/home/coremail/bin/sysutil --svr-cmd
@all
udsvr
'_list_ext $USER_MBOX_ID '
#查看登录类型的内容
#$USER_MBOX_ID 替换为用户的mbox_id eg:1_admin###_01_1000001s
查询用户匹配到的策略信息
/home/coremail/bin/sautil userinfo --dump-policy $USER
#$USER替换为用户 eg:admin@a.cn
查询用户的服务等级信息
/home/coremail/bin/sautil userinfo $USER --mdkeys=cos
#$USER替换为用户 eg:admin@a.cn
查询用户的个人通讯录信息和过滤器信息
/home/coremail/bin/sautil userinfo $USER --udkeys=iaddress\&filter
#$USER替换为用户 eg:admin@a.cn
查询用户开启的二次验证信息
/home/coremail/bin/sautil userinfo $USER --ud-keys=second_auth_type\&altpwd
#$USER替换为用户 eg:admin@a.cn
查询用户开启的客户端专用密码信息
/home/coremail/bin/userutil --get-user-attr $USER staticpwd
#$USER替换为用户 eg:admin@a.cn
查询邮件列表用户下包含的用户信息
动态邮件列表
`/home/coremail/bin/userutil --get-user-attr $USER maillist_filter| awk -F'='` `'{print $NF}'| xargs -i /home/coremail/bin/sautil call-api` `"cmd=319&msgsize=1&filter={}"`
`#$USER替换为用户 eg:admin@a.cn`
查询用户代收设置的信息
`/home/coremail/bin/userutil --get-user-attr $USER popweb |grep -E` `'=.+` `|sed` `"s/%2540/@/g"` `|sed` `"s/%3D/=/g"` `|sed` `"s/%26/,/g"` `|sed` `"s/%0A0%20/:/g"` `|sed` `"s/%0A/ /g"` `|sed` `"s/%20/ /g"`
`#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;` `2、替换为条件用户 eg:@"cos_id = 1"` `表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt`
查询用户别名
`/home/coremail/bin/userutil --call-api` `"cmd=46\&user_at_domain=$USER"`
`#$USER 替换为单个用户 eg:admin@a.cn`
查询用户是否进入 UD灰名单 列表
`/home/coremail/bin/sysutil --svr-call` `@all` `udsvr` `'{cmd:5311,type:"userip"}'`
查询用户的日程数据
`/home/coremail/bin/userutil --adv-user-attr $USER getrev calendar`
`#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;` `2、替换为条件用户 eg:@"cos_id = 1"` `表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt`
导出用户所有日程
`/home/coremail/bin/userutil --export-cm-calendar $USER $PATH`
`#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;` `2、替换为条件用户 eg:@"cos_id = 1"` `表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt`
`#$PATH 替换为保存日程文件的位置 eg:/tmp/`
获取个人通讯录内容
`/home/coremail/bin/sautil --call-ud $USER` `'{cmd:6001,abdbattr:{meta:{},grp:{},contact:{}}}'`
`#$USER替换为用户 eg:admin@a.cn`
查询用户反垃圾级别
`/home/coremail/bin/userutil --get-user-attr $USER antispam_option`
`#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;` `2、替换为条件用户 eg:@"cos_id = 1"` `表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt`
`#解析:antispam_option=01` `(关闭)、antispam_option=11` `(普通)、antispam_option=21` `(严格 - 把邮件保存到[垃圾邮件]文件夹,[推荐使用])、antispam_option=20` `(严格 系统直接删除邮件,您将无法查看这些可疑垃圾邮件,请慎重选择 )`
查看用户web上的信任设备列表
`/home/coremail/bin/sautil userinfo --ud-keys=authorized_list $USER --diag`
`#$USER替换为用户 eg:admin@a.cn`
查询用户的未读邮件列表
`/home/coremail/bin/sautil --callapi cmd=getNewMailInfos\&user_at_domain=$USER --options=format=xml`
`#$USER替换为用户 eg:admin@a.cn`
导出用户指定的某封邮件
`/home/coremail/bin/userutil --export-user-mails $USER /data/mails/`
`#$USER替换为用户 eg:admin@a.cn`
导出用户邮箱中所有邮件(指定时间范围条件可选)
`/home/coremail/bin/userutil --dump-msg $USER $MID time=$TIMERANGE > 名称.eml`
`#$USER替换为用户 eg:admin@a.cn`
`#$TIMERANGE 替换为时间访问 eg:120250314-20250317`
查询邮件标题中包含特定关键字的邮件
`/home/coremail/bin/userutil --search-msg @"cos_id!=3 and user_status!=100"` `"$Keywords"` `""` `"field=subj"` `| grep -vE` `"^\\* "` `| awk` `'/^[^@ ]+@[^@ )]+\\(MBoxID:/ { email = gensub(/^(.*)\\(MBoxID:.*/, "\\\1", ""); next; } /^[-]+$/ { next; } { print email "###" $2; }'` `> /tmp/$Keywords.txt`
`#$Keywords 更换为需要查询的关键字,比如中文 机密`
查询邮件正文中包含特定关键字的邮件
`/home/coremail/bin/userutil --search-msg @"cos_id!=3 and user_status!=100"` `"$Keywords"` `""` `"field=cont"` `| grep -vE` `"^\\* "` `| awk` `'/^[^@ ]+@[^@ )]+\\(MBoxID:/ { email = gensub(/^(.*)\\(MBoxID:.*/, "\\\1", ""); next; } /^[-]+$/ { next; } { print email "###" $2; }'` `> /tmp/$Keywords.txt`
`#$Keywords 更换为需要查询的关键字,比如中文 机密`
备份单个用户信息(包含邮件数据)
`/home/coremail/bin/userutil --backup-user $USER /data/`
`#$USER替换为用户 eg:admin@a.cn`
还原单个用户信息(包含邮件数据)
`/home/coremail/bin/userutil --restore-user $USER /data/xxxxx.cmbackup`
`#$USER替换为用户 eg:admin@a.cn`
归档相关查询
查询用户归档信息
/home/coremail/bin/sysutil --svr-cmd
@all
archivesvr
'listuser $USER 14 0 9999999'
#$USER替换为用户 eg:admin@a.cn
查询归档索引是否正常
/home/coremail/bin/sysutil --svr-cmd
@all
archivesvr
'checkindex $ARCH_INDEX'
#$ARCH_INDEX 替换为归档的索引文件位置 eg:/home/coremail/var/index/00/2016/07.index
查询归档数据是否正常
/home/coremail/bin/sysutil --svr-cmd
@all
archivesvr
'checkfile $ARCH_DATA'
#$ARCH_DATA 替换为归档的数据目录位置 eg:/data/00/ex201506/arch_in201006_0000
导出一定时间范围内的归档邮件
第一步:/home/coremail/bin/sysutil --svr-call
@all
archivesvr
'{cmd:4,aqry:{ctimea:$cmx.date(\'$BEGINTIME\'), ctimeb:$cmx.date(\'$ENDTIME\')},size:99999999}'
> /tmp/aid_info.txt #导出指定时间范围内的所有归档邮件的AID(归档ID),并将结果保存到/tmp/aid_info.txt
文件中。#$BEGINTIME 替换为开始时间 eg:2020-01-01
00:00:00
#$ENDTIME 替换为结束时间 eg:2021-01-23
23:59:59
第二步:通过循环脚本,把/tmp/aid_info.txt中的邮件导出
#!/bin/bash
`awk -F'\\'` `'$2 ~ /^ach/ {print NR-6,$2}'` `/tmp/aid_info.txt |` `while` `read line aid;` `do` `test -d /data/all_mail_dir || mkdir -p /data/all_mail_dir` `/home/coremail/bin/sysutil --svr-cmd` `@all` `archivesvr` `"dumpmail $aid"` `| tail -n +2` `> /data/all_mail_dir/$line.eml` `done`
导出特定用户的归档邮件
for
i in/home/coremail/bin/sysutil --svr-cmd
@all`archivesvr
"listuser $USER 14 0 99999"
|awk -F":"
'/END/{print $3}'
;
do`/home/coremail/bin/sysutil --svr-cmd
@all
archivesvr
"dumpmail $i"
> /data/all_mail_dir/$i.eml;done
#$USER 替换为真实用户 eg:admin@a.cn
查询归档版本
/home/coremail/bin/sautil license | grep ARCHTYPE
#解析:10为基础版;
20为标准版;
30为专业版
组织相关查询
列出系统所有的组织ID
/home/coremail/bin/userutil --call-api
"cmd=43"
查询一个部门下所有的子部门id
userutil --call-api cmd=300\&org_id=$ORG_ID\&org_unit_id=$OU_ID
#$ORG_ID 替换为组织ID
#$OU_ID 替换为组织ID
通过浏览器查询用户当前wmsvr的版本号
http://$HOST/coremail/s?func=verify
#$HOST 替换为用户的web地址 eg:mail.coremail.cn 或
192.168.x.x 等
服务器负载相关查询
查询系统历史的 平均负载、CPU、内存 和 磁盘IO 的情况
sar -qprd -f $OLD_DATE_FILE
#注意:要使用sar需要安装sysstat包
#$OLD_DATE_FILE 替换为需要查询的日期文件 eg:/var/log/sa/sa4 表示查询当月4号的信息
相隔时间查询当前进程负载高的情况
pidstat -d -r -u
3
# d表示IO,r表示内存,u表示CPU,每3秒刷新一次的情况
查询某个进程的开始运行时间 和 总运行的时间
ps -eo pid,lstart,etime | grep $PID
#$PID 替换为需要查询的进程pid
查询Tomcat的JVM缓存、线程数状态
/home/coremail/bin/tomcatctl -m status | /home/coremail/bin/sautil html2text
网络相关查询
服务器本地网络抓包
tcpdump -i $INTER -w $FILE
#$INTER 替换为网卡的名称 eg:eth1
#$FILE 替换为需要保存抓包的结果文件 eg:/tmp/result.pcap
读取网络抓包后的报文(显示报文 ASCII 内容)
tcpdump -A -r #$FILE
#$FILE 替换为需要保存抓包的结果文件 eg:/tmp/result.pcap
查询网络环境的丢包率
ping -c
100
-f $HOST
#$HOST 替换为目标地址 eg:mail.coremail.cn 或
192.168.x.x 等
跟踪目标地址的路由信息
traceroute $HOST
#$HOST 替换为目标地址 eg:mail.coremail.cn 或
192.168.x.x 等
查询域名的DNS网络解析情况
dig $RESOURCE_RECORD $DOMAIN +trace
@$DNS_SERVER
#$RESOURCE_RECORD 替换为需要查询的记录 eg: a 或 mx 或 txt
#$DOMAIN 替换为需要查询的域名 eg:coremail.cn
#$DNS_SERVER 替换为需要使用的dns服务器进行查询,不写上默认以服务器的dns服务器进行查询。 eg:114.114.114.114
或
8.8.8.8
系统相关的命令
查询Tomcat版本和JAVA组件
/home/coremail/bin/tomcatctl status
查询数据库版本
/home/coremail/mysql/bin/mysql --version
查询邮件系统版本
/home/coremail/bin/sautil chkver --withC
查询奇安信反垃圾版本
/home/coremail/bin/confutil --read /opt/360AVServer/conf/updatecfg.ini ENGINE_360_LINUX_SERVER/VER
查询hxphone移动模板版本
cat /home/coremail/web/webapp/hxphone/version-manifest.json
所有服务的启停命令(包含自带数据库)
/home/coremail/sbin/cmctrl.sh start|stop|restart
单个服务的启停命令
/home/coremail/bin/coremail start|stop|restart $server
#$server 替换为具体的模块名称,例如udsvr、mdsvr、wmsvr等
数据库相关查询
查询不同登录类型的登录次数
echo
"SELECT DATE(access_time) AS date, COUNT(*) AS login_count FROM $database_type WHERE access_time >= '2024-12-01' AND access_time < '2024-12-31' GROUP BY DATE(access_time) ORDER BY date;"
| /home/coremail/bin/cmxdb cm_logs_db
#$database_type 可以替换为 tl_web 、tl_pop 、 tl_smtp 、 tl_imap
统计发信人来自本站的邮件数量
echo
"SELECT DATE_FORMAT(log_time,'%Y-%m-%d') AS g, SUM(trycnt) AS trycnt, SUM(tryrcpt) AS tryrcpt, SUM(tryvol) AS tryvol, SUM(succcnt) AS succcnt, SUM(succrcpt) AS succrcpt, SUM(succvol) AS succvol FROM ax_mta_stat WHERE 1=1 AND log_time BETWEEN '$BEGINTIME' AND '$ENDTIME' AND type IN (1,2) GROUP BY DATE_FORMAT(log_time,'%Y-%m-%d') ORDER BY g DESC"
| /home/coremail/bin/cmxdb cm_logs_db
#$BEGINTIME 替换为开始时间 eg:2025-03-20
00:00:00
#$ENDTIME 替换为结束时间 eg:2025-03-27
15:19:59
统计发信人来自外站的邮件数量
echo
"SELECT DATE_FORMAT(log_time,'%Y-%m-%d') AS g, SUM(trycnt) AS trycnt, SUM(tryrcpt) AS tryrcpt, SUM(tryvol) AS tryvol, SUM(succcnt) AS succcnt, SUM(succrcpt) AS succrcpt, SUM(succvol) AS succvol FROM ax_mta_stat WHERE 1=1 AND log_time BETWEEN '$BEGINTIME' AND '$ENDTIME' AND type=0 GROUP BY DATE_FORMAT(log_time,'%Y-%m-%d') ORDER BY g DESC"
| /home/coremail/bin/cmxdb cm_logs_db
#$BEGINTIME 替换为开始时间 eg:2025-03-20
00:00:00
#$ENDTIME 替换为结束时间 eg:2025-03-27
15:19:59
统计投递到本站的邮件数量
echo
"SELECT DATE_FORMAT(log_time,'%Y-%m-%d') AS g, SUM(trycnt) AS trycnt, SUM(tryrcpt) AS tryrcpt, SUM(tryvol) AS tryvol, SUM(succcnt) AS succcnt, SUM(succrcpt) AS succrcpt, SUM(succvol) AS succvol FROM ax_da_stat WHERE 1=1 AND log_time BETWEEN '$BEGINTIME' AND '$ENDTIME' AND type=0 GROUP BY DATE_FORMAT(log_time,'%Y-%m-%d') ORDER BY g DESC"
| /home/coremail/bin/cmxdb cm_logs_db
#$BEGINTIME 替换为开始时间 eg:2025-03-20
00:00:00
#$ENDTIME 替换为结束时间 eg:2025-03-27
15:19:59
统计投递到外站的邮件数量
echo
"SELECT DATE_FORMAT(log_time,'%Y-%m-%d') AS g, SUM(trycnt) AS trycnt, SUM(tryrcpt) AS tryrcpt, SUM(tryvol) AS tryvol, SUM(succcnt) AS succcnt, SUM(succrcpt) AS succrcpt, SUM(succvol) AS succvol FROM ax_da_stat WHERE 1=1 AND log_time BETWEEN '$BEGINTIME' AND '$ENDTIME' AND type=1 GROUP BY DATE_FORMAT(log_time,'%Y-%m-%d') ORDER BY g DESC"
| /home/coremail/bin/cmxdb cm_logs_db
#$BEGINTIME 替换为开始时间 eg:2025-03-20
00:00:00
#$ENDTIME 替换为结束时间 eg:2025-03-27
15:19:59
修改操作场景
修改用户密码,并让其登录强制修改密码
/home/coremail/bin/userutil --call-api
"cmd=1\&user_at_domain=$USER&org_id=$ORG_ID"
"password={enc8}puUSjryImzbh7TfrCdlu105D7mA=&encrypt=none"
#解析:{enc8}puUSjryImzbh7TfrCdlu105D7mA 明文密码为coremail
#$USER 替换为单个用户 eg:admin@a.cn
#$ORG_ID 替换为用户所在的组织ID eg:a 或 b 或 c .......
将符合条件的用户,跨组织移动到目标组织的指定部门下
/home/coremail/bin/userutil --move-org @"$USER"
'$TARGET'
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"org_id='a' and org_unit_id='a_1'"
表示组织是a,且部门id为 a_1 的用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$TARGET 替换为目标位置 eg:org_id=c&ou_id=c_1 表示为组织id为c,且部门id为c_1。
跨组织移动(加速版)
/home/coremail/bin/userutil --call-api
"cmd=60\&user_at_domain=$USER"
org_id=$ORG_ID
#$ORG_ID 替换为需要设置的组织id eg:a 或 b 或 c .......
#$USER 替换为单个用户 eg:admin@a.cn
对用户设置 密送 功能
/home/coremail/bin/userutil --set-user-attr $USER
"user_xbcc=$BCC_USER"
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$BCC_USER 替换为用户地址,如有多个用户则用 竖线(|) 分隔 eg:test1@a.cn|test2@a.cn .......
对整个组织设置 密送 功能
/home/coremail/bin/userutil --call-api
"cmd=23&org_id=$ORG_ID"
"org_xbcc=$BCC_USER"
#$ORG_ID 替换为需要设置的组织id eg:a 或 b 或 c .......
#$BCC_USER 替换为用户地址,如有多个用户则用 竖线(|) 分隔 eg:test1@a.cn|test2@a.cn .......
移除被UD灰名单记录的用户
/home/coremail/bin/sysutil --svr-cmd
@local
udsvr
'graylist user reset $USER_DN'
#$USER_DN 替换为用户的dn信息 eg:1/a/test1 其中
1
表示provider_id,a表示org_id,test1表示 user_id
移除用户的客户端专用密码
/home/coremail/bin/sautil callapi
"{cmd:changeUser,user_at_domain:$USER,attrs:{altpwd:null}}"
$USER 替换为单个用户 eg:admin@a.cn
移除用户的二次验证
/home/coremail/bin/sautil call-api
'{cmd:changeUser,user_at_domain:$USER,attrs:{second_auth_type:1}}'
$USER 替换为单个用户 eg:admin@a.cn
移除IP被挂起
/home/coremail/bin/sysutil --svr-cmd
@all
mtasvr
"delhangup $IP"
#$IP 替换为要移除的IP eg:192.168.x.x .......
修改用户名
`/home/coremail/bin/userutil --user-rename 原用户名@域名 新用户名`
`#用户名是在系统内唯一的标识,正常情况下不建议修改用户名,以免出现未知问题。`
增加操作场景
添加用户别名
/home/coremail/bin/userutil --call-api
"cmd=45\&user_at_domain=$USER&alias_user_at_domain=$ALIAS_USER"
#$USER 替换为用户 eg:admin@a.cn
#$ALIAS_USER 替换为需要新增的别名 eg:admin@test.cn
镜像操作场景
查询镜像的总体延迟情况
/home/coremail/bin/sysutil --svr-cmd
@all
udsyncutil
"dumplogthread"
同步用户属性以及邮件数据
/home/coremail/bin/udsyncutil --syncuser $USER $NODE
255
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$NODE 替换为 主/镜像 节点的global.cf 下的 RegionId
检查用户的邮件是否一致
/home/coremail/bin/udsyncutil --checkmail $USER
@$NODE
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$NODE 替换为 主/镜像 节点的global.cf 下的 RegionId
检查用户节点组织架构属性是否一致
/home/coremail/bin/udsyncutil --compareregion $SUBNODE
"mode=3"
#$SUBNODE 替换为主节点的global.cf 下的 RegionId
多活操作场景
对比用户的ud数据是否一致
/home/coremail/bin/userutil --thread
10
--diffuserud $USER $DIFF_UID
#$USER 替换方式有三:1、替换为单个用户 eg:admin@a.cn;
2、替换为条件用户 eg:@"cos_id = 1"
表示服务等级为1的所有用户;3、替换为指定文件内的用户 eg:@/tmp/userlist.txt
#$DIFF_UID 替换为需要对比的udid号码 eg:1
或
2
或
3
......
查询本站的ud数据状态是否一致
/home/coremail/bin/userutil --checkhastat
查询节点成员列表
/home/coremail//bin/etcdctl member list
查看节点健康状态
/home/coremail/bin/etcdctl cluster-health