无root权限下,如何从外部网站调用CPanel API展示邮件转发器?
能否用PHP展示CPanel邮件转发器?可行!
核心逻辑
没有root权限也能实现,核心是用CPanel官方开放的UAPI(用户级API)——这是给普通CPanel用户提供的操作接口,可直接访问账户内的邮件转发器等资源,无需托管商开放root权限。
实现步骤
- 先在你的CPanel后台生成API令牌(路径:安全 > API令牌),仅勾选「邮件」分类下的转发器相关权限,避免过度授权
- 用PHP通过HTTPS请求调用UAPI的
Email/list_forwarders接口,带上你的CPanel用户名和生成的令牌完成身份验证 - 解析接口返回的JSON数据,筛选出指定用户对应域名的转发器信息,再渲染成网页展示给目标用户
关键注意点
- 禁止硬编码CPanel密码,用API令牌安全性更高
- 接口请求必须使用HTTPS,防止凭据泄露
- 给PHP页面加身份验证(比如简单密码锁、关联WordPress用户权限),避免无关人员访问
- 若托管商限制了UAPI调用,直接联系服务商开启即可,这是CPanel标准功能
极简示例代码
<?php // 配置信息 $cpanel_user = '你的CPanel用户名'; $cpanel_token = '你生成的API令牌'; $cpanel_host = '你的CPanel地址(比如 cpanel.yourserver.com)'; $target_domain = '需要展示的用户域名'; // 发起API请求 $ch = curl_init("https://{$cpanel_host}:2083/execute/Email/list_forwarders"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: cpanel {$cpanel_user}:{$cpanel_token}" ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 生产环境保持开启 $response = curl_exec($ch); curl_close($ch); // 处理返回结果 $result = json_decode($response, true); if ($result['status'] !== 1) { die("获取失败:{$result['errors'][0]}"); } // 筛选目标域名的转发器 $user_forwarders = array_filter($result['data'], function($item) use ($target_domain) { return $item['domain'] === $target_domain; }); // 展示内容 echo "<h3>{$target_domain} 的邮件转发器</h3>"; foreach ($user_forwarders as $fw) { echo "<p><strong>{$fw['email']}</strong> → {$fw['forward']}</p>"; } ?>
内容的提问来源于stack exchange,提问作者MGB
相关产品推荐
相关产品推荐

