有没有办法列出 cPanel 服务器上的所有电子邮件帐户?

有没有办法列出 cPanel 服务器上的所有电子邮件帐户?

我管理着许多 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从用户账户中获取所有电子邮件账户。

相关内容