我管理着许多 cPanel / WebHostManager 服务器。在其中一台服务器上,我们需要对所有 cPanel 帐户中的所有电子邮件帐户进行审核。该服务器有近 300 个 cPanel 帐户,每个帐户中有 1 到 50 个电子邮件帐户...
有什么办法可以获取全部跨电子邮件帐户全部cPanel / WebHostManager 服务器上有 cPanel 帐户吗?
答案1
我推出了自己的解决方案。我发现每个 cPanel 用户都有一个YAML该文件~username/.cpanel/email_accounts.yaml
包含该 cPanel 用户帐户下所有电子邮件帐户的信息。我利用该文件编写了一个简短的 Ruby 脚本:
#!/usr/bin/ruby
require 'yaml'
puts "email,username,domain,usage,quota"
Dir.glob('/home/*/.cpanel/email_accounts.yaml') do |email_accounts_file|
email_accounts = YAML.load_file(email_accounts_file)
#puts email_accounts_file
#puts email_accounts.inspect
#puts "---------------------------"
email_accounts.each do |domain,info|
if info['accounts'] then
#puts "domain: #{domain}"
info['accounts'].each do |username,info|
puts "#{username}@#{domain},#{username},#{domain},#{info['diskused']},#{info['diskquota']}"
end
end
end
end
该脚本应以 root 身份运行,并循环遍历所有目录以/home
查找.cpanel/email_accounts.yaml
文件。(如果您的用户主目录未存储为,/home/username
则编辑第 7 行)该脚本打印出所有电子邮件帐户的 CSV 分隔数据、它们所属的域名以及它们的磁盘使用情况和配额,如 YAML 文件所报告的那样。
答案2
我创建了一个程序直接从 cPanel 的 API 获取此信息。
该计划要求所有账户的列表在服务器中,从列表中提取用户,并为每个用户发出新的请求电子邮件::listpopssingle从用户账户中获取所有电子邮件账户。