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

我pipe理许多cPanel / WebHostManager服务器。 在其中一台服务器上,我们需要对所有cPanel帐户中的所有电子邮件帐户进行审计。 这个服务器有近300个cPanel账户,每个账户里面有1到50个电子邮件帐户。

有没有办法获得一个cPanel / WebHostManager服务器上的所有 cPanel帐户的所有电子邮件帐户列表?

我推出了自己的解决scheme。 我发现每个cPanel用户在~username/.cpanel/email_accounts.yaml都有一个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文件。

我创build了一个程序 ,直接从cPanel的API获取这些信息。

该程序请求服务器中所有帐户的列表,从列表中提取用户,并向每个用户发送一个新的请求到Email :: listpopssingle从用户的帐户获取所有电子邮件帐户。