hostmyservers / mailcow-api
A full-featured implementation of the MailCow API
dev-main
2025-02-23 14:49 UTC
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: ^7.5
- psr/http-message: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5.0
This package is auto-updated.
Last update: 2025-06-23 15:28:27 UTC
README
A PHP 7.2+ library for interacting with the Mailcow API.
Installation
Install via Composer:
composer require hostmyservers/mailcow-api
Basic Usage
<?php require_once 'vendor/autoload.php'; use HostMyServers\MailCowAPI; // Initialize the client $client = new MailCowAPI('https://mail.example.com', 'your-api-token'); // Get all domains $domains = $client->domains()->getAll(); // Create a new domain $client->domains()->create( 'example.com', 'My Domain', 10, // aliases 5, // mailboxes 1000, // defquota 2000, // maxquota 5000 // quota ); // Create a mailbox $client->mailBoxes()->create( 'user', 'example.com', 'John Doe', 'password123' ); // Create an alias $client->aliases()->create( 'alias@example.com', 'destination@example.com' );
Available Features
Domains
// Get all domains $client->domains()->getAll(); // Get specific domain $client->domains()->get('example.com'); // Create domain $client->domains()->create('example.com', 'Description'); // Update domain $client->domains()->update('example.com', ['description' => 'New description']); // Delete domain $client->domains()->delete('example.com'); // Enable/disable domain $client->domains()->setActive('example.com', true);
Mailboxes
// Get all mailboxes $client->mailBoxes()->getAll(); // Create mailbox $client->mailBoxes()->create('user', 'domain.com', 'User Name', 'password'); // Update mailbox $client->mailBoxes()->update('user@domain.com', ['name' => 'New Name']); // Delete mailbox $client->mailBoxes()->delete('user@domain.com'); // Update spam score $client->mailBoxes()->updateSpamScore('user@domain.com', '5.0');
Aliases
// Get all aliases $client->aliases()->getAll(); // Create alias $client->aliases()->create('alias@domain.com', 'destination@domain.com'); // Update alias $client->aliases()->update('alias_id', ['goto' => 'new@domain.com']); // Delete alias $client->aliases()->delete('alias_id');
DKIM
// Get DKIM info $client->dkim()->getDkim('domain.com'); // Generate DKIM $client->dkim()->generate('domain.com', 'selector', 2048); // Delete DKIM $client->dkim()->delete('domain.com');
Anti-Spam
// Get whitelist policy $client->antiSpam()->getWhitelistPolicy('domain.com'); // Get blacklist policy $client->antiSpam()->getBlacklistPolicy('domain.com'); // Add policy $client->antiSpam()->addPolicy('domain.com', 'whitelist', 'sender@domain.com'); // Delete policy $client->antiSpam()->deletePolicy(['policy_id']);
Requirements
- PHP 7.2 or higher
- Guzzle HTTP Client
- PSR-7 implementation
License
This project is licensed under the MIT License - see the LICENSE file for details.