exbil/mailcow-php-api
Composer 安装命令:
composer require exbil/mailcow-php-api
包简介
A full-featured implementation of the MailCow API with configurable SSL verification and timeout settings
README 文档
README
A full-featured PHP client for the MailCow API with support for all MailCow endpoints.
Getting Started
Requirements
- PHP 7.4+ (PHP 8.0+ recommended)
- Extensions: Composer, PHP-JSON
- Guzzle HTTP Client 7.5+
Installation
In the root of your project execute the following:
composer require exbil/mailcow-php-api
or add this to your composer.json file:
{
"require": {
"exbil/mailcow-php-api": "^0.15.0"
}
}
Then perform the installation:
composer install --no-dev
Usage
Search for the API Documentation here or your own mailcow instance via https://domain.com/api.
You need an API Key which can be found in your self-hosted instance within the admin dashboard.
Basic Example
<?php require_once 'vendor/autoload.php'; use Exbil\MailCowAPI; // Create API client with default settings $client = new MailCowAPI('https://mailcow.example.com', 'YOUR_API_KEY'); // Perform requests $domains = $client->domains()->getDomains(); var_dump($domains);
Advanced Configuration
SSL Verification
By default, SSL certificates are verified. For development environments with self-signed certificates:
// Disable SSL verification (NOT recommended for production!) $client = new MailCowAPI( 'https://mailcow.local', 'YOUR_API_KEY', null, // HTTP client (null = default) false // Disable SSL verification );
Custom Timeout
The default timeout is 120 seconds. You can customize it:
// Set custom timeout (in seconds) $client = new MailCowAPI( 'https://mailcow.example.com', 'YOUR_API_KEY', null, // HTTP client true, // Verify SSL 60 // 60 seconds timeout );
Custom HTTP Client
Inject your own Guzzle client for advanced configurations:
use GuzzleHttp\Client; $httpClient = new Client([ 'timeout' => 30, 'proxy' => 'http://proxy.example.com:8080', // ... other Guzzle options ]); $client = new MailCowAPI( 'https://mailcow.example.com', 'YOUR_API_KEY', $httpClient );
Environment-Based Configuration
// Recommended: Use environment variables $client = new MailCowAPI( getenv('MAILCOW_URL'), getenv('MAILCOW_API_KEY'), null, getenv('APP_ENV') === 'production' // Only verify SSL in production );
Available API Endpoints
The client supports all MailCow API endpoints through dedicated handler classes:
$client->domains() // Domain management $client->mailBoxes() // Mailbox operations $client->aliases() // Alias management $client->antiSpam() // Anti-spam settings $client->dkim() // DKIM configuration $client->fail2ban() // Fail2Ban management $client->quarantine() // Quarantine operations $client->logs() // Log access $client->status() // System status $client->queueManager() // Mail queue management $client->routing() // Routing configuration $client->oAuth() // OAuth clients $client->resources() // Resource management $client->appPasswords() // App-specific passwords $client->fwdhosts() // Forward hosts $client->ratelimits() // Rate limiting $client->domainAdmin() // Domain admin management $client->addressRewrite() // Address rewriting rules $client->tlsPolicy() // TLS policy management $client->SSO() // Single Sign-On $client->CORS() // CORS configuration $client->IdentityProvider() // Identity provider settings
Example Operations
// Get all domains $domains = $client->domains()->getDomains(); // Create a new mailbox $client->mailBoxes()->create([ 'local_part' => 'user', 'domain' => 'example.com', 'password' => 'securePassword123', 'quota' => 2048 ]); // Get system status $status = $client->status()->get(); // View logs $logs = $client->logs()->get('mailcow', 100);
Constructor Parameters
new MailCowAPI( string $url, // Required: MailCow instance URL string $token, // Required: API token ?Client $httpClient = null, // Optional: Custom Guzzle client bool $verifySSL = true, // Optional: Verify SSL certificates int $timeout = 120 // Optional: Request timeout in seconds );
Security Best Practices
- ✅ Always enable SSL verification in production (
verifySSL = true) - ✅ Store API keys in environment variables, not in code
- ✅ Use HTTPS URLs for your MailCow instance
- ✅ Rotate API keys regularly
- ⚠️ Only disable SSL verification in trusted development environments
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GPL-3.0-or-later License.
Links
exbil/mailcow-php-api 适用场景与选型建议
exbil/mailcow-php-api 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 463 次下载、GitHub Stars 达 4, 最近一次更新时间为 2023 年 10 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「rest」 「api」 「API-Client」 「php-api-client」 「email-api」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 exbil/mailcow-php-api 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 exbil/mailcow-php-api 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 exbil/mailcow-php-api 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PSR-7 compatible library for making CRUD API endpoints
Api bundle
Alfabank REST API integration
A Flickr wrapper to allow you to call the Flickr api with Guzzle as the backend.Goal is to have 100% Flickr api coverage rather than just upload/display photos (currently at 23%).
BlockCypher's PHP SDK for REST API
Helper classes for creating cookie headers
统计信息
- 总下载量: 463
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 34
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0-or-later
- 更新时间: 2023-10-05