hostmyservers/mailcow-api

A full-featured implementation of the MailCow API

dev-main 2025-02-23 14:49 UTC

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.

Latest Stable Version Total Downloads License PHP Version Require

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.